latex教程——读书笔记整理(二)——文本排版

文本排版

目录

文本排版

断行和分页

对齐段落

断词

内置字符串

特殊字符和符号

引号

破折号和连字号

波浪号

度的符号(゜)

省略号

连字

注音符号和特殊字符

标题、章、节

交叉引用

脚注

强调

环境

Itemize、 Enumerate 和 Description

左对齐、右对齐和居中

引用、语录和韵文

摘要

原文打印

表格

浮动体

保护脆弱命令


断行和分页

对齐段落

在特殊情形下,有必要命令LATEX 断行

另起一行,而不另起一段。

\\ or \newline

在强制断行后,还禁止分页。
 

\\*

另起一页。
 

\newpage 

另外,还有

\linebreak[n], \nolinebreak[n], \pagebreak[n], \nopagebreak[n]

上述命令的效果可以从它们的名称看出来。通过可选参量n,作者可以影响这些命令的效果。 n可以取为0和4之间的数。如果命令的效果看起来非常差,把n取为小于4的数,可以让LATEX 在排版效果不佳的时候选择忽略这个命令。不要把这些“break” 命令与“new” 命令混淆。即使你给出了“break” 命令, LATEX 仍然试图对齐页面的右边界。
LATEX 总是尽可能产生最好的断行效果。如果断行无法达到LATEX 的高标准,就让这一行在段落的右侧溢出。然后在处理源文件的同时,报告溢出的消息(“overfull hbox”)。这最有可能发生在LATEX 找不到合适的地方断词的时候。你可以使用\sloppy 命令, 告诉LATEX 降低一点儿标准。它通过增加单词之间的间隔,以防止出现过长的行,虽然最终的输出结果不是最优的。在这种情况下给出警告(“underfull hbox”)。在大多数情况下得到的结果看起来不会非常好。

\fussy 

\fussy 命令把LATEX 恢复为缺省状态。

断词

确定正确的断词点。

\hyphenation{word list}

使列于参量中的单词仅在注有“-” 的地方断词。命令的参量仅由正常字母构成的单词,或由LATEX 视为正常字母的符号组成。
如果断词命令置于\begin{document} 后面,而且你正使用比方babel 的国际语言支持宏包,那么断词提示在由babel 激活的语言中就处于活动状态。
示例:

\hyphenation{FORTRAN Hy-phen-a-tion}

上面的例子允许对“hyphenation” 和“Hyphenation” 进行断词, 却根本不允许“FORTRAN”, “Fortran” 和“fortran” 进行断词。在参量中不允许出现特殊的字符和符号。

命令\- 在单词中插入一个自主的断词点。它也就成为这个单词中允许出现的唯一断词点。对于包含特殊字符(例如:注音字符)的单词,这个命令是特别有用的,因为对于他们, LATEX 不会自动断词。
 

I think this is: su\-per\-cal\-%
i\-frag\-i\-lis\-tic\-ex\-pi\-%
al\-i\-do\-cious

效果

\mbox{text}

保证把几个单词排在同一行上。在任何情况下,这个命令把它的参量排在一起。
 

My phone number will change soon.
It will be \mbox{0116 291 2319}.
The parameter
\mbox{\emph{filename}} should
contain the name of the file.

效果

命令\fbox 和\mbox 类似,此外它还能围绕内容画一个框。

My phone number will change soon.
It will be \fbox{0116 291 2319}.
The parameter
\fbox{\emph{filename}} should
contain the name of the file.

效果

内置字符串

命令 例子 描述
\today July 17, 2008 今日日期
\TeX TEX 你最喜爱的排版工具
\LaTeX LATEX 游戏的名目
\LaTeXe LATEX 2ε 现在的化身

特殊字符和符号

引号

在LATEX 中,用两个`(重音)产生左引号,用两个'(直立引号)产生右引号。一个` 和一个' 产生一个单引号。
 

