summaryrefslogtreecommitdiff
path: root/info/lshort/chinese/src/chap.02.text.tex
diff options
context:
space:
mode:
Diffstat (limited to 'info/lshort/chinese/src/chap.02.text.tex')
-rw-r--r--info/lshort/chinese/src/chap.02.text.tex380
1 files changed, 0 insertions, 380 deletions
diff --git a/info/lshort/chinese/src/chap.02.text.tex b/info/lshort/chinese/src/chap.02.text.tex
deleted file mode 100644
index 55b43be44c..0000000000
--- a/info/lshort/chinese/src/chap.02.text.tex
+++ /dev/null
@@ -1,380 +0,0 @@
-\chapter{用 \LaTeX\ 排版文字}\label{chap:text}
-\addtocontents{los}{\protect\addvspace{10pt}}
-
-\begin{intro}
-文字是排版的基础。在介绍 \LaTeX\ 支持的各种文档元素之前,首先应当了解一下如何在 \LaTeX\ 源代码中输入并排版文字,
-尤其是(西文中的)标点符号、连字符、重音等一些细节。
-
-本文的开头首先介绍了中文的支持方式。随着 \LaTeX\ 和底层 \TeX\ 引擎的发展,旧方式(CCT、CJK 等)日渐退出舞台,
-xelatex 编译命令配合 \cls{xeCJK} 或 \cls{ctex} 宏包的方式成为主流。
-\end{intro}
-
-\section{语言文字和编码}\label{sec:encoding}
-
-\pinyinindex{bianma}{编码}
-\LaTeX\ 源代码为文本文件,而文本文件的一个至关重要的性质是它的编码。在此用尽量短的篇幅介绍一下。
-
-\subsection{ASCII 编码}\label{subsec:ascii}
-
-\index{bianma@编码!ASCII}
-计算机的基本存储单位是字节(byte),每个字节为八位(8-bit),范围用十六进制写作 0x00-0xFF。
-ASCII (美国通用信息交换码)使用 0x00-0x7F 对文字编码,也就是 7-bit,能够表示 QWERTY 键盘上能够输入的拉丁字母、数字和符号。
-
-由于 \TeX\ 最初面向英语文档的排版,ASCII 编码完全够用,而早期版本的 \TeX\ 也只支持 7-bit 和 ASCII。
-要排版西欧语系中带重音的字符,就必须用到后文所叙述的重音命令,如 M\"obius 必须输入 \texttt{M\char`\\"obius}。
-
-\subsection{扩展编码}\label{subsec:ext-encoding}
-
-在 ASCII 之后,各种语言文字都发展了自己的编码,比如西欧语言的 Latin-1,日本的 Shift-JIS,中国大陆的 GB2312-80 和 GBK 等。
-它们之中的绝大多数都向下兼容 ASCII,因此无论是在哪种编码下,\TeX\ 以及 \LaTeX\ 的命令和符号都能用。
-
-\index{bianma@编码!Latin-1}
-\pkgindex{inputenc}
-\TeX\ 从 3.0 版开始支持 8-bit,能够处理源代码里编码处于 0x80-0xFF 范围的字符。
-西欧(拉丁字母)、俄语系(西里尔字母)等语言的编码方案刚好能够利用 0x80-0xFF 这个范围,处理起来较为方便。
-\texttt{latex} 命令及 \texttt{pdflatex} 命令下,这些编码的处理由 \pkg{inputenc} 宏包支持。
-比如将源代码保存为 Latin-1 编码,并在导言区调用宏包:
-\begin{verbatim}
-\usepackage[latin1]{inputenc}
-\end{verbatim}
-接下来,M\"obius 就直接可以通过(用适当输入法)输入 \texttt{M\"obius} 得到了。
-
-\index{bianma@编码!GBK}
-GBK 等编码是多字节编码,ASCII 字符为一个字节,汉字等非 ASCII 字符为两个字节,这就需要借助一些宏包进行较为复杂的判断和处理。
-\pkg{CJK} 宏包就是用于处理中、日、韩等多字节编码的语言文字的宏包。但 \pkg{CJK} 宏包的使用非常不方便,笔者不再推荐直接使用。
-
-\subsection{UTF-8 编码}\label{subsec:utf8}
-
-\index{bianma@编码!UTF-8}
-Unicode 是一个多国字符的集合,覆盖了几乎全球范围内的语言文字。UTF-8 是 Unicode 的一套编码方案,
-一个字符可以由一个到四个字节编码,其中单字节字符兼容 ASCII 编码。
-
-\pkgindex{inputenc}
-\texttt{latex} 命令及 \texttt{pdflatex} 命令下可以使用 \pkg{inputenc} 宏包支持 UTF-8 编码:
-\begin{verbatim}
-\usepackage[utf8]{inputenc}
-\end{verbatim}
-
-\texttt{xelatex} 和 \texttt{lualatex} 命令原生支持 UTF-8 编码,而且也\textbf{不适用 \pkg{inputenc} 宏包}。将 \texttt{.tex} 源代码保存为 UTF-8 编码,
-并借助 \pkg{fontspec} 宏包(见 \ref{subsec:fontspec} 小节)调用适当的字体,就可以在源代码中输入任意语言的文字。
-但各个语言(印地语、阿拉伯语等)的特殊排版要求需要更多的宏包支持,如 \pkg{babel}、 \pkg{polyglossia} 等。
-
-\section{排版中文}\label{sec:chinese}
-
-\subsection{\pkg{xeCJK} 宏包}\label{subsec:xeCJK}
-
-用 \LaTeX\ 排版中文的一大难题是中文字体的处理。\TeX\ 使用的字体格式仅支持不超过 256 个字符,
-旧式的中文排版方案如 \pkg{CJK} 宏包往往需要复杂的预处理,将中文字体拆分成数百个小字体,非常麻烦%
-\footnote{现在的 \texttt{pdflatex} 以及 \texttt{latex} + \texttt{dvipdfmx} 命令通过字体映射的方式支持直接使用中文字体,不需要经过预处理,
-但仍然是不方便新手操作的。}。
-
-\index{xelatex@\texttt{xelatex} 命令}
-\pkgindex{xeCJK}
-\texttt{xelatex} 命令支持直接使用系统安装的 TrueType (\texttt{.ttf}) / OpenType (\texttt{.otf}) 等格式的字体,加上对 UTF-8 编码的原生支持,
-免去了预处理字体的麻烦。在此基础上的 \pkg{xeCJK} 宏包更进一步完善了排版中文的一些细节,比如中英文之间插入空隙、
-中文行尾的回车不引入空格、标点符号不出现在行首,等等。
-
-\pkg{xeCJK} 宏包支持用简单的命令配置中文字体。举一个在 Windows 下使用 \pkg{xeCJK} 的例子(设置字体的命令详见 \ref{subsec:CJKfont} 小节),
-源代码须保存为 UTF-8 编码,并使用 \texttt{xelatex} 命令编译:
-\begin{verbatim}
-\documentclass{article}
-\usepackage{xeCJK}
-\setCJKmainfont{SimSun}
-\begin{document}
-中文\LaTeX{}排版。
-\end{document}
-\end{verbatim}
-
-\subsection{\pkg{ctex} 宏包和文档类}\label{subsec:ctex}
-
-\pkgindex{ctex}
-\clsindex{ctexart,ctexbook,ctexrep}
-\pkg{ctex} 宏包和文档类是对 \pkg{CJK} 和 \pkg{xeCJK} 等宏包的进一步封装。\pkg{ctex} 文档类包括
-\cls{ctexart} / \cls{ctexrep} / \cls{ctexbook},是对 \LaTeX\ 的三个标准文档类的封装,对 \LaTeX\ 的排版样式做了许多调整,
-以切合中文排版风格。最新版本的 \pkg{ctex} 宏包/文档类甚至能够根据操作系统自动配置字体。比如上述例子可进一步简化为:
-\begin{verbatim}
-\documentclass{ctexart}
-\begin{document}
-中文\LaTeX{}排版。
-\end{document}
-\end{verbatim}
-
-虽然 \pkg{ctex} 宏包和文档类保留了对 GBK 编码以及 \texttt{latex} + \texttt{dvipdfmx}、\texttt{pdflatex} 等旧的编译命令的支持,
-笔者建议在使用 \pkg{ctex} 宏包和文档类时总是将源代码保存为 UTF-8 编码,用 \texttt{xelatex} 命令编译。
-
-\section{\LaTeX\ 中的字符}\label{sec:text-symbols}
-
-\subsection{空格和分段}\label{subsec:spaces}
-
-\LaTeX\ 源代码中,空格键和 Tab 键输入的空白字符视为“空格”。
-连续的若干个空白字符视为一个空格。一行开头的空格忽略不计。
-
-\cmdindex{par}
-行末的回车视为一个空格;但连续两个回车,也就是空行,会将文字分段。多个空行被视为一个空行。
-也可以在行末使用 \cmd{par} 命令分段。
-\begin{example}
-Several spaces equal one.
- Front spaces are ignored.
-
-An empty line starts a new
-paragraph.\par
-A \verb|\par| command also
-starts a new line.
-\end{example}
-
-\subsection{注释}\label{subsec:comments}
-
-\index{^^e@\texttt\% (\textit{注释})}
-\LaTeX\ 用 \texttt\% 字符作为注释。在这个字符之后直到行末,所有的字符都被忽略,
-行末的回车也不引入空格。
-\begin{example}
-This is an % short comment
-% ---
-% Long and organized
-% comments
-% ---
-example: Comments do not bre%
-ak a word.
-\end{example}
-
-\subsection{特殊字符}\label{subsec:special-chars}
-
-以下字符在 \LaTeX\ 里有特殊用途,如 \texttt\% 表示注释, \texttt\$、\texttt\textasciicircum 、\texttt\_ 等用于排版数学公式,
-\texttt\& 用于排版表格,等等。直接输入这些字符得不到对应的符号,还往往会出错:
-\begin{verbatim}
-# $ % & { } _ ^ ~ \
-\end{verbatim}
-
-如果想要输入以上符号,需要使用以下带反斜线的形式输入:
-\begin{example}
-\# \$ \% \& \{ \} \_
-\^{} \~{} \textbackslash
-\end{example}
-
-事实上这些带反斜线的形式就是 \LaTeX\ 命令。\cmd{\textasciicircum} 和 \cmd{\textasciitilde}
-两个命令是需要带参数的,如果不加一对花括号(空参数),就将后面的字符作为参数,形成重音效果(详见 \ref{subsec:accents} 节)。
-\crcmd\ 被直接定义成了手动换行的命令,输入反斜杠就只好用 \cmd{text\-back\-slash}。
-
-\subsection{连字}\label{subsec:ligatures}
-
-西文排版中经常会出现连字(Ligatures),常见的有 ff / fi / fl / ffi / ffl{}。
-\begin{example}
-It's difficult to find \ldots .\\
-It's dif{}f{}icult to f{}ind \ldots .
-\end{example}
-
-\subsection{标点符号}\label{subsec:punct}
-
-中文的标点符号(绝大多数为非 ASCII 字符)使用中文输入法输入即可,一般不需要过多留意。
-而在英文标点符号上,有许多需要留意的地方。
-
-\subsubsection{引号}
-
-\index{biaodianfuhao@标点符号!`@\protect\verb+`+ (\textit{前引号} `)}
-\index{biaodianfuhao@标点符号!``@\protect\verb+'+ (\textit{后引号} ')}
-\index{biaodianfuhao@标点符号!'@\protect\verb+``+ (\textit{前双引号} ``)}
-\index{biaodianfuhao@标点符号!''@\protect\verb+''+ (\textit{后双引号} '')}
-\LaTeX\ 的单引号 ` ' 用 \texttt` 和 \texttt' 输入;双引号 `` '' 用 \verb|``| 和 \verb|''| 输入
-(虽然 \texttt" 也能表示双引号,但没有合适的单个符号用来表示前双引号,所以不常用在正文)。
-\begin{example}
-``Please press the `x' key.''
-\end{example}
-
-\subsubsection{连字号和破折号}
-
-\index{biaodianfuhao@标点符号!-@\protect\verb+-+ (\textit{连字号} -)}
-\index{biaodianfuhao@标点符号!--@\protect\verb+--+ (\textit{短破折号} --)}
-\index{biaodianfuhao@标点符号!---@\protect\verb+---+ (\textit{长破折号} ---)}
-\LaTeX\ 中有三种长度的“横线”可用:连字号(hyphen)、短破折号(en-dash)和长破折号(em-dash)。
-它们分别有不同的用途:连字号 - 用来组成复合词;短破折号 -- 用来连接数字表示范围;长破折号 --- 用来连接单词,与中文语境中的破折号用法类似。
-\begin{example}
-daughter-in-law, X-rated\\
-pages 13--67\\
-yes---or no?
-\end{example}
-
-\subsubsection{省略号}
-
-\index{biaodianfuhao@标点符号!ldots@\cmd{ldots} (\textit{省略号} \ldots)}
-\index{biaodianfuhao@标点符号!dots@\cmd{dots} (\textit{省略号} \dots)|see{\cmd{ldots}}}
-\LaTeX\ 提供了命令 \cmd{ldots} 来生成省略号,相对于直接输入三个点的方式更为合理。
-\cmd{ldots} 和 \cmd{dots} 是两个等效的命令。
-\begin{example}
-one, two, three, \ldots one hundred.
-\end{example}
-
-\subsubsection{波浪号}
-
-我们在 \ref{subsec:special-chars} 小节中了解了 \cmd{\textasciitilde} 命令,它可以用来输入波浪号,
-但位置靠顶端(\cmd{\textasciitilde} 命令主要用作重音,参考下一小节)。西文中较少将波浪号作为标点符号使用,通常使用中文的全角波浪号(~)。
-
-\subsection{特殊西文符号与重音}\label{subsec:accents}
-
-\pinyinindex{zhongyin}{重音}
-\LaTeX\ 支持用命令输入各种西欧语言的特殊符号和重音:
-\begin{example}
-H\^otel, na\"\i ve, \'el\`eve,\\
-sm\o rrebr\o d, !`Se\ norita!,\\
-Sch\"onbrunner Schlo\ss{}
-Stra\ss e
-\end{example}
-
-更多可用的符号和重音见表 \ref{tbl:accents}。注意与 \ref{subsec:math-accents} 小节的数学重音区分开来。
-
-\def\TSYM #1{#1 & \texttt{\string#1}}
-\def\TACC #1#2{#1{#2} & \texttt{\string#1#2}} % accents using a control character
-\def\TTACC #1#2{#1{#2} & \texttt{\string#1 #2}} % accents using a control word
-\def\WTACC #1#2{#1{#2} & \texttt{\string#1\{#2\}}} % multi-letter accents
-\begin{table}[htp]
-\centering
-\caption{\LaTeX\ 文本中的重音和特殊字符。} \label{tbl:accents}
-\begin{tabular}{*4{cl}}
- \hline
- \TACC{\`}{o} & \TACC{\'}{o} & \TACC{\^}{o} & \TACC{\~}{o} \\
- \TACC{\=}{o} & \TACC{\.}{o} & \TACC{\"}{o} & \TTACC{\r}{o}\\
- \TTACC{\u}{o} & \TTACC{\v}{o} & \TTACC{\H}{o} & \TTACC{\c}{o} \\
- \TTACC{\d}{o} & \TTACC{\b}{o} & \WTACC{\t}{oo} \\[6pt]
- \TSYM{\oe} & \TSYM{\OE} & \TSYM{\ae} & \TSYM{\AE} \\
- \TSYM{\aa} & \TSYM{\AA} & \TSYM{\ss} \\[6pt]
- \TSYM{\o} & \TSYM{\O} & \TSYM{\l} & \TSYM{\L} \\
- \TSYM{\i} & \TSYM{\j} & !` & \verb|!`| & ?` & \verb|?`| \\
- \hline
-\end{tabular}
-\begin{quote}\footnotesize%
-前四行实际上都是带一个参数的命令。\cmd{\textasciicircum}\texttt{o} 也可以写作
-\cmd{\textasciicircum}\marg*{o},以此类推。
-\end{quote}
-\end{table}
-
-\subsection{其它符号}\label{subsec:text-misc}
-
-\symindex{dag,ddag,P,S,copyright,pounds}
-\symindex{textasteriskcentered,textperiodcentered,textbullet,textregistered,texttrademark}
-\LaTeX\ 预定义了其它一些文本模式的符号,部分符号可参考表 \ref{tbl:general-syms}。
-\begin{example}
-\P{} \S{} \dag{} \ddag{}
-\copyright{} \pounds{}
-
-\textasteriskcentered
-\textperiodcentered
-\textbullet
-
-\textregistered{} \texttrademark
-\end{example}
-
-更多的符号多由特定的宏包支持。参考文献 \cite{symbols} 搜集了所有在 \TeX\ 发行版中可用的符号,使用时要留意每个符号所依赖的宏包。
-
-\subsection{\LaTeX\ 标志}\label{subsec:latex-mark}
-
-\cmdindex{TeX,LaTeX,LaTeXe}
-我们见到的所有错落有致的 \LaTeX\ 标志都是由以下命令输入的:
-\begin{center}
-\begin{tabular}{*{2}{l}}
- \hline
- \TeX & \cmd{TeX} \\
- \LaTeX & \cmd{LaTeX} \\
- \LaTeXe & \cmd{LaTeXe} \\
- \hline
-\end{tabular}
-\end{center}
-
-\section{文字强调}\label{sec:emph}
-
-强调文字的方法,要么是添加下划线等装饰物,要么是改变文字的字体。
-
-\cmdindex{underline}
-\LaTeX\ 定义了 \cmd{underline} 命令用来为文字添加下划线:
-\begin{example}
-An \underline{underlined} text.
-\end{example}
-
-\pkgindex{ulem}
-\cmdindex[ulem]{uline}
-\cmd{underline} 命令生成下划线的样式比较机械,不同的单词可能生成高低各异的下划线,并且无法换行。
-\pkg{ulem} 宏包解决了这一问题,它提供的 \cmd{uline} 命令能够轻松生成自动换行的下划线:
-\begin{example}
-An example of \uline{some
-long and underlined words.}
-\end{example}
-
-\cmdindex{emph}
-\cmd{emph} 命令用来将文字变为斜体以示强调。如果在本身已经用 \cmd{emph} 命令强调的文字内部嵌套使用 \cmd{emph} 命令,
-内部则使用直立体文字:
-\begin{example}
-Some \emph{emphasized words,
-including \emph{double-emphasized}
-words}, are shown here.
-\end{example}
-
-如果需要用其它字体表示强调,可参考后文的 \ref{subsec:fontshape} 小节。
-
-\section{断行和断页}\label{sec:break}
-
-\LaTeX\ 将文字段落在合适的位置进行断行,尽可能做到每行的宽度一致,并且单词间距匀称。
-文字段落和公式、图表等内容从上到下顺序排布,并在合适的位置断页,分割成匀称的页面。
-在绝大多数时候,我们无需自己操心断行和断页。但偶尔会遇到需要手工调整的地方。
-
-\subsection{单词间距和断行}\label{subsec:interword}
-
-在西文排版实践中,断行的位置尽可能选取在两个单词之间,也就是用户在源文件中输入的“空格”%
-\footnote{中文排版实现汉字间断行,则需要宏包(如 \pkg{xeCJK} 等)或排版引擎(如 upLaTeX)的支持。}。
-这个“空格”通常生成一个间距,它会根据行宽和上下文自动调整,文字密一些的地方,单词间距就略窄,反之略宽。
-
-\index{~@\texttt\textasciitilde\ (\textit{不断行空格})}
-我们可以使用字符 \texttt\textasciitilde 在合适的位置插入一个不会断行的空格(高德纳称之为 tie,“带子”),
-通常用在英文人名、图表名称等场景:
-\begin{example}
-Fig.~2a \\
-Donale~E. Knuth
-\end{example}
-
-\subsection{手动断行和断页}\label{subsec:manual-break}
-
-\index{\@\crcmd\ (\textit{换行})} \cmdindex{newline}
-如果我们确实需要手动断行,可使用如下命令:
-\begin{command}
-\crcmd \oarg{length} \\
-\cmd{newline}
-\end{command}
-
-它们有两点区别:一是 \crcmd\ 可以带可选参数 \Arg{length},用于在换行处向下增加垂直间距(见 \ref{subsec:vspace} 小节),
-而 \cmd{newline} 不带可选参数;二是 \crcmd\ 也在表格、公式等地方用于分行,而 \cmd{newline} 只用于文本段落中。
-
-\cmdindex{newpage,clearpage}
-断页的命令有两个:
-\begin{command}
-\cmd{newpage} \quad or \quad \cmd{clearpage}
-\end{command}
-
-通常情况下两个命令都能起到另起一页的作用,但有一些区别:一是在双栏排版中 \cmd{newpage} 只起到另起一栏的作用;二是涉及到浮动体的排版上行为不同。
-后文的 \ref{sec:float} 节以及 \ref{subsec:columns} 小节会更详细地介绍相关内容。
-
-\cmdindex{linebreak,nolinebreak}
-有时候我们不满足于 \LaTeX\ 默认的断行和断页位置,需要进行微调,就要用以下命令告诉 \LaTeX\ 哪些地方适合断页,哪些地方不适合:
-\begin{command}
-\cmd{linebreak}\oarg{n} \quad \cmd{nolinebreak}\oarg{n} \\
-\cmd{pagebreak}\oarg{n} \quad \cmd{nopagebreak}\oarg{n}
-\end{command}
-
-以上命令都带一个可选参数,用数字 \Arg{n} 代表适合/不适合的程度,取值范围为 0-4,不带可选参数时,缺省为 4。
-比如 \cmd{linebreak}\texttt{[3]} 意味着此处在断行时优先考虑;\cmd{nopagebreak} 或 \cmd{nopagebreak}\texttt{[4]}
-意味着禁止在此处断页。
-
-以上命令适合给出优先考虑断行断页/禁止断行断页的位置,但不适合直接拿来断行或断页,使用 \cmd{newline} 或 \cmd{newpage} 等是更好的选择%
-\footnote{\cmd{newline} 和 \cmd{newpage} 会在断行/断页位置正确添加空白,但 \cmd{linebreak} 和 \cmd{pagebreak} 不能,
-它们的强行断行/断页会导致 \LaTeX\ 报 \texttt{Underfull \cmd{hbox}} 等警告。}。
-
-\subsection{断词}\label{subsec:hyphen}
-
-如果 \LaTeX\ 遇到了很长的英文单词,仅在单词之间的位置断行无法生成宽度匀称的行时,就要考虑从单词中间断开。
-对于绝大部分单词,\LaTeX\ 能够找到合适的断词位置,在断开的行尾加上连字符 \char\hyphenchar\font 。
-
-\index{-@\cmd{-} (\textit{断词})}
-如果一些单词没能自动断词,我们可以在单词内手动使用 \cmd{-} 命令指定断词的位置:
-\begin{example}
-I think this is: su\-per\-cal\-%
-i\-frag\-i\-lis\-tic\-ex\-pi\-%
-al\-i\-do\-cious.
-\end{example}
-
-\endinput