diff options
Diffstat (limited to 'Master/texmf-dist/doc/plain/impatient-cn/paras.tex')
-rw-r--r-- | Master/texmf-dist/doc/plain/impatient-cn/paras.tex | 3536 |
1 files changed, 3536 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/plain/impatient-cn/paras.tex b/Master/texmf-dist/doc/plain/impatient-cn/paras.tex new file mode 100644 index 00000000000..9609e9886a2 --- /dev/null +++ b/Master/texmf-dist/doc/plain/impatient-cn/paras.tex @@ -0,0 +1,3536 @@ +% -*- coding: utf-8 -*- +% This is part of the book TeX for the Impatient. +% Copyright (C) 2003 Paul W. Abrahams, Kathryn A. Hargreaves, Karl Berry. +% See file fdl.tex for copying conditions. +% 中文翻译:Zhaopeng Xing (zpxing@gmail.com) +% 中文翻译:zohooo (zohooo@yeah.net) + +\input macros + +% \chapter {Commands \linebreak for composing \linebreak paragraphs} +\chapter {组段命令} + +% \chapterdef{paras} + +% This section covers commands that +% deal with characters, words, lines, and entire paragraphs. +% For an explanation of the conventions used in this section, +% see \headcit{Descriptions of the commands}{cmddesc}. + +% \begindescriptions + +\chapterdef{paras} + +这一章介绍了与字符, 单词, 行以及整段相关的命令. +本章写作惯例的说明可以在\headcit{命令描述}{cmddesc}中找到. + +\begindescriptions + +% \section {Characters and accents} + +% %========================================================================== +% \subsection {Letters and ligatures for European alphabets} + +% \begindesc +% \xrdef{fornlets} +% \bix^^{ligatures} +% ^^{special symbols} +% ^^{European alphabets} +% % +% \ctsx AA {Scandinavian letter \AA} +% \ctsx aa {Scandinavian letter \aa} +% \ctsx AE {\AE\ ligature} +% \ctsx ae {\ae\ ligature} +% \ctsx L {Polish letter \L} +% \ctsx l {Polish letter \l} +% \ctsx O {Danish/Norwegian letter \O} +% \ctsx o {Danish/Norwegian letter \o} +% \ctsx OE {\OE\ ligature} +% \ctsx oe {\oe\ ligature} +% \ctsx ss {German letter \ss} +% \explain + +\section {字符和重音符} + +%========================================================================== +\subsection {欧洲语言字母和连写} + +\begindesc +\xrdef{fornlets} +\bix^^{连写} +^^{特殊符号} +^^{欧洲语言字母} +% +\ctsx AA {斯堪地纳维亚文字母 \AA} +\ctsx aa {斯堪地纳维亚文字母 \aa} +\ctsx AE {\AE\ 连写} +\ctsx ae {\ae\ 连写} +\ctsx L {波兰文字母 \L} +\ctsx l {波兰文字母 \l} +\ctsx O {丹麦/挪威文字母 \O} +\ctsx o {丹麦/挪威文字母 \o} +\ctsx OE {\OE\ 连写} +\ctsx oe {\oe\ 写写} +\ctsx ss {德文字母 \ss} +\explain + +% These commands produce various letters and ligatures from European +% alphabets. +% They are useful for occasional words and phrases in these +% languages---but if you need to typeset a large amount of text in a European +% language, you should probably be using a version of \TeX\ adapted +% to that language.\footnote{The \TeX\ Users Group (\xref{resources}) can +% provide you with information about European language versions of \TeX.} +这些命令可以产生欧洲语言的各种字符和连写。 +在文本中偶而出现这些语言的单词和词组时它们显得很有用。 +但是如果需要排印大量的欧洲语言文本时, +你可能会去使用一个为这些语言定制的 \TeX\ 版本。 +\footnote{\TeX\ 用户组织 (\xref{resources}) 可为你提供 \TeX\ 的欧洲语 + 言版本。} + +% You'll need a space after these commands when you use them within a word, +% so that +% \TeX\ will treat the following letters as part of the word +% rather than as part of the command. +% You needn't be in \minref{math mode} to use these commands. +% \example +% {\it les \oe vres de Moli\`ere} +% | +% \produces +% {\it les \oe vres de Moli\`ere} +% \endexample +% \eix^^{ligatures} +% \enddesc +当你在一个单词中使用这些命令时,需要在它们后面加上一个空格, +这样,\TeX\ 会把它后面的字母当作是这个词语的一部分而不是这个命令的一部分。 +你不需为了使用这些符号而进入\minref{数学模式}。 +\example +{\it les \oe vres de Moli\`ere} +| +\produces +{\it les \oe vres de Moli\`ere} +\endexample +\eix^^{连写} +\enddesc + +%========================================================================== +%\subsection {Special symbols} +\subsection {专用符号} + +% \begindesc +% ^^{special characters} +% % +% \easy\ctspecialx # \ctsxrdef{@pound} {pound sign \#} +% \ctspecialx $ \ctsxrdef{@bucks} {dollar sign \$} +% \ctspecialx % \ctsxrdef{@percent} {percent sign \%} +% \ctspecialx & \ctsxrdef{@and} {ampersand \&} +% \ctspecialx _ \ctsxrdef{@underscore} {underscore \_} +% \ctsx lq {left quote \lq} +% \ctsx rq {right quote \rq} +% \aux\ctsx lbrack left bracket [ +% \aux\ctsx rbrack right bracket ] +% \ctsx dag {dagger symbol \dag} +% \ctsx ddag {double dagger symbol \ddag} +% \ctsx copyright {copyright symbol \copyright} +% \ctsx P {paragraph symbol \P} +% \ctsx S {section symbol \S} +% \explain +% These commands produce various special characters and marks. The first +% five commands are necessary because \TeX\ by default +% attaches special meanings to +% the characters (|#|, |$|, |%|, |&|, |_|). +% You needn't be in \minref{math mode} to use these commands. +\begindesc +^^{特殊字符} +% +\easy\ctspecialx # \ctsxrdef{@pound} {英镑符号 \# \footnote{译注: +位于键盘的数字 3 之上,英式键盘为英镑符号,美式键盘为数字符号 \#。}} +\ctspecialx $ \ctsxrdef{@bucks} {美元符号 \$} +\ctspecialx % \ctsxrdef{@percent} {百分号 \%} +\ctspecialx & \ctsxrdef{@and} {和 \&} +\ctspecialx _ \ctsxrdef{@underscore} {下划线 \_} +\ctsx lq {左引号 \lq} +\ctsx rq {右引号 \rq} +\aux\ctsx lbrack 左中括号 [ +\aux\ctsx rbrack 右中括号 ] +\ctsx dag {短剑符号 \dag} +\ctsx ddag {双剑符号 \ddag} +\ctsx copyright {版权符号 \copyright} +\ctsx P {段落符号 \P} +\ctsx S {章节符号 \S} +\explain +这些命令可以产生各种特殊字符和符号。前五个是必需的, +因为 \TeX\ 默认地把符号 (|#|, |$|, |%|, |&|, |_|) 作特殊的用途。 +你不用为了使用这些符号而进入\minref{数学模式}。 + +% You can use the dollar sign in the Computer Modern +% italic fonts to get the ^{pound +% sterling} symbol, as shown in the example below. +你可以用计算机现代意大利字体中的美元符号来得到^{英镑}符号,例如: + +% \example +% \dag It'll only cost you \$9.98 over here, but in England +% it's {\it \$}24.98. +% | +% \produces +% \dag It'll only cost you \$9.98 over here, but in England +% it's {\it \$}24.98. +% \endexample +% \enddesc +\example +\dag 在这边它只要花费你 \$9.98,但在英格兰要 {\it \$}24.98。 +| +\produces +\dag 在这边它只要花费你 \$9.98,但在英格兰要 {\it \$}24.98。 +\endexample +\enddesc + +% \begindesc +% \cts TeX {} +% \explain +% This command produces the \TeX\ logo. Remember to follow it by +% |\!vs| or to enclose it in a \minref{group} when you want a space +% after it. + +\begindesc +\cts TeX {} +\explain +这个符号可以得到 \TeX\ 的标志. +如果你需要在后面加上空格, +请在其后加上 |\!vs| 或者把它放到一个\minref{组}中. + +% \example +% A book about \TeX\ is in your hands. +% | +% \produces +% A book about \TeX\ is in your hands. +% \endexample +% \enddesc + +\example +A book about \TeX\ is in your hands. +| +\produces +A book about \TeX\ is in your hands. +\endexample +\enddesc + +% \begindesc +% \cts dots {} +% \explain +% ^^{dots} +% This command produces an ^{ellipsis}, i.e., three dots, in ordinary text. +% It's intended for use in mathematical writing; for an ellipsis +% between ordinary words, you should use |$\ldots$| \ctsref{\ldots} instead. +% Since |\dots| includes its own space, you shouldn't follow it by +% |\!vs|. +% \example +% The sequence $x_1$, $x_2$, \dots, $x_\infty$ +% does not terminate. +% | +% \produces +% The sequence $x_1$, $x_2$, \dots, $x_\infty$ +% does not terminate. +% \endexample +% \enddesc + +\begindesc +\cts dots {} +\explain +^^{点号} +这个命令可以产生一个^{省略号}, 也就是在文本中的三个小点. +它必须使用在数学模式中; 如果你想在单词间加入省略号, +你应该使用 |$\ldots$| 命令\ctsref{\ldots}. +|\dots|已经插入了它所应有的空白, 所以你不必在后面加上|\!vs|. +\example +数列 $x_1$, $x_2$, \dots, $x_\infty$ +永远也不会结束 +| +\produces +数列 $x_1$, $x_2$, \dots, $x_\infty$ +永远也不会结束 +\endexample +\enddesc + +%\see ``Miscellaneous ordinary math symbols'' (\xref{specsyms}). +\see ``各种常用数学符号'' (\xref{specsyms}). +%========================================================================== +%\subsection {Arbitrary characters} +\subsection {任意字符} + +% \begindesc +% \bix^^{characters} +% \cts char {\<charcode>} +% \explain +% This command produces the character located at position \<charcode> +% of the current font. +% \example +% {\char65} {\char `A} {\char `\A} +% | +% \produces +% {\char65} {\char `A} {\char `\A} +% \endexample +% \enddesc + +\begindesc +\bix^^{字符} +\cts char {\<charcode>} +\explain +这个命令可以产生当前字体在 \<charcode> 位置的字符. +\example +{\char65} {\char `A} {\char `\A} +| +\produces +{\char65} {\char `A} {\char `\A} +\endexample +\enddesc + +% \begindesc +% \cts mathchar {\<mathcode>} +% \explain +% This command produces the math character whose class, family, and +% font position are given by \<mathcode>. +% It is only legal in math mode. +% \example +% \def\digger{\mathchar "027F} % Like \spadesuit in plain TeX. +% % Class 0, family 2, font position "7F. +% $\digger$ +% | +% \produces +% \def\digger{\mathchar "027F} +% % class 0, family 2, font position "7F +% $\digger$ +% \endexample +% \enddesc +\begindesc +\cts mathchar {\<mathcode>} +\explain +这个命令可以产生由 \<mathcode> 所指定的类,族以及位置的数学字符。 +这个命令仅能用在数学模式中。 +\example +\def\digger{\mathchar "027F} % 像 plain TeX 的 \spadesuit. +% 0类, 2族, "7F 位置. +$\digger$ +| +\produces +\def\digger{\mathchar "027F} +% 0类, 2族, "7F 位置. +$\digger$ +\endexample +\enddesc + +% \see |\delimiter| (\xref\delimiter). +% \eix^^{characters} +\see |\delimiter|(\xref\delimiter )。 +\eix^^{字符} + +%========================================================================== +%\subsection {Accents} +\subsection {重音符号} + +% \begindesc +% ^^{accents} +% \xrdef{accents} +% % +% \ctspecialx ' \ctsxrdef{@prime} {^{acute accent} as in \'e} +% \ctspecialx . \ctsxrdef{@dot} {^{dot accent} as in \.n} +% \ctspecialx = \ctsxrdef{@equal} {^{macron accent} as in \=r} +% \ctspecialx ^ \ctsxrdef{@hat} {^{circumflex accent} as in \^o} +% \ctspecialx ` \ctsxrdef{@lquote} {^{grave accent} as in \`e} +% \ctspecialx " \ctsxrdef{@quote} {^{umlaut accent} as in \"o} +% \ctspecialx ~ \ctsxrdef{@not} {^{tilde accent} as in \~a} +% \ctsx c {^{cedilla accent} as in \c c} +% \ctsx d {^{underdot accent} as in \d r} +% \ctsx H {^{Hungarian umlaut accent} as in \H o} +% \ctsx t {^{tie-after accent} as in \t uu} +% \ctsx u {^{breve accent} as in \u r} +% \ctsx v {^{check accent} as in \v o} +% \explain +% These commands produce accent marks in ordinary text. You'll usually +% need to leave a space after the ones denoted by a single letter +% (see ``Spaces'', \xref{spaces}). +\begindesc +^^{重音} +\xrdef{accents} +% +\ctspecialx ' \ctsxrdef{@prime} {^{锐音符} 比如 \'e} +\ctspecialx . \ctsxrdef{@dot} {^{上点符} 比如 \.n} +\ctspecialx = \ctsxrdef{@equal} {^{长音符} 比如 \=r} +\ctspecialx ^ \ctsxrdef{@hat} {^{扬抑符} 比如 \^o} +\ctspecialx ` \ctsxrdef{@lquote} {^{钝音符} 比如 \`e} +\ctspecialx " \ctsxrdef{@quote} {^{分音符} 比如 \"o} +\ctspecialx ~ \ctsxrdef{@not} {^{波浪符} 比如 \~a} +\ctsx c {^{软音符} 比如 \c c} +\ctsx d {^{下点符} 比如 \d r} +\ctsx H {^{匈牙利分音符} 比如 \H o} +\ctsx t {^{连音符} 比如 \t uu} +\ctsx u {^{短音符} 比如 \u r} +\ctsx v {^{抑扬符} 比如 \v o} +\explain +这些命令为普通文本产生重音记号。通常,你需要为其中以单个字母表示的音符后面留一 +个空格(参见 ``空格'', \xref{spaces})。 + +% \example +% Add a soup\c con of \'elan to my pin\~a colada. +% | +% \produces +% Add a soup\c con of \'elan to my pin\~a colada. +% \endexample + +% \margin{`see also' moved to end of group, replacing the one there.} +% \enddesc + +\example +Add a soup\c con of \'elan to my pin\~a colada. +| +\produces +Add a soup\c con of \'elan to my pin\~a colada. +\endexample + +\margin{`see also' moved to end of group, replacing the one there.} +\enddesc + +% \begindesc +% \cts i {} +% \cts j {} +% \explain +% These commands produce dotless versions of the letters `i' and `j'. +% You should use them instead of the ordinary `i' and `j' when you are putting +% an accent above those letters in ordinary text. +% ^^{dotless letters} +% Use the ^|\imath| and ^|\jmath| commands (\xref\imath) +% for dotless `i's and `j's in math formulas. +% \example +% long `i' as in l\=\i fe \quad \v\j +% | +% \produces +% long `i' as in l\=\i fe \quad \v\j +% \endexample +% \enddesc + +\begindesc +\cts i {} +\cts j {} +\explain +这些命令产生无点的字母 `i' 和 `j'。在普通文本中,如果需要为`i' 和 `j' +标记重音,就使用它们。 +^^{无点字母} +在数学公式里,无点的`i' 和 `j' 使用 ^|\imath| 和 ^|\jmath| 命令 (\xref\imath)。 +\example +long `i' as in l\=\i fe \quad \v\j +| +\produces +long `i' as in l\=\i fe \quad \v\j +\endexample +\enddesc + +% \begindesc +% \cts accent {\<charcode>} +% \explain +% ^^{accents} +% This command puts an accent over the character following this command. +% The accent is the character at position \<charcode> in the current font. +% \TeX\ assumes that the accent has been designed to fit over a character +% $1$\thinspace ex high in the same font as the accent. If the +% character to be accented +% is taller or shorter, \TeX\ adjusts the position accordingly. You can +% change \minref{font}s between the accent and the next character, thus +% drawing the accent character and the character to be accented +% from different fonts. If +% the accent character isn't really intended to be +% an accent, \TeX\ won't complain; it +% will just typeset something ridiculous. +% \example +% l'H\accent94 otel des Invalides +% % Position 94 of font cmr10 has a circumflex accent. +% | +% \produces +% l'H\accent94 otel des Invalides +% % Position 94 of font cmr10 has a circumflex accent. +% \endexample +% \see Math accents (\xref{mathaccent}). +% \enddesc + +\begindesc +\cts accent {\<charcode>} +\explain +^^{重音} +这个命令为后面的字符加上重音标记。重音是当前字体里 \<charcode> 位置的 +字符。\TeX\ 假定重音符号被设计的比同样字体里的字符高 $1$\thinspace ex。 +如果需要标记重音的字符过高或者过低,\TeX\ 自动调整重音位置。你可以在重 +音符号和其后的字符之间切换\minref{字体}。如果重音符号被设计的很另 +类,\TeX\ 将不会产生警告;只是排印出一些稀奇古怪的结果。 +\example +l'H\accent94 otel des Invalides +% Position 94 of font cmr10 has a circumflex accent. +| +\produces +l'H\accent94 otel des Invalides +% Position 94 of font cmr10 has a circumflex accent. +\endexample +\see 数学重音(\xref{mathaccent})。 +\enddesc +%========================================================================== +%\subsection {Defeating boundary ligatures} +\subsection 处理页边连写 + +% \begindesc +% \bix^^{ligatures} +% \cts noboundary {} +% \explain +% You can defeat a ligature +% or kern that \TeX\ applies to the +% first or last character of a word by putting |\noboundary| just before +% or just after the word. +% Certain fonts intended for languages other than English +% contain a special boundary +% character that \TeX\ puts at the beginning +% and end of each word. +% The boundary character occupies no space and is invisible when printed. +% It enables \TeX\ to provide different typographical +% treatment to characters at the beginning or end of a word, +% since +% the boundary character can be part of a sequence of +% characters to be kerned or replaced by a ligature. +% (None of the standard \TeX\ fonts contain this boundary character.) +% The effect of |\noboundary| is to delete the +% boundary character if it's there, thus preventing \TeX\ +% from recognizing the ligature or kern. +% \eix^^{ligatures} +% \enddesc + +\begindesc +\bix^^{连写} +\cts noboundary {} +\explain +某些时候,\TeX{} 对单词的开头或者末尾字符连写或者紧排。你可以紧接着单词 +前面或者后面放一个 |\noboundary| 来取消它们。有些非英文字体包含一个专 +门的边界字符,被 \TeX{} 放在单词的前后。这个边界字符不占空间,打印出来 +也不可见。它可以成为能被紧排或连写的一串字符的组成部分,所以有了 +它,\TeX{} 可以对单词的头尾做别致的处理。(标准的\TeX{} 字体不包含此边 +界字符) |\noboundary| 的效果是删除存在的边界字符,从而防止 \TeX{} 识 +别连写或紧排。 +\eix^^{连写} +\enddesc + +%========================================================================== +%\section {Selecting fonts} +\section {选择字体} + +%\xrdef{selfont} +\xrdef{selfont} +%========================================================================== +%\subsection {Particular fonts} +\subsection {特定字体} + +% \begindesc +% ^^{fonts} +% % +% \ctsx fivebf {use $5$-point bold font} +% \ctsx fivei {use $5$-point math italic font} +% \ctsx fiverm {use $5$-point roman font} +% \ctsx fivesy {use $5$-point math symbol font} +% \ctsx sevenbf {use $7$-point bold font} +% \ctsx seveni {use $7$-point math italic font} +% \ctsx sevenrm {use $7$-point roman font} +% \ctsx sevensy {use $7$-point math symbol font} +% \ctsx tenbf {use $10$-point bold text font} +% \ctsx tenex {use $10$-point math extension font} +% \ctsx teni {use $10$-point math italic font} +% \ctsx tenrm {use $10$-point roman text font} +% \ctsx tensl {use $10$-point slanted roman font} +% \ctsx tensy {use $10$-point math symbol font} +% \ctsx tenit {use $10$-point italic font} +% \ctsx tentt {use $10$-point typewriter font} +% \explain +% These commands cause \TeX\ to typeset the following text in the +% specified font. Normally you would enclose +% one of these font-selecting commands in a +% group, together with the text to be set in the selected font. +% Outside of a group a font-selecting command is +% effective until the end of the document +% (unless you override it with another such command). +% \example +% See how I've reduced my weight---from +% 120 lbs.\ to {\sevenrm 140 lbs}. +% | +% \produces +% See how I've reduced my weight---from +% 120 lbs.\ to {\sevenrm 140 lbs}. +% \endexample +% \enddesc + +\begindesc +^^{字体} +% +\ctsx fivebf {使用 $5$ 点粗体} +\ctsx fivei {使用 $5$ 点数学意大利体} +\ctsx fiverm {使用 $5$ 点罗马体} +\ctsx fivesy {使用 $5$ 点数学符号字体} +\ctsx sevenbf {使用 $7$ 点粗体} +\ctsx seveni {使用 $7$ 点数学意大利体} +\ctsx sevenrm {使用 $7$ 点罗马体} +\ctsx sevensy {使用 $7$ 点数学符号字体} +\ctsx tenbf {使用 $10$ 点粗体} +\ctsx tenex {使用 $10$ 点数学扩展字体} +\ctsx teni {使用 $10$ 点数学意大利体} +\ctsx tenrm {使用 $10$ 点罗马体} +\ctsx tensl {使用 $10$ 点斜罗马体} +\ctsx tensy {使用 $10$ 点数学符号字体} +\ctsx tenit {使用 $10$ 点意大利体} +\ctsx tentt {使用 $10$ 点打字机字体} +\explain +这些命令使 \TeX{} 用指定的字体排版后面的文本。一般你可以把字体选择命令 +和相应的文本置于同一个编组中。编组之外使用一个字体选择命令直到文档最后。 +(除非中途用另一个类似的命令覆盖掉它) +\example +See how I've reduced my weight---from +120 lbs.\ to {\sevenrm 140 lbs}. +| +\produces +See how I've reduced my weight---from +120 lbs.\ to {\sevenrm 140 lbs}. +\endexample +\enddesc + +% \begindesc +% \cts nullfont {} +% \explain +% This command selects a font, built into \TeX, +% that has no characters in it. \TeX\ uses it +% as a replacement for an undefined font in a family of math fonts. +% \enddesc + +\begindesc +\cts nullfont {} +\explain +这个命令选择一种 \TeX{} 内置的没有任何字符的空字体。在一族数学字体 +中,\TeX{} 将用它取代其中没有定义的字体。 +\enddesc + +%========================================================================== +%\subsection {Type styles} +\subsection {字体风格} + +% \xrdef{seltype} +% \begindesc +% ^^{type styles} +% \easy\ctsx bf {use boldface type} +% \ctsx it {use italic type} +% \ctsx rm {use roman type} +% \ctsx sl {use slanted type} +% \ctsx tt {use typewriter type} +% \explain +% These commands select a type style without changing the typeface or +% the point size.\footnote{ +% \TeX\ does not provide predefined commands for changing just the point +% size, e.g., |\eightpoint|. +% Supporting such commands would require a great number of fonts, +% most of which would never be used. +% Such commands were, however, used in typesetting \texbook.} +% Normally you would enclose +% one of these type style commands in a +% group, together with the text to be set in the selected font. +% Outside of a group a type style command is +% effective until the end of the document +% (unless you override it with another such command). +% \example +% The Dormouse was {\it not} amused. +% | +% \produces +% The Dormouse was {\it not} amused. +% \endexample +% \enddesc +\xrdef{seltype} +\begindesc +^^{字体风格} +\easy\ctsx bf {粗体} +\ctsx it {意大利体} +\ctsx rm {罗马体} +\ctsx sl {斜体} +\ctsx tt {打字机字体} +\explain +这些命令选择一种字体风格,而不改变字样或者字号。 +\footnote{译注:注意区分字样(typeface)和字体(font),字样指一整套统一设计的字体。} +\footnote{\TeX\ 并不提供预定义的命令来改变字号,比如,|\eightpoint|。要支持这样的命令, +需要大量的字体,可能很多从来都不会用到。这样的命令曾被用来排版\texbook。} +一般情况下,这些字体风格命令和相应的文本被一起包含在一个编组里。 +如果放在编组之外,效果将会作用于文档剩余部分(除非用另外一个这样的命令覆盖它)。 +\example +The Dormouse was {\it not} amused. +| +\produces +The Dormouse was {\it not} amused. +\endexample +\enddesc + +% \see ``Fonts in math formulas'' (\xref{mathfonts}). +\see ``数学公式字体''(\xref{mathfonts})。 + +%========================================================================== +% \section {Uppercase and lowercase} +\section {大写和小写} + +% \begindesc +% \bix^^{case conversion} +% \bix^^{uppercase//conversion to} +% \bix^^{lowercase//conversion to} +% \cts lccode {\<charcode> \tblentry{number}} +% \cts uccode {\<charcode> \tblentry{number}} +% \explain +% The |\lccode| and |\uccode| values for the $256$ possible input +% characters specify the correspondence between the lowercase and +% uppercase forms of letters. These values are used by the |\lowercase| +% and |\uppercase| commands respectively and by \TeX's hyphenation +% algorithm. + + +\begindesc +\bix^^{大小写转换} +\bix^^{大写字母//转换为大写字母} +\bix^^{小写字母//转换为小写字母} +\cts lccode {\<charcode> \tblentry{number}} +\cts uccode {\<charcode> \tblentry{number}} +\explain +|\lccode| 和 |\uccode| 的值为$256$个输入字符设定大小写的对应关系。 +|\lowercase| 和 |\uppercase| 命令以及 \TeX\ 的断词算法将会使用这些值。 + +% \TeX\ initializes the values of |\lccode| and |\uccode| as follows: +\TeX\ 这样初始化 |\lccode|和|\uccode|的值: +%\ulist\compact +%\li The |\lccode| of a lowercase letter is the {\ascii} code for that letter. +%\li The |\lccode| of an uppercase letter is the {\ascii} code for the +%corresponding lowercase letter. +%\li The |\uccode| of an uppercase letter is the {\ascii} code for that letter. +%\li The |\uccode| of a lowercase letter is the {\ascii} code for the +%corresponding uppercase letter. +%\li The |\lccode| and |\uccode| of a nonletter are both zero. +%\endulist +\ulist\compact +\li 小写字母的|\lccode|是它的{\ascii}代码。 +\li 大写字母的|\lccode|是它的小写形式的{\ascii}代码。 +\li 大写字母的|\uccode|是它的{\ascii}代码。 +\li 小写字母的|\lccode|是它的大写形式的{\ascii}代码。 +\li 非字母字符的|\lccode|和|\uccode|都是零。 +\endulist + +%Most of the time there's no reason to change these values, +%but you might want to change them if you're using a language +%that has more letters than English. +%\example +%\char\uccode`s \char\lccode`a \char\lccode`M +%| +%\produces +%\char\uccode`s \char\lccode`a \char\lccode`M +%\endexample +%\enddesc +大多数时候,没有必要改变这些值,除非你使用的语文的字母比英文多。 +\example +\char\uccode`s \char\lccode`a \char\lccode`M +| +\produces +\char\uccode`s \char\lccode`a \char\lccode`M +\endexample +\enddesc + + +%\begindesc +%\cts lowercase {\rqbraces{\<token list>}} +%\cts uppercase {\rqbraces{\<token list>}} +%\explain ^^{case conversion} +%These commands convert the letters in \<token list>, +%i.e., those tokens with category code $11$, to their lowercase +%and uppercase forms. +%The conversion of a letter is defined by its |\lccode| (for lowercase) +%or |\uccode| (for uppercase) table value. +%Tokens in the list that are not letters are not affected---even if the +%tokens are \minref{macro} calls or other commands that expand into letters. +%\example +%\def\x{Cd} \lowercase{Ab\x} \uppercase{Ab\x} +%| +%\produces +%\def\x{Cd} \lowercase{Ab\x} \uppercase{Ab\x} +% +%\eix^^{case conversion} +%\eix^^{uppercase//conversion to} +%\eix^^{lowercase//conversion to} +%\endexample +%\enddesc +\begindesc +\cts lowercase {\rqbraces{\<token list>}} +\cts uppercase {\rqbraces{\<token list>}} +\explain ^^{大小写转换} +这些命令按照|\lccode|和|\uccode|的值转换\<token list>中的字母(类别码为$11$的)为它们的大写和小写形式。 +非字母字符不受影响,即使它们是\minref{宏}调用或其他展开成字母的命令。 +\example +\def\x{Cd} \lowercase{Ab\x} \uppercase{Ab\x} +| +\produces +\def\x{Cd} \lowercase{Ab\x} \uppercase{Ab\x} + +\eix^^{大小写转换} +\eix^^{大写字母//转换为大写字母} +\eix^^{小写字母//转换为小写字母} +\endexample +\enddesc + + +%========================================================================== +%\section {Interword spacing} +\section {单词间距} + +%\begindesc +%\bix^^{spaces//interword} +%\easy\ctsbasic {\\\vs}{} +%\blankidxref\ctsxrdef{@space} +%\explain +%This command explicitly produces an interword +%space called a ``^{control space}''. +%A control space is useful when a +%letter occurs immediately after a control sequence, or in any other +%circumstance where you don't want two tokens to be run together in the +%output. +%The amount of space produced by |\!vs| +%is independent of preceding punctuation, i.e., its space factor +%(\xref\spacefactor) is $1000$. +\begindesc +\bix^^{间隔//单词间距} +\writeidxfalse +\easy\ctsbasic {\\\vs}{} +\blankidxref\ctsxrdef{@space} +\writeidxtrue +\explain +这个命令明确地产生一个单词间空格,称为``^{控制空格}''。 +当一个字母出现在一个控制序列之后或者其他情况下你不想让两个记号排在一起时,就要用到控制空格。 +由|\!vs|产生的空白不受前面标点的影响,即其距离因子 +(\xref\spacefactor)为$1000$。 + +%Incidentally, if you want to print the `\vs' ^^{visible space} +%character that we've used here to denote a space, you can get it by typing +%|{\tt \char `\ }|. +% +%\example +%The Dormouse was a \TeX\ expert, but he never let on. +%| +%\produces +%The Dormouse was a \TeX\ expert, but he never let on. +%\endexample +%\enddesc + + +如果你想打印出`\vs' ^^{可见空格}空格,可以输入 +|{\tt \char `\ }|. + +\example +The Dormouse was a \TeX\ expert, but he never let on. +| +\produces +The Dormouse was a \TeX\ expert, but he never let on. +\endexample +\enddesc +%\begindesc +%\cts space {} +%\explain +%This command is equivalent to an input space character. +%It differs from ^|\ | in that its +%width \emph{can} be affected by preceding punctuation. +%\example +%Yes.\space No.\space Maybe.\par +%Yes.\!vs!.No.\!vs!.Maybe. +% +%| +%\produces +%Yes.\space No.\space Maybe.\par +%Yes.\ No.\ Maybe. +%\endexample +%\enddesc + +\begindesc +\cts space {} +\explain +这个命令等价于一个输入的空格字符。和 \writeidxfalse^|\ |\writeidxtrue 不同, +它的宽度\emph{会}受到前面标点的影响。 +\example +Yes.\space No.\space Maybe.\par +Yes.\!vs!.No.\!vs!.Maybe. + +| +\produces +Yes.\space No.\space Maybe.\par +Yes.\ No.\ Maybe. +\endexample +\enddesc + +%\begindesc +%\ctsact ^^M \xrdef{@newline} +%\explain +%This construct produces the ^{end of line} character. +%It normally has two effects when \TeX\ encounters it in +%your input: +%\olist +%\li It acts as a command, producing either an input space +%(if it comes at the end of a nonblank line) +%or a |\par| token (if it comes at the end of a blank line). +%^^|\par//from empty line| +%\li It ends the input line, causing \TeX\ to ignore the remaining +%characters on the line. +%\endolist +%\noindent +%However, |^^M| does \emph{not} end the line when it appears in the +%context |`\^^M|, denoting the ASCII code for control-M (the number $13$). +%You can change the meaning of |^^M| +%by giving it a different \minref{category code}. +%See \xrefpg{twocarets} for a more general explanation of the |^^| notation. +%\example +%Hello.^^MGoodbye. +%Goodbye again.\par +%The \char `\^^M\ character.\par +%% The fl ligature is at position 13 of font cmr10 +%\number `\^^M\ is the end of line code.\par +%Again, \number `^^M is the end of line code, +%isn't it? % 32 is the ASCII code for a space +%| +%\produces +%{\catcode `\^ = 7 % disable indexing use within this display +%Hello.^^MGoodbye +%Goodbye again.\par +%The \char `\^^M\ character.\par +%\number `\^^M\ is the end of line code.\par +%Again, \number `^^M is the end of line code, +%isn't it?} +%\endexample +%\enddesc +% +\begindesc +\ctsact ^^M \xrdef{@newline} +\explain +这将产生^{行尾}字符。通常有两个效果: +\olist +\li 类似一个命令,产生一个输入的空格(如果它出现在一个非空行的尾部)或者一个 +|\par|记号(如果出现在空行的尾部)。^^|\par//来自空行| +\li 结束一行,使\TeX{}忽略剩余的字符。 +\endolist +\noindent +但是,如果以|`\^^M|(即 control-M 的 ASCII 代码 13)出现,|^^M|\emph{不会}结束一行。 +你可以修改\minref{类别码},从而赋予它新的含义。 +关于|^^|更多的解释请参见\xrefpg{twocarets}。 +\example +Hello.^^MGoodbye. +Goodbye again.\par +The \char `\^^M\ character.\par +% The fl ligature is at position 13 of font cmr10 +\number `\^^M\ is the end of line code.\par +Again, \number `^^M is the end of line code, +isn't it? % 32 is the ASCII code for a space +| +\produces +{\catcode `\^ = 7 % disable indexing use within this display +Hello.^^MGoodbye +Goodbye again.\par +The \char `\^^M\ character.\par +\number `\^^M\ is the end of line code.\par +Again, \number `^^M is the end of line code, +isn't it?} +\endexample +\enddesc + +%\begindesc +%\easy\ctsact ~ \xrdef{@not} +%\explain +%The \minref{active character} `|~|', called a ``^{tie}'', +%produces a normal interword space +%between two words and links those words so that +%a line break will not occur between them. +%You should use a tie in any context where a line break would be confusing, +%e.g., before a middle initial, after an abbreviation such as ``Dr.'', +%or after ``Fig.'' in ``Fig.~8''. +% +%\example +%P.D.Q.~Bach (1807--1742), the youngest and most +%imitative son of Johann~S. Bach, composed the +%{\sl Concerto for Horn and Hardart}. +%| +%\produces +%\margin{The inversion of dates is deliberate---cf. Peter Schickele.} +%P.D.Q.~Bach (1807--1742), the youngest and most +%imitative son of Johann~S. Bach, composed the +%{\sl Concerto for Horn and Hardart}. +%\endexample\enddesc + + +\begindesc +\easy\ctsact ~ \xrdef{@not} +\explain +\minref{活动字符}`|~|'称为``^{带子}''(tie),它产生一个正常的单词间空白, +同时保证前后两个单词之间不会断行。只要断行会有歧义,就应该使用带子。 +比如,在中间名之前,缩写词``Dr.''之后,或者``Fig.''之后:像``Fig.~8''。 + +\example +P.D.Q.~Bach (1807--1742), the youngest and most +imitative son of Johann~S. Bach, composed the +{\sl Concerto for Horn and Hardart}. +| +\produces +\margin{The inversion of dates is deliberate---cf. Peter Schickele.} +P.D.Q.~Bach (1807--1742), the youngest and most +imitative son of Johann~S. Bach, composed the +{\sl Concerto for Horn and Hardart}. +\endexample\enddesc +%\begindesc +%\easy\ctspecial / \ctsxrdef{@slash} +%\explain +%Every character in a \TeX\ \minref{font} +%has an ``^{italic correction}'' associated with it, although +%the italic correction +%is normally zero for a character in an unslanted (upright) font. +%The italic correction specifies the extra space that's needed +%when you're switching from a slanted font (not necessarily +%an italic font) to an unslanted font. +%The extra +%space is needed because a slanted character projects into the +%space that follows it, making the space look too small when the +%next character is unslanted. +%The metrics file for a font includes the italic correction of each +%character in the font. +%^^{metrics file//italic correction in} +\begindesc +\easy\ctspecial / \ctsxrdef{@slash} +\explain +\TeX\ \minref{字体}中每个字符都有``^{倾斜修正}''。直立字体的倾斜修正一般就是零。 +当从倾斜的字体(不一定是意大利体)切换到直立的字体时,倾斜修正会增加额外的空白。 +这个额外的空白之所以必要,是因为倾斜的字符略微挤占了后面的空格位置, +当后面跟着直立字体时,会显得中间的空格太小。 +所有字符的倾斜修正都包含在字体的度量文件里。 +^^{度量文件//其中的倾斜修正} + +%The |\/| command +%produces an ^{italic correction} for the preceding character. +%You should insert an italic correction when you're switching from +%a slanted font to an unslanted font, +%except when the next character is a period or comma. +%\example +%However, {\it somebody} ate {\it something}: that's clear. +% +%However, {\it somebody\/} ate {\it something\/}: +%that's clear. +%| +%\produces +%However, {\it somebody} ate {\it something}: that's clear. +% +%However, {\it somebody\/} ate {\it something\/}: +%that's clear. +%\endexample +%\enddesc +命令|\/|产生对前面字符的^{倾斜修正}。当从倾斜字体切换到直立字体的时候, +必须要插入倾斜修正,除非下一个字符是句点或逗号。 +\example +However, {\it somebody} ate {\it something}: that's clear. + +However, {\it somebody\/} ate {\it something\/}: +that's clear. +| +\produces +However, {\it somebody} ate {\it something}: that's clear. + +However, {\it somebody\/} ate {\it something\/}: +that's clear. +\endexample +\enddesc + +%\begindesc +%\cts frenchspacing {} +%\cts nonfrenchspacing {} +%\explain +%^^{interword spacing} +%\TeX\ normally adjusts the spacing between words to account for +%punctuation marks. For example, it inserts extra space at the end of a +%sentence and adds some stretch to the \minref{glue} following any +%punctuation mark there. The |\frenchspacing| command tells \TeX\ to make +%the interword spacing independent of punctuation, while the +%|\nonfrenchspacing| command tells \TeX\ to use its normal spacing rules. +%If you don't specify +%|\frenchspacing|, you'll get \TeX's normal spacing. +% +%See \xrefpg{periodspacing} for advice on how to control \TeX's treatment +%of punctuation at the end of sentences. +% +%\example +%{\frenchspacing An example: two sentences. Right? No.\par} +%{An example: two sentences. Right? No. \par}% +%| +%\produces +%{\frenchspacing An example: two sentences. Right? No.\par} +%{An example: two sentences. Right? No. \par}% +%\endexample +% +%\enddesc +% + + +\begindesc +\cts frenchspacing {} +\cts nonfrenchspacing {} +\explain +^^{单词间距} +\TeX{}一般会为了标点符号而调整单词间距。例如,一个句子的末尾会有额外的空白, +句尾标点符号之后的\minref{粘连}会被拉长。 +|\frenchspacing|命令让\TeX{}调整单词间距时忽略标点符号; +|\nonfrenchspacing|命令让\TeX{}使用正常间距,即不使用|\frenchspacing|效果。 + +%See \xrefpg{periodspacing} for advice on how to control \TeX's treatment +%of punctuation at the end of sentences. +% +%\example +%{\frenchspacing An example: two sentences. Right? No.\par} +%{An example: two sentences. Right? No. \par}% +%| +%\produces +%{\frenchspacing An example: two sentences. Right? No.\par} +%{An example: two sentences. Right? No. \par}% +%\endexample +% +%\enddesc + + +关于\TeX{}如何处理句尾标点,请参考\xrefpg{periodspacing}。 +\example +{\frenchspacing An example: two sentences. Right? No.\par} +{An example: two sentences. Right? No. \par}% +| +\produces +{\frenchspacing An example: two sentences. Right? No.\par} +{An example: two sentences. Right? No. \par}% +\endexample + +\enddesc +%\begindesc +%\cts obeyspaces {} +%\explain +%\TeX\ normally condenses a sequence of several spaces to a single space. +%|\obeyspaces| instructs \TeX\ to produce a space in the output +%for each space in the input. +%|\obeyspaces| does not cause spaces at the beginning of a line +%to show up, however; for that we recommend the |\obey!-white!-space| +%command defined in |eplain.tex| +%(\xref{ewhitesp}). +%^^|\obeywhitespace| +%|\obeyspaces| is often useful when you're typesetting something, +%computer input for example, +%in a monospaced font (one in which each character takes up the +%same amount of space) +%and you want to show exactly what each line of input looks like. +% +%You can use the |\obeylines| command (\xref{\obeylines}) to get \TeX\ +%to follow the line boundaries of your input. |\obeylines| is often +%used in combination with |\obeyspaces|. +%\example +%These spaces are closed up +%{\obeyspaces but these are not }. +%| +%\produces +%These spaces are closed up +%{\obeyspaces but these are not }. +%\endexample +%\enddesc +% + +\begindesc +\cts obeyspaces {} +\explain +\TeX\ 把连续的空格处理为一个空格。 +|\obeyspaces|的作用是输入多少空格,就输出多少。 +但是|\obeyspaces|不会显示行首的空格。这时候推荐使用|\obey!-white!-space|,其定义在|eplain.tex|中(\xref{ewhitesp})。 +^^|\obeywhitespace| +|\obeyspaces|主要用于以等宽字体打印计算机代码,以及显示所见即所得的内容。 + + +|\obeylines|命令(\xref{\obeylines})的作用是让\TeX{}输出跟你所输入的一模一样的行。|\obeylines|经常和|\obeyspaces|一起被使用。 +\example +These spaces are closed up +{\obeyspaces but these are not }. +| +\produces +These spaces are closed up +{\obeyspaces but these are not }. +\endexample +\enddesc + +%\begindesc +%\cts spacefactor {\param{number}} +%\cts spaceskip {\param{glue}} +%\cts xspaceskip {\param{glue}} +%\cts sfcode {\<charcode> \tblentry{number}} +%\explain +%These primitive \minref{parameter}s affect how much space \TeX\ +%puts between two adjacent words, i.e., the ^{interword spacing}. +%The normal interword spacing is supplied by the current font. +%As \TeX\ is processing a \minref{horizontal list}, it keeps track of the +%^{space factor} $f$ in |\spacefactor|. +%As it processes each input character $c$, it updates $f$ according to the +%value of $f_c$, the space factor code of $c$ (see below). +%For most characters, $f_c$ is $1000$ and \TeX\ sets $f$ to $1000$. +%(The initial value of $f$ is also $1000$.) +%When \TeX\ sees an interword space, it adjusts the size of that space +%by multiplying the stretch and shrink of that space by +%$f/1000$ and $1000/f$ respectively. +%Thus: +%\olist\compact +%\li If $f=1000$, the interword space keeps its normal value. +%\li If $f<1000$, the interword space gets less \minref{stretch} +%and more \minref{shrink}. +%\li If $f>1000$, the interword space gets more \minref{stretch} +%and less \minref{shrink}. +%\endolist +%% > changed to \ge on the next line after second edition was typeset. +%% Correction made by A-W production. +%In addition, if $f\ge2000$ the interword space is further increased by the +%``extra space'' parameter associated with the current font. +\begindesc +\cts spacefactor {\param{number}} +\cts spaceskip {\param{glue}} +\cts xspaceskip {\param{glue}} +\cts sfcode {\<charcode> \tblentry{number}} +\explain +这些基本\minref{参数}影响相邻单词之间的空白,即^{单词间距}。 +默认的单词间距由当前字体决定。 +当\TeX\ 处理一个\minref{水平列表}时,会监视 |\spacefactor| ^{间隔因子} $f$。 +每当一个输入字符$c$被处理时,$f$就会随$f_c$($c$的间隔因子代码)的值而更新。 +大多数的字符,$f_c$是$1000$,因此\TeX\ 设定$f$为$1000$。($f$的初始值也是$1000$。) +当\TeX\ 遇到一个单词间空格的时候,就会调整间隔的大小, +给该间隔的伸长量和收缩量分别乘以 $f/1000$ 和 $1000/f$。 +所以: +\olist\compact +\li 当$f=1000$时,单词间距为默认值。 +\li 当$f<1000$时,单词间距有更少\minref{伸长量}更多\minref{收缩量}。 +\li 当$f>1000$时,单词间距有更多\minref{伸长量}更少\minref{收缩量}。 +\endolist +% > changed to \ge on the next line after second edition was typeset. +% Correction made by A-W production. +另外,如果$f\ge2000$,当前字体的``额外空白''参数会让单词间距进一步增大。 + +%Each +%input character $c$ has an entry in the |\sfcode| (space factor code) +%table. +%The |\sfcode| table entry is independent of the font. +%Usually \TeX\ just sets $f$ to $f_c$ after it processes $c$. +%However: +%\ulist +%\li If $f_c$ is zero, \TeX\ leaves $f$ unchanged. +%Thus a character such as `|)|' in \plainTeX, +%for which $f_c$ is zero, is essentially transparent to +%the interword space calculation. +%\li If $f<1000<f_c$, \TeX\ sets $f$ to $1000$ rather than to $f_c$, +%i.e., it refuses to raise $f$ very rapidly. +%\endulist +%The |\sfcode| value for a period is normally $3000$, +%which is why \TeX\ usually puts extra space after a period +%% > to \ge here, too, as above. +%(see the rule above for the case $f\ge2000$). +%Noncharacter items in a horizontal list, e.g., vertical rules, +%generally act like characters with a space factor of $1000$. +每一个输入字符$c$对应于|\sfcode|(间隔因子代码)表中的一项。 +|\sfcode|表项与字体无关。通常\TeX\ 处理完$c$之后就让$f$等于$f_c$。 +但是: +\ulist +\li 如果$f_c$为零,$f$将不变。所以\plainTeX\ 中$f_c$为零的字符, +如`|)|',对于单词间距的计算毫无影响。 +\li 如果$f<1000<f_c$,\TeX\ 会让$f$为$1000$而不是$f_c$,也就是,不会让$f$快速地增加。 +\endulist +句号的|\sfcode|值通常是$3000$,所以\TeX\ 会在句号之后增加额外的空白。% +(参见上面$f\ge2000$的情形)。水平列表中的非字符, +比如竖直标线,一般视为间隔因子为 $1000$ 字符。 + +%You can change the space factor explicitly by assigning +%a different numerical value to |\spacefactor|. +%You can also override the normal +%interword spacing by assigning a different numerical +%value to |\xspaceskip| or to |\spaceskip|: +%\ulist +%\li |\xspaceskip| specifies the glue to be used when $f\ge2000$; +%in the case where +%|\xspaceskip| is zero, the normal rules apply. +%\li |\spaceskip| specifies the glue to be used when $f<2000$ or when +%\hbox{|\xspaceskip|} is zero; if |\spaceskip| is zero, the normal rules apply. +%The stretch and shrink of +%the |\spaceskip| glue, like that of the ordinary interword glue, +%is modified according to the value of $f$. +%\endulist +通过修改 |\spacefactor| 的值,就可以显式地调整间隔因子。 +通过修改 |\xspaceskip| 或者 |\spaceskip| 的值,你还可以覆盖默认的单词间距: +\ulist +\li |\xspaceskip| 设定 $f\ge2000$ 时的粘连;如果 |\xspaceskip| 是零,就取默认值。 +\li |\spaceskip| 设定 $f<2000$ 或者 |\xspaceskip| 为零时的粘连; +如果|\spaceskip|是零,就取默认值。 +|\spaceskip| 粘连的伸长或收缩依$f$的值而变,就像普通的单词间距一样。 +\endulist + +%See \knuth{page~76} for the precise rules that \TeX\ uses in calculating +%interword \minref{glue}, and \knuth{pages~285--287} for the adjustments +%made to |\spacefactor| after various items in a horizontal list. +%\eix^^{spaces//interword} +%\enddesc +\knuth{第~76~页} 对 \TeX\ 计算单词间\minref{粘连}的规则有一个具体的解释。 +\knuth{第~285--287~页}详细描述了水平列表的各种项目之后|\spacefactor|的调整。 +\eix^^{间隔//单词间距} +\enddesc + +%========================================================================== +%\section {Centering and justifying lines} +\section {行的居中和平均分布} + +%\begindesc +%\bix^^{centering} +%\bix^^{flush left} +%\bix^^{flush right} +%\bix^^{justification} +%\easy\cts centerline {\<argument>} +%\cts leftline {\<argument>} +%\cts rightline {\<argument>} +%\explain +%The |\centerline| command produces an \minref{hbox} exactly as wide +%as the current line and places \<argument> at the center of the box. +%The |\leftline| and |\rightline| commands are analogous; they +%place \<argument> at the left end or at the right end of the box. +%If you want to apply one of these commands to +%several consecutive lines, you must apply +%it to each one individually. +%See \xrefpg{eplaincenter} for an alternate approach. +\begindesc +\bix^^{居中对齐} +\bix^^{居左对齐} +\bix^^{居右对齐} +\bix^^{均匀对齐} +\easy\cts centerline {\<argument>} +\cts leftline {\<argument>} +\cts rightline {\<argument>} +\explain +命令 |\centerline| 产生产生一个与当前行同宽的\minref{水平盒子}, +并把 \<argument> 在里面居中放置。命令 |\leftline| 和|\rightline| 的作用类似: +把 \<argument> 放在盒子里靠左或者靠右的位置。如果想让几行内容都有同样的效果, +每一行都必须这样操作。其他的办法,请看\xrefpg{eplaincenter}。 + +%Don't use these commands within a paragraph---if you do, +%\TeX\ probably won't be able to break the paragraph into lines and +%will complain about an overfull hbox. +%\example +%\centerline{Grand Central Station} +%\leftline{left of Karl Marx} +%\rightline{right of Genghis Khan} +%| +%\produces +%\centerline{Grand Central Station} +%\leftline{left of Karl Marx} +%\rightline{right of Genghis Khan} +% +%\eix^^{centering} +%\eix^^{flush left} +%\eix^^{flush right} +%\eix^^{justification} +% +%\endexample +%\enddesc +这些命令不能用在段落里,否则分段成行的时候,\TeX\ 可能会遇到麻烦并警告盒子溢出了。 +\example +\centerline{Grand Central Station} +\leftline{left of Karl Marx} +\rightline{right of Genghis Khan} +| +\produces +\centerline{Grand Central Station} +\leftline{left of Karl Marx} +\rightline{right of Genghis Khan} +\eix^^{居中对齐} +\eix^^{居左对齐} +\eix^^{居右对齐} +\eix^^{均匀对齐} +\endexample +\enddesc + +%\begindesc +%\easy\cts line {\<argument>} +%\explain +%This command produces an \minref{hbox} containing \<argument>. +%The hbox is exactly as wide as the current line, i.e., it +%extends from the right margin to the left margin. +%\example +%\line{ugly \hfil suburban \hfil sprawl} +%%Without \hfil you'd get an `underfull box' from this. +%| +%\produces +%\line{ugly \hfil suburban \hfil sprawl}% +%\endexample +% +%\enddesc +\begindesc +\easy\cts line {\<argument>} +\explain +这个命令产生一个\minref{hbox}来包含\<argument>。 +hbox的宽度和当前行宽相同,即从左边距延伸到右边距。 +\example +\line{ugly \hfil suburban \hfil sprawl} +% Without \hfil you'd get an `underfull box' from this. +| +\produces +\line{ugly \hfil suburban \hfil sprawl}% +\endexample +\enddesc + +%\begindesc +%^^{overlapping text} +%\cts llap {\<argument>} +%\cts rlap {\<argument>} +%\explain +%These commands enable you to produce text that overlaps +%whatever happens to be to the left or to the right of the current +%position. |\llap| backspaces by the width of \<argument> and then +%typesets \<argument>. |\rlap| is similar, except that it typesets +%\<argument> first and then backspaces. |\llap| and |\rlap| are useful for +%placing text outside of the current margins. +%Both |\llap| and |\rlap| do their work by creating +%a \minref{box} of zero~width. + + +\begindesc +^^{覆盖文件} +\cts llap {\<argument>} +\cts rlap {\<argument>} +\explain +这些命令把文本覆盖到当前位置的左边或者右边。|\llap|会向左退\<argument>的宽度,然后开始排版\<argument>。|\rlap|类似,但是先排版\<argument>然后把后面的内容向左退。|\llap|和|\rlap|主要用于把文本放在现在的页边距之外。它们的工作原理是创建一个零宽度的\minref{盒子}。 +%You can also use |\llap| or |\rlap| to construct special characters by +%^{overprinting}, but don't try it unless you're sure that the characters +%you're using have the same width (which is the case for a monospaced +%font such as ^|cmtt10|, the Computer Modern $10$-point ^{typewriter font}). +%^^{Computer Modern fonts} +%\example +%\noindent\llap{off left }\line{\vrule $\Leftarrow$ +%left margin of examples\hfil right margin of examples +%$\Rightarrow$\vrule}\rlap{ off right} +%| +%\produces +%\noindent\llap{off left }\line{\vrule $\Leftarrow$ +%left margin of examples\hfil right margin of examples +%$\Rightarrow$\vrule}\rlap{ off right} +%\endexample +% +%%\example +%%{\tt O\llap{!|}} +%%| +%%\produces +%%{\cm \tt O\llap{\char `|}} +%%\endexample +% +%\nobreak % don't lose the \see +%\enddesc +% +%\see |\hsize| (\xref{\hsize}). +% + +|\llap|和|\rlap|可以被用来以^{叠印}的方式新建特殊字符。但是必须确保作原料的字符一般宽(等宽字体如^|cmtt10|和Computer Modern $10$-point的^{打字机字体}是这样的)。 +^^{计算机现代字体} +\example +\noindent\llap{off left }\line{\vrule $\Leftarrow$ +left margin of examples\hfil right margin of examples +$\Rightarrow$\vrule}\rlap{ off right} +| +\produces +\noindent\llap{off left }\line{\vrule $\Leftarrow$ +left margin of examples\hfil right margin of examples +$\Rightarrow$\vrule}\rlap{ off right} +\endexample + +%\example +%{\tt O\llap{!|}} +%| +%\produces +%{\cm \tt O\llap{\char `|}} +%\endexample + +\nobreak % don't lose the \see +\enddesc + +\see |\hsize| (\xref{\hsize}). + +%========================================================================== +%\section {Shaping paragraphs} +\section {塑段} + +%\subsection {Starting, ending, and indenting paragraphs} +\subsection {段落的开始、结束和缩进} + +%\begindesc +%\bix^^{paragraphs//shaping} +%\ctspecial par \ctsxrdef{@par} +%\explain +%This command ends a paragraph and puts \TeX\ into \minref{vertical mode}, +%ready to add more items to the page. Since \TeX\ converts a blank line in +%your input file into a |\par| \minref{token}, you don't ordinarily need to +%type an explicit |\par| in order to end a paragraph. + + +\begindesc +\bix^^{段落//塑造段落} +\ctspecial par \ctsxrdef{@par} +\explain +这个命令结束一个段落,并使\TeX{}进入\minref{竖直模式}来在页面上增加更多内容。 +因为\TeX{}把一个空行当作|\par|\minref{记号},所以不需要明确地键入|\par|。 + +%An important point is that |\par| doesn't tell +%\TeX\ to start a paragraph; it only tells \TeX\ to end a paragraph. +%\TeX\ starts a paragraph when it is in ordinary vertical mode (which it +%is after a |\par|) and encounters an inherently horizontal item such as +%a letter. As part of its ceremony for starting a paragraph, \TeX\ +%^^{paragraphs//starting} +%inserts an amount of vertical space given by the parameter |\parskip| +%(\xref{\parskip}) and indents the paragraph by a horizontal space given +%by |\parindent| (\xref{\parindent}). + + +必须指出|\par|不会让\TeX{}开始新的一段;它仅仅告诉\TeX{}去结束一段。 +要使\TeX{}开始新段落,需要处于竖直模式之下(在|\par|之后已经是了),并遇到一个水平项目比如一个字母。为了开始新段落,\TeX{} +^^{段落//开始段落} +将插入一些竖直空白,取决于|\parskip| +(\xref{\parskip});新段落缩进,取决于|\parindent| (\xref{\parindent})。 + +%You can usually cancel any interparagraph space produced by a |\par| by giving +%the command |\vskip -\lastskip|. It can often +%be helpful to do this when you're writing a \minref{macro} that is +%supposed to work the same way whether or not it is preceded by a blank +%line. + + +要想减小段落间|\par|产生的空白,通常可以使用命令|\vskip -\lastskip|。当你需要写一个\minref{宏}而让它与前面是不是空行无关的时候,这个命令就有用。 +%You can get \TeX\ to take some special action at the start of each paragraph +%by placing the instructions in ^|\everypar| (\xref\everypar). +% +%See \knuth{pages~283 and 286} for the precise effect of |\par|. +% +%\example +%\parindent = 2em +%``Can you row?'' the Sheep asked, handing Alice a pair of +%knitting-needles as she was speaking.\par ``Yes, a little% +%---but not on land---and not with needles---'' Alice was +%starting to say, when suddenly the needles turned into oars. +%| +%\produces +%\parindent = 2em +%``Can you row?'' the Sheep asked, handing Alice a pair of +%knitting-needles as she was speaking.\par ``Yes, a little% +%---but not on land---and not with needles---'' Alice was +%starting to say, when suddenly the needles turned into oars. +%\endexample +%\enddesc + + +你可以使用^|\everypar| (\xref\everypar)来让\TeX{}在每开始一个新段落的时候做一些事. + +|\par|的具体效果请参阅\knuth{pages~283 and 286}。 + +\example +\parindent = 2em +``Can you row?'' the Sheep asked, handing Alice a pair of +knitting-needles as she was speaking.\par ``Yes, a little% +---but not on land---and not with needles---'' Alice was +starting to say, when suddenly the needles turned into oars. +| +\produces +\parindent = 2em +``Can you row?'' the Sheep asked, handing Alice a pair of +knitting-needles as she was speaking.\par ``Yes, a little% +---but not on land---and not with needles---'' Alice was +starting to say, when suddenly the needles turned into oars. +\endexample +\enddesc +%\begindesc +%\cts endgraf {} +%\explain +%This command is a synonym for the ^|\par| primitive command. +%It is useful when you've redefined ^|\par| but still want access to the +%original definition of |\par|. +%\enddesc + + +\begindesc +\cts endgraf {} +\explain +这个命令与^|\par|同义。有时候你重新定义了^|\par|,但是又想取得|\par|的原始定义,这个命令就会有用。 +\enddesc +%\begindesc +%\cts parfillskip {\param{glue}} +%\explain +%^^{paragraphs//glue at end of} +%This parameter specifies the horizontal glue that +%\TeX\ inserts at the end of a paragraph. +%The default value of |\parfillskip| is |0pt plus 1fil|, +%which causes the last line of a paragraph to be +%filled out with blank space. A value of |0pt| forces +%\TeX\ to end the last line of a paragraph at the right margin. +%\enddesc + + +\begindesc +\cts parfillskip {\param{glue}} +\explain +^^{段落//段落末尾的粘连} +这个参数设定\TeX{}插入段落末尾的水平粘连。 +默认值是|0pt plus 1fil|,这使得最后一行被空格填满。如果设成|0pt|, +\TeX{}就会把段落的最后一行拉伸到右边距。 +\enddesc +%\bix^^{indentation} +%\begindesc +%\easy\cts indent {} +%\explain +%If \TeX\ is in vertical mode, as it is after ending a paragraph, +%this command inserts the ^|\parskip| interparagraph glue, +%puts \TeX\ into horizontal mode, starts a paragraph, and +%indents that paragraph by |\parindent|. +%If \TeX\ is already in horizontal mode, this command merely produces +%a blank space of width |\parindent|. +%Two |\indent|s in a row +%produce two indentations. +%^^{indentation} + + +\bix^^{缩进} +\begindesc +\easy\cts indent {} +\explain +当\TeX{}处于竖直模式时,比如段落结束以后,这个命令插入段落间粘连^|\parskip|,使\TeX{}进入水平模式,开始新的一段,并缩进|\parindent|大小。 +如果\TeX{}已经处于水平模式了,这个命令就只做缩进。 +一行中两个|\indent|产生两个缩进。 +^^{缩进} +%As the example below shows, an |\indent| at a point where \TeX\ +%would start a paragraph anyway is redundant. +%When \TeX\ is in vertical mode and sees a letter or some other +%inherently horizontal command, it starts a paragraph by +%switching to horizontal mode, +%doing an |\indent|, and processing the horizontal command. +% +%\example +%\parindent = 2em This is the first in a series of three +%paragraphs that show how you can control indentation. Note +%that it has the same indentation as the next paragraph.\par +%\indent This is the second in a series of three paragraphs. +%It has \indent an embedded indentation.\par +%\indent\indent This doubly indented paragraph +%is the third in the series. +%| +%\produces +%\parindent = 2em This is the first in a series of three +%paragraphs that show how you can control indentation. Note +%that it has the same indentation as the next paragraph.\par +%\indent This is the second in a series of three paragraphs. +%It has \indent an embedded indentation.\par +%\indent\indent This doubly indented paragraph +%is the third in the series. +%\endexample +%\enddesc + + +如下面的例子所示,新的段落开始之后的|\indent|是多余的。 +当\TeX{}处在竖直模式下,遇到一个字母或其他水平模式中的命令时,就会切换到水平模式缩进|\indent|,然后继续。 + +\example +\parindent = 2em This is the first in a series of three +paragraphs that show how you can control indentation. Note +that it has the same indentation as the next paragraph.\par +\indent This is the second in a series of three paragraphs. +It has \indent an embedded indentation.\par +\indent\indent This doubly indented paragraph +is the third in the series. +| +\produces +\parindent = 2em This is the first in a series of three +paragraphs that show how you can control indentation. Note +that it has the same indentation as the next paragraph.\par +\indent This is the second in a series of three paragraphs. +It has \indent an embedded indentation.\par +\indent\indent This doubly indented paragraph +is the third in the series. +\endexample +\enddesc + +% +%\begindesc +%\easy\cts noindent {} +%\explain +%If \TeX\ is in vertical mode, as it is after ending a paragraph, +%this command inserts the ^|\parskip| interparagraph glue, +%puts \TeX\ into horizontal mode, and starts an unindented paragraph. +%It has no effect in horizontal mode, i.e., within a paragraph. +%Starting a paragraph with |\noindent| thus cancels +%the indentation by |\parindent| +%that would normally occur there. +%^^{indentation} +% + +\begindesc +\easy\cts noindent {} +\explain +当\TeX{}结束一段后处于竖直模式时,这个命令插入段落间粘连 ^|\parskip|, +使\TeX{}进入水平模式,然后开始新段,不要缩进。 +在水平模式中,比如段落中,这个命令没有效果。 +|\noindent|开始的新段会取消通常的|\parindent|缩进。 +^^{缩进} +%A common use of |\noindent| is to cancel the indentation of +%the first line of a +%paragraph when the paragraph follows some displayed material. +% +%\example +%\parindent = 1em +%Tied round the neck of the bottle was a label with the +%words \smallskip \centerline{EAT ME}\smallskip +%\noindent beautifully printed on it in large letters. +%| +%\produces +%\parindent = 1em +%Tied round the neck of the bottle was a label with the +%words \smallskip \centerline{EAT ME}\smallskip +%\noindent beautifully printed on it in large letters. +%\endexample +%\enddesc + + +当新的段落是在某些独立显示的内容之后出现时,|\noindent|通常用于取消段落第一行的缩进。 + +\example +\parindent = 1em +Tied round the neck of the bottle was a label with the +words \smallskip \centerline{EAT ME}\smallskip +\noindent beautifully printed on it in large letters. +| +\produces +\parindent = 1em +Tied round the neck of the bottle was a label with the +words \smallskip \centerline{EAT ME}\smallskip +\noindent beautifully printed on it in large letters. +\endexample +\enddesc +%\margin{{\tt\\textindent} moved here from later in the section.} +%\begindesc +%\cts textindent {\<argument>} +%\explain +%^^{indentation} +%This command tells \TeX\ to start a paragraph and indent it by +%|\par!-indent|, +%as usual. +%\TeX\ then right-justifies \<argument> within the indentation +%and +%follows it with an en space (half an em). +%\PlainTeX\ uses this command to typeset footnotes (\xref\footnote) +%^^{footnotes//using \b\tt\\textindent\e\ with} +%and items in lists (see |\item|, \xref\item). +% +%\example +%\parindent = 20pt \textindent{\raise 1pt\hbox{$\bullet$}}% +%You are allowed to use bullets in \TeX\ even if +%you don't join the militia, and many peace-loving +%typographers do so. +%| +%\produces +%\parindent = 20pt \textindent{\raise 1pt\hbox{$\bullet$}}% +%You are allowed to use bullets in \TeX\ even if +%you don't join the militia, and many peace-loving +%typographers do so. +%\endexample\enddesc + + +\margin{{\tt\\textindent} 从此节的后面移到这里} +\begindesc +\cts textindent {\<argument>} +\explain +^^{缩进} +这个命令让\TeX\ 开始新段,正常缩进|\par!-indent|。 +然后\TeX\ 在缩进的地方向右对齐排版\<argument>并加入一个en大小的空白(em的一半)。 +\PlainTeX\ 使用这个命令来排版脚注(\xref\footnote ) +^^{脚注//在脚注中用 \b\tt\\textindent\e} +以及列表项(见 |\item|,\xref\item )。 + +\example +\parindent = 20pt \textindent{\raise 1pt\hbox{$\bullet$}}% +You are allowed to use bullets in \TeX\ even if +you don't join the militia, and many peace-loving +typographers do so. +| +\produces +\parindent = 20pt \textindent{\raise 1pt\hbox{$\bullet$}}% +You are allowed to use bullets in \TeX\ even if +you don't join the militia, and many peace-loving +typographers do so. +\endexample\enddesc +%\begindesc +%\cts parindent {\param{dimen}} +%\explain +%This \minref{parameter} specifies the amount by which +%the first line of each paragraph is to be indented. ^^{indentation} +%As the example below shows, it's a bad idea to set both |\parindent| +%and ^|\parskip| to zero since then the paragraph breaks are +%no longer apparent. +%\example +%\parindent = 2em This paragraph is indented by 2 ems. +%\par \parindent=0pt This paragraph is not indented at all. +%\par Since we haven't reset the paragraph indentation, +%this paragraph isn't indented either. +%| +%\produces +%\parindent = 2em This paragraph is indented by 2 ems. +%\par \parindent=0pt This paragraph is not indented at all. +%\par Since we haven't reset the paragraph indentation, +%this paragraph isn't indented either. +%\endexample\enddesc + + +\begindesc +\cts parindent {\param{dimen}} +\explain +这个\minref{参数}设定段落第一行缩进的大小。^^{缩进} +如下面的例子所示,最好不要同时使|\parindent|和^|\parskip|为零,否则两段的区别就不明显了。 +\example +\parindent = 2em This paragraph is indented by 2 ems. +\par \parindent=0pt This paragraph is not indented at all. +\par Since we haven't reset the paragraph indentation, +this paragraph isn't indented either. +| +\produces +\parindent = 2em This paragraph is indented by 2 ems. +\par \parindent=0pt This paragraph is not indented at all. +\par Since we haven't reset the paragraph indentation, +this paragraph isn't indented either. +\endexample\enddesc +%\begindesc +%\cts everypar {\param{token list}} +%\explain +%\TeX\ performs the commands in \<token list> whenever it +%enters horizontal mode, e.g., when it starts a paragraph. +%By default |\everypar| is empty, but you can +%take extra actions at the start of every paragraph by putting +%the commands for those actions into a token list +%% +%% This \vglue makes the example overwrite the example, but since we are +%% not reprinting this page, it doesn't matter. For reasons I did not +%% attempt to track down, a page break happened before the example, +%% unlike in the first printing. +%% +%\secondprinting{\vglue-48pt} +%and assigning that token list to |\everypar|. +%\example +%\everypar = {$\Longrightarrow$\enspace} +%Now pay attention!!\par +%I said, ``Pay attention!!''.\par +%I'll say it again!! Pay attention!! +%| +%\produces +%\everypar = {$\Longrightarrow$\enspace} +%Now pay attention!\par +%I said, ``Pay attention!''.\par +%I'll say it again! Pay attention! +%\endexample +%\enddesc +%\secondprinting{\vfill\eject} + + +\begindesc +\cts everypar {\param{token list}} +\explain +\TeX{}处于水平模式下,比如新段开始的时候,就会在\<记号列表>中执行这个命令。默认的|\everypar|为空,但是你可以添加一些命令,每一段开始的时候在记号列表中执行 +% +% This \vglue makes the example overwrite the example, but since we are +% not reprinting this page, it doesn't matter. For reasons I did not +% attempt to track down, a page break happened before the example, +% unlike in the first printing. +% +%%\secondprinting{\vglue-48pt} +并为|\everypar|分配记号列表。 +\example +\everypar = {$\Longrightarrow$\enspace} +Now pay attention!!\par +I said, ``Pay attention!!''.\par +I'll say it again!! Pay attention!! +| +\produces +\everypar = {$\Longrightarrow$\enspace} +Now pay attention!\par +I said, ``Pay attention!''.\par +I'll say it again! Pay attention! +\endexample +\enddesc +%%\secondprinting{\vfill\eject} + +%========================================================================== +%\subsection {Shaping entire paragraphs} +\subsection {形成段落} + +%\begindesc +%\margin{This command was also described in the `Pages' chapter. The +%description here now combines the two earlier descriptions.} +%\bix^^{line breaks//and paragraph shape} +%\easy\cts hsize {\param{dimen}} +%\explain +%This \minref{parameter} specifies the current ^{line length}, +%i.e., the usual width of lines in a paragraph +%starting at the left margin. +%A great many \TeX\ commands, e.g., |\centerline| (\xref{\centerline}) +%and |\hrule| (\xref{\hrule}), implicitly use the value of +%|\hsize|. By changing |\hsize| within a group +%you can change the width of the constructs produced by such commands. + + +\begindesc +\margin{这个命令在“页面”一章也有涉及。此处讲解结合了前面两个地方的内容。} +\bix^^{断行//断行与段落形状} +\easy\cts hsize {\param{dimen}} +\explain +这个\minref{参数}设定当前的^{行宽},即从左边距开始算起,段落里一行的宽度。 +很多\TeX{}命令,比如|\centerline| (\xref{\centerline})和|\hrule| (\xref{\hrule}),都间接使用了|\hsize|的值。改变|\hsize|的值,就相应地改变了这些命令的宽度效果。 +%If you +%set |\hsize| within a \minref{vbox} that contains text, the vbox will +%have whatever width you've given to |\hsize|. +%^^{vboxes//width determined by \b\tt\\hsize\e} +% +%\PlainTeX\ sets |\hsize| to |6.5in|. +% +%\example +%{\hsize = 3.5in % Set this paragraph 3.5 inches wide. +%The hedgehog was engaged in a fight with another hedgehog, +%which seemed to Alice an excellent opportunity for +%croqueting one of them with the other.\par}% +%| +%\produces +%{\hsize = 3.5in +%The hedgehog was engaged in a fight with another hedgehog, +%which seemed to Alice an excellent opportunity for croqueting +%one of them with the other.\par}% + + +如果|\hsize|的变化发生在一个非空的\minref{竖直盒子}里,盒子的宽度就是给定的|\hsize|。 +^^{竖直盒子//由 \b\tt\\hsize\e 确定宽度} + +\PlainTeX{}默认|\hsize|为|6.5in|。 + +\example +{\hsize = 3.5in % Set this paragraph 3.5 inches wide. +The hedgehog was engaged in a fight with another hedgehog, +which seemed to Alice an excellent opportunity for +croqueting one of them with the other.\par}% +| +\produces +{\hsize = 3.5in +The hedgehog was engaged in a fight with another hedgehog, +which seemed to Alice an excellent opportunity for croqueting +one of them with the other.\par}% + +%\doruler{\8\8\8\tick\1\tick\2\tick\1\tick\3}{3.5}{in} +%\nextexample +%\leftline{\raggedright\vtop{\hsize = 1.5in +%Here is some text that we put into a paragraph that is +%an inch and a half wide.}\qquad +%\vtop{\hsize = 1.5in Here is some more text that +%we put into another paragraph that is an inch and a +%half wide.}} +%| +%\produces +%\leftline{\raggedright\vtop{\hsize = 1.5in +%Here is some text that we put into a paragraph that is +%an inch and a half wide.}\qquad +%\vtop{\hsize = 1.5in Here is some more text that +%we put into another paragraph that is an inch and a +%half wide.}} +%\endexample +%\enddesc + + +\doruler{\8\8\8\tick\1\tick\2\tick\1\tick\3}{3.5}{in} +\nextexample +\leftline{\raggedright\vtop{\hsize = 1.5in +Here is some text that we put into a paragraph that is +an inch and a half wide.}\qquad +\vtop{\hsize = 1.5in Here is some more text that +we put into another paragraph that is an inch and a +half wide.}} +| +\produces +\leftline{\raggedright\vtop{\hsize = 1.5in +Here is some text that we put into a paragraph that is +an inch and a half wide.}\qquad +\vtop{\hsize = 1.5in Here is some more text that +we put into another paragraph that is an inch and a +half wide.}} +\endexample +\enddesc + +%\begindesc +%\easy\cts narrower {} +%\explain +%^^{paragraphs//narrow} +%This command makes paragraphs narrower, increasing the left and right +%margins by |\parindent|, the +%current paragraph ^{indentation}. +%It achieves this by increasing +%both |\leftskip| and |\rightskip| by |\parindent|. +%Normally you place |\narrower| at the +%beginning of a \minref{group} containing the paragraphs that you want to +%make narrower. If you forget to enclose |\narrower| within a group, +%you'll find that all the rest of your document will have narrow +%paragraphs. +\begindesc +\easy\cts narrower {} +\explain +^^{段落//窄段落} +这个命令产生较窄的段落,左右边距将会增加 |\parindent|(即当前段落^{缩进}的大小), +原因是|\leftskip|和|\rightskip|分别增加了|\parindent|。 +通常|\narrower|被放在一个\minref{编组}的开始,作用于其中的段落上。 +如果你忘记把|\narrower|封闭在编组里,就会发现文档所余部分全都变窄了。 + +%|\narrower| affects just those paragraphs that end after you invoke it. +%If you end a |\narrower| group before you've ended +%a paragraph, \TeX\ won't make that paragraph narrower. +% +%\example +%{\parindent = 12pt \narrower\narrower\narrower +%This is a short paragraph. Its margins are indented +%three times as much as they would be +%had we used just one ``narrower'' command.\par} +%| +%\produces +%{\parindent = 12pt \narrower\narrower\narrower +%This is a short paragraph. Its margins are indented +%three times as much as they would be +%had we used just one ``narrower'' command.\par} +%\endexample\enddesc + + +|\narrower|只影响其后的段落。如果包含|\narrower|的编组在段落末尾之前结束,\TeX{}将不会产生窄的段落。 + +\example +{\parindent = 12pt \narrower\narrower\narrower +This is a short paragraph. Its margins are indented +three times as much as they would be +had we used just one ``narrower'' command.\par} +| +\produces +{\parindent = 12pt \narrower\narrower\narrower +This is a short paragraph. Its margins are indented +three times as much as they would be +had we used just one ``narrower'' command.\par} +\endexample\enddesc + +%\begindesc +%\cts leftskip {\param{glue}} +%\cts rightskip {\param{glue}} +%\explain +%These parameters tell \TeX\ how much glue to place +%at the left and at the right end of each line of the current +%paragraph. We'll just explain how |\leftskip| works since |\rightskip| +%is analogous. +% +%^^{indentation} You can increase the left margin by setting |\leftskip| +%to a fixed nonzero \minref{dimension}. If you give |\leftskip| some +%stretch, you can produce ^{ragged left} text, i.e., +%text that has an uneven left margin. +% +%Ordinarily, you should enclose any \minref{assignment} to |\leftskip| +%in a \minref{group} together with the affected text +%in order to keep its effect from continuing to +%the end of your document. However, it's pointless to change +%|\leftskip|'s value inside a group that is in turn +%contained within a paragraph---the value of |\leftskip| at the +%\emph{end} of a paragraph +%is what determines how \TeX\ breaks the paragraph into lines. \minrefs{line +%break} +% +%\example +%{\leftskip = 1in The White Rabbit trotted slowly back +%again, looking anxiously about as it went, as if it had +%lost something. {\leftskip = 10in % has no effect +%It muttered to itself, ``The Duchess!! The Duchess!! She'll +%get me executed as sure as ferrets are ferrets!!''}\par}% +%| +%\produces +%{\leftskip = 1in The White Rabbit trotted slowly back +%again, looking anxiously about as it went, as if it had +%lost something. {\leftskip = 10in % has no effect +%It muttered to itself, ``The Duchess! The Duchess! +%She'll get me executed as sure as ferrets are ferrets!''}\par}% +%\nextexample +%\pretolerance = 10000 % Don't hyphenate. +%\rightskip = .5in plus 2em +%The White Rabbit trotted slowly back again, looking +%anxiously about as it went, as if it had lost something. +%It muttered to itself, ``The Duchess!! The Duchess!! She'll +%get me executed as sure as ferrets are ferrets!!'' +%| +%\produces +%\pretolerance = 10000 % Don't hyphenate. +%\rightskip = .5in plus 2em +%The White Rabbit trotted slowly back again, looking +%anxiously about as it went, as if it had lost something. +%It muttered to itself, ``The Duchess! The Duchess! She'll +%get me executed as sure as ferrets are ferrets!'' +%\endexample +%\enddesc + +\begindesc +\cts leftskip {\param{glue}} +\cts rightskip {\param{glue}} +\explain +这些参数告诉\TeX{}在当前段落每一行的左右各放多大的空白。我们将只解释|\leftskip|,因为|\rightskip|与其类似。 + +^^{缩进} 你可以通过设置|\leftskip|为一个固定的非零\minref{尺寸}来增加左边距。 +如果|\leftskip|是一个粘连,就会得到^{右对齐}的内容,即左边距参差不齐。 + +通常,你应该在一个\minref{编组}里为|\leftskip|\minref{赋值},来避免影响其余的文档部分。可是在一个段落内的编组里改变|\leftskip|的值是无意义的---只有段落\emph{末尾}处|\leftskip|的值才会被\TeX{}用来拆段成行。\minrefs{line +break} + +\example +{\leftskip = 1in The White Rabbit trotted slowly back +again, looking anxiously about as it went, as if it had +lost something. {\leftskip = 10in % has no effect +It muttered to itself, ``The Duchess!! The Duchess!! She'll +get me executed as sure as ferrets are ferrets!!''}\par}% +| +\produces +{\leftskip = 1in The White Rabbit trotted slowly back +again, looking anxiously about as it went, as if it had +lost something. {\leftskip = 10in % has no effect +It muttered to itself, ``The Duchess! The Duchess! +She'll get me executed as sure as ferrets are ferrets!''}\par}% +\nextexample +\pretolerance = 10000 % Don't hyphenate. +\rightskip = .5in plus 2em +The White Rabbit trotted slowly back again, looking +anxiously about as it went, as if it had lost something. +It muttered to itself, ``The Duchess!! The Duchess!! She'll +get me executed as sure as ferrets are ferrets!!'' +| +\produces +\pretolerance = 10000 % Don't hyphenate. +\rightskip = .5in plus 2em +The White Rabbit trotted slowly back again, looking +anxiously about as it went, as if it had lost something. +It muttered to itself, ``The Duchess! The Duchess! She'll +get me executed as sure as ferrets are ferrets!'' +\endexample +\enddesc +%\begindesc +%\easy\cts raggedright {} +%\cts ttraggedright {} +%\explain +%These commands cause \TeX\ to typeset your document +%``^{ragged right}''. Interword spaces all +%have their natural size, i.e., they all have the same width and +%don't stretch or shrink. +%Consequently the right margin is generally not even. +%The alternative, which is \TeX's default, is to typeset your document +%justified, +%^^{justification} +%i.e., with uniform left and right margins. +%In justified text, interword spaces are stretched in order to +%make the right margin even. +%Some typographers prefer ragged right because +%it avoids distracting ``rivers'' of white space on the printed page. +%\minrefs{justified text} + + +\begindesc +\easy\cts raggedright {} +\cts ttraggedright {} +\explain +这些命令让\TeX{}以“^{左对齐}”的方式排版文档,其中单词间距保持正常,即间距一样,不需伸缩。 +因此右边距是不均匀的。而 \TeX\ 默认的则是均匀对齐 ^^{均匀对齐},即左右边距一样。 +均匀对齐的文本单词间距将会有伸缩以产生均匀的右边距。有些排版者偏好使用左对齐。 +因为左对齐避免了页面上的空白参差不齐。 +\minrefs{均匀对齐的文本} +%You should use the |\ttraggedright| command when typesetting text in a +%monospaced font and the |\raggedright| command when typesetting text in any +%other font. +% +%Most of the time you'll want to apply these commands to an entire document, +%but you can limit their effects by enclosing them +%in a \minref{group}. +%\example +%\raggedright ``You couldn't have it if you {\it did\/} +%want it,'' the Queen said. ``The rule is, jam tomorrow +%and jam yesterday---but never jam {\it today\/}.'' +%``It {\it must\/} come sometimes to `jam today,% +%thinspace'' Alice objected. ``No, it can't'', said the +%Queen. ``It's jam every {\it other\/} day: today isn't +%any {\it other\/} day.'' +%| +%\produces +%\raggedright ``You couldn't have it if you {\it did\/} +%want it,'' the Queen said. ``The rule is, jam tomorrow +%and jam yesterday---but never jam {\it today\/}.'' +%``It {\it must\/} come sometimes to `jam today,% +%'\thinspace'' Alice objected. ``No, it can't'', said the +%Queen. ``It's jam every {\it other\/} day: today isn't +%any {\it other\/} day.'' +%\endexample +%\enddesc +% + +当使用等宽字体排版的时候,你需要用|\ttraggedright|命令;而使用其他字体时,需要用|\raggedright|命令。 + +通常你会希望对整篇文档使用这些命令,但是通过\minref{编组}就可以把效果局限在部分文本中。 +\example +\raggedright ``You couldn't have it if you {\it did\/} +want it,'' the Queen said. ``The rule is, jam tomorrow +and jam yesterday---but never jam {\it today\/}.'' +``It {\it must\/} come sometimes to `jam today,% +thinspace'' Alice objected. ``No, it can't'', said the +Queen. ``It's jam every {\it other\/} day: today isn't +any {\it other\/} day.'' +| +\produces +\raggedright ``You couldn't have it if you {\it did\/} +want it,'' the Queen said. ``The rule is, jam tomorrow +and jam yesterday---but never jam {\it today\/}.'' +``It {\it must\/} come sometimes to `jam today,% +'\thinspace'' Alice objected. ``No, it can't'', said the +Queen. ``It's jam every {\it other\/} day: today isn't +any {\it other\/} day.'' +\endexample +\enddesc +%\begindesc +%\cts hang {} +%\explain +%This command indents the second and subsequent lines of a paragraph +%by |\parindent|, the paragraph ^{indentation} +%(\xref{\parindent}). +%Since the first line is already indented by |\parindent| +%(unless you've cancelled the indentation with |\noindent|), the +%entire paragraph appears to be indented by |\parindent|. +% +%\example +%\parindent=24pt \hang ``I said you {\it looked} like an +%egg, Sir,'' Alice gently explained to Humpty Dumpty. ``And +%some eggs are very pretty, you know,'' she added. +%| +%\produces +%\parindent=24pt \hang ``I said you {\it looked} like an +%egg, Sir,'' Alice gently explained to Humpty Dumpty. ``And +%some eggs are very pretty, you know,'' she added. +%\endexample +%\enddesc + +\begindesc +\cts hang {} +\explain +此命令使段落第二行开始各行也缩进 |\parindent| 大小(\xref{\parindent})。 +因为第一行已经缩进了 |\parindent|(除非你使用 |\noindent| 取消了缩进), +所以整个段落呈现悬挂缩进。 + +\example +\parindent=24pt \hang ``I said you {\it looked} like an +egg, Sir,'' Alice gently explained to Humpty Dumpty. ``And +some eggs are very pretty, you know,'' she added. +| +\produces +\parindent=24pt \hang ``I said you {\it looked} like an +egg, Sir,'' Alice gently explained to Humpty Dumpty. ``And +some eggs are very pretty, you know,'' she added. +\endexample +\enddesc +%\begindesc +%\cts hangafter {\param{number}} +%\cts hangindent {\param{dimen}} +% +%\explain +%These two \minref{parameter}s jointly +%specify ``^{hanging indentation}'' for a paragraph. +%The hanging indentation indicates to \TeX\ that certain lines +%of the paragraph should +%be indented and the remaining lines should have their normal width. +%^^{indentation} +%|\hangafter| determines which lines +%are indented, while |\hangindent| determines the amount of indentation +%and whether it occurs on the left or on the right: + + +\begindesc +\cts hangafter {\param{number}} +\cts hangindent {\param{dimen}} + +\explain +这两个\minref{参数}一起决定段落的“^{悬挂缩进}”。悬挂缩进使\TeX{}产生某些行缩进而其他行依然正常的效果。 +^^{缩进} +|\hangafter|决定哪些行将被缩进;|\hangindent|决定缩进的大小以及位置是左边还是右边: +%\ulist +%\li Let $n$ be the value of |\hangafter|. If $n < 0$, +%the first $-n$ lines of the paragraph will be indented. +%If $n\ge0$, all but the first $n$ lines of the paragraph will be +%indented. +% +%\li Let $x$ be the value of |\hangindent|. +%If $x\ge0$, the lines will be indented +%by $x$ on the left. If $x<0$ the lines will be indented by $-x$ on +%the right. +%\endulist + + +\ulist +\li 设|\hangafter|的值为$n$。如果$n < 0$, +开始的$-n$行将被缩进。如果$n\ge0$,除开始的$n$行以外的各行将被缩进。 + +\li 设|\hangindent|的值为$x$。如果$x\ge0$,左边将缩进$x$;如果$x<0$,右边将缩进$-x$。 +\endulist +%When you specify hanging indentation, it applies +%only to the next paragraph (if you're in vertical mode) or to +%the current paragraph (if you're in horizontal mode). +%\TeX\ uses the values of |\hangafter| and |\hangindent| at the end of a +%paragraph, when it breaks that paragraph into lines.\minrefs{line +%break} + +当你设置悬挂缩进的时候,仅对下一段(如果处于竖直模式)或者当前段(如果处于水平模式)有效。 +\TeX{}拆段成行时,使用的是段落末尾的|\hangafter|和|\hangindent|的值。\minrefs{断行} +% Unlike most of the other paragraph-shaping parameters, +%|\hangafter| and |\hangindent| are reset to their default values +%at the start of each paragraph, namely, +%$1$ for |\hangafter| and $0$ for |\hangindent|. +%If you want to typeset a sequence of paragraphs with hanging +%indentation, use |\everypar| (\xref{\everypar}). +%^^|\everypar//for hanging indentation| +%If you specify |\hangafter| and |\hangindent| as well as ^|\parshape|, +%\TeX\ ignores the |\hangafter| and |\hangindent|. +% +%\example +%\hangindent=6pc \hangafter=-2 +%This is an example of a paragraph with hanging indentation. +%In this case, the first two lines are indented on the left, +%but after that we return to unindented text. +%| +%\produces +%\hangindent=6pc \hangafter=-2 +%This is an example of a paragraph with hanging indentation. +%In this case, the first two lines are indented on the left, +%but after that we return to unindented text. +%\nextexample +%\hangindent=-6pc \hangafter=1 +%This is another example of a paragraph with hanging +%indentation. Here, all lines after the first have been +%indented on the right. The first line, on the other +%hand, has been left unindented. +%| +%\produces +%\hangindent=-6pc \hangafter=1 +%This is another example of a paragraph with hanging +%indentation. Here, all lines after the first have been +%indented on the right. The first line, on the other +%hand, has been left unindented. +%\endexample +%\enddesc + + +与其他塑段参数不同的是, +|\hangafter|和|\hangindent|在每一段的开始都被重设为其默认值,即 +|\hangafter|为$1$,|\hangindent|为$0$。 +想要排版许多悬挂缩进的段落,可以使用|\everypar| (\xref{\everypar})。 +^^|\everypar//用于悬挂缩进| +如果你同时设定|\hangafter|,|\hangindent|以及^|\parshape|,\TeX{}将忽略|\hangafter|和|\hangindent|。 + +\example +\hangindent=6pc \hangafter=-2 +This is an example of a paragraph with hanging indentation. +In this case, the first two lines are indented on the left, +but after that we return to unindented text. +| +\produces +\hangindent=6pc \hangafter=-2 +This is an example of a paragraph with hanging indentation. +In this case, the first two lines are indented on the left, +but after that we return to unindented text. +\nextexample +\hangindent=-6pc \hangafter=1 +This is another example of a paragraph with hanging +indentation. Here, all lines after the first have been +indented on the right. The first line, on the other +hand, has been left unindented. +| +\produces +\hangindent=-6pc \hangafter=1 +This is another example of a paragraph with hanging +indentation. Here, all lines after the first have been +indented on the right. The first line, on the other +hand, has been left unindented. +\endexample +\enddesc + +\margin{{\tt\\textindent} has been moved to earlier in this section.} + +%\begindesc +%\cts parshape {$n\; i_1 l_1\; i_2 l_2\; \ldots \;i_n l_n$} +%\explain +%This command specifies the shape of the first $n$ lines of a paragraph--- +%the next paragraph if you're in vertical mode and the current paragraph +%if you're in horizontal mode. +%The $i$'s and $l$'s are all +%dimensions. The first line is indented by $i_1$ and has length $l_1$, +%the second line is indented by $i_2$ and has length $l_2$, and so forth. +%If the paragraph has more than $n$ lines, the last indentation\slash +%length pair is used for the extra lines. +%To achieve special effects such as the one +%shown here, you usually have to experiment a lot, insert kerns here and +%there, and choose your words to fit the shape. +% +%|\parshape|, like ^|\hangafter| and ^|\hangindent|, is effective only for one +%paragraph. +%If you specify |\hangafter| and |\hangindent| as well as |\par!-shape|, +%\TeX\ ignores the ^|\hangafter| and ^|\hangindent|. +%\ifodd\pageno\vfill\eject\fi % so the wineglass is on a single page. +\begindesc +\cts parshape {$n\; i_1 l_1\; i_2 l_2\; \ldots \;i_n l_n$} +\explain +此命令指定一个段落前$n$行的形状。如果处于水平模式,该命令作用于当前段落; +如果处于竖直模式,则作用于下一段落。其中的各个 $i$ 和 $l$ 都是尺寸。 +第$1$行的缩进为$i_1$,长度为 $l_1$;第$2$行的缩进为$i_2$,长度为$l_2$;依此类推。 +若该段落超过$n$行,后面各行都使用 $i_n$ 和 $l_n$。为达到这里展示的特殊效果, +你通常要反复调试,插入多个紧排,并且选择适合该形状的词语。 + +与 ^|\hangafter| 和 ^|\hangindent| 一样,|\parshape| 也仅对此段落有效。 +如果你同时指定 |\hangafter| 和 |\hangindent| 以及 |\par!-shape|, +\TeX\ 将忽略 ^|\hangafter| 和 ^|\hangindent|。 +\ifodd\pageno\vfill\eject\fi % so the wineglass is on a single page. + +\example +% A small font and close interline spacing make this work +\smallskip\font\sixrm=cmr6 \sixrm \baselineskip=7pt +\fontdimen3\font = 1.8pt \fontdimen4\font = 0.9pt +\noindent \hfuzz 0.1pt +\parshape 30 0pt 120pt 1pt 118pt 2pt 116pt 4pt 112pt 6pt +108pt 9pt 102pt 12pt 96pt 15pt 90pt 19pt 84pt 23pt 77pt +27pt 68pt 30.5pt 60pt 35pt 52pt 39pt 45pt 43pt 36pt 48pt +27pt 51.5pt 21pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt +16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt +53pt 14.6pt 48pt 24pt 45pt 30.67pt 36.5pt 51pt 23pt 76.3pt +The wines of France and California may be the best +known, but they are not the only fine wines. Spanish +wines are often underestimated, and quite old ones may +be available at reasonable prices. For Spanish wines +the vintage is not so critical, but the climate of the +Bordeaux region varies greatly from year to year. Some +vintages are not as good as others, +so these years ought to be +s\kern -.1pt p\kern -.1pt e\kern -.1pt c\hfil ially +n\kern .1pt o\kern .1pt t\kern .1pt e\kern .1pt d\hfil: +1962, 1964, 1966. 1958, 1959, 1960, 1961, 1964, +1966 are also good California vintages. +Good luck finding them!! +| +%\margin{Wineglass text replaced because of permissions problem.} +\produces +% A small font and close interline spacing make this work +\smallskip\font\sixrm=cmr6 \sixrm \baselineskip=7pt +\fontdimen3\font = 1.8pt \fontdimen4\font = 0.9pt +\noindent \hfuzz 0.1pt +\parshape 30 0pt 120pt 1pt 118pt 2pt 116pt 4pt 112pt 6pt 108pt 9pt 102pt +12pt 96pt 15pt 90pt 19pt 84pt 23pt 77pt 27pt 68pt 30.5pt 60pt 35pt 52pt +39pt 45pt 43pt 36pt 48pt 27pt 51.5pt 21pt 53pt 16.75pt 53pt 16.75pt +53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt 53pt 16.75pt +53pt 16.75pt 53pt 14.6pt 48pt 24pt 45pt 30.67pt 36.5pt 51pt 23pt 76.3pt +The wines of France and California may be the best +known, but they are not the only fine wines. Spanish +wines are often underestimated, and quite old ones may +be available at reasonable prices. For Spanish wines +the vintage is not so critical, but the climate of the +Bordeaux region varies greatly from year to year. Some +vintages are not as good as others, +so these years ought to be +s\kern -.1pt p\kern -.1pt e\kern -.1pt c\hfil ially +n\kern .1pt o\kern .1pt t\kern .1pt e\kern .1pt d\hfil: +1962, 1964, 1966. 1958, 1959, 1960, 1961, 1964, +1966 are also good California vintages. +Good luck finding them! +\endexample +\eix^^{缩进} +\enddesc + +%\begindesc +%\cts prevgraf {\param{number}} +%\explain +%In horizontal mode, this parameter specifies the +%number of lines in the paragraph so far; in vertical mode, +%it specifies the number of lines in the previous paragraph. +%\TeX\ only sets |\prevgraf| after it has finished breaking some text into +%lines, i.e., at a math display or at the end of a paragraph. +%See \knuth{page~103} for more details about it. +%\enddesc +\begindesc +\cts prevgraf {\param{number}} +\explain +在水平模式中,此参数表示该段落的当前行数;在竖直模式中,它表示上个段落的行数。 +只有在完成一些文本断行后,例如在陈列公式前或者在段落结尾处,\TeX\ 才会设置 +|\prevgraf|。详见 \knuth{第103页}。 +\enddesc + +%\begindesc +%\cts vadjust {\rqbraces{\<vertical mode material>}} +%\explain +%This command inserts the specified \<vertical mode material> just after the +%output line containing the position where the command occurs. +%^^{vertical lists//inserting in paragraphs} +%You can use it, for instance, to cause a page eject or to insert extra +%space after a certain line. +\begindesc +\cts vadjust {\rqbraces{\<vertical mode material>}} +\explain +此命令在当前位置所在行下边插入指定的 \<vertical mode material>。 +^^{竖直列表//插入到段落中} +例如,你可以用它输出页面,或者在特定行添加额外空白。 + +\example +Some of these words are \vadjust{\kern8pt\hrule} to be +found above the line and others are to be found below it. +| +\produces +Some of these words are \vadjust{\kern8pt +\hbox to \hsize{\hfil\vbox{\advance\hsize by -\parindent +\hrule width \hsize}}} +to be found above the line and others are to be found below it. +\endexample +\enddesc + +%\see |\parindent| (\xref\parindent), +%|\parskip| (\xref\parskip), |\everypar| (\xref\everypar). +%\eix^^{line breaks//and paragraph shape} +%\eix^^{paragraphs//shaping} +\see |\parindent| (\xref\parindent), +|\parskip| (\xref\parskip), |\everypar| (\xref\everypar). +\eix^^{断行//断行与段落形状} +\eix^^{段落//形成段落} + +%========================================================================== +%\section {Line breaks} +\section {断行} + +%========================================================================== +%\subsection {Encouraging or discouraging line breaks} +\subsection {鼓励或阻碍断行} + +%\begindesc +%\bix^^{line breaks} +%\bix^^{line breaks//encouraging or discouraging} +%\ctspecial break {} \xrdef{hbreak} +%\explain +%This command forces a line break. +%Unless you do something to fill out the line, you're likely to +%get an ``underfull hbox'' complaint. +%|\break| can also be used in vertical mode. +\begindesc +\bix^^{断行} +\bix^^{断行//鼓励或阻碍断行} +\ctspecial break {} \xrdef{hbreak} +\explain +强制在此处断行。除非用某种方法填满该行, +否则你将得到 ``underfull hbox'' 的警告。 +此命令也能用于竖直模式。 +\example +Fill out this line\hfil\break and start another one.\par +% Use \hfil here to fill out the line. +This line is underfull---we ended it\break prematurely. +% This line causes an `underfull hbox' complaint. +| +\produces +\hbadness = 10000 % avoid hbadness message +Fill out this line\hfil\break and start another one.\par +% Use \hfil here to fill out the line. +This line is underfull---we ended it\break prematurely. +% This line causes an `underfull hbox' complaint. +\endexample\enddesc + +\begindesc +\ctspecial nobreak {} \xrdef{hnobreak} +\explain +%This command prevents a line break where it +%otherwise might occur. +%|\nobreak| can also be used in vertical mode. +阻止在此处断行。此命令也能用于竖直模式。 +\example +Sometimes you'll encounter a situation where +a certain space\nobreak\qquad must not get lost. +| +\produces +Sometimes you'll encounter a situation where +a certain space\nobreak\qquad must not get lost. +\endexample +\enddesc + +\begindesc +\ctspecial allowbreak {} \xrdef{hallowbreak} +\explain +%This command tells \TeX\ to +%allow a line break where one could not ordinarily occur. +%It's most often useful within a math formula, since \TeX\ +%is reluctant to break lines there. ^^{line breaks//in math formulas} +%|\allowbreak| can also be used in vertical mode. +在通常不断行的地方允许 \TeX\ 断行。它经常用于数学公式中, +因为 \TeX\ 通常不愿意在其中断行。^^{断行//在数学公式中} +此命令也能用于竖直模式。 +\example +Under most circumstances we can state with some confidence +that $2+2\allowbreak=4$, but skeptics may disagree. +\par For such moronic automata, it is not difficult to +analyze the input/\allowbreak output behavior in the limit. +| +\produces +Under most circumstances we can state with some confidence +that $2+2\allowbreak=4$, but skeptics may disagree. +\par For such moronic automata, it is not difficult to +analyze the input/\allowbreak output behavior in the limit. +\endexample\enddesc + +\begindesc +\ctspecial penalty {\<number>} \xrdef{hpenalty} +\explain +%This command produces a \minref{penalty} item. +%The penalty item makes \TeX\ more or less willing to break a line +%at the point where that item occurs. +%A negative penalty, i.e., a bonus, encourages a line break; +%a positive penalty discourages a line break. +%A penalty of $10000$ or more prevents a break altogether, +%while a penalty of $-10000$ or less forces a break. +%|\penalty| can also be used in vertical mode. +此命令生成一个惩罚(\minref{penalty})项。 +惩罚项使得 \TeX\ 或多或少愿意在此处断行。 +负惩罚值,实际上是奖励值,鼓励断行;正惩罚值阻碍断行。 +大于或等于 $10000$ 的惩罚值彻底阻止断行, +而小于或等于 $-10000$ 的惩罚值强制断行。 +此命令也能用于竖直模式。 +%\secondprinting{\vfill\eject} +\example +\def\break{\penalty -10000 } % as in plain TeX +\def\nobreak{\penalty 10000 } % as in plain TeX +\def\allowbreak{\penalty 0 } % as in plain TeX +| +\endexample +\enddesc + +\secondprinting{\vglue-\baselineskip\vskip0pt} +\begindesc +\cts obeylines {} +\explain +%\TeX\ normally treats an end of line as a space. +%|\obeylines| instructs \TeX\ to treat each end of line as +%an end of paragraph, thus forcing a line break. +%|\obeylines| is often useful when you're typesetting verse or +%computer programs. +%^^{verse, typesetting}^^{poetry, typesetting}^^{computer programs, typesetting} +%If any of your lines are longer than the effective line length +%(|\hsize|\tminus|\parindent|), +%however, +%you may get an extra line break within those lines. +% +%Because \TeX\ inserts the |\parskip| glue (\xref\parskip) +%between lines controlled by |\obeylines| (since it thinks each line is a +%paragraph), you should normally set |\parskip| to zero when you're using +%|\obeylines|. +% +%You can use the ^|\obeyspaces| command (\xref{\obeyspaces}) to get +%\TeX\ to take spaces within a line literally. |\obeylines| and |\obeyspaces| +%are often used together. +\TeX\ 通常将行结束符视为空格。 +|\obeylines| 让 \TeX\ 将每个行结束符都视为段落结束符,从而强制断行。 +在排版诗歌或者程序代码时 |\obeylines| 大有用处。 +^^{诗歌,排版}^^{程序代码,排版} +然而,如果某些行的长度超过行的实际长度(|\hsize|\tminus|\parindent|), +它们将会被自动断行。 + +\TeX\ 将在设定了 |\obeylines| 的各行间插入 |\parskip|(\xref\parskip )粘连 +(既然它认为每行都是一个段落)。 +因此,在使用 |\obeylines| 时一般应该设定 |\parskip| 为零。 + +用 ^|\obeyspaces| 命令(\xref{\obeyspaces})可以让 \TeX\ 按原样处理行中的空格。 +我们经常一起使用 |\obeylines| 和 |\obeyspaces|。 +\example +\obeylines +``Beware the Jabberwock, my son!! +\quad The jaws that bite, the claws that catch!! +Beware the Jubjub bird, and shun +\quad The frumious Bandersnatch!!'' +| +\produces +\obeylines +``Beware the Jabberwock, my son! +\quad The jaws that bite, the claws that catch! +Beware the Jubjub bird, and shun +\quad The frumious Bandersnatch!'' +\endexample +\enddesc + +\secondprinting{\vglue-\baselineskip\vskip0pt} + +\begindesc +\easy\cts slash {} +\explain +%This command produces a ^{solidus} (/) and also tells \TeX\ that it can +%break the line after the solidus, if necessary. +此命令生成一个^{斜线符号}(/),并且告诉 \TeX\ 必要时可以在该斜线后断行。 +\example +Her oldest cat, while apparently friendly to most people, +had a Jekyll\slash Hyde personality when it came to mice. +| +\produces +Her oldest cat, while apparently friendly to most people, +had a Jekyll\slash Hyde personality when it came to mice. +\endexample +\eix^^{断行//鼓励或阻碍断行} +\enddesc + +%\secondprinting{\vfill\eject} + + +%========================================================================== +%\subsection {Line breaking parameters} +\subsection {断行参数} + +\begindesc +\bix^^{断行//影响断行的参数} +% +\cts pretolerance {\param{number}} +\cts tolerance {\param{number}} +\explain +%These parameters determine the \minref{badness} that \TeX\ will tolerate +%on each line when it is choosing line breaks +%for a paragraph. +%The badness is a measure of how far the interword spacing deviates from +%the ideal. +%|\pretolerance| specifies the tolerable badness for +%line breaks without hyphenation; +%|\tolerance| specifies the tolerable badness for line breaks with +%hyphenation. +%The tolerable badness can be exceeded in either of two ways: +%a line is too tight (the interword spaces are too +%small) or it is too loose (the interword spaces are too big). +在 \TeX\ 选择段落断行点时, +这两个参数确定对各行\minref{劣度}(badness)的容许值(tolerance)。 +劣度衡量了单词间距和理想情形差别多大 +\footnote{译注:在中文排版中,“单词空隙”实际上是字间距。}。 +其中 |\pretolerance| 指定在不加连字符断行时对劣度的容许值, +而 |\tolerance| 指定加上连字符断行时对劣度的容许值。 +当某行排得太紧密(单词间距过小), +或者排得太松散(单词间距过大)时,劣度就会超过容许值。 + +%\ulist +%\li If \TeX\ must set a line too loosely, it +%complains about an ``underfull hbox''. +%\li If \TeX\ must set a line too rightly, +%it lets the line run past the right margin and +%complains about an ``overfull \minref{hbox}''. +%\endulist +\ulist +\li 如果 \TeX\ 将某一行排得太松散, +它将给出 ``underfull hbox'' 的警告。 +\li 如果 \TeX\ 将某一行排得太紧密, +它将让该行超出右边缘, +并给出 ``overfull \minref{hbox}'' 的警告。 +\endulist + +%\noindent \TeX\ chooses line breaks in the following steps: +%\olist +%\li It attempts to choose line breaks without hyphenating. +%If none of the +%resulting lines have a badness exceeding |\pretolerance|, the +%line breaks are acceptable and the paragraph can now be set. +%\li Otherwise, it tries another set of line breaks, this +%time allowing hyphenation. If none of the resulting lines have a badness +%exceeding |\tolerance|, the new set of line breaks is +%acceptable and the paragraph can now be set. +%\li Otherwise, it adds ^|\emergencystretch| (see below) to the stretch +%of each line and tries again. +%\li If none of these attempts have produced an acceptable +%set of line breaks, +%it sets the paragraph with one or more overfull hboxes +%and complains about them. +%\endolist +\noindent \TeX\ 按照如下步骤选择断行点: +\olist +\li 它试图选择无需添加连字符的一系列断点。 +如果结果中每行的劣度都不超过 |\pretolerance|, +这组断点是可接受的,该段落也就完成了断行。 +\li 否则,它在允许添加连字符的情况下再次寻找断点。 +如果结果中每行的劣度都不超过 |\tolerance|, 这组新 +断点是可接受的,该段落也就完成了断行。 +\li 否则,它给每行的伸长量增加 ^|\emergencystretch|(见下面), +然后重新尝试。 +\li 如果上述各种尝试都无法得到可接受的断点系列, +它给该段落设置一个或多个溢出的水平盒子,并给出警告。 +\endolist + +%\PlainTeX\ sets |\tolerance| to $200$ and |\pretolerance| to $100$. +%If you set |\tolerance| to $10000$, \TeX\ +%becomes infinitely tolerant and accepts any spacing, no matter how bad +%(unless it encounters a word that won't fit on a line, even with +%hyphenation). Thus by changing |\tolerance| you can avoid +%overfull and underfull hboxes, but at the cost of making the spacing worse. +%By making |\pretolerance| larger you can get \TeX\ to avoid hyphenation +%(and also run faster), +%again at the cost of possibly worse spacing. +%If you set |\pretolerance| to $-1$, +%\TeX\ will not even try to set the paragraph without hyphenation. +\PlainTeX\ 设置 |\tolerance| 为 $200$,|\pretolerance| 为 $100$。 +若你设置 |\tolerance| 为 $10000$, \TeX\ 将有无穷大的容许值, +可以接受任何空隙,不管它有多糟糕。% +(除非它遇到即使添加连字符也无法放在一行的单词)。 +因此,通过改变 |\tolerance| 值,你可以避免溢出的或者松散的水平盒子, +但会得到更糟糕的空隙。 +通过增大 |\pretolerance| 值你可以让 \TeX\ 不添加连字符(并且运行得更快), +但同样可能得到更糟糕的空隙。 +而如果你设置 |\pretolerance| 为 $-1$, +\TeX\ 将不再尝试不添加连字符的断行方式。 + +%The ^|\hbadness| parameter (\xref \hbadness) determines the level of badness +%that \TeX\ will tolerate before it complains, but |\hbadness| does not affect +%the way that \TeX\ typesets your document. +%The ^|\hfuzz| parameter (\xref \hfuzz) determines the amount that +%an hbox can exceed its specified width before \TeX\ considers it to be +%erroneous. +参数 ^|\hbadness|(\xref \hbadness )确定劣度达到多大时 \TeX\ 才给出警告, +但它不影响 \TeX\ 对文档的排版。 +参数 ^|\hfuzz|(\xref \hfuzz )确定水平盒子宽度超出多大时, +\TeX\ 才认为是错误的。 +\enddesc + +\begindesc +\cts emergencystretch {\param{dimen}} +\explain +%By setting this parameter to be greater than zero, +%you can make it easier for \TeX\ +%to typeset your document without generating overfull hboxes. +%^^{overfull boxes} +%This is a better alternative than setting |\tolerance=10000|, +%since that tends to produce really ugly lines. +%If \TeX\ can't typeset a paragraph without exceeding ^|\tolerance|, +%it will try again, adding |\emergencystretch| to the stretch of each +%line. +%The effect of the change is to scale down the badness of each +%line, enabling \TeX\ to make spaces wider than they would otherwise be +%and thus choose line breaks that are as +%good as possible under the circumstances. +设定此参数大于零,可以让 \TeX\ 更容易排版文档,而不是生成溢出的水平盒子。 +^^{溢出的水平盒子} +这样比设定 |\tolerance=10000| 更好,因为那样往往得到十分难看的行。 +如果 \TeX\ 排版段落时无法不超过 ^|\tolerance| 值, +它将给每行的伸长量增加 |\emergencystretch| 然后重新尝试。 +伸长量的增加将会缩减各行劣度,允许 \TeX\ 生成比原来更宽的间距, +从而选出当前情况下尽可能好的断行点。 +\enddesc + +\begindesc +\cts looseness {\param{number}} +\explain +\minrefs{line break} +%This parameter gives you a way +%to change the total number of lines in a paragraph from what they +%optimally would be. +%|\looseness| is so named because it's a +%measure of how loose the paragraph is, i.e., how much extra space there is in +%it. +此参数用于修改段落的行数,相对其最佳行数。 +之所以称为松散度(|\looseness|), +是因为它衡量该段落有多松散,即包含多少额外的间距。 + +%Normally, |\looseness| is $0$ and +%\TeX\ chooses line breaks in its usual way. But if +%|\looseness| is, say, $3$, \TeX\ does the following: +%\olist +%\li It chooses line breaks normally, resulting in a paragraph of $n$ lines. +%\li It discards these line breaks and +%tries to find a new set of line breaks that gives the paragraph $n+3$ lines. +%(Without the previous step, \TeX\ wouldn't know the value of $n$.) +%\li If the previous attempt results in lines whose badness exceeds +%|\tol!-er!-ance|, +%^^|\tolerance| +%it tries to get $n+2$ lines---and if that also fails, +%$n+1$ lines, and finally $n$ lines again. +%\endolist +%\noindent +%Similarly, if looseness is $-n$, +%\TeX\ attempts to set the paragraph with $n$ +%fewer lines than normal. +%The easiest way for \TeX\ to make a paragraph one line longer is to put +%a single word on the excess line. You can prevent this by +%putting a tie (\xref{@not}) between the last two words of the paragraph. +一般地,若 |\looseness| 等于 $0$,\TeX\ 将按通常方式选择断行点。 +但若 |\looseness| 等于,比如 $3$,\TeX\ 依下面步骤处理: +\olist +\li 按通常方式选择断行点,得到总行数为 $n$ 的段落。 +\li 丢弃这些断行点,并试着寻找总行数为 $n+3$ 的一系列新断点。% +(缺少上一步,\TeX\ 就无法知道 $n$ 的值。) +\li 如果上一步尝试无法得到行劣度不超过 |\tol!-er!-ance| 的结果, +^^|\tolerance| +它将试着将段落分为 $n+2$ 行;如果这也不行,试着分为 $n+1$ 行; +最终只能再次分为 $n$ 行。 +\endolist +\noindent +类似地,若松散度为 $-k$,\TeX\ 试着让段落的行数比正常情形少 $k$ 行。 +让段落多出一行的最简单方法是,将一个单词放到多出的那行。 +在最后两个单词之间加上一个带子(tie,\xref{@not})符号, +你就可以阻止此种断行方法。 + +%Setting |\looseness| is the best way to force a paragraph +%to occupy a given number of lines. +%Setting it to a negative value is useful when you're trying to +%increase the amount of text you can fit on a page. +%Similarly, setting it to a positive +%value is useful when you're trying to +%decrease the amount of text on a page. +设定 |\looseness| 是迫使段落占用给定行数的最好方法。 +想增加页面中的文本时,你可以将它设为负值。 +同样地,想减少页面中的文本时,可以将它设为正值。 + +%\TeX\ sets |\looseness| to $0$ when it ends a paragraph, after breaking +%the paragraph into lines. +%If you want to change the looseness of several paragraphs, you must do it +%individually for each one or put the change into |\everypar| +%\ctsref\everypar. +%^^|\everypar//for setting \b\tt\\looseness\e| +在结束段落并分段为行之后,\TeX\ 将 |\looseness| 重置为 $0$。 +若要改动多个段落的松散度,你必须对每个段落分别设置, +或者将改动放在 |\everypar| +\ctsref\everypar 命令中。 +^^|\everypar//用于设定 \b\tt\\looseness\e| +\enddesc + +\begindesc +\cts linepenalty {\param{number}} +\explain +\minrefs{line break} +%This parameter specifies \minref{demerits} that \TeX\ assesses for each line +%break when it is breaking a paragraph into lines. +%The penalty is independent of where the line break occurs. +%Increasing the value +%of this parameter causes \TeX\ to try harder to set a paragraph with a +%minimum number of lines, even at the cost of other aesthetic considerations +%such as avoiding overly tight interword spacing. +%Demerits are in units of \minref{badness} squared, so +%you need to assign a rather large value to this parameter (in the +%thousands) for it to have any effect. +%\PlainTeX\ sets |\linepenalty| to $10$. +此参数设定 \TeX\ 分段为行时各行的\minref{惩罚}值\thinspace% +\footnote{译注:原文中似乎将 penalty 误认为 demerit 了。}。 +此惩罚值与断行位置无关。 +增大此参数将让 \TeX\ 把段落压缩到最小的行数, +但会损害其它审美上的考虑,比如避免过紧的单词间距。 +\PlainTeX\ 设定 |\linepenalty| 为 $10$。 +\enddesc + +\begindesc +\cts adjdemerits {\param{number}} +\explain +%\minrefs{line break} +%^^{hyphenation//penalties for} +%{\tighten +%This parameter specifies additional \minref{demerits} that \TeX\ attaches to a +%breakpoint between two adjacent lines that are +%``visually incompatible''. +%Such a pair of lines makes a paragraph appear uneven. +%Incompatibility is evaluated in terms of the tightness or looseness +%of lines: +%} +%\olist\compact +%\li A line is tight if its \minref{glue} needs to shrink by at least $50\%$. +%\li A line is decent if its badness is $12$ or less. +%\li A line is loose if its glue needs to stretch by more than $50\%$. +%\li A line is very loose if its glue needs to stretch so much +%that its badness exceeds $100$. +%\endolist +%Two adjacent lines are visually incompatible +%if their categories are not adjacent, e.g., a tight line is next to a loose one +%or a decent line is next to a very loose one. +% +%Demerits are in units of \minref{badness} squared, so +%you need to assign a rather large value to this parameter (in the +%thousands) for it to have any effect. +%\PlainTeX\ sets |\adjdemerits| to~$10000$. +\minrefs{line break} +^^{连字//连字的惩罚} +{\tighten +此参数给行断点设定额外的\minref{缺陷}(demerit),只要该断点在“视觉不相容的”相邻两行间出现。 +这些相邻行使得段落看起来参差不齐。 +不相容性取决于各行的松紧度\thinspace% +\footnote{译注:如果粘连调整比例大于或等于$50\%$,其劣度必定大于或等于$13$。}: +} +\olist\compact +\li 此行是过紧的,如果其\minref{粘连}至少需要收缩$50\%$。 +\li 此行是适中的,如果它的劣度小于或等于$12$。 +\li 此行是松散的,如果其粘连至少需要伸长$50\%$。 +\li 此行是空荡的,如果其粘连需要伸长太多以致它的劣度超过$100$。 +\endolist +如果相邻的两行分类却不相近,比如, +松散的行后面跟着一个过紧的行,或者空荡的行后面是一个适中的行, +则称它们为视觉不相容的。 + +缺陷以\minref{劣度}的平方为单位, +因此只有在给定一个较大的数值时(比如数千)才会产生作用。 +\PlainTeX\ 设定 |\adjdemerits| 为~$10000$。 +\enddesc + +\begindesc +\bix^^{连字//连字的惩罚} +\cts exhyphenpenalty {\param{number}} +\explain +%\minrefs{line break} +%This parameter specifies the \minref{penalty} that \TeX\ attaches to a +%breakpoint at an explicit hyphen such as the one in +%``helter-skelter''. Increasing this parameter has the effect of discouraging +%\TeX\ from ending a line at an explicit hyphen. +%\PlainTeX\ sets |\exhyphenpenalty| to $50$. +\minrefs{line break} +此参数指定 \TeX\ 在显式连字符(比如``helter-skelter''的连字符)处断行时 +所附加的\minref{惩罚}值。 +增大此参数将阻碍 \TeX\ 在显式连字符处换行。 +\PlainTeX\ 设定 |\exhyphenpenalty| 为 $50$。 +\enddesc + +\begindesc +\cts hyphenpenalty {\param{number}} +\explain +%\minrefs{line break} +%This parameter specifies the \minref{penalty} that \TeX\ attaches to a +%breakpoint at an implicit hyphen. +%Implicit hyphens can come from \TeX's hyphenation dictionary or +%from ^{discretionary hyphens} that you've inserted with |\-|~(\xref{\@minus}). +%^^|-//leads to {\tt\\hyphenpenalty}| +%Increasing this parameter has the effect of discouraging +%\TeX\ from hyphenating words. +%\PlainTeX\ sets |\hyphenpenalty| to $50$. +\minrefs{line break} +此参数指定 \TeX\ 在隐式连字符处断行时所附加的\minref{惩罚}值。 +隐式连字符来自 \TeX\ 的连字词典,或者来自你用 |\-|~(\xref{\@minus}) +插入的^{任意连字符}。 +^^|-//导致 {\tt\\hyphenpenalty}| +增大此参数将阻碍 \TeX\ 将单词连字化。 +\PlainTeX\ 设定 |\hyphenpenalty| 为 $50$。 +\enddesc + +\begindesc +\cts doublehyphendemerits {\param{number}} +\explain +%\minrefs{line break} +%{\tighten +%This parameter specifies additional \minref{demerits} that \TeX\ +%attaches to a breakpoint when that breakpoint leads to +%two consecutive lines that end in a hyphen. +%Increasing the value of this parameter has the effect of discouraging +%\TeX\ from hyphenating two lines in a row. +%Demerits are in units of \minref{badness} squared, so +%you need to assign a rather large value to this parameter (in the +%thousands) for it to have any effect. +%\PlainTeX\ sets |\doublehyphendemerits| to $10000$. +%} +\minrefs{line break} +{\tighten +此参数指定 \TeX\ 在导致连续两行都以连字符结尾的断点处所附加的额外\minref{缺陷}值。 +增大此参数将阻碍 \TeX\ 将连续两行连字化。 +缺陷以\minref{劣度}的平方为单位, +因此只有在给定一个较大的数值时(比如数千)才会产生作用。 +\PlainTeX\ 设定 |\doublehyphendemerits| 为 $10000$。 +} +\enddesc + +\begindesc +\cts finalhyphendemerits {\param{number}} +\explain +%\minrefs{line break} +%{\tighten +%This parameter specifies additional \minref{demerits} that \TeX\ +%attaches to a breakpoint that causes +%the next to last line of a paragraph to end with a hyphen. +%Such a hyphen is generally considered to be unaesthetic +%because of the possible blank space from a short last line beneath it. +%Increasing the value of this parameter has the effect of discouraging +%\TeX\ from ending the next to the last line with a hyphen. +%Demerits are in units of \minref{badness} squared, so +%you need to assign a rather large value to this parameter (in the +%thousands) for it to have any effect. +%\PlainTeX\ sets |\finalhyphendemerits| to $5000$. +%} +%\eix^^{hyphenation//penalties for} +\minrefs{line break} +{\tighten +此参数指定 \TeX\ 在段落倒数第二行以连字符结尾时所附加的额外\minref{缺陷}值。 +由于该行下面可能有短行造成的空白,这样的连字符通常认为是缺乏美感的。 +增大此参数将阻碍 \TeX\ 将段落倒数第二行连字化。 +缺陷以\minref{劣度}的平方为单位, +因此只有在给定一个较大的数值时(比如数千)才会产生作用。 +\PlainTeX\ 设定 |\finalhyphendemerits| 为 $5000$。 +} +\eix^^{连字//连字的惩罚} +\enddesc + +\begindesc +\cts binoppenalty {\param{number}} +\explain +%^^{operators} +%This parameter specifies the penalty for breaking a math formula +%after a binary operator when the formula appears in a paragraph. +%\PlainTeX\ sets |\binoppenalty| to $700$. +^^{运算符} +此参数指定 \TeX\ 在段内公式的二元运算符后断行所附加的惩罚值。 +\PlainTeX\ 设定 |\binoppenalty| 为 $700$。 +\enddesc + +\begindesc +\cts relpenalty {\param{number}} +\explain +%^^{relations} +%This parameter specifies the penalty for breaking a math formula +%after a relation when the formula appears in a paragraph. +%\PlainTeX\ sets |\rel!-penal!-ty| to~$500$. +% +%\eix^^{line breaks//parameters affecting} +^^{关系符} +此参数指定 \TeX\ 在段内公式的二元关系符后断行所附加的惩罚值。 +\PlainTeX\ 设定 |\rel!-penal!-ty| 为~$500$。 + +\eix^^{断行//影响断行的参数} +\enddesc + +%========================================================================== +%\subsection {Hyphenation} +\subsection {连字} + +\begindesc +\bix^^{连字} +% +\easy\ctspecial - \ctsxrdef{@minus} +\explain +%The |\-| command inserts a ``discretionary hyphen'' +%^^{discretionary hyphens} +%into a word. +%The discretionary hyphen allows \TeX\ to hyphenate the word at that +%place. \TeX\ isn't obliged to hyphenate there---it does so +%only if it needs to. This command is useful when a word +%that occurs in one or two places in your document +%needs to be hyphenated, +%but \TeX\ can't find an appropriate hyphenation point on its own. +此命令在单词中加入“自定连字符”。 +^^{自定连字符} +自定连字符允许 \TeX\ 在该处连字化。 +但 \TeX\ 未必非得如此连字--它仅在必要时这样做。 +当某个单词在文档中出现一次或多次,而 \TeX\ 又找不到合适连字点时, +这个命令就比较有用了。 +\example +Alice was exceedingly reluctant to shake hands first +with either Twee\-dle\-dum or Twee\-dle\-dee, for +fear of hurting the other one's feelings. +| +\produces +Alice was exceedingly reluctant to shake hands first +with either Twee\-dle\-dum or Twee\-dle\-dee, for +fear of hurting the other one's feelings. +\endexample +\enddesc + +\begindesc +\cts discretionary {\rqbraces{\<pre-break text>} + \rqbraces{\<post-break text>} + \rqbraces{\<no-break text>}} +\explain +%\minrefs{line break} +%^^{hyphenation} +%This command specifies a ``discretionary break'', namely, +%a place where \TeX\ can break a line. +%It also tells \TeX\ what text to put on either side of the break. +%\ulist +%\li If \TeX\ does not break there, it uses the \<no-break text>. +%\li If \TeX\ does break there, it puts the \<pre-break text> just before +%the break and the \<post-break text> just after the break. +%\endulist +%\noindent +%Just as with |\-|, +%\TeX\ isn't obligated to break a line at a discretionary break. +%In fact, |\-| is ordinarily equivalent to |\discretionary!allowbreak{-}{}{}|. +% +%\TeX\ sometimes inserts discretionary breaks on its own. +%For example, it inserts |\discretionary!allowbreak{}{}{}| after +%an explicit hyphen or dash. +\minrefs{line break} +^^{连字} +此命令指定一个“自定断点”,即,\TeX\ 可以断行的位置。 +它还告诉 \TeX\ 在断点前后放置的文字。 +\ulist +\li 如果 \TeX\ 不在该处断行,它使用 \<no-break text>。 +\li 如果 \TeX\ 确实在该处断行,它把 \<pre-break text> 放在断点前, +而把 \<post-break text> 放在断点后。 +\endulist +\noindent +如同 |\-|,在自定断点处 \TeX\ 未必非得断行。 +实际上, |\-| 通常等同于 |\discretionary!allowbreak{-}{}{}|。 + +\TeX\ 有时也会加入自己的自定断点。 +例如,它在显式连字号或者破折号后加入|\discretionary!allowbreak{}{}{}|。 + +{%\hyphenchar\ententt=-1 % needed to avoid weirdnesses +\example +% An ordinary discretionary hyphen (equivalent to \-): +\discretionary{-}{}{} +% A place where TeX can break a line, but should not +% insert a space if the line isn't broken there, e.g., +% after a dash: +\discretionary{}{}{} +% Accounts for German usage: `flicken', but `flik- +% ken': +German ``fli\discretionary{k-}{k}{ck}en'' +| +^^{连字//德语连字} +\endexample} + +\enddesc + +\begindesc +\cts hyphenation {\rqbraces{\<word>\thinspace\vs\ $\ldots$\ \vs + \thinspace\<word>}} +\explain +%\TeX\ keeps a dictionary of exceptions to its ^{hyphenation} rules. +%Each dictionary entry indicates how a particular word should +%be hyphenated. +%The |\hyphenation| command adds words to the dictionary. +%Its argument is a sequence of words separated by blanks. +%Uppercase and lowercase letters are equivalent. +%The hyphens in each word indicate the places +%where \TeX\ can hyphenate that word. +%A word with no hyphens in it will never be hyphenated. +%However, you can still override the hyphenation dictionary by +%using |\-| in a particular occurrence of a word. +%You need to provide all the grammatical forms of a word +%that you want \TeX\ to handle, e.g., both the singular and the plural. +\TeX\ 中有个词典记录了它的^{连字}规则的例外情形。 +词典中每个条目指明了某个单词应该如何连字化。 +这个 |\hyphenation| 命令用于添加单词到该词典。 +它的参数是用空格分开的多个单词,不区分字母大小写。 +单词中的连字符指明 \TeX\ 可以在哪些地方将它连字化。 +一个不含连字符的单词将永远不会被连字化。 +然而,在特定单词中的 |\-| 还是优先于连字词典中对该单词的规定。 +你需要提供单词的各种语法形式给 \TeX\ 处理,比如单数和复数形式。 + +\example +\hyphenation{Gry-phon my-co-phagy} +\hyphenation{man-u-script man-u-scripts piz-za} +| +\endexample +\enddesc + +\begindesc +\cts uchyph {\param{number}} +\explain +%A positive value of |\uchyph| (uppercase hyphenation) +%permits hyphenation of words, such as proper names, +%that start with a capital letter. +%A zero or negative +%value inhibits such hyphenation. \PlainTeX\ sets |\uchyph| to $1$, +%so \TeX\ normally tries to hyphenate words that start with a capital letter. +取 |\uchyph|(大写单词连字化)为正数, +将允许对专有名词等以大写字母开始的单词连字化。 +取为零或者负数将禁止此类连字。 +\PlainTeX\ 设定 |\uchyph| 为 $1$, +因此 \TeX\ 一般会试着将大写字母开始的单词连字化。 +\enddesc + +\begindesc +\cts showhyphens {\rqbraces{\<word>\thinspace\vs\ $\ldots$\ \vs + \thinspace\<word>}} +\explain +%This command isn't normally used in documents, but you can use it at +%your terminal to see how \TeX\ would hyphenate some random set of words. +%The words, with hyphenations indicated, appear both in the log and at +%your terminal. You'll get a complaint about an underfull hbox---just +%ignore it. +此命令在文档中一般不会用到, +使用它你可以在终端输出中看到 \TeX\ 对一些单词是如何连字的。 +用连字符表示的单词将出现在编译记录和终端输出中。 +同时你也会看到关于“松散的盒子”的警告,忽略它即可。 +\example +\showhyphens{threshold quizzical draughts argumentative} +| +\logproduces +Underfull \hbox (badness 10000) detected at line 0 +[] \tenrm thresh-old quizzi-cal draughts ar-gu-men-ta-tive +| +\endexample +\enddesc + +\begindesc +\cts language {\param{number}} +\explain +%Different languages have different sets of hyphenation rules. +%This parameter determines the set of ^{hyphenation rules} that \TeX\ uses. +%By changing |\language| you can get \TeX\ +%to hyphenate portions of text or entire documents according to the +%hyphenation rules appropriate to a particular language. +%^^{European languages} +%Your ^{local information} about \TeX\ will tell you if any +%additional sets of hyphenation rules are available (besides the +%ones for English) +%and what the appropriate values of |\language| are. +%The default value of |\language| is $0$. +% +%\TeX\ sets the current language to $0$ at the start of every paragraph, +%and compares |\language| to the current language whenever it adds +%a character to the current paragraph. +%If they are not the same, \TeX\ adds a ^{whatsit} indicating the +%language change. +%This whatsit is the clue in later processing that the language rules +%should change. +不同的语言有不同的连字规则。此参数确定 \TeX\ 使用哪组^{连字规则}。 +通过改变 |\language|, +你可以让 \TeX\ 对部分或整个文档用特定语言的连字规则连字。 +^^{欧洲语言} +你所用的 \TeX\ 会说明 +是否还有另外的连字规则可用(除了英语), +以及适当的 |\language| 值是哪些。 +默认的 |\language| 值为 $0$。 + +在段落开始处,\TeX\ 设定当前语言值为 $0$。 +在添加字符到当前段落时,\TeX\ 会比较 |\language| 和当前语言值。 +如果两者不同,\TeX\ 添加一个^{小玩意},表明当前语言的变化。 +这个小玩意提示后续处理时所用的语言规则应该改变。 +\enddesc + +\begindesc +\cts setlanguage {\<number>} +\explain +%This command sets the current language to \<number> +%by inserting the same whatsit that you'd get by changing ^|\language|. +%However, it does not change the value of |\language|. +此命令通过添加小玩意设定当前语言值为 \<number>。 +该小玩意和修改 ^|\language| 时的一样。 +然而,此命令不会改动 |\language| 的值。 +\enddesc + +\begindesc +\cts lefthyphenmin {\param{number}} +\cts righthyphenmin {\param{number}} +\explain +%These parameters specify the smallest word fragments that \TeX\ allows +%at the left and at the right end of a hyphenated word. +%\PlainTeX\ defaults them to $2$ and $3$ respectively; +%these are the recommended values for English. +这两个参数指定,对于连字单词,\TeX\ 在连字符左右至少得有几个字母。 +\PlainTeX\ 中两者的默认值分别为 $2$ 和 $3$; +这是英语的建议值。 +\enddesc + +%\begindesc +%\bix^^{fonts//hyphenation characters for} +%\cts hyphenchar {\<font>\param{number}} +%\explain +\begindesc +\bix^^{字体//字体的连字符} +\cts hyphenchar {\<font>\param{number}} +\explain +%\TeX\ doesn't necessarily use the `-' character at hyphenation points. +%Instead, it uses the |\hyphenchar| of the current font, which is usually +%`-' but need not be. If a font has a negative |\hyphenchar| value, +%\TeX\ won't hyphenate words in that font. +% +%Note that \<font> is a control sequence +%that names a font, not a \<font\-name> that names font files. +%Beware: +%an assignment to |\hyphenchar| is \emph{not} undone at the end +%of a group. +%If you want to change |\hyphenchar| locally, you'll need to +%save and restore its original value explicitly. +\TeX\ 未必总是以 `-' 字符为连字符。 +实际上,它使用的是当前字体的 |\hyphenchar|, +此字符通常是 `-' 但未必总是。 +若某字体的 |\hyphenchar| 值为负数, +\TeX\ 将不会对该字体下的单词连字化。 + +注意 \<font> 指的是该字体的控制序列名称, +而不是字体文件名 \<font\-name>。 +谨记:在编组结束时所分配的 |\hyphenchar| \emph{不会}撤销。 +若要局部改变 |\hyphenchar|,你必须显式地保存和恢复原有取值。 +\example +\hyphenchar\tenrm = `- + % Set hyphenation for tenrm font to `-'. +\hyphenchar\tentt = -1 + % Don't hyphenate words in font tentt. +| +\endexample +\enddesc + +\begindesc +\cts defaulthyphenchar {\param{number}} +\explain +%When \TeX\ reads the metrics file +%^^{metrics file//default hyphen in} +%for a font in response to a +%^|\font| command, it sets the font's ^|\hyphenchar| to +%|\default!-hyphen!-char|. +%If the value of |\default!-hyphen!-char| is +%not in the range $0$--$255$ when you load a font, +%\TeX\ won't hyphenate any words in that font unless you +%override the decision by setting the font's |\hyphenchar| later on. +%\PlainTeX\ sets |\default!-hyphen!-char| to $45$, the \ascii\ code +%for `|-|'. +当 \TeX\ 碰到 ^|\font| 命令时,它读取该字体的度量文件, +并设置该字体的 ^|\hyphenchar| 为 |\default!-hyphen!-char|。 +^^{度量文件//其中的默认连字符} +如果载入字体时 |\default!-hyphen!-char| 的值不在 $0$--$255$ +范围中,\TeX\ 将不会对该字体下的任何单词连字化; +除非你以后用 |\hyphenchar| 命令设定此字体的连字符。 +\PlainTeX\ 设定 |\default!-hyphen!-char| 为 $45$, +即 `|-|' 字符的 \ascii\ 码。 +\example +\defaulthyphenchar = `- + % Assume `-' is the hyphen, unless overridden. +\defaulthyphenchar = -1 + % Don't hyphenate, unless overridden. +| +\endexample + +%\eix^^{fonts//hyphenation characters for} +%\enddesc +\eix^^{字体//字体的连字符} +\enddesc + +%\see |\pretolerance| (\xref \pretolerance). +%\eix^^{hyphenation} +%\eix^^{line breaks} +\see |\pretolerance|(\xref\pretolerance )。 +\eix^^{连字} +\eix^^{断行} + +%========================================================================== +%\section {Section headings, lists, and theorems} +\section {分节、列表和定理} + +%\begindesc +%^^{section headings} +%\easy\ctspecial beginsection {\<argument>\thinspace{\bt\\par}} +% \ctsxrdef{@beginsection} +%\explain +%You can use this command to begin a major subdivision of your document. +%\<argument> is intended to serve as a section title. +%|\beginsection| surrounds \<argument> +%by extra vertical space and sets it in +%boldface, left-justified. +%You can produce the |\par| that ends \<argument> with a blank line. +%\let\message = \gobble % Don't bother to tell us about Pig and Pepper. +\begindesc +^^{节标题} +\easy\ctspecial beginsection {\<argument>\thinspace{\bt\\par}} + \ctsxrdef{@beginsection} +\explain +此命令开始文档的一节。 +\<argument> 用于表示节标题。 +标题将用粗体显示,靠左对齐,而且上下有额外的竖直间距。 +你也可以在 \<argument> 后用一个空行得到 |\par|。 +\let\message = \gobble % Don't bother to tell us about Pig and Pepper. +\example +$\ldots$ till she had brought herself down to nine +inches high. + +\beginsection Section 6. Pig and Pepper + +For a minute or two she stood looking at the house $\ldots$ +| +\produces +$\ldots$ till she had brought herself down to nine +inches high. + +\beginsection Section 6. Pig and Pepper + +For a minute or two she stood looking at the house $\ldots$ +\endexample +\enddesc + +\begindesc +\cts item {\<argument>} +\cts itemitem {\<argument>} +\explain +%^^{itemized lists} +%These commands are useful for creating ^{itemized lists}. The entire paragraph +%following \<argument> is indented by |\parindent| +%^^|\parindent//indentation for itemized lists| +%(for |\item|) or by |2\parindent| (for |\itemitem|). +%(See \xrefpg{\parindent} for an explanation of |\parindent|.) +%Then \<argument>, +%followed by an en space, is placed just to +%the left of the text of the +%first line of the paragraph so that it falls within the paragraph indentation +%as specified by |\parindent|. +% +%If you want to include more than one +%paragraph in an item, put |\item{}| in front of the additional paragraphs. +^^{逐项列表} +这两个命令用于创建^{逐项列表}。 +在 \<argument> 后面的整个段落会有 |\parindent|(对于|\item|)或者 +|2\parindent|(对于 |\itemitem|)的缩进。% +(|\parindent| 的解释见\xrefpg{\parindent}。) +^^|\parindent//逐项列表的缩进| +\<argument> 加上 1en 的间距后被放置在段落首行文字的左边。 +也就是说,它总是落在由 |\parindent| 确定的段落缩进空白中。 + +要让一个列表项包含多个段落,可以将 |\item{}| 放在另外的段落前。 +\example +{\parindent = 18pt +\noindent Here is what we require: +\item{1.}Three eggs in their shells, +but with the yolks removed. +\item{2.}Two separate glass cups containing: +\itemitem{(a)}One-half cup {\it used} motor oil. +\itemitem{(b)}One cup port wine, preferably French. +\item{3.}Juice and skin of one turnip.} +| +\produces +{\parindent = 18pt +\noindent Here is what we require: +\item{1.}Three eggs in their shells, +but with the yolks removed. +\item{2.}Two separate glass cups containing: +\itemitem{(a)}One-half cup {\it used} motor oil. +\itemitem{(b)}One cup port wine, preferably French. +\item{3.}Juice and skin of one turnip.} +\endexample +\enddesc + +\begindesc +\easy\ctspecial proclaim {\<argument>{\tt.}\vs\thinspace + \<general text>\thinspace{\bt\\par}} + \ctsxrdef{@proclaim} +\explain +%^^{theorems} +%^^{lemmas} +%^^{hypotheses} +%This command ``proclaims'' a theorem, lemma, hypothesis, etc. +%It sets \<argument> in boldface type and the following paragraph in +%italics. \<arg\-u\-ment> must be followed by a period and a space token, +%which serve +%to set off \<argument> from \<general text>. +%\<general text> consists of the text up to the next paragraph +%boundary, except that you can include multiple paragraphs by putting them +%within braces and ending a paragraph after the closing right brace. +^^{定理} +^^{引理} +^^{假设} +此命令“陈述”一个定理、引理、假设等。 +它用粗体显示 \<argument>,并用斜体显示后面的段落。 +\<arg\-u\-ment> 后面必须跟着句号和空格, +以此区分开 \<argument> 和 \<general text>。 +\<general text> 到下一个段落之前截止; +若要包含多个段落,你可以将它们放在花括号中, +并且在右花括号后结束段落\thinspace% +\footnote{译注:原文关于包含多个段落这句似有错误。 +但改用 |\endgraf| 结束段落就可以包含多个段落。}。 +\example +\proclaim Theorem 1. +What I say is not to be believed. + +\proclaim Corollary 1. Theorem 1 is false.\par +| +\produces +\proclaim Theorem 1. +What I say is not to be believed. + +\proclaim Corollary 1. Theorem 1 is false.\par +\endexample +\enddesc + +\enddescriptions + +\ifoldeplain\else\ifcompletebook\else +\vskip4em{\sectionfonts\leftline{本章索引}} +\readindexfile{i} +\fi\fi + +\endchapter +\byebye |