``Please press the `x' key.''

无论字体如何,它总是一个反向的勾号或者重音符(`) 当左引号,直立引号(') 当右引号。

破折号和连字号

无论字体如何,它总是一个反向的勾号或者重音符(`) 当左引号,直立引号(') 当右引号。

daughter-in-law, X-rated\\
pages 13--67\\
yes---or no? \\
$0$, $1$ and $-1$

效果

这些短划线是: ‘-’ 连字号(hyphen),‘–’ 短破折号(en-dash),‘—’长破折号(em-dash) 和‘-’ 减号(minus sign)。

波浪号

波浪号经常和网址用在一起。它在LATEX 中,可用 \~ 产生,但其结果:˜ 却不是你真正想要的。用\~{}代替即可:

http://www.rich.edu/\~{}bush \\

效果

度的符号(゜)

下面的例子演示了在LATEX 中如何排版度的符号(degree symbol):
 

It's $-30\,^{\circ}\mathrm{C}$.
I will soon start to
super-conduct.

效果

textcomp 宏包里有另外一个度的符号\textcelsius。

省略号

在书籍印刷中,这些字符仅占据一点儿空间,并且与前一个字母贴得非常紧。所以不能只键入三个点来输出“省略号” (ellipsis),因为间隔划分得不对。有一个专门的命令输出省略号。它被称为\ldots


 

Not like this ... but like
this:\\ New York, Tokyo,
Budapest, \ldots

效果

连字

一些字母组合不是简单键入一个个字母得到得的,而实际上用到了一些特殊符号。效果应为

ff fi fl ffi. . .

而不是

ff fi fl ffi . . .
这就是所谓的连字(ligature),在两个字母之间插入一个\mbox{},可以 禁止连字。对于由两个词构成的单词,这可能是必要的。
 

Not shelfful\\
but shelf\mbox{}ful
Not shelfful
but shelfful

效果

注音符号和特殊字符

在字母i 和j 上标一个注音符号,它的点儿必须去掉。这个可由\i 和\j 做到。
 

\i\ \j

效果

注音符号和特殊字符表

为了使输出的右边界对齐, LATEX 在单词间插入不等的间隔。在句子的末尾插入的空间稍多一些,因为这使得文本更具可读性。 LATEX 假定句子以句号、问号或惊叹号结尾。如果句号紧跟一个大写字母,它就不视为句子的结尾。因为一般在有缩写的地方,才出现句号紧跟大写字母的情况。
作者必须详细说明这些假设中的任何一个例外。空格前的反斜线符号产生一个不能伸长的空格。波浪字符‘~ ’ 也产生一个不能伸长的空格,并且禁止断行。句号前的命令\@ 说明这个句号是句子的末尾,即使它紧跟一个大写字母。
 

Mr. Smith was happy to see her\\
cf. Fig. 5\\
I like BASIC\@. What about you?

效果

命令

\frenchspacing

能禁止在句号后插入额外的空白,它告诉LATEX 在句号后不要插入比正常字母更多的空白。除了参考文献,这在非英语语言中非常普遍。如果使用了\frenchspacing,命令\@ 就不必要了。

标题、章、节

对article 风格的文档,有下列分节命令:
 

\section{section}
\subsection{subsection} 
\subsubsection{subsubsection}
\paragraph{paragraph} 
\subparagraph{subparagraph}

效果

\part{part}

效果

当你使用report 或者book 类的时候,可以用另外一个高层次的分节命令

\chapter{chapter}

示例
 

\documentclass{report}
\usepackage{CJK}
\begin{document}
\begin{CJK*}{GBK}{kai}
\chapter{chapter}
\end{CJK*}
\end{document}

效果

节之间的间隔,节的序号和标题的字号由LATEX 自动设置。
分节的两个命令有些特别:
    命令\part 不影响章的序号。
    命令\appendix 不带参量,只把章的序号改用为字母标记。

LATEX 在文档编译的最后一个循环中,提取节的标题和页码以生成目录。

命令

\tableofcontents

在其出现的位置插入目录。为了得到正确的目录(table of contents) 内容,一个新文档必须编译(“LATEXed”) 两次。有时还要编译第三次。

示例:

\documentclass{report}
\usepackage{CJK}
\begin{document}
\begin{CJK*}{GBK}{kai}
\tableofcontents
\chapter{chapter}
\end{CJK*}
\end{document} 

效果:

面列出的分节命令也以“带星”的形式出现。“带星”的命令通过在命令名称后加* 来实现。它们生成的节标题既不出现于目录,也不带序号。例如,命令\section{Help} 的“带星”形式为\section*{Help}。
比较:

1、section不带*

\chapter{chapter}
\section{section}

效果

2、section带*

\chapter{chapter}
\section*{section}

效果

目录出现的标题,一般与输入的文本完全一致。有时这是不可能的, 因为标题太长排不进目录。在这种情况下,目录的条目可由实际标题前的可选参量确定。
 

\chapter[Title for the table of contents]{A long and especially boring title, shown in the text}

效果

整篇文档的标题(title) 由命令
 

\maketitle

产生。标题的内容必须在调用\maketitle 以前,由命令\title{...}, \author{...} 和可选的\date{...}定义。在命令\author的参量中,可以输入几个用\and 命令分开的名字。
示例:

\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK*}{GBK}{kai}
\title{title}
\author{author}
\date{\today}
\maketitle
\end{CJK*}
\end{document} 

效果

除了上面解释的分节命令, LATEX 2ε 引进了其他三个命令用于book风格的文档。它们对划分出版物有用,也能如愿改变章的标题和页码:
\frontmatter 应接着命令\begin{document} 使用。它把页码更换为罗马数字,而且章节不计数。当你使用带星的分节命令(例如,
\chapter*{Preface}) 时,这些章节就不会出现在目录里。
\mainmatter 应出现在书的第一章前面。它启用阿拉伯数字的页码计数器,并对页码重新计数。
\appendix 标志书中附录材料的开始。该命令后的各章序号改用字母标记。
\backmatter 应该插入与书中最后一部分内容的前面, 如参考文献和索引。在标准文档类型中,它对页面没有什么效果。

交叉引用

在书籍、报告和论文中,需要对图、表和文本的特殊段落进行交叉引用(crossreferences)。 LATEX 提供了如下交叉引用命令
\label{marker}, \ref{marker} 和\pageref{marker}
其中marker 是用户选择的标识符。如果在节、子节、图、表或定理后面输入\label 命令, LATEX 把\ref 替换为相应的序号。\pageref 命令排印\label 输入处的页码。和章节标题一样,使用的序号是前面编译所产生。
 

A reference to this subsection \label{sec:this} looks like:``see
section \ref{sec:this} on page \pageref{sec:this}.''

效果:

脚注

命令

\footnote{footnote text}

把脚注内容排印于当前页的页脚位置。脚注命令总是置于(put)其指向的单词或句子的后面。脚注是一个句子或句子的一部分,所以应用逗号或句号结尾。

Footnotes\footnote{This is a footnote.} are often used by people
using \LaTeX.

效果:

强调

如果文本是用打字机键入的, 用下划线来强调重要的单词。

\underline{text}

但是在印刷的书中,用一种斜体字体排印要强调的单词。 LATEX 提供命令
 

\emph{text}

来强调文本。这些命令对其参量的实际作用效果依赖于它的上下文:
 

\emph{If you use emphasizing inside a piece of emphasized text, then
\LaTeX{} uses the \emph{normal} font for emphasizing.}

效果:

请注意要求LATEX 强调什么和要求它使用不同字体的不同效果:
 

\textit{You can also \emph{emphasize} text if it is set in italics,}
\textsf{in a \emph{sans-serif} font,} \texttt{or in
\emph{typewriter} style.}

效果:

环境

为了排版专用的文本, LATEX 定义了各种不同格式的环境(environment):
\begin{environment} text \end{environment}
其中environment 是环境的名称。只要保持调用顺序,环境可以嵌套。
\begin{aaa}...\begin{bbb}...\end{bbb}...\end{aaa}

Itemize、 Enumerate 和 Description

itemize 环境适用于简单的列表, enumerate 环境适用于有排列序号的列表,而description 环境用于带描述的列表。

\flushleft
\begin{enumerate}
\item You can mix the list environments to your taste:
\begin{itemize}
\item But it might start to look silly.
\item[-] With a dash.
\end{itemize}
\item Therefore remember:
\begin{description}
\item[Stupid] things will not become smart because they are in
a list.
\item[Smart] things, though, can be presented beautifully in a
list.
\end{description}
\end{enumerate}

效果

左对齐、右对齐和居中

flushleft 和flushright 环境分别产生左对齐(left-aligned) 和右对齐(rightaligned)的段落。 center 环境产生居中的文本。如果你不输入命令\\ 指定断行点, LATEX 将自行决定。

\begin{flushleft}
This text is\\ left-aligned. \LaTeX{} is not trying to make each line
the same length.
\end{flushleft}

效果:

\begin{flushright}
This text is right-\\aligned. \LaTeX{} is not trying to make each
line the same length.
\end{flushright}

效果:

\begin{center}
At the centre\\of the earth
\end{center}

效果:

引用、语录和韵文

quote 环境可以用于引文、语录和例子。

A typographical rule of thumb
for the line length is:
\begin{quote}
On average, no line should
be longer than 66 characters.
\end{quote}
This is why \LaTeX{} pages have
such large borders by default
and also why multicolumn print
is used in newspapers

效果:

有两个类似的环境: quotation 和verse 环境。 quotation 环境用于超过几段的较长引用,因为它对段落进行缩进。 verse 环境用于诗歌,在诗歌中断行很重要。在一行的末尾用\\ 断行,在每一段后留一空行。
 

I know only one English poem by
heart. It is about Humpty Dumpty.
\begin{flushleft}
\begin{verse}
Humpty Dumpty sat on a wall:\\
Humpty Dumpty had a great fall.\\
All the King's horses and all
the King's men\\
Couldn't put Humpty together
again.
\end{verse}
\end{flushleft}

效果:

摘要

科学出版物惯常以摘要开始,来给读者一个综述或者预期。 LATEX 为此提供了abstract 环境。一般abstract 用于article 类文档。
 

\begin{abstract}
The abstract abstract.
\end{abstract}

效果:

原文打印

位于\begin{verbatim} 和\end{verbatim} 之间的文本将直接打印,包括所有的断行和空白,就像在打字机上键入一样, 不执行任何LATEX 命令。在一个段落中,类似的功能可由
 

\verb+text+

完成。 + 仅是分隔符的一个例子。除了* 或空格,可以使用任意一个字符。

The \verb|\ldots| command \ldots
\begin{verbatim}
10 PRINT "HELLO WORLD ";
20 GOTO 10
\end{verbatim}

效果:

\begin{verbatim*}
the starred version of
the verbatim
environment emphasizes
the spaces in the text
\end{verbatim*}

效果:

带星的命令\verb 能以类似的方式使用:
\verb*|like this :-) |
verbatim 环境和\verb 命令不能在其他命令的参数中使用。

表格

tabular 环境能用来排版带有水平和垂直表线的漂亮表格(table)。LATEX 自动确定每一列的宽度。
命令

\begin{tabular}[pos]{table spec}

的参量table spec 定义了表格的格式。用一个l 产生左对齐的列,用一个r 产生右对齐的列,用一个c 产生居中的列; 用p{width} 产生相应宽度、包含自动断行文本的列; | 产生垂直表线。
如果一列里的文本太宽, LATEX 不会自动折行显示。使用p{width} 你可以定义如一般段落里折行效果的列。
参量pos 设定相对于环绕文本基线的垂直位置。使用字母t 、b 和c 来设定表格靠上、靠下或者居中放置。
在tabular 环境中,用& 跳入下一列,用\\ 开始新的一行, 用\hline插入水平表线。用\cline{j-i} 可添加部分表线, 其中j 和i 分别表示表线的起始列和终止列的序号。
 

\begin{tabular}{|p{4.7cm}|}
\hline
Welcome to Boxy's paragraph.
We sincerely hope you'll
all enjoy the show.\\
\hline
\end{tabular}

效果:

\begin{tabular}{|r|l|}
\hline
7C0 & hexadecimal \\
3700 & octal \\ \cline{2-2}
11111000000 & binary \\
\hline \hline
1984 & decimal \\
\hline
\end{tabular}

效果:

表格的列分隔符可由@{...} 构造。这个命令去掉表列之间的间隔, 代之为两个花括号间的内容。一个用途在于下面要解释的十进制数对齐问题。另一个可能应用在于用@{} 压缩表列右端空间。
 

\begin{tabular}{l}
\hline
leading space left and right\\
\hline
\end{tabular}

效果:

\begin{tabular}{@{} l @{}}
\hline
no leading space\\
\hline
\end{tabular}

效果:

由于没有内建机制使十进制数按小数点对齐18,我们可以使用两列“作弊”达到这个目的: 整数向右,小数向左对齐。 \begin{tabular} 行中的命令@{.} 用一个“.” 取代了列间正常间隔,从而给出了按小数点列对齐的效果。不要忘记用列分隔符(&) 取代十进制小数点!使用命令\multicolumn 可在数值“列”上放置一个列标签。
 

\begin{tabular}{c r @{.} l}
Pi expression &
\multicolumn{2}{c}{Value} \\
\hline
$\pi$ & 3&1416 \\
$\pi^{\pi}$ & 36&46 \\
$(\pi^{\pi})^{\pi}$ & 80662&7 \\
\end{tabular}

效果:

\begin{tabular}{|c|c|}
\hline
\multicolumn{2}{|c|}{Ene} \\
\hline
Mene & Muh! \\
\hline
\end{tabular}

效果:

用表格环境排印的材料总是呆在同一页上。如果要排印一个长表格,可以看一下supertabular 和longtabular 环境


浮动体

对于在当前排不下的任何一个图片或表格,其解决办法是把它们“浮动”到下一页,与此同时当前页面用正文文本填充。

LATEX 提供了两个浮动体(floating bodies)环境;一个用于图片,一个用于表格。
首先看一下供浮动使用的LATEX 命令:
    包含在figure 环境或table 环境中的任何材料都将被视为浮动内容。两个浮动环境都支持可选参数
 

\begin{figure}[placement specifier] 或\begin{table}[. . . ]

称为placement specifier,它由浮动许可放置参数写成的字符串组成。请见表。这个参数用于告诉LATEX 浮动体可以被移放的位置。一个placement specifier由一串浮动体许可放置位置(float-placing permissions) 构成。

表-浮动体放置许可

Spec 浮动体许可放置位置⋯⋯
h here在文本的确切位置上,对于小的浮动体很有用。
t 在页面的顶部(top)
b 在页面的底部(bottom)
p 在一个只有浮动体的专门的页面(page)上。
! 忽略阻止浮动体放置的大多数内部参数a。

一个表格可以由如下命令,例如
\begin{table}[!hbp]
开始, placement specifier [!hbp] 允许LATEX 把表格就放当前页,或放在某页的底部(b),或放在一个专门的浮动页上(p),严格按照放置说明符放置即使看起来不好(!)。如果没有给定放置说明符,缺省值为[tbp]。LATEX将按照作者提供的placement specifier ,安排它遇到的每一个浮动体。如果浮动体在当前页不能安排,就把它寄存在图片或表格等待队列中19。当新的一页开始的时候, LATEX 首先检查是否可能用等待队列中的浮动体填充一个专门的“浮动”页面。如果这不可能,就像对待刚在文本中出现的浮动体一样,处理等待队列中的第一个浮动体: LATEX 重新尝试按照其相应的放置说明符(除了不再可能的‘h’)来处理它。文本中出现的任何一个新浮动体寄存在相应的等待队列中。对于每一种浮动体, LATEX 保持它们出现的顺序。这就说明了为什么一个不能安排的图片把所有后来的图片都推到文档末尾的原因。所以: 如果LATEX 没有像你期望的那样安排浮动体,那么经常是仅有一个浮动体堵塞了两个等待队列中的某一个。
仅给定单个placement specifiers 是允许的,但这会引起问题。如果在指定的位置安排不了,它就会成为障碍,堵住后续的浮动体。不要单独使用参数[h],在LATEX 最近的版本中,它的效果太差了以至于被[ht] 自动替换。虽然对浮动体问题已经作了些说明,对table 和figure 环境还有些内容要交代。使用
 

\caption{caption text}

命令,可以给浮动体定义一个标题。序号和字符串“图”或“表”将由LATEX自动添加。

两个命令

\listoffigures 和\listoftables

用起来和\tableofcontents 命令类似,分别排版一个图形目录和表格目录。在这些目录中,所有的标题都将重复。如果打算使用长标题,就必须准备一个能放进目录的,较短版本的标题。即在\caption 命令后面的括号内输入较短版本的标题。
 

\caption[Short]{LLLLLoooooonnnnnggggg}

利用\label 和\ref,在文本中可以为浮动体创建交叉引用。
下面的例子画一个方形,并将它插入文档。如果想在完成的文档中为你打算嵌入的图片保留空间,你可以利用这个例子。
 

Figure \ref{white} is an example of Pop-Art.
\begin{figure}[!hbp]
\makebox[\textwidth]{\framebox[5cm]{\rule{0pt}{5cm}}}
\caption{Five by Five in Centimetres.\label{white}}
\end{figure}

效果:

在上面的例子中,为了把图片就放在当前位置(h), LATEX 尝试得很辛苦(!)。如果这不可能,它将试图把图片安排在页面的底部(b)。如果不能将图片安排在当前页面,它将决定是否可能开一个浮动页面以放置这张图片或来自表格等待队列中的一些表格。如果没有足够的材料来填充一个专门浮动页面, LATEX 就开一个新页,像对文本中刚出现的图片一样,再一次处理这个图片。在一些情况下,可能需要使用命令
\clearpage 或者甚至是\cleardoublepage
它命令LATEX 立即放置等待队列中所有剩下的浮动体,并且开一新页。命令

\cleardoublepage 甚至会命令LATEX 新开奇数页面。
     后面,将介绍如何在LATEX 2ε 文档中插入PostScript 图形。

保护脆弱命令

作为命令(如\caption 或\section)参量的文本,可能在文档中出现多次(例如,在文档的目录和正文中)。当用于类似\section 的参量时,一些命令会失效。它们被称为脆弱命令(fragile commands)。 \footnote 或\phantom 是脆弱命令的例子。这些脆弱命令需要的,正是保护。把\protect命令放在它们前面,就能保护它们。

\protect 仅仅保护紧跟其右侧的命令,连它的参量也不惠及。在大多数情形下,过多的\protect 并不碍事。

\section{I am considerate \protect\footnote{and protect my
footnotes}}

效果:

猜你喜欢

转载自blog.csdn.net/Zjhao666/article/details/82344518