LaTeX4Novice
cwtex@ubuntu-5.10
1. cwtex@GNU/Linux,必須先下載cwtex-linux,解後安裝在$HOME/texmf之中。
2. 解開後,把相關檔案 copy 至相對的目錄,在 config.ps 裡頭加一行 p +cwtex.map 執行 texhash 後就可以使用。
2'. 或 copy 至相對的目錄後,執行 texhash 後,再執行: updmap --enable Map cwtex.map 即可(兩種方式選一種來執行就可以了)。
然後下載dvipdfmx,使用csv方式:
cvs -d:pserver:anonymous@cvs.ktug.or.kr:/home/cvsroot login cvs -d:pserver:anonymous@cvs.ktug.or.kr:/home/cvsroot co dvipdfmx
因為編譯的時候,要使用libkpathsea.a的函式庫,所以在ubuntu-5.10必須下載libkpathsea-dev的套件:
apt-get -y install libkpathsea-dev
然後用./configure;make來編譯。
之後再來用作出來的dvipdfmx來編譯dvi檔,就能作出高品質的pdf檔了。
samuel@pika046:texmf$ sudo updmap --enable Map cwtex.map using config file /var/lib/texmf/web2c/updmap.cfg updmap: The options --enable and --disable work differently on Debian systems!. updmap: . updmap: You cannot use them to permanently enable or disable Map files. Instead,. updmap: you have to use the mechanism described in. updmap: /usr/share/doc/tetex-bin/README.Debian.gz. updmap: . updmap: If you don't know which lines to add to the files in /etc/texmf/updmap.d/,. updmap: press ENTER now and take the resulting line from. updmap: /var/lib/texmf/web2c/updmap.cfg. updmap: . updmap: Press ENTER to continue anyway, or Ctrl-c to quit.. using output directory /var/lib/texmf/dvips/config updmap is creating new map files using the following configuration: prefer outlines: true texhash enabled: true download standard fonts (dvips): false download standard fonts (pdftex): false download standard fonts (dvipdfm): false Scanning for LW35 support files using map file `/usr/share/texmf/dvips/tetex/dvips35.map' using map file `/usr/share/texmf/dvips/tetex/pdftex35.map' using map file `/usr/share/texmf/dvips/tetex/dvipdfm35.map' using map file `/usr/share/texmf/dvips/tetex/ps2pk35.map' Scanning for MixedMap entries: using map file `/usr/share/texmf/dvips/tetex/bsr-interpolated.map' using map file `/usr/share/texmf/dvips/tetex/bsr.map' using map file `/usr/share/texmf/dvips/cc-pl/ccpl.map' using map file `/usr/share/texmf/dvips/misc/cs.map' using map file `/usr/share/texmf/dvips/misc/eurosym.map' using map file `/usr/share/texmf/dvips/tetex/hoekwater.map' using map file `/usr/share/texmf/dvips/pl/pl.map' using map file `/usr/share/texmf/dvips/tetex/ttcmex.map' Scanning for Map entries: using map file `/usr/share/texmf/dvips/antp/antp.map' using map file `/usr/share/texmf/dvips/antt/antt.map' using map file `/usr/share/texmf/dvips/psnfss/charter.map' using map file `/usr/share/texmf/dvips/misc/cmcyr.map' using map file `/usr/share/texmf/dvips/config/context.map' updmap: map file `cwtex.map' not found. using map file `/usr/share/texmf/dvips/lucida/lucidabr.map' using map file `/usr/share/texmf/dvips/tetex/lucidabr-o.map' using map file `/usr/share/texmf/dvips/lucida/lumath.map' using map file `/usr/share/texmf/dvips/tetex/lumath-o.map' using map file `/usr/share/texmf/dvips/misc/marvosym.map' using map file `/usr/share/texmf/dvips/misc/mathpi.map' using map file `/usr/share/texmf/dvips/tetex/mathpple.map' using map file `/usr/share/texmf/dvips/tetex/mt-plus.map' using map file `/usr/share/texmf/dvips/tetex/mt-yy.map' using map file `/usr/share/texmf/dvips/omega/omega.map' using map file `/usr/share/texmf/dvips/psnfss/pazo.map' using map file `/usr/share/texmf/dvips/tetex/pxfonts.map' using map file `/usr/share/texmf/dvips/qfonts/qbk.map' using map file `/usr/share/texmf/dvips/qfonts/qcr.map' using map file `/usr/share/texmf/dvips/qfonts/qhv.map' using map file `/usr/share/texmf/dvips/qfonts/qpl.map' using map file `/usr/share/texmf/dvips/qfonts/qtm.map' using map file `/usr/share/texmf/dvips/qfonts/qzc.map' using map file `/usr/share/texmf/dvips/tetex/txfonts.map' using map file `/usr/share/texmf/dvips/xypic/xypic.map' texhash: Updating /home/samuel/texmf/ls-R... texhash: Updating /usr/local/share/texmf/ls-R... texhash: Updating /var/lib/texmf/ls-R... texhash: Updating /var/lib/texmf/ls-R-TEXMFMAIN... texhash: Updating /var/cache/fonts/ls-R... texhash: Done. Files generated in /var/lib/texmf/dvips/config: -rw-r--r-- 1 root root 8985 2006-01-24 17:08 builtin35.map -rw-r--r-- 1 root root 13102 2006-01-24 17:08 download35.map -rw-r--r-- 1 root root 15196 2006-01-24 17:08 dvipdfm_dl14.map lrwxrwxrwx 1 root root 17 2006-01-24 17:08 dvipdfm.map -> dvipdfm_ndl14.map -rw-r--r-- 1 root root 15823 2006-01-24 17:08 dvipdfm_ndl14.map -rw-r--r-- 1 root root 48306 2006-01-24 17:08 pdftex_dl14.map lrwxrwxrwx 1 root root 16 2006-01-24 17:08 pdftex.map -> pdftex_ndl14.map -rw-r--r-- 1 root root 46732 2006-01-24 17:08 pdftex_ndl14.map -rw-r--r-- 1 root root 49390 2006-01-24 17:08 ps2pk.map lrwxrwxrwx 1 root root 14 2006-01-24 17:08 psfonts.map -> psfonts_t1.map -rw-r--r-- 1 root root 28047 2006-01-24 17:08 psfonts_pk.map -rw-r--r-- 1 root root 45279 2006-01-24 17:08 psfonts_t1.map
samuel@pika046:texmf$ updmap --enable Map cwtex.map using config file /var/lib/texmf/web2c/updmap.cfg updmap: The options --enable and --disable work differently on Debian systems!. updmap: . updmap: You cannot use them to permanently enable or disable Map files. Instead,. updmap: you have to use the mechanism described in. updmap: /usr/share/doc/tetex-bin/README.Debian.gz. updmap: . updmap: If you don't know which lines to add to the files in /etc/texmf/updmap.d/,. updmap: press ENTER now and take the resulting line from. updmap: /var/lib/texmf/web2c/updmap.cfg. updmap: . updmap: Press ENTER to continue anyway, or Ctrl-c to quit..
samuel@pika046:texmf$ updmap -h Usage: updmap [option] ... [command] Valid options: --cnffile file specify configuration file --outputdir directory specify output directory --nohash do not run texhash --nomkmap do not recreate map files --quiet reduce verbosity Valid commands: --edit edit updmap.cfg file --help show this message --showoptions item show alternatives for options --setoption option value set option where option is one of dvipsPreferOutline, LW35, dvipsDownloadBase35 or pdftexDownloadBase14 --enable maptype mapfile add or enable a Map or MixedMap --disable mapfile disable Map or MixedMap for mapfile --listmaps list all active and inactive maps
Latex寫作
為了要寫論文格式,才得知國際上的物理期刊,其論文是用revtex4的規範來制定。revtex4是由美國物理學會所推廣的一種期刊論文寫作格式的標準規範,目的是為了讓全世界的物理論文,在寫作及閱讀到,達到統一的方式,方便物理資訊的流通,所以如果想要從事物理領域,成為終身職業的話,熟悉revtex4是需要的。
另外如果想要將論文,寫成類似科學上的文件,是透過GSW Latex(Get Started with Latex)來寫作,排版出來的效果不錯,可以再深入研究,以下是它的premable部份。
\documentclass[a4paper,12pt]{article} \addtolength{\textwidth}{50pt} \addtolength{\evensidemargin}{-25pt} \addtolength{\oddsidemargin}{-25pt} \def\displayandname#1{\rlap{$\displaystyle\csname #1\endcsname$}% \qquad \texttt{\char92 #1}} \def\mathlexicon#1{$$\vcenter{\halign{\displayandname{##}\hfil&&\qquad \displayandname{##}\hfil\cr #1}}$$} \usepackage{geometry} \geometry{verbose,a4paper,tmargin=1.5cm,bmargin=1.5cm,lmargin=2cm,rmargin=2.5cm} \usepackage[dvips]{graphicx} \usepackage[dvipdfm,colorlinks=true,linkcolor=blue]{hyperref} \newenvironment{num} {\leftmargini=6mm\leftmarginii=8mm \begin{enumerate}}{\end{enumerate}} \begin{document} \title{Keynotes of Jackson's EM-Dynamics} \author{呂俊興\thanks{\href{mailto:samuel@nchc.org.tw}{Software developer}}} \date{2nd Edition\\[3pt] Copyright \copyright\ Samuel Lu 2005} \maketitle \tableofcontents
在編譯中文的tex文件,是透過cwTex系統來排版,流程如下:
- cwTex file.ctx
- latex file.tex
- dvipdfmx file.dvi
- file.pdf
其中是用dvips來處理圖形,如果是.jpg,要使用makebb,先作bounding box,.gif則可以先轉成.eps,然後直接再匯入tex檔案中即可。
Tex/LaTex Syntax
thebibliography \begin{thebibliography}{widest-label} \bibitem[label]{cite_key} . . . \end{thebibliography} The thebibliography environment produces a bibliography or reference list. In the article class, this reference list is labelled "References"; in the report class, it is labelled "Bibliography". widest-label: Text that, when printed, is approximately as wide as the widest item label produces by the \bibitem commands. \bibitem \bibitem[label]{cite_key} The \bibitem command generates an entry labelled by label. If the label argument is missing, a number is generated as the label, using the enumi counter. The cite_key is any sequence of letters, numbers, and punctuation symbols not containing a comma. This command writes an entry on the .aux file containing cite_key and the item's label. When this .aux file is read by the \begin{document} command, the item's label is associated with cite_key, causing the reference to cite_key by a \cite command to produce the associated label. \cite \cite[text]{key_list} The key_list argument is a list of citation keys. This command generates an in-text citation to the references associated with the keys in key_list by entries on the .aux file read by the \begin{document} command. The optional text argument will appear after the citation, i.e. \cite[p. 2]{knuth} might produce `[Knuth, p. 2]'. \nocite \nocite{key_list} The \nocite command produces no text, but writes key_list, which is a list of one or more citation keys, on the .aux file. Using BibTeX If you use the BibTeX program by Oren Patashnik (highly recommended if you need a bibliography of more than a couple of titles) to maintain your bibliography, you don't use the thebibliography environment. Instead, you include the lines \bibliographystyle{style} \bibliography{bibfile} where style refers to a file style.bst, which defines how your citations will look. The standard styles distributed with BibTeX are: alpha Sorted alphabetically. Labels are formed from name of author and year of publication. plain Sorted alphabetically. Labels are numeric. unsrt Like plain, but entries are in order of citation. abbrv Like plain, but more compact labels. In addition, numerous other BibTeX style files exist tailored to the demands of various publications. The argument to \bibliography refers to the file bibfile.bib, which should contain your database in BibTeX format. Only the entries referred to via \cite and \nocite will be listed in the bibliography. theorem \begin{theorem} theorem text \end{theorem} The theorem environment produces "Theorem x" in boldface followed by your theorem text.
tabular \begin{tabular}[pos]{cols} column 1 entry & column 2 entry ... & column n entry \ . . . \end{tabular} or \begin{tabular*}{width}[pos]{cols} column 1 entry & column 2 entry ... & column n entry \ . . . \end{tabular*} These environments produce a box consisting of a sequence of rows of items, aligned vertically in columns. The mandatory and optional arguments consist of: width Specifies the width of the tabular* environment. There must be rubber space between columns that can stretch to fill out the specified width. pos Specifies the vertical position; default is alignment on the centre of the environment. t - align on top row b - align on bottom row cols Specifies the column formatting. It consists of a sequence of the following specifiers, corresponding to the sequence of columns and intercolumn material. l - A column of left-aligned items. r - A column of right-aligned items. c - A column of centred items. | - A vertical line the full height and depth of the environment. @{text} - This inserts text in every row. An @-expression suppresses the intercolumn space normally inserted between columns; any desired space between the inserted text and the adjacent items must be included in text. An \extracolsep{wd} command in an @-expression causes an extra space of width wd to appear to the left of all subsequent columns, until countermanded by another \extracolsep command. Unlike ordinary intercolumn space, this extra space is not suppressed by an @-expression. An \extracolsep command can be used only in an @-expression in the cols argument. p{wd} - Produces a column with each item typeset in a parbox of width wd, as if it were the argument of a \parbox[t]{wd} command. However, a \\ may not appear in the item, except in the following situations: inside an environment like minipage, array, or tabular. inside an explicit \parbox. in the scope of a \centering, \raggedright, or \raggedleft declaration. The latter declarations must appear inside braces or an environment when used in a p-column element. *{num}{cols} - Equivalent to num copies of cols, where num is any positive integer and cols is any list of column-specifiers, which may contain another *-expression. These commands can be used inside a tabular environment: \cline \cline{i-j} The \cline command draws horizontal lines across the columns specified, beginning in column i and ending in column j, which are identified in the mandatory argument. \hline The \hline command will draw a horizontal line the width of the table. It's most commonly used to draw a line at the top, bottom, and between the rows of the table. \multicolumn \multicolumn{cols}{pos}{text} The \multicolumn is used to make an entry that spans several columns. The first mandatory argument, cols, specifies the number of columns to span. The second mandatory argument, pos, specifies the formatting of the entry; c for centred, l for flushleft, r for flushright. The third mandatory argument, text, specifies what text is to make up the entry. \vline The \vline command will draw a vertical line extending the full height and depth of its row. An \hfill command can be used to move the line to the edge of the column. It can also be used in an @-expression.
Graphics Latex
以為解決了png的問題,gif格式的圖檔應該是水到渠成,自然也是沒問題才對,但是想錯了,因為仍然無法在我的系統中,放入TeX文件內,既使是轉成eps的圖檔,仍然會出錯,在latex編譯的時候,就己經是無法處理了,我想是否是latex的版本不能夠處理,還得查證,所以最後只能用jpg格式來解決這個問題了。
找了好久才知道,原來dvipdfmx對於png的支援,還不太完整,原本加入
\usepackage[dvips]{graphicx} \includegraphics[width=.3\textwidth]{images/MagicSquare.png}
然後用bmeps作出bb檔,編譯即可,但是一直都編譯不過,後來才知道,只要是png的圖檔,dvipdfmx的支援就很差,最好是用jpg的格式,比較沒有問題,dvipdfmx的支援也較完整。
為了要將jpeg的圖檔,放入tex檔案之中,選擇使用\usepackage[dvips]{graphicx}的呼叫方式,但是即使是將jpeg的圖檔,己經轉成了eps,還是無法放入tex文檔之中,在編譯時會出錯,找了好久才知道問題出來沒有bounding box,上網查詢才得知需要bmeps這個utils來作出bb檔。
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/bmeps login cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/bmeps co -P modulename
無法使用cvs的方式下載,所以只好在中心下載tarball,並且configure/make作出bmeps的執行檔,使用方式如下:
Usage: env LD_LIBRARY_PATH=~/Bmeps ./bmeps FarmGrid.jpg FarmGrid.bb
因為bmeps會呼叫libbmeps.so.1.2,所以將路徑指出來,餵給它自己去尋找此so檔,可以在Usage找到更多使用的方式。
這樣一來,不管格式是PNG/JPEG/NetPBM,都可以先作出Bounding Box,讓latex計算作出dvi檔。
http://png2pdf.sourceforge.net/usage.html 如果要直接使用png,來放入tex文件之中,通常是使用makebb,來作出Bounding Box的訊息,讓latex可以知道大小,之後才放整個版面的計算。但是png2pdf這個style,可以直接使用png,來放入tex文件中。\documentclass[12pt,a4paper,titlepage]{article} \usepackage{ifpdf} % LaTeX or pdfLaTeX \usepackage{color} % we want to use background color \usepackage{graphicx} \ifpdf \usepackage{background} % for the background effects, PPower4 necessary \fi \definecolor{bgred}{rgb}{1.0,0.501961,0.501961} ... \begin{document} ... \begin{figure} {\centering \includegraphics[width=5cm]{stefan_255_rgba.png} \caption{Some caption} \label{fig:some-label} } \end{figure} ... \end{document}圖形的支援 http://www.ctex.org/documents/latex/graphics/graphics.html 13.3 非EPS圖形文件 EPS 格式的圖形文件可以很容易的插入到 LATEX 文件中, 而非 EPS 格式的圖形文件則不是將插圖命令中的文件名替換一下就可以的。 對於不同的圖形驅動來說,所支持的圖形格式也不盡相同。而不同版本的 TEX 軟件也有各自支持的非 EPS 格式圖形。一般來說,除了 .png 格式的圖形文件外,其它的非 EPS 格式圖形基本上只有一兩種圖形驅動 支持直接使用它們。更多的情況是需要先轉換為 EPS 格式的圖形文件 13.2再插入到 LATEX 文件中。 這樣就要求有相應的圖形格式轉換工具。儘管使用非 EPS 格式的圖形文件 不如 EPS 圖形文件簡單方便,但由於它們可能比 EPS 文件要小,而一些 繪圖軟件也不能生成 EPS 文件,所以有時還是希望在 DVI 文件轉換為 PS 文件時再對其進行格式轉換。如果使用 dvips,這種即時轉換的命令可用 \DeclareGraphicsRule來給出。例如用這種方法將 file2.gif 加 到 LATEX 文檔中需要以下幾步: 1. 找到一個支持命令行方式的 GIF 到 EPS 的轉換工具(假設 為 gif2eps)。 2. 建立一個註明 file2.gif 自然大小的 BoundingBox 文件。為此, 1. 用 ebb file2.gif 直接得到 BoundingBox 文件13.3。 2. 將 file2.gif 轉為 PostScript 文件,若其中有 BoundingBox 行, 則將此行存放到文件 file2.gif.bb 中,否則,可按照 第 3.3 節的方法來計算 BoundingBox 並將所得 到的結果放在 file2.gif.bb 中的 %%BoundingBox: 後。然後將 PostScript 文件刪除。 3. LATEX 文件中,在 \includegraphics 命令前,加入圖形規則: \DeclareGraphicsRule{.gif}{eps}{.gif.bb}{`gif2eps #1} 當遇到 \includegraphics{file.gif} 時, LATEX 從 file.gif.bb 中讀取 BoundingBox 並告訴 dvips 使用 gif2eps 來將 file2.gif 轉為 EPS 文件。 Subsections * 13.3.1 GIF 的例子 * 13.3.2 對非 EPS 圖形的直接支持 13.3.1 GIF 的例子 由于插入非 EPS 格式的图形所需的命令依赖于操作系统和图形格式转换程序, 在此提供两个 Unix 系统下常用的转换程序的例子。 \DeclareGraphicsRule{.gif}{eps}{.gif.bb}{`convert #1 'eps:-' } \begin{figure} \centering \includegraphics[width=3in]{file2.gif} \caption{GIF Graphic} \end{figure} 这里使用 convert(包含在 ImageMagick 中)来 将 GIF 转为 EPS。而命令: convert file2.gif 'eps:-' 将 file2.gif 转为 EPS 格式的图形并输出到标准输出。 另一方法是使用 giftoppm, ppmtopgm 和 pgmtops 来 将 GIF 转为 EPS。只需在上例中将图形规则改为: \DeclareGraphicsRule{.gif}{eps}{.gif.bb}% {`giftoppm #1 | ppmtopgm | pgmtops} 13.3.2 对非 EPS 图形的直接支持 虽然 LATEX 和 dvips 不断地被要求直接支持非 EPS 图形并使 得如同 EPS 图形一样简单方便。的确,这样做会带来不少方便,但却存在 着不少问题。 * 因为 LATEX 是通过从 EPS 文件中读取 BoundingBox 来确定图形 文件的大小的,加上 LATEX 只能读取 ASCII 文件,所以其它的非 EPS 图形 文件(绝大多数是二进制文件)会阻碍 LATEX 获取图形大小的信息。 * 进一步讲,支持非 EPS 图形要求 dvips 具有图形格式转换的 能力(GIF-to-PS, TIFF-to-PS, 等)。这需要大量的编程和维护工作。 有鉴于此, dvips 提供调用外部图形转换程序的机制而不是 直接支持非 EPS 图形文件。这种机制允许 LATEX 通过设置 \DeclareGraphicsRule 来使 dvips 调用指定的外部图形转换程序。 这样使用者可自己选择图形转换程序, dvips 也不用捆绑 一些图形转换功能,从而比直接支持非 EPS 图形文件更具灵活性。 仅管 LATEX 和 dvips 一般不支持直接插入非 EPS 的图形, 也还是有几个例外: 1. 如果 dvips 编译时用了参数 -Demtex,它将支持 一些 EmTEX 的 \special 命令,允许直接插入 PCX, BMP 或 MSP 位图。 2. Macintosh 下的共享 TEX/LATEX 软件 Oztex2.1 中, DVI 到 PS 的 转换程序 OzDVIPS 允许通过 \special 命令来使用 MacPaint 和 PICT 文件。详见 http://www.kagi.com/authors/akt/oztex.html 3. 一些商业版本的 LATEX 支持非 EPS 的图形。 1. Macintosh 下的 Textures 支持 PICT 图形。详见 http://www.bluesky.com/ 2. Y&Y 的 Windows 版本的 TEX 中, DVI 到 PS 的转换程序 DVIPSONE 支持 TIFF 图形。详见 http://www.YandY.com/ 即使上述方法中, TEX 仍然无法直接从二进制的图形文件中获得 其图形的大小。为使 LATEX 能正确地给所插入的图形分配空间, 使用者必须用 .bb 文件或在 \includegraphics 中 用 bb 选项给出图形的大小。
Useful Tex Resources
Page Layout
cwTex Installation
cwTex簡易安裝
- 首先由cwTex下載MiktexSetup.exe檔,來安裝Miktex-minimal的字型與套件,建議安裝在%system%\MiktexSource目錄夾之中,然後再由MiktexSource中的setup.exe,來安裝所需要的套件與字型至%system%\texmf。
- 然後再下載cw-basic.exe,它會先偵測miktex系統是否安裝成功,如果沒問題,就會繼續cwTex的安裝。
- 安裝utils: WinEdt54.exe, GS, Ghostview
- 如果編譯example6.ctx會發現找不到所需的套件,因為是用minimal選項,所以請手動至Mitex Source,找出所需的.cab套件(如beamer.cab),再放至MiktexSource目錄夾之中,重新啟始編譯動作,它就會至MiktexSource目錄夾之中,將缺少的.cab解開後,放至$TEXMF之中,然後就可以編譯完成。
- 如果想要快一點看到.dvi的內容,可以使用yap file.dvi來觀看大致編出的文件檔,如果文件中有包含圖形的部份,可用dvipdfm file.pdf來看最後的pdf檔。
中文tex
Big Eye Tex
Tex Introduction
|本節內容: 我為什麼要用TeX ? |
+----------------------------------------------------+
如果你經常編排帶數學公式的文章, 那麼你對WORD估計不陌生, 而且對它的公式編輯器也用得不少, 那你可能會發現, WORD編排出來的段落不是那麼令人滿意, 如果左對齊, 那麼每行的右邊參差不齊, 很不美觀; 而如果選用兩邊對齊, 那麼WORD為了達到這點要求, 可能就加大了某些詞與詞之間的間距, 那樣也達不到我們滿意的文章格式. 能不能在行末自動地把一個單詞在音節處拆開, 並加上連字元呢? TeX可以.
公式編輯器用多了, 你可能就發現, 如果你要修改文章字體的大小, 這時需要一個一個地調整公式的大小, 簡直是無法承受的工作量; 而且, 你經常會發現, WORD的公式大小並不是和正文那麼適配, 許多時候看起來要麼大了, 要麼小了, 尤其是碰到大行的公式, 頁面編排都可能因此受到影響了. 而TeX美觀的公式混排, 統一的公式正文大小, 會令你感覺你編排的文章和正式出版的數學書籍一樣漂亮.
WORD編一篇大的文章, 你就會發現你可能不得不將它按章節存儲成各個小檔, 因為公式多的文章的WORD文檔大得不是一張軟碟能解決的了. 而我們使用的TeX格式的文檔, 一個50頁包含很多公式的文章可能只有不到100K大小.
微軟的東西就是版本多, 你一定為WORD6.0, WORD95, WORD97,還有英文WORD, 中文WORD的諸多版本的不相容性大感頭疼, 有時不是頭疼就能解決的, 公式編輯器的不相容, 使低版本的WORD公式根本無法在高版本中使用. 而雖然TeX也有非常多的版本, 但是TeX的基本格式以及公式等編排格式都有統一的標準, 而那些靈活多樣的格式, 往往只是一兩個文字檔案就可以解決的, 甚至我可能一點不直到別人所用的格式, 但從文檔中我猜出大致意思了, 那我也可以自己寫出那樣特殊的格式, 因為TeX是純文本格式, 你可以輕鬆地讀懂每一句話. 而WORD文檔格式的不公開, 我想不會有幾個人能從一個WORD文檔看出編排後的樣式. TeX的純文字檔案, 使得各個作業系統下的TeX環境都能輕鬆地編輯修改流覽列印你的文章, DOS, WINDOWS, 甚至UNIX.
最為關鍵的是, 現在很多國內外雜誌, 要求寄去的文章按TeX格式排版(可能有些雜誌可以接收WORD文檔, 那你可能又要在茫茫軟體海洋中尋找英文WORD, 因為國外根本就沒有中文WORD, 而你的中文WORD文檔在英文WORD中什麼都看不出來). 那麼會用TeX就更是你迫在眉睫的需要.
TeX就和vi一樣, 在你對他一點不懂的時候, 你總覺得他很難相處, 但是在你瞭解他之後, 你會越來越發現他的好.
TeX 2
+----------------------------------------------------+
| 本節內容: 一個最最最最簡單的TeX文檔, 並在CCT環境 |
| 下編譯流覽列印該檔, 編譯出現錯誤後的繼續, 以及 |
| DOS下的CCT EMTEX的下載及安裝. |
| (附CCT EMTEX的 readme.cct 文件) & nbsp; |
+----------------------------------------------------+
我們已經講過, TeX原始檔案是文字檔案, 就象一個C語言的原始檔案一樣, 那麼我們也象編譯C語言程式得到可執行程式一樣, 我們編譯TeX原始檔案, 得到能在電腦上流覽或列印的格式檔,那就是尾碼為.DVI的檔(我們就稱它為DVI檔). TeX原始檔案我們通常把其尾碼取為.TEX. 當然, 如果你在中文TeX的環境中編排你的中文文章, 那麼你的原始檔案尾碼可能就是那個中文TeX給你約定的了, 我們現在常用的CCT EMTEX, 所用的尾碼是.CTX, 系統的操作是將.CTX原始檔案中的中文經過預處理, 產生標準的TeX檔, 然後再照平常的TeX文檔一樣操作, 得到DVI檔.
今後, 我們均以DOS下的CCT EMTEX環境為例, 來講述TeX文章的編排. 因為TeX的標準, 所以在不同的TeX環境, 其實文章編排的內容格式是一樣的, 只是可能它得到DVI的途徑不同而已. 而我們就以現在比較流行的LaTeX為准來講述TeX的使用, 其他如amstex, amslatex等, 僅是文檔的最外層框架以及少數擴展的命令不大一樣之外, 其他命令都是相同的.
一個最最簡單的TeX文檔可能是: (比如我們用EDIT, 當然也可以用寫字板或UltraEdit等甚至是UNIX下的vi編輯器等編輯一個文字檔案如下四行, 取名為'1.tex')
\documentstyle{article}
\begin{document}
my example content
\end{document}
現在流行的TeX格式似乎已經不是documentstyle而是documentclass了, 但是它們除了一開始的寫法不大一樣之外, 正文的命令排版等等都沒有任何區別. 以CCT EMTEX環境為例, 我們用'latex 1.tex'
來 編譯TeX文件來得到DVI文件, 然後用'view 1.dvi'來流覽,
用'dvi24p 1.dvi'(24針打)
或'dviljp 1.dvi'(激打)
來列印文章.(以上三條命令的尾碼均可以省去, 僅用'latex 1','view 1'和'dviljp 1'等.)
如果你的TeX檔不符合TeX語法, 那編譯將可能出錯, 這時可以讓系統忽略錯誤產生DVI檔(這時可能就不能達到你所期望的排版效果了), 或者你應該修改原始檔案中的錯誤, 重新編譯, 直到全部通過. 在LaTeX編譯出錯時, 會在螢幕上顯示出錯資訊, 並顯示"?"以接受用戶進一步的指示. 在"?"後, 輸入:
1. 回車: LaTeX儘量忽略此錯誤, 繼續運行;
2. s: LaTeX繼續運行, 並之後還有錯誤, 也不停止運行;
3. r: 類似s, 比上者更強硬, 甚至連打不開檔這樣的嚴重錯誤也不停止;
4. q: 同r, 但錯誤及提示均不在螢幕顯示, 直接寫入.LOG文件;
5. I: 之後跟一個字串, 用來插入替代出錯的字串. 比如在正文需要縱向空出1cm空白, 用"\vskip 1cm", 但是輸入錯誤成為"\vship 1cm", 則編譯出錯:
! Undefined control sequence.
l.102 \vship
1cm
?
表示在第102行, \vship是未定義的命令, 這時在?後輸入"I\vskip", 則用\vskip替代出錯的\vship, 繼續執行. 這裏需要注意的是, 這條指令只是編譯中臨時修改錯誤, 並沒有真正地修改原始檔案;
6. 小於10的數: 表示刪出從當前位置開始的那麼多個字元;
7. ?: 顯示提示
8. h: 顯示幫助, 對當前錯誤提出進一步動作的建議;
9. x: 中斷編譯, 將已編譯的結果寫入.DVI中, 出錯及提示寫入
.LOG中.
下載CCT EMTEX, 科大內可去
ftp://202.38.68.76/chencs/cct-new/
該軟體源站點是 ftp.cc.ac.cn:/pub/cct
安裝請閱讀hdinst.doc. 裝之後,關於CCT(TeX的中文介面)部分的說明請看cctman.zip解開後的man.dvi. 文後附CCT中readme.cct 的內容.
TeX 3
+----------------------------------------------------+
| 本節內容: TeX 中的十個保留字元; TeX 中關於空格, |
| 段落, 斷行, 分頁的約定; 幾種TeX中的短橫線以及單 |
| 雙引號的使用; 字體, 字型大小, 分組; 特殊字元, 重音 |
+----------------------------------------------------+
TeX中, 你很常見到的是"\"符號, 那是TeX排版命令的標誌,比如說\Omega就是能輸出鍵盤無法直接輸入的特殊字元Ω, 而\begin{tabular}{ll}將說明一個製錶環境的開始.
和"\"字元一起, $ & % # _ ^ { } ~ 是TeX的保留字元, 如果要在文章中輸出以上字元, 分別應該用\backslash, \$, \&,\%, \#, \_, \^{}, \{, \}, \~{}來表出.
$ 是數學環境的分界符
& 在製錶中和數學環境中, 用來對齊各列的
% 表示之後的為注釋, TeX忽略該行此符號之後的內容
# TeX定義命令時, #1--#9表示第幾個參數
_ 數學公式中的下標
^ 數學公式中的上標
{ } 分組的開始和結束
~ 用在英文排版中, 表示不可斷行的空格
TeX中有幾個約定:
1.空格和<TAB>符以及回車符, 都被TeX當做一個空格(即使你連續輸入很多空格), 也因此, 不能將一個完整的英文單詞用回車切開;
2.段落: 在TeX原始檔案中, 一個空行就表示一個新段落的開始, 也可以用"\par"產生新段落;
3.TeX將一段的正文按定義的寬度及頁高自動進行斷行分頁,因此如果需要強制斷行用"\\"或"\newline"來表示; 換頁用"\newpage"或"\clearpage";
4.短橫線的長度:
連字元, 用"-", 如"X-ray";
表示數字的範圍, 用"--", 如"1--2";
破折號, 用"---";
在數學環境中, "-"總是當作減號;
5.單引號和雙引號
單引號, 分別用"`"和"'"來表示;
雙引號, 則用"``"和"''"(兩個同方向單引號連用).
LaTeX中有256種字體甚至更多, 而常用的是5--6種而已, 比如英文正文常用羅馬體("\rm"), 公式中常用義大利體("\it"), 其他字體有黑體("\bf"), 斜體("\sl"), 等線體("\sf"), 打字機 體("\tt"). 在不使用字體控制時, 缺省是羅馬體, LaTeX一直使用當前字體, 直到出現改變字體的命令為止. 而CCT中增加了改變中文字體的命令: "\songti"(宋體), "\heiti"(黑體), "\fangsong"(仿宋), "\kaishu"(楷書), 中文字體缺省是宋體.
LaTeX英文字型大小使用point(點制). 1 inch=72.26 pt. LaTeX 從小到大,依次用"\tiny", "\scriptsize", "\footnotesize", "\small", "\normalsize", "\large", "\Large", "\LARGE",
"\huge", "\Huge"來定義和改變字型大小. 在定義了10pt, 11pt或12pt的基準字型大小後, LaTeX也相應地調整以上各字型大小的大小. 這裏還要注意的是, 在同時使用英文字體和字型大小控制中, 應先改變字型大小再改變字體, 否則可能得不到希望的結果. CCT中, 對中文還有專門的命令"\zihao{n}", 這裏n是中文字型大小的號數, 為0到7, 以及-4(小四)和-5(小五).
在上面, 我們已經知道了{和}定義了分組(group), 所有在分組字元之間出現的命令的作用範圍都只是在這組相應的大括弧中. 看看例子"normal {\bf this is bf} normal again"就知道了.
在編排科技文獻中, 經常會遇到一些鍵盤無法直接輸入的字元, 比如節號, 版權號, 劍號以及在字母上加一些重音符號等等.你來試試看:
\S \P \copyright \dag \ddag \^a
以a為例, 下面看看各個重音符號的作用: \^{a}, \v{a},\~{a}, \'{a}, \`{a}, \.{a}, \"{a}, \u{a}, \={a}; 而在以後要講的數學環境中, 以上幾個重音應該分別表示為$\hat{a}$,$\check{a}$, $\tilde{a}$, $\acute{a}$, $\grave{a}$, $\dot{a}$, $\ddot{a}$, $\breve{a}$, $\bar{a}$, 最後, 在數學環境中, 還有$\vec{a}$是在a上面加一小箭頭. 其中, 數學環境中, 還有\widhat和\widtilde, 可以自動地調整^或~的長度, 以適應其後{}中的多個字元.
TeX 4
+----------------------------------------------------+
| 本節內容: TeX的檔版式\documentstyle, 頁面格式 |
| \pagestyle, 版面的尺寸參數 & amp; nbsp; |
+----------------------------------------------------+
TeX的版式首先是檔版式, 也就是我們接觸的第一個最最最簡單的TeX文檔中的第一句:
\documentstyle[選項1,選項2,...]{格式}
其中的[]及選項是可選的, 而{格式}是必需的. LaTeX有以下幾種格式: article(文章), report(報告), book(書), letter(信件). CCT對前面三種進行了漢化, 分別是carticle, creport和cbook.
常用的選項有
10pt/11pt/12pt: 定義基準字型大小, 缺省10pt.
twoside: 兩面印刷格式, 因奇偶頁裝訂位置不同而異, 缺省為
單頁.
twocolumn: 雙欄排版, 缺省為單欄.
titlepage: 僅在article格式使用, 它是\maketile產生一個單
獨的文章題目頁, 同時abstract也產生單獨頁
leqno: 使公式標號出現在左邊, 缺省在右
fleqn: 公式左對齊, 缺省中間對齊
thesis: 專用於畢業論文排版
IEEE: 專向IEEE類雜誌投稿的格式
IFTHEN: 排版電腦程式
LaTeX的一個頁面有頁眉(head, 通常是雜誌名, 卷號, 當前章節名等), 主體(body, 正文, 包括註腳及圖表), 頁腳(通常是頁碼, 如果頁碼放在頁眉處, 則頁腳可能是空的). 我們用下面的指令控制頁版面:
\pagestyle{參數}
參數可以是
plain: 頁碼在頁腳居中, 頁眉空白, 為article, report的缺省
empty: 趁 頁腳都空白
heading: 頁腳為空, 頁眉為正文的章節資訊及頁碼
myheadings: 自定義頁眉, 內容由
\markboth{left_head}{right_head} (雙面twoside排版)
或\markright{right_head} (單面排版)
\pagestyle是對全文有效的, 而如果要定義某頁的頁面格式, 則可用\thispagestyle, 用法同上, 下一頁自動恢復原設置.
這裏提到頁碼, 我們經常會修改頁碼的表現格式, 可能用阿拉伯數字或羅馬數字等, 則修改\pagenumbering{參數}, 這裏參數可以是arabic(阿拉伯數字), roman(小寫羅馬數字: i, ii, iii,) Roman(大寫羅馬數字: I, II, III,), alph(小寫英文: a, b, c,), Alph(大寫英文: A, B, C). 如果需要更改某頁的頁碼, 則用修改計數器命令: \setcounter{page}{數字}, 這裏page是頁碼計數器.
TeX中還經常會在\documentstyle和\begin{document}之間常用到很多修改版面尺寸的命令. 如未指明, 這些命令的格式都是用\para_name=newvalue的格式.
\texwidth, \texheight 頁body的寬度和高度, 不包括 趁 頁腳
\oddsidemargin, \evensidemargin 奇數/偶數頁, 紙張左邊緣到頁body左邊緣的距離減去一英寸
\topmargin 紙張上邊緣到頁眉或body(無頁眉時)的距離減去一 英寸
\marginparwidth 頁邊注(marginnote)的寬度
\marginparsep 正文邊緣到頁邊注邊緣的距離
\headheight 頁眉高度
\headsep 頁眉底部到頁主體頂部的距離
\footheight 頁腳高度
\footskip 頁正文最後一行底到頁腳底的距離
(建 議, 總把\oddsizemargin, \evensidemargin, \topmargin設為0cm; 如果沒用頁眉, 將\headheight, headsep設為0cm; 如果沒用頁腳, 將\footheight, \footskip設為0cm, 這樣便於在輸出時直接利用驅動程式的功能控制版心的位置.)
\columnsep 雙欄article中, 左右欄間空白的距離
\columnseprule 雙欄article中, 左右欄間分隔線的寬度, 缺省為零, 即沒有線
以下參數的修改可以在\begin{document}的前面和後面:
\parskip 段落之間除了空出正常行距外額外空出的距離
\parindent 段首空白的長度
\footnotesep 兩個注腳之間的距離
\baselineskip 正文中前一行底和第二行底的距離, 會因字型大小的改變自動改變.
另外, 定義行距還有一個特殊的參數, 那是\baselinestretch,它是用在\begin{document}前的總體變數, 修改格式如
\renewcommand\baselinestretch{倍數} 缺省時為1.0, 因此
LaTeX中最小行距是\baselineskip乘上\baselinestretch得到的.
TeX 5
+----------------------------------------------------+
| 本節內容: 以一個article例子看看文章的一般排版格 |
| 式. title信息詳解. 以下僅就例講解, 詳情後續: 章 |
| 節, 留空(LaTeX的長度表示), 參考文獻. & amp; nbsp; |
+----------------------------------------------------+
有了那麼多準備知識,我想現在可以開始深入展開一篇文章的排版了.大家可以把以下內容從\documentstyle行開始, 直到\end{document}行存在一個文字檔案中, 如111.tex, 然後編譯: latex 111(因為用到交叉引用, 需要編譯兩次), 然後用view 111來流覽此例, view中, 回車翻下頁, <ESC>退出(具體view的使用參看CCT的man.dvi)
\documentstyle{article} %使用article格式
\topmargin=0pt %以下頁面設置
\oddsidemargin=0pt \evensidemargin=0pt %
\textwidth=14cm %
\textheight=21cm %
%
\title{This is a sample of \LaTeX} %文章題目
\author{Bigeyes(\tt{chencs@263.net})\\ %作者. 多行用\\
Department of Mathematics\\ %
USTC, Anhui, Hefei, 230026 %
%
\and %如有多作者, 用\and
A\_A %
\thanks{Supported by ...} %致謝, 在author裏
\\ %
BBS of USTC\\ %
bbs.ustc.edu.cn[202.38.64.3]} %
\date{Mar. 1, 1999} %日期, 如果沒有此項,
%則以當前日期代替, 若
%不要日期, 則用空{}
%
\begin{document} %document開始.
%以上定義標題各項內容,
\maketitle %此句產生標題, 不可缺少,
%一般都是正文第一句
\begin{abstract} %套用abstract格式
This is mini-page defined for abstract, %自動形成小頁
you only write your abstract in it. If %
you want to shows keywords, maybe you %
should use: %
{\bf Keywords: }\LaTeX, example %LaTeX沒有keywords環境
\end{abstract} %自己手工來做吧
%
\section{The very beginning} %一個節, 節的使用後詳
This is the first section of your %
article. You may find every first %一節的第一段缺省情況
paragraph of your section, subsection, %為段首不自動縮進
chapter or ... always has no %
``parindent'' at the beginning. %
This is the second paragrph, you can %但是以後的段段首
find this has parindent at the % 自動縮進
beginning. If you want to show %
parindent at first paragraph too, %
do as the first paragraph I showed %
in the next section. %
%
\section{The 2nd step} %第二節,使用自動標號
\hskip \parindent %橫向空出\parindent
This is the second section. In this %從這裏大家看到
first paragraph, I use `hskip' to %\parindent其實是
get the first parindent. Maybe you %一個長度單位, 長
can get this effect by another way. %度單位後詳
%
\subsection{Sub-sect of 2} %小節
this %
%
\subsection*{\S 2.2 Another sub of 2} %節,小節可以不使用
this %自動標號, 這時有關
%的計數器不增加
\section{Conclusion} %
I think you have know \TeX well now. %又是一節
I want to show you how to use %
bibliography. In the article, you %參考文獻的
can use as ``see \cite{texbook}''. %引用方法\cite{標識}
%
\begin{thebibliography}{0} %參考文獻列在這裏
%{0}表示最長文獻序號
% 為一位數
%\bibitem{標識}
%參考文獻使用後詳
\bibitem{texbook} Donald~E.~Knouth, ``The \TeX book'',
Addison-Wesley, 1984
\bibitem{lamport} L.\ Lamport, ``\LaTeX:
A Document Preparation System'',
Addison-Wesley, 1994
\bibitem{companion} M.~Goossens, F.~Millelbach,
and A.~Samarin, ``The \LaTeX\ Companion'',
Addison--Wesley, 1994
\end{thebibliography}
\end{document} %document結束
TeX 6
+----------------------------------------------------+
| 本節內容: 章節劃分, 正文空白, TeX的長度, 註腳 |
+----------------------------------------------------+
上一節我們"親密接觸"了一個LaTeX文章, 下面, 我們就其中一些地方做補充說明.
LaTeX的章節劃分很方便, 只要使用章節命令, TeX就能自動地改變其字體, 字型大小, 行距和排版方式. 章節劃分的一般格式為 \sect-command{sect-name} 或 \sect-command*{sect-name}這兩種格式的區別是, 前者自動給章節加序號, 而後者不加序號,也不加相應計數器. 這裏的\sect-command可以是(從大到小)\part, \chapter, \section, \subsection, \subsubsection, \paragraph, \subparagraph. 其中在article環境中沒有\chapter. 大家可以參看上節的例子.
在TeX中, 大家已經知道, 不管你用了多少個連在一起的空格, 都代表一個, 不管你用幾個空行, 都只表示新起一段. 那麼, 怎麼在正文中留空格呢?(關於數學環境, 以後再講) 在TeX中, 橫向用""或"\enskip"表示空格, 可以用"\quad"表示大空格, "\qquad" 更大一些, 而"\hskip 長度"或"\hspace{長度}"可以任意控制空白的大小; 縱向, 從小到大可以使用"\smallskip", "\medskip","\bigskip", 而"\vskip 長度"和"\vspace{長度}"可以控制縱向空白的大小. 這裏還要多說一句的是: 命令"\hspace*{長度}"和"\vspace*{長度}", 這二者的空白只在當前行當前頁有效, 不會在行尾或頁末造成影響.
上面大家看到"長度"這個概念了, 在TeX中, 有絕對長度和相對長度之分, 前者為數位加上絕對長度單位, 如mm(毫米), cm(釐米), in(英寸), pt(點), 例: 1.5mm, +2.8cm, -1.2in, 72.27pt.這裏還要注意的是即時是零長度, 也要加上單位: 0cm等. 而相對長度單位有: em(當前字型大小M字母的寬), ex(當前字型大小x字母的高), CCT中還定義了"\ccwd"(當前字型大小漢字寬), "\ccht"(當前字型大小漢字高), "\ccdp"(當前字型大小漢字的深度). 從上節的例子大家可以看到, "\parindent", "\baselineskip", "\parskip"等距離參數, 也可以作為長度單位, 因此, "0.5 \textwidth"也是合法的長度,它等於當前頁面正文寬度的一半.
最後, 我們看看TeX怎麼在文中加註腳的. 一般格式是:
\footnote[num]{內容}
其中[num]是可選項, 如果省略, 則自動給該頁註腳排序, 從1開始標號. footnote只能用於普通正文模式中, 比如盒子或數學環境中都無法使用, 因此系統提供了另外兩條命令:
\footnotemark[num] 用來在文中插入註腳符號, 但不產生註腳內容; 而
\footnotetext[num]{內容} 則用來真正產生註腳內容. 注意在以後要講的minipage中, 系統可能會將註腳放錯位置.
TeX 7
+----------------------------------------------------+
| 本節內容: 三種數學環境, 數學環境中字體和字型大小, 數 |
| 學公式中的空格, 上下標, 分式, \displaystyle, 大 |
| 大小小的括弧, 根式, 導數. & nbsp; |
+----------------------------------------------------+
到這裏, 大家就已經能輸入一篇完整的一般文章了, 但是科技文章總少不了數學公式, 而且大家選擇TeX作為排版工具, 其中一個原因也是看中了它美觀的公式編排, 現在我們就來看看和一般正文不一樣的公式.
TeX提供三種有關數學公式的環境, 一種是"文中公式", 通過$或\(進入"數學環境", 通過$或\)來結束數學環境的; 第二種是"獨立公式", 用$$或\[進入"顯示數學環境"(以後我們統稱數學環境), 用$$或\]退出, 在正文, 它是獨佔一行的, 它排出的字體要稍微比文中公式要大些; 第三種是帶公式標號的數學公式: "方程",這個以後我們詳細再講. 數學環境是自動根據當前字型大小來調整公式中字的大小的.
數學環境中, 缺省字體是數學斜體(顯示出來和義大利體一樣), 因此如果要用到正文, 需要改變字體或使用盒子, 如我們要輸出"y=x, if x>0,"這一句, 其中的"y=0"和"x>0"應該是數學公式(雖然不進入數學環境也能輸), 而"if"卻屬於正文內容, 因此不應該用數學斜體顯示, 而應該用"$y=x, {\rm if} x>0$"或用盒子: "$y=x, \mbox{if } x>0$", 但這裏還要注意的是, 數學環境中忽 略一切空格(當然分隔命令的空格除外), 因此第一種輸入可以發現, if和x>0之間沒有我們想要的空格, 而第二種輸入方式由於在\mbox{} 中if後加了一個空格, 所以if和x>0有一個空格, 這正是我們想要的. 因此標準的輸入方法一般用後者. 而且, 前者的方法對漢字就不適用, 因為漢字不能出現在數學環境中, 而用盒子框起來就沒問題了. 這裏再多說一句的是, 數學環境中不能使用字型大小命令, 如果需要改變字型大小, 應該在數學環境之外改變, 而數學環境自動根據當前字型大小調整字的大小.
上面已經提到數學環境中忽略任何空白字元, 那麼, 怎麼在公式中輸出空格呢? 當然我們可以用以前講過的\quad或hskip來空出橫向空格等, 但是如果我們要輸出諸如"fdx"(這裏dx是微分),這樣在f和dx中要有一個小空格, 用\quad顯然太大了, hskip根本不知道該空出多大距離. 在公式中, 常用的幾個調整距離的命令是"\,"(小距離), "\:"(中距離), "\;"(大距離), "\!"(負距離),象剛才說的例子, 我們一般就用$f\,dx$即可. 當然, 一般情況我們很少改變數學公式中的距離.
下面我們看看如何在數學公式中輸入上下標, 在講TeX保留字時大家就有印象了, 上下標分別用"^"和"_"來表示, 如$x_0^2$, TeX中, 先輸上標後輸下標和先寫下標再寫上標是沒有區別的, 它都會一樣地自動調整字元大小和位置. 如果上下標的字元不止一個, 那就用"{}"括起來, 如$x^{1+y^{i+1}}$. 如果有人突然想在字元的左邊輸上下標呢? 簡單的方法是在前面加一個空的{}, 如${}_{17}^{35}Cl$, 哦, 可能不是用的數學斜體, 那只好再用盒子了: ${}_{17}^{35}\mbox{Cl}$.
有時我們可能直接用1/2來表示分數就可以了, 但是如果分子分母我們想要排在分數線的上下, 那就要用"\frac{分子}{分母}"來表示了, 如$$\frac{1}{x+1}$$. 但是大家如果再把這個例子用單$括起做文中公式, 或者$$y=\frac{y-\frac{1}{x+1}}{y+1}$$,就會發現, 這個分式顯示出來覺得比正常字型大小小, 要解決這個問題就要用\displaystyle的命令了. 可以試試
$$y=\frac{y-\displaystyle\frac{1}{x+1}}{y+1}$$, 可以了吧. 當然, 如果你在\documentstyle中使用了vatola選項(需要TeX系統在指定目錄有vatola.sty檔), 那麼, 你可以直接用\dfrac來代替\frac來達到同樣的效果, 而避免使用冗長的\displaystyle 的輸入.(格式如\documentstyle[vatola]{article}; 而如果用\documentclass{article}, 則用\usepackage{vatola}); 或二者均可以在第一句後面加上\input vatola.sty來包含這個包)
有人可能又要問了, 如果我輸出的分數, 分子還是有分子分母的分數, 分母也是一個不簡單的分數, 那層層迭迭的分數線, 不夠美觀, 我還是喜歡"分子/分母"的格式, 那怎麼把這條斜分數線畫得長一些呢? 這裏就要用到所謂的"定界符", 也就是成對出現的類似於括弧的符號了, 如(), [], {}(用\{和\}輸入), <>(用\langle和\rangle輸入), /, \(用\backslash), |, ||(用\|); 以及另一些沒法直接顯示的符號, 大家自己用TeX產生出來看看:
$\lfloor, \rfloor; \lceil, \rceil; \uparrow; \Uparrow;
\downarrow; \Downarrow; \updownarrow; \Updownarrow$. 這些
" 括弧"通常嵌套並和分數等數學公式一起使用, 如$$y=1+(\frac{(x+1)^2}{x^2})$$, 當然大家會看到這外層括弧太小, 不美觀, 因此TeX提供了幾個改變大小的命令, 從小到大依次是\big, \Big, \bigg, \Bigg, 如$$(, \big(, \Big(, \bigg(,\Bigg($$, 其他定界符類似使用. 另外, TeX還提供了自動調整括號大小的命令, 那就是在定界符前加\left和\right, 需要注意的是\left和\right一定要成對出現, 如果只用單個, 那麼另一邊就要用"\left."或"\right."補上. 知道這些後, 我們就可以來輸入長的"/"號了: $$\frac{1}{x+1} \left/ \frac{y+1}{x^2} \right.$$或$$\left. \frac{1}{x+1} \right/ \frac{y+1}{x^2}$$, 這兩個是不是比$$\frac{\displaystyle\frac{1}{x+1}}{\displaystyle
\frac{y+1}{x^2}}$$更令人滿意啊?
下面, 我們來講講根式的輸入: "\sqrt[開方次數]{運算式}", 其中[開方次數]可選參數, 如果沒有則是開平方, 如
$$\sqrt[3]{x+y}+\sqrt{2}$$.
而導數, 也就是在字母右上方加一撇或兩撇的輸出, 我們常用$$f^{\prime}$$和$$f^{\prime\prime}$$來表示, 或更簡單地, 用$$f'$$和$$f''$$來表示.
TeX 8
+----------------------------------------------------+
| 本節內容: 數學符號: 希臘字母, 二元運算符, 關係運 |
| 算符, 箭頭, 其他符號, 可用於一般環境的符號, 花體 |
| 符號及函數名, 可變大小的符號, \limits和\nolimits, |
| 省略號, 符號的上下堆積, 上下標的分行 & amp; nbsp; |
+----------------------------------------------------+
TeX提供了許多"控制符號"來得到諸如希臘字母, 關係運算符,箭頭等無法用ASCII鍵盤直接輸入的符號.
小寫希臘字母, 如\alpha,\beta, \gamma, \pi;
大寫希臘字母, 如\Gamma, \Pi, \Omega;
二元運算符, 如\times(乘號), \div(除號), \pm(加減號), \circ(小圓圈), \cdot(點)等;
關係運算符, 如\leq(小於等於), \geq(大於等於), \subset(包含於), \supset(包含), \in(屬於); 否定關係運算符, 如\not=(不等於), \not<(不小於), \not\supset (不包含); 箭頭, \leftarrow, \rightarrow, \longrightarrow, \uparrow, \mapto等;
其他符號, \nabla(Nabla運算元), \angle(角), \infty(無窮), \forall(任意), \exists(存在), \prime(導數的撇). 這些符號比較多, 這裏就不細細一一列出, 大家去找一本TeX書, 複印那兩三頁下來就可以了.
本節講的絕大多數符號都只能在數學環境中使用, 有幾個符號也可以使用在一般環境中, 那是\S(節號), \P(段落號), \dag(劍號), \ddag(雙劍號).
有時數學公式中的函數名, 運算元等要用特別的花體來排版, TeX提供了\cal字體, 如"function $\cal F$". 而對於專有名詞,如一些函數名, 如sin x中的sin, 就要用羅馬體, 而不是一般的數學斜體排印, 我們可以用$${\rm sin}x$$, 也可以用TeX提供的直接在函數名前加"\"的方法: $$\sin x$$, 一般的函數均有定義, 如\sin, \cos, \lim, \log等.
數學環境中, 還有一類特殊的符號, 那就是可變大小符號, 如求和號, 積分號, 它們會因為符號後面的內容的大小自動調整自己的大小:
\sum, \prod, \coprod, \int, \oint, \bigcap, \bigcup, \bigsqcup, \bigvee, \bigwedge, \bigodot, \bigotimes, \bigoplus, \biguplus.
需要注意的是, 有些可變符號的上下標位置在文中公式和獨立公式中是不一樣的, 大家看個例子:
$\sum_{i=1}^n x_i=\int_0^\infty f(x)dx$
和$$\sum_{i=1}^n x_i=\int_0^\infty f(x)dx$$,
這 裏大家看到, \sum在文中公式中, 上下標是寫在右上角和右下角的, 在獨立公式中, 是寫在上面和下面的; 而\int在二者中都寫在右上角和右下角的. 我們可以強制用\limits和\nolimits來控制上下標的出現位置: 使用方法如$\sum\limits_{i=1}^b x_i$就強制將上下標寫在上邊和下邊, 而\nolimits使其出現在右邊角上. 這裏多說一句, 如果你想把一般的操作符也想用\limits或\nolimits用, 只須把你的操 作符用\mathop{}括起來即可.
大家如果編排矩陣或行列式, 就會遇到特別的省略號, 大家試試\cdots, \vdots, \ddots就是三個方向的省略號. 而\ldots是比 \cdots低一點的省略號, 它和其他三個不同的是也可以用在正文環境中. \ldots一般用於$x_1, x_2, \ldots, x_n$這樣的時候.
排版數學公式可能還會遇到需要把兩個符號上下組合在一起,最常見的就是上劃線和下劃線, 大家試試
$$\overline{a+b+c+d}$$
和$$\underline{a+b+c+d}$$,
這裏需要說明的是, \overline只能用於數學環境, 而\underline也可以用在正文中. 類似地還有用花括弧括在式子上下的: $$\overbrace{a+\underbrace{b+c}+d}$$, 而如果上下括弧上面或下面還有符號, 可以用上下標來表示, 如:
$$\overbrace{a+\underbrace{b+c}_{1.0}+d}^{2.0}$$.
LaTeX還可以將任意兩個符號重疊在一起: \stackrel{上層符號}{下層符號}, 如$$\vec{x} \stackrel{\rm def}{=}(x_1, x_2, \ldots, x_n)$$, 這裏需要說明的是\stackrel中第一個參數的符號以較小字型大小輸出的. 而$${上面 \atop 下面}$$可以把兩行內容按相同字型大小排出, 類似 地就出現了$${n \choose m}$$則是帶括弧的n個取m個的寫法.
符號可以上下堆積, 可是我們如果要在\sum的下面寫諸如i<9和j<9這兩行下標, 用$$\sum_{i<9 \j<9} i/j$$是不行的. 我們怎麼實現這樣的分行呢? 我們可以用\atop來堆積, 如
$$\sum_{\scriptstyle i<3 \atop \scriptstyle j<3} i/j$$
這 裏之所以加了\scriptstyle是因為僅用\atop命令會把上下的字體再縮小一號. 另外, 我們也可以用另外的方法: 前面我們在講\frac時提到\dfrac這個符號需要使用包vatola.sty, 這裏, 如果使用了vatola.sty這個包, 我們可以在下標中用{\Sb 第一行 \\第二行 \endSb}, 在上標中用{\Sp 第一行 \\ 第二行 \endSp}來表示多行下標或上標.
TeX 9
+----------------------------------------------------+
| 本節內容: 陣列array, 方程(標號)equation, 多行方程 |
| eqnarray, \aligned(vatola.sty), 標號的交叉引用 |
| 參考文獻的使用(more) & nbsp; |
+----------------------------------------------------+
陣列環境通常用來編排矩陣, 行列式等對齊的數學公式的.它的格式是:
\begin{array}{列對齊}
第一行 \\
第二行 \\
...
最後一行
\end{array}
這 裏, 列對齊的格式是{c1c2c3...cn}, 每個ci為一個字母, 說明第i列的對齊方式, 可以是c(居中), l(左對齊), r(右對齊). 而每一行的各列用&符號隔開, 行末是\\. 因此n列的陣列, {列對齊}應該有n項, 每行應該有n-1個&, 一個\\(最後行通常不用\\). 陣列中某一列可以不存在, 但是&號不能少. 陣列外常常使用可變大小的定界符\left和\right, 大家看個例子:
$$\left(
\begin{array}{clr}
a+b+c & a+b+c & a+b+c \\
a+b & a+b & a+b \\
a & a & a
\end{array}
\right) $$
這裏要作些說明,陣列中某兩行的距離可以用"\\[距離]"來改變, 也可以用"\renewcommand\arraystretch{實數}"來整體修改陣列的垂直距離(缺省為1.0), 而參數\arraycolsep=...是修改其列間距. 使用陣列時, 經常容易出錯的是: array必須出現在數
學環境中, &的個數和\\的個數一定要正確, 如果使用可變大小的 括弧, 一定要注意\left和\right必須成對出現, 即使只排印半對括弧.
一般的$和$$環境, 不能給公式或方程編號, 因此, 就用到了方程環境. 格式是:
\begin{equation}
方程
\end{equation}
這 其中的方程, 和$$情況沒有兩樣, 只是在公式右邊自動加上了程編號(如果\documentstyle用了\leqno選項, 則公式標號在左邊). 多行的方程可以把array使用在equation中來實現, 但是標號只出現一個, 出現在多行的中間. 如果多行要分別標號, 或者不想用麻煩的$$嵌套array, 那就要用到多行方程環境:
\begin{eqnarray}
......
\end{eqnarray}
和
\begin{eqnarray*}
...
\end{eqnarray*}
二者的區別是, 帶*號的不將公式標號排出來, 而不帶*的自動給每行式子編排標號. 在\begin{eqnarray}和\end{eqnarray}中的部分是一個三列的array環境, 因此有兩個&和一個\\, 如:
\begin{eqnarray}
y&=&1+2+3+4+5+6+7+8+9+10 \\
&=&55
\end{eqnarray}
而如果把方程某行的\\前加上"\nonumber", 則TeX不給該行方程編排標號, 如"y&=&1+2+3+4+5+6+7+8+9+10 \nonumber \\", 則該行不出現標號. 這裏還要注意的是equation和eqnarray都是直接進入$$的顯示數學環境, 此不能在前面和後面加上$或$$了.
大家可能會注意到, 不論是array還是eqnarray, 每個&符號都會在公式中產生列的小空隙, 同樣也在vatola宏庫中, 定義了一個aligned對齊環境, 它使得編排多行公式在對齊的同時不會出現$符號位置的列空隙. 它可以出現在$$環境中, 那公式不標號; 或出現在equation中, 它對一個多行公式只標一個標號, 類似於array. 它相當於一個兩列的array, 因此每行僅有一個&.
\begin{equation}
\aligned
y&=1+2+3+4+5+6+7+8+9+10 \\
&=55
\endaligned
\end{equation}
這裏需要注意的是, \begin{array} \end{array}和\begin{tabular}(製錶)\end{tabular}不能出現在\aligned與\endaligned中, 如須
使用, 要用\vbox{}或\hbox{}等把array或tabular環境括起來.
在講第一個完整的TeX文檔例子時, 大家一定注意到參考文獻標號的交叉引用, 而方程也有標號, 也可以交叉引用. 為什麼我們選擇交叉引用而不是直接在文中寫"公式(1)中..."的原因很簡單, 交叉引用可以即時地調整標號, 插入或刪去一個公式帶來整體標號的改變, 無需改變引用標號的地方; 而且, 可以在不修改正文的情況下靈活地調整標號的風格.
TeX使用\lable{標號}來定義標號, 這裏的標號可以是字母,數位, 標點等組成的字串. 需要引用, 則使用\ref{標號}, 這裏的"標號"應該是有\lable定義過的, 定義和引用的先後無關. 例如, 我們有
\subsection{Early Results}
\label{sec-early} %這裏定義子節標號
Euler's equation
\begin{equation}
e^{i\pi}+1=0 \label{eq:euler} %這裏定義方程標號
\end{equation}
\combines the five most important numbers in mathematics
in a single euqtion.
然後我們就可以如下地引用
Equation~\ref{eq:euler} in Section~\ref{sec-early} ...
不 管這裏方程或子節的標號是多少, 引用時都能準確地指出. 這就是我們要使用自動交叉引用的原因. 這裏, \label會自動根據自己的位置, 得出標號, 如出現在equation, eqnarray, enumerate (專案), figure(圖), table(表)環境中, 被引用的是公式號, 專案編號或圖表號; 而出現在其他位置則是章節號.
引用時除了\ref外還有一個\pageref{標號}, 它顯示的是\label{標號}出現的頁面位置.
\cite和\bibitem我們在一開始的例子中就看到了, 我們這裏更詳細地說說這兩條命令的完整格式:
\cite[附加資訊]{標號1, 標號2, ..., 標號n}
\bibitem[名稱]{標號}
先看一個\cite加附加資訊的例子(這個例子是在第5節例子的參考 文獻的基礎上的):
See \cite{texbook, companion} or \cite[page 20-22]{lamport} ..
再看\bibitem的名稱可選項:
See \cite{kn:texbook} for more details.
...
\begin{thebibliography}[lamport 86] %[]中是最長文獻編號
\bibitem[Knuth 84]{kn:texbook} D. E. Knuth. {\sl The \TeX{}book}.
Addison-Wesley, Reading.
\end{thebibliography}
這裏再多說一句的是: 所有涉及交叉引用的檔, 在修改過與交叉引用有關的內容之後, 都需要對原始檔案進行兩次編譯才能得到正確的結果.
TeX 10
+----------------------------------------------------+
| 本節內容: 居中, 左對齊, 右對齊環境; 小頁環境; 抄 |
| 錄環境; 列表環境; 製錶環境. & amp; nbsp; |
+----------------------------------------------------+
這裏要介紹的是幾個TeX中常用的環境, 它的一般格式是:
\begin{環境名}
...
\end{環境名}
首先是居中, 左對齊, 右對齊環境, 這三者的環境名分別是center, flushleft和flushright, 在環境中的正文以\\斷行. 這三個環境比較簡單, 就不舉例子了. 需要注意的是, 緊接這環境後的正文和環境如果沒有空行隔開, 那麼系統認為是一個段落,就是說環境後的正文行首沒有\parindent的縮進.
小頁環境大家在第一個完整的TeX例子中已經看到了, abstract就是小頁. 小頁環境的格式是:
\begin{minipage}[位置]{寬度}
...
\end{minipage}
{寬度}可以用TeX的任何合法距離; [位置]是可選項, 可以選擇t 或b來表示小頁是和正文是"頂部對齊"還是"底部對齊", 請看例子:
NORMAL TEXT
\begin{minipage}{1 in}
This is a minipage aligned on its bottom line.
\end{minipage}
AND
\begin{minipage}[t]{1 in}
This is a minipage aligned on its top line.
\end{minipage}
END
注意的是, 小頁的footnote(註腳)是緊跟在小頁後面, 而不是在整個頁面的下面, 所以在minipage嵌套時, 可能系統會放錯註腳的位置.
抄錄環境(verbatim)在\begin{verbatim}和\end{verbatim} 的任何字元都將原樣輸出, 包括\等TeX保留字. 而"verbatim*"與verbatim的區別是, 它將把空格用|_|表示出來. verbatim有一個簡寫形式, "\verb識別字 字串 識別字", 其中識別字可以是空格以外任何字元, 它與\verb之間沒有空格. 如:
\verb+
This is \!@#$%%^&*&*({ All you want to type.
+
當然, 字串裏就不能出現你作為識別字的符號了.
列表環境itemize, enumerate, description.
\begin{itemize}
\item 列表項1
\item 列表項2
...
\item 列表項n
\end{itemize}
自動編號; 如果超過一行, 自動縮進以突出編號. 而enumerate與itemize的區別是, 它不出現數字編號, 而是以小黑圓點來標識.
description一般用於類似於名詞解釋的情形:
\begin{description}
\item[名詞] 解釋
\item[名詞] 解釋
...
\end{description}
一般, 還在[名詞]中加上\bf或\heiti以突出名詞.列表環境還可以嵌套使用, 具體就不細述了.
TeX專門提供了一個製表環境, 用來排印有線或無線的表格.
\begin{tabular}[位置]{列定義}
...
\end{tabular}
這 裏[位置]和minipage一樣, 可選t或b, 但我們通常用的表格都是獨立表格, 所以通常不定義位置, 而直接獨立一段. {列定義}類似於array的列對齊, 可以用c,l和r來表示對齊方式, 這裏的列定義還可以在列對齊字母間用"|"以畫出表格中列的豎線. 表格內容如array一樣, 用&隔開, \\換行, 同樣要注意&的個數. 表格的橫線可以用\hline來表示, 如:
\begin{tabular}{|c|c|c}
\hline
1 & 2 & 3 \\
\hline
4 & & 6 \\ %這裏要注意, 若最後行要畫橫線, 則此處要有\\
\hline
\end{tabular}
而"\cline{列號1-列號2}"則是表示從列號1到列號2的一條橫線. 而如果要在表格元素中畫豎線, 則可以用"\vline". 有時我們還會遇到需要把某行表格的幾列合併起來, 這就要使用
\multicolumn{欄數}{欄定義}{內容}
{欄數}是要合併的欄的數目, {欄定義}類似於表格的{列定義}, 如:
\begin{tabular}{|c|c|c|}
\hline
\multicolumn{2}{|c|}{1} & 2 \\
\hline
3 & 4 & 5 \\
\hline
\end{tabular}
而
\begin{tabular*}{寬度}[位置]{列定義}
...
\end{tabular*}可以自己定義表格的總寬度, 如\textwidth等TeX
的合法距離.
最後, 我們講講製表環境的四個參數, 這四個參數都是局部 參數, 也就是說只要用分組限定命令的作用範圍, 就可以調整某個表格的參數而不影響其他表格. \tabcolsep是兩列間水準距離的一半, 缺省為6pt; \arrayrulewidth為定義\hline, \vline,\cline及列定義的分隔線|的線寬, 缺省為0.4pt; \doublerulesep為連續兩個\hline或列定義中連續兩個|所畫的線段之間的間隔,缺省為2pt, 如果設為0pt, 則可以用連續的\hline或|來加粗表格的某些線框; \arraystretch是一個實數, 缺省為1.0, 定義行距的一個因數, 用\renewcommand來改變.