<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% -*- 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.

\input macros
%\chapter {Commands for \linebreak horizontal and \linebreak vertical modes}
\chapter {æ°´å¹³å’Œç«–ç›´æ¨¡å¼å‘½ä»¤}

\chapterdef{hvmodes}

%This section covers commands that have corresponding or identical
%forms for both horizontal and vertical modes.
%These commands provide boxes, spaces, rules, leaders,
%and alignments.
%For an explanation of the conventions used in this section,
%see \headcit{Descriptions of the commands}{cmddesc}.
è¿™ä¸€ç«&nbsp;ä»‹ç»æ°´å¹³å’Œç«–ç›´æ¨¡å¼ä¸‹å…·æœ‰å¯¹åº”æˆ–ä¸€è‡´å½¢å¼çš„å‘½ä»¤ã€‚è¿™äº›å‘½ä»¤æä¾›ç›’å­ã€é—´éš”ã€æ&nbsp;‡çº¿ã€æŒ‡å¼•çº¿ä»¥åŠé˜µåˆ—ã€‚æœ‰å…³æœ¬ç«&nbsp;ä¸­ä½¿ç”¨çš„æƒ¯ä¾‹çš„è¯´æ˜Žï¼Œå‚è§\headcit{å‘½ä»¤çš„æè¿°}{cmddesc}ã€‚

\begindescriptions

%==========================================================================
%\section {Producing space}
\section {äº§ç”Ÿé—´éš”}

%==========================================================================

%\subsection {Fixed-width horizontal space}
\subsection {å›ºå®šå®½åº¦æ°´å¹³é—´éš”}

%\begindesc
%\bix^^{space//producing}
%\bix^^{horizontal space}
%\cts thinspace {}
%\explain
%This command produces a positive \minref{kern}
%whose width is one-sixth of an em
%(\xref{dimdefs})
%i.e., it causes \TeX\ to move its position right by that amount.
%It is useful
%when you have a nested quotation, for example,
%and you want to separate the levels of quotes.
%\TeX\ won't break a line at
%a |\thinspace|.\minrefs{line break}
\begindesc
\bix^^{é—´éš”//äº§ç”Ÿé—´éš”}
\bix^^{æ°´å¹³é—´éš”}
\cts thinspace {}
\explain
è¯¥å‘½ä»¤äº§ç”Ÿä¸€ä¸ªæ­£çš„\minref{ç´§æŽ’}ï¼Œå®ƒçš„å®½åº¦æ˜¯ 1/6 emï¼ˆ\xref{dimdefs}ï¼‰ï¼Œä¹Ÿå°±æ˜¯è¯´ï¼Œå®ƒä½¿å¾— \TeX\ å‘å³ç§»åŠ¨ä¸€ä¸ªç›¸åº”çš„è·ç¦»ã€‚ä¾‹å¦‚ï¼Œå½“ä½&nbsp;éœ€è¦åµŒå¥—å¼•ç”¨ï¼Œå¹¶å¸Œæœ›å°†ä¸åŒå±‚æ¬¡çš„å¼•å·åˆ†å¼€æ—¶ï¼Œå®ƒä¾¿éžå¸¸æœ‰ç”¨ã€‚\TeX\ ä¸ä¼šåœ¨ |\thinspace| å¤„æ–­è¡Œã€‚\minrefs{line break}

\example
``\thinspace`ä¸€ä¸ªå¼•ç”¨ã€‚'\thinspace''\par
24,\thinspace 29--31,\thinspace 45,\thinspace 102
|
\produces
%``\thinspace`A quote.'\thinspace''\par
``\thinspace`ä¸€ä¸ªå¼•ç”¨ã€‚'\thinspace''\par
24,\thinspace 29--31,\thinspace 45,\thinspace 102
\endexample
\enddesc

\begindesc
\cts negthinspace {}
\explain
%This command
%produces a negative kern whose width is one-sixth of an em
%(\xref{dimdefs}),
%i.e., it causes \TeX\ to move its position left by that amount.
%It is useful for bringing together characters that are a little too
%far apart.
%\TeX\ won't break a line at a |\negthinspace|.\minrefs{line break}
è¯¥å‘½ä»¤äº§ç”Ÿä¸€ä¸ªè´Ÿçš„\minref{ç´§æŽ’}ï¼Œå®ƒçš„å®½åº¦æ˜¯ 1/6 emï¼ˆ\xref{dimdefs}ï¼‰ï¼Œä¹Ÿå°±æ˜¯è¯´ï¼Œå®ƒä½¿å¾— \TeX\ å‘å·¦ç§»åŠ¨ä¸€ä¸ªç›¸åº”çš„è·ç¦»ã€‚å½“éœ€è¦å°†ä¸¤ä¸ªé—´éš”ç¨è¿œçš„å­—ç¬¦é&nbsp;è¿‘ä¸€äº›æ—¶ä¾¿éžå¸¸æœ‰ç”¨ã€‚\TeX\ ä¸ä¼šåœ¨ |\negthinspace| å¤„æ–­è¡Œã€‚\minrefs{line break}

\example
The horror, the horror\negthinspace, the horror of it all!!
|
\produces
The horror, the horror\negthinspace, the horror of it all!
\endexample
\enddesc

\begindesc
\cts enspace {}
\explain
%This command produces a \minref{kern} whose width is one ^{en}
%(half of an em, see \xrefpg{dimdefs}).
%\TeX\ won't break a line
%at an |\enspace| unless it's followed by glue.
%In a bulleted list, the bullets are usually separated from the following
%text by an |\enspace|.
è¯¥å‘½ä»¤äº§ç”Ÿä¸€ä¸ªå®½åº¦ä¸º 1 ^{en} çš„\minref{ç´§æŽ’}ï¼ˆ1 em çš„ä¸€åŠï¼Œå‚è§ \xrefpg{dimdefs}ï¼‰ã€‚\TeX\ ä¸ä¼šåœ¨ |\enspace| å¤„æ–­è¡Œï¼Œé™¤éžç´§æŽ¥å…¶åŽçš„æ˜¯ç²˜è¿žã€‚åœ¨ç¬¦å·åˆ—è¡¨ä¸­ï¼Œç¬¦å·ä¸Žå…¶åŽçš„æ–‡å­—é€šå¸¸ç”± |\enspace| æ¥åˆ†éš”ã€‚

\example
å¼•ç† 1.\enspace è¿™é‡Œæœ‰ä¸€åªç™½å…”ã€‚
|
\produces
%Lemma 1.\enspace There exists a white rabbit.
å¼•ç† 1.\enspace è¿™é‡Œæœ‰ä¸€åªç™½å…”ã€‚
\endexample
% the enspace here follows the \proclaim convention (Knuth p. 355).
\enddesc

\begindesc
\easy\cts enskip {}
\cts quad {}
\cts qquad {}
\explain
^^{en}
%Each of these commands
%produces a glob of horizontal \minref{glue}
%that can neither stretch nor shrink.
%\TeX\ can break a line \minrefs{line break} at such glue.
%The width of these glues (which are relative to the current font)
%are as follows for |cmr10|, the default \plainTeX\ font:
è¿™é‡Œçš„æ¯ä¸ªå‘½ä»¤éƒ½äº§ç”Ÿä¸€ä¸ªæ—¢ä¸èƒ½ä¼¸å±•ä¹Ÿä¸èƒ½æ”¶ç¼©çš„æ°´å¹³\minref{ç²˜è¿ž}ã€‚\TeX\ ä¸èƒ½åœ¨è¿™äº›ç²˜è¿žå¤„æ–­è¡Œã€‚å¯¹äºŽ \plainTeX\ çš„é»˜è®¤å­—ä½“ |cmr10| æ¥è¯´ï¼Œè¿™äº›ç²˜è¿žçš„å®½åº¦ï¼ˆä¸Žå½“å‰å­—ä½“æœ‰å…³ï¼‰å¦‚ä¸‹ï¼š
\medskip

\def\distance#1{\hbox{\strut $\rightarrow$\vrule\hskip #1\vrule$\leftarrow$}}

%{\def\l#1{\hfil$#1$\thinspace em}
%\tabskip 3pc \halign{#&amp;#&amp;\hfil#\hfil\cr
%{\it Command}&amp;{\it Space}&amp;{\it Illustration}\cr
%\noalign{\vskip 4pt}
%|\enskip|&amp;\l{\frac 1/2}&amp;\distance{.5em}\cr
%|\quad|&amp;\l1&amp;\distance{1em}\cr
%|\qquad|&amp;\l2&amp;\distance{2em}\cr
%}}
%\example
%en\enskip skip; quad\quad skip; qquad\qquad skip
%|
%\produces
%en\enskip skip; quad\quad skip; qquad\qquad skip
%\endexample
%\eix^^{horizontal space}
%\enddesc
{\def\l#1{\hfil$#1$\thinspace em}
\tabskip 3pc \halign{#&amp;#&amp;\hfil#\hfil\cr
{\it å‘½ä»¤}&amp;{\it é—´è·}&amp;{\it å›¾ç¤º}\cr
\noalign{\vskip 4pt}
|\enskip|&amp;\l{\frac 1/2}&amp;\distance{.5em}\cr
|\quad|&amp;\l1&amp;\distance{1em}\cr
|\qquad|&amp;\l2&amp;\distance{2em}\cr
}}
\example
en\enskip skip; quad\quad skip; qquad\qquad skip
|
\produces
en\enskip skip; quad\quad skip; qquad\qquad skip
\endexample
\eix^^{æ°´å¹³é—´éš”}
\enddesc

%==========================================================================
%\subsection {Fixed-length vertical space}
\subsection {å›ºå®šé•¿åº¦ç«–ç›´é—´éš”}

%\begindesc
%\bix^^{vertical space}
%\easy\cts smallskip {}
%\cts medskip {}
%\cts bigskip {}
%\explain
%These commands produce successively larger
%amounts of vertical space:
\begindesc
\bix^^{ç«–ç›´é—´éš”}
\easy\cts smallskip {}
\cts medskip {}
\cts bigskip {}
\explain
è¿™äº›å‘½ä»¤å¯ä»¥äº§ç”Ÿè¿žç»­è¾ƒå¤§çš„ç«–ç›´é—´éš”ï¼š
\display{{\def\bar{\kern 2pt\hrule width 5pc}
\def\lbl#1{\hbox to 5pc{\hfil #1skip\hfil}}
\leavevmode
\vtop{\lbl{small}\bar\smallskip\bar}\quad
\vtop{\lbl{med}\bar\medskip\bar}\quad\vtop{\lbl{big}\bar\bigskip\bar}}}
\noindent
%|\smallskip| skips by $3$ points and can stretch or
%shrink by $1$ point.  |\med!-skip| is equivalent to two |\smallskip|s
%and |\bigskip| is equivalent to two |\medskip|s.
|\smallskip| äº§ç”Ÿ $3$ ç‚¹çš„ç«–ç›´é—´éš”ï¼Œå¹¶å¯ä»¥ä¼¸å±•æˆ–æ”¶ç¼© 1 ç‚¹ã€‚
|\med!-skip| ç›¸å½“äºŽä¸¤ä¸ª |\smallskip|ï¼Œè€Œ |\bigskip| ç›¸å½“äºŽä¸¤ä¸ª |\medskip|ã€‚

%These commands end a paragraph since they are inherently vertical.
%The skips that they produce
%are in addition to the normal interparagraph skip.
ç”±äºŽè¿™äº›å‘½ä»¤å…·æœ‰å›ºæœ‰çš„ç«–ç›´ç‰¹æ€§ï¼Œå›&nbsp;æ­¤å®ƒä»¬çš„å‡ºçŽ°å®£å‘Šä¸€ä¸ªæ®µè½çš„ç»“æŸã€‚ç”±æ­¤äº§ç”Ÿçš„é—´è·éœ€è¦å†åŠ&nbsp;ä¸Šæ­£å¸¸çš„æ®µè½é—´è·ã€‚
\example
Hop \smallskip skip \medskip and \bigskip jump.
|
\produces
Hop \smallskip skip \medskip and \bigskip jump.
\endexample
\enddesc

\begindesc
\cts smallskipamount {\param{glue}}
\cts medskipamount {\param{glue}}
\cts bigskipamount {\param{glue}}
\explain
%These parameters specify the amounts of glue produced by
%the |\small!-skip|, |\med!-skip|, and |\big!-skip| commands.
%By changing these parameters you change the effect of the commands.
%The default values (for \plainTeX)
%correspond to a quarter of a linespace, half a linespace,
%and a full linespace.
%We recommend that you maintain this ratio by changing
%these values whenever
%you change |\baselineskip| (\xref\baselineskip).
%^^|\baselineskip//and {\tt\\smallskipamount}, etc.|
%\eix^^{vertical space}
è¿™äº›å‚æ•°ç”¨äºŽç¡®å®šç”± |\small!-skip|ã€|\med!-skip| å’Œ |\big!-skip| å‘½ä»¤äº§ç”Ÿçš„ç²˜è¿žçš„é‡ã€‚
é€šè¿‡æ›´æ”¹è¿™äº›å‚æ•°ï¼Œä½&nbsp;å¯ä»¥æ”¹å˜å‘½ä»¤çš„æ•ˆæžœã€‚ï¼ˆå¯¹äºŽ \plainTeX ï¼‰å®ƒä»¬ç›¸åº”çš„é»˜è®¤å€¼æ˜¯ 1/4 ã€1/2 ä»¥åŠ 1 è¡Œè·ã€‚
æˆ‘ä»¬å»ºè®®ä½&nbsp;ä¿æŒè¿™ä¸ªæ¯”ä¾‹ï¼Œæ—&nbsp;è®ºä½•æ—¶ï¼Œä½&nbsp;å¯ä»¥é€šè¿‡ä¿®æ”¹ |\baselineskip|ï¼ˆ\xref\baselineskip ï¼‰æ¥ä¿®æ”¹å‚æ•°å€¼ã€‚
^^|\baselineskip//å’Œ {\tt\\smallskipamount} ç­‰|
\eix^^{ç«–ç›´é—´éš”}

\enddesc

%==========================================================================
%\subsection {Variable-size space}
\subsection {å¯å˜å°ºå¯¸é—´éš”}

%\begindesc
%\easy\cts hskip {\&lt;dimen$_1$&gt; {\bt plus} \&lt;dimen$_2$&gt; {\bt minus} \&lt;dimen$_3$&gt;}
%\cts vskip {\&lt;dimen$_1$&gt; {\bt plus} \&lt;dimen$_2$&gt; {\bt minus} \&lt;dimen$_3$&gt;}
%^^{vertical skip}^^{vertical glue}
%^^{horizontal skip}^^{horizontal glue}
%\bix^^{horizontal space}
%\bix^^{vertical space}
%\explain
%These commands produce horizontal and vertical glue respectively.
%In the simplest and most common case when only \&lt;dimen$_1$&gt; is present,
%|\hskip| skips to the right by \&lt;dimen$_1$&gt;
%and |\vskip| skips down the page by \&lt;dimen$_1$&gt;.
%More generally, these commands
%produce \minref{glue} whose natural size is
%\&lt;dimen$_1$&gt;, whose stretch is \&lt;dimen$_2$&gt;, and whose shrink is \&lt;dimen$_3$&gt;.
%Either the |plus| \&lt;dimen$_2$&gt;, the |minus |\&lt;dimen$_3$&gt;,
%or both can be omitted.
%If both are present, the |plus| must come before the |minus|.
%An omitted value
%is taken to be zero. Any of the \&lt;dimen&gt;s can be negative.
\begindesc
\easy\cts hskip {\&lt;dimen$_1$&gt; {\bt plus} \&lt;dimen$_2$&gt; {\bt minus} \&lt;dimen$_3$&gt;}
\cts vskip {\&lt;dimen$_1$&gt; {\bt plus} \&lt;dimen$_2$&gt; {\bt minus} \&lt;dimen$_3$&gt;}
^^{ç«–ç›´é—´è·}^^{ç«–ç›´ç²˜è¿ž}
^^{æ°´å¹³é—´è·}^^{æ°´å¹³ç²˜è¿ž}
\bix^^{æ°´å¹³é—´éš”}
\bix^^{ç«–ç›´é—´éš”}
\explain
è¿™äº›å‘½ä»¤å¯ä»¥åˆ†åˆ«äº§ç”Ÿæ°´å¹³çš„å’Œç«–ç›´çš„ç²˜è¿žã€‚
åœ¨æœ€ç®€å•ä»¥åŠæœ€å¸¸è§çš„æƒ…å†µä¸‹ï¼Œå³å½“åªæœ‰ \&lt;dimen$_1$&gt; å­˜åœ¨æ—¶ï¼Œ
|\hskip| å‘å³ç§»åŠ¨ \&lt;dimen$_1$&gt;ï¼Œè€Œ |\vskip| å‘é¡µé¢ä¸‹æ–¹ç§»åŠ¨ \&lt;dimen$_1$&gt;ã€‚
åœ¨ä¸€èˆ¬æƒ…å†µä¸‹ï¼Œè¿™äº›å‘½ä»¤äº§ç”Ÿä¸€ä¸ª\minref{ç²˜è¿ž}ï¼Œå…¶è‡ªç„¶å°ºå¯¸ä¸º \&lt;dimen$_1$&gt;ï¼Œ
å¯ä¼¸é•¿é‡ä¸º \&lt;dimen$_2$&gt;ï¼Œå¯æ”¶ç¼©é‡ä¸º \&lt;dimen$_3$&gt;ã€‚
å‘½ä»¤ä¸­çš„ |plus| \&lt;dimen$_2$&gt; æˆ– |minus |\&lt;dimen$_3$&gt;ï¼Œæˆ–ä¸¤è€…éƒ½å¯ä»¥çœç•¥ã€‚
å¦‚æžœä¸¤è€…éƒ½éœ€è¦ï¼Œåˆ™ |plus| å¿…é¡»å‡ºçŽ°åœ¨ |minus| ä¹‹å‰ã€‚
è¢«çœç•¥çš„å˜é‡å–å€¼ä¸ºé›¶ã€‚ä»»ä½• \&lt;dimen&gt; éƒ½å¯ä»¥å–è´Ÿå€¼ã€‚

%You can use |\hskip| in math mode, but you can't use |mu| units
%\seeconcept{mathematical unit}
%for any of the dimensions.  If you want |mu| units, use |\mskip|
%(\xref\mskip) instead.
åœ¨æ•°å­¦æ¨¡å¼ä¸‹ï¼Œä½&nbsp;å¯ä»¥ä½¿ç”¨ |\hskip|ï¼Œ
ä½†ä¸èƒ½ä½¿ç”¨ |mu|\seeconcept{æ•°å­¦å•ä½}ä½œä¸ºä»»ä½•å°ºå¯¸çš„å•ä½ã€‚
å¦‚æžœä½&nbsp;å¸Œæœ›ä½¿ç”¨ |mu| ä½œä¸ºå•ä½ï¼Œå¯ä»¥ä½¿ç”¨ |\mskip|ï¼ˆ\xref\mskip ï¼‰ä»£æ›¿ä¹‹ã€‚

\example
\hbox to 2in{one\hskip 0pt plus .5in two}
|
\produces
\hbox to 2in{one\hskip 0pt plus 2in two}

\doruler{\8\8}2{in}
\nextexample
\hbox to 2in{Help me!! I can't fit
{\hskip 0pt minus 2in} inside this box!!}
|
\produces
\hbox to 2in{Help me! I can't fit
{\hskip 0pt minus 2in} inside this box!}

\doruler{\8\8}2{in}
\nextexample
\vbox to 4pc{\offinterlineskip% ä»…ä¸ºæ˜¾ç¤º \vskip çš„æ•ˆæžœã€‚
   \hbox{ä¸€}\vskip 0pc plus 1pc \hbox{äºŒ}
      \vskip .5pc \hbox{ä¸‰}}
|
\produces
\smallskip
\vbox to 4pc{\offinterlineskip% Just show effects of \vskip.
%  \hbox{one}\vskip 0pc plus 1pc \hbox{two}
%     \vskip .5pc \hbox{three}}
   \hbox{ä¸€}\vskip 0pc plus 1pc \hbox{äºŒ}
      \vskip .5pc \hbox{ä¸‰}}
\endexample
\enddesc

\begindesc
\cts hglue {\&lt;glue&gt;}
\cts vglue {\&lt;glue&gt;}
^^{ç«–ç›´ç²˜è¿ž}
^^{æ°´å¹³ç²˜è¿ž}
\explain
%The |\hglue| command produces horizontal \minref{glue} that won't disappear at
%a line break; the |\vglue| command
%produces vertical \minref{glue} that won't disappear at a page break.
%In other respects these commands are just like |\hskip| and |\vskip|.
%You can use |\vglue| to produce blank space at the top of a page,
%e.g., above a title on the first page of a document, but
%^|\topglue| (next) is usually better for this purpose.
|\hglue| å‘½ä»¤ç”Ÿæˆæ°´å¹³çš„\minref{ç²˜è¿ž}ï¼Œå®ƒä¸ä¼šåœ¨æ–­è¡Œå¤„æ¶ˆå¤±ï¼›|\vglue| å‘½ä»¤ç”Ÿæˆç«–ç›´çš„\minref{ç²˜è¿ž}ï¼Œå®ƒä¸ä¼šåœ¨åˆ†é¡µå¤„æ¶ˆå¤±ã€‚é™¤æ­¤ä»¥å¤–ï¼Œè¿™äº›å‘½ä»¤ä¸Ž |\hskip| å’Œ |\vskip| ç›¸ä¼¼ã€‚ä½&nbsp;å¯ä»¥ä½¿ç”¨ |\vglue| åœ¨æ–‡æ¡£ç¬¬ä¸€é¡µçš„æ&nbsp;‡é¢˜ä¸Šéƒ¨ç­‰é¡µé¢é¡¶éƒ¨äº§ç”Ÿç©ºç™½é—´éš”ï¼Œä½†å°±æ­¤ç›®çš„è€Œè¨€ï¼ŒéšåŽçš„ ^|\topglue| é€šå¸¸æ˜¯æ›´å¥½çš„é€‰æ‹©ã€‚
\enddesc

\begindesc
\cts topglue {\&lt;glue&gt;}
\explain
\margin{Command added; recent addition to \TeX}
%This command\footnote{|\topglue| was added to \TeX\ in version 3.0,
%later than the other enhancements introduced by ^{\newTeX}
%(\xref{newtex}).  It is first described in the \emph{eighteenth\/}
%edition of \texbook.} causes the space from the top of the page to the
%top of the first box on the page to be \&lt;glue&gt; precisely.
%The top of the page is considered to be at the baseline of an
%imaginary line of text just above the top line of the page.
%More precisely, it's a distance |\topskip| above the origin as given by
%|\hoffset| and |\voffset|.
\margin{åŠ&nbsp;å…¥çš„å‘½ä»¤ï¼›æ–°è¿‘åŠ&nbsp;å…¥åˆ° \TeX}
è¯¥å‘½ä»¤
\footnote{|\topglue| æ˜¯åœ¨ \TeX\ 3.0 ä¸­å¼•å…¥çš„ï¼Œ
æ¯”å…¶å®ƒç”±^{\newTeX}ï¼ˆ\xref{newtex}ï¼‰å¼•å…¥çš„å¢žå¼ºç‰¹æ€§ç¨æ™šã€‚
åœ¨ \texbook çš„ \emph{18th\/} ç‰ˆä¸­ç¬¬ä¸€æ¬¡å¾—åˆ°æè¿°ã€‚}
å¯ä»¥ç²¾ç¡®åœ°äº§ç”Ÿä»Žé¡µé¢é¡¶éƒ¨è‡³è¯¥é¡µä¸Šç¬¬ä¸€ä¸ªç›’å­é¡¶éƒ¨çš„é—´éš”ã€‚
å¯ä»¥è®¤ä¸ºé¡µé¢é¡¶éƒ¨ä½äºŽé¡µé¢ç¬¬ä¸€è¡Œä¹‹ä¸Šçš„ä¸€è¡Œæ—&nbsp;å½¢æ–‡å­—çš„åŸºçº¿å¤„ã€‚
æ›´åŠ&nbsp;å‡†ç¡®åœ°ï¼Œå®ƒåœ¨ |\hoffset| å’Œ |\voffset| ç¡®å®šçš„åŽŸç‚¹ä¹‹ä¸Šï¼Œä¸”é—´è·ç­‰äºŽ |\topskip|ã€‚

%This command is useful because \TeX\ ordinarily adjusts the glue
%produced by |\topskip| in a complex way.  By using |\topglue| you can
%control the position of the first box on the page without worrying about
%those adjustments.
ç”±äºŽ \TeX\ é€šå¸¸ä»¥éžå¸¸å¤æ‚çš„æ–¹å¼è°ƒæ•´ç”± |\topskip| äº§ç”Ÿçš„ç²˜è¿žï¼Œæ‰€ä»¥è¿™ä¸ªå‘½ä»¤æ˜¯éžå¸¸æœ‰ç”¨çš„ã€‚
é€šè¿‡ä½¿ç”¨ |\topglue|ï¼Œä½&nbsp;èƒ½å¤ŸæŽ§åˆ¶é¡µé¢ä¸Šç¬¬ä¸€ä¸ªç›’å­çš„ä½ç½®ï¼Œè€Œä¸å¿…æ‹…å¿ƒé‚£äº›å¤æ‚çš„è°ƒæ•´ã€‚

\enddesc

\begindesc
\cts kern {\&lt;dimen&gt;}
\explain
%The effect of this command depends on the mode that \TeX\ is in when
%it encounters it:
è¯¥å‘½ä»¤äº§ç”Ÿçš„æ•ˆæžœå–å†³äºŽ \TeX\ é‡åˆ°å®ƒæ—¶æ‰€å¤„çš„æ¨¡å¼ï¼š
\ulist

%\li In a horizontal mode, \TeX\ moves its position to the right (for a positive
%kern) or to the left (for a negative kern).
\li åœ¨æ°´å¹³æ¨¡å¼ä¸‹ï¼Œ\TeX\ å‘å³ï¼ˆæ­£çš„ç´§æŽ’ï¼‰æˆ–å‘å·¦ï¼ˆè´Ÿçš„ç´§æŽ’ï¼‰ç§»åŠ¨ã€‚

%\li In a vertical mode, \TeX\ moves its position down the page (for a positive
%kern) or up the page (for a negative kern).
\li åœ¨ç«–ç›´æ¨¡å¼ä¸‹ï¼Œ\TeX\ å‘é¡µé¢ä¸‹æ–¹ï¼ˆæ­£çš„ç´§æŽ’ï¼‰æˆ–é¡µé¢ä¸Šæ–¹ï¼ˆè´Ÿçš„ç´§æŽ’ï¼‰ç§»åŠ¨ã€‚

\endulist
\noindent
%Thus a positive kern produces empty space while a negative kern
%causes \TeX\ to back up over something that it's already produced.
%This notion of a kern ^^{kerns}
%is different from the notion of a kern in some computerized
%typesetting systems---in \TeX, positive kerns push two letters \emph{apart}
%instead of bringing them closer together.
å›&nbsp;æ­¤ï¼Œæ­£çš„ç´§æŽ’äº§ç”Ÿç©ºç™½çš„é—´éš”ï¼Œè€Œè´Ÿçš„ç´§æŽ’ä½¿å¾— \TeX\ å€’é€€åˆ°å·²ç»å­˜åœ¨çš„ä¸œè¥¿ä¸Šã€‚
åœ¨ \TeX ä¸­ï¼Œæ­£çš„ç´§æŽ’å°†ä¸¤ä¸ªå­—æ¯\emph{åˆ†å¼€}ï¼Œè€Œä¸æ˜¯ä½¿å®ƒä»¬æ›´è¿‘ä¸€äº›ã€‚
^{ç´§æŽ’}çš„è¿™ä¸€è®¾è®¡ä¸Žä¸€äº›è®¡ç®—åŒ–æŽ’ç‰ˆç³»ç»Ÿæ˜¯ä¸åŒçš„ã€‚

%A kern is similar to
%\minref{glue}, except that (a)~a kern can neither stretch nor shrink,
%and (b)~\TeX\ will only break a line or a page at a kern if the kern
%is followed by glue and is not part of a math formula.
%If \TeX\ finds a kern at the
%end of a line or a page, it discards the kern.
%If you want to get the effect of a kern that never disappears,
%use ^|\hglue| or ^|\vglue|.
ç´§æŽ’ä¸Ž\minref{ç²˜è¿ž}ç›¸ä¼¼ï¼Œä¸åŒçš„æ˜¯ (a)~ç´§æŽ’ä¸èƒ½è¢«ä¼¸å±•æˆ–æ”¶ç¼©ï¼›
(b)~å¦‚æžœç´§æŽ’åŽç´§æŽ¥ç²˜è¿žï¼Œå¹¶ä¸”ä¸æ˜¯æ•°å­¦å…¬å¼çš„ä¸€éƒ¨åˆ†æ—¶ï¼Œ\TeX\ ä¸èƒ½åœ¨ç´§æŽ’å¤„æ–­è¡Œæˆ–åˆ†é¡µã€‚
å¦‚æžœ \TeX\ å‘çŽ°ç´§æŽ’ä½äºŽä¸€è¡Œæˆ–ä¸€é¡µçš„ç»“å°¾ï¼Œè¯¥ç´§æŽ’å°†ä¼šè¢«å¿½ç•¥ã€‚
å¦‚æžœä½&nbsp;å¸Œæœ›å¾—åˆ°ä¸ä¼šæ¶ˆå¤±çš„ç´§æŽ’çš„æ•ˆæžœï¼Œä½¿ç”¨ ^|\hglue| æˆ– ^|\vglue|ã€‚

%You can use |\kern| in math mode, but you can't use |mu| units
%\seeconcept{mathematical unit}
%for \&lt;dimen&gt;.  If you want |mu| units, use |\mkern|
%(\xref\mkern) instead.
%^^{line breaks//kerns at}
%^^{page breaks//kerns at}
ä½&nbsp;å¯ä»¥åœ¨æ•°å­¦æ¨¡å¼ä¸­ä½¿ç”¨ |\kern|ï¼Œä½†ä½&nbsp;ä¸èƒ½ä½¿ç”¨ |mu| ä½œä¸º \&lt;dimen&gt; çš„å•ä½\seeconcept{æ•°å­¦å•ä½}ã€‚
å¦‚æžœä½&nbsp;å¸Œæœ›ä½¿ç”¨ |mu| ä½œä¸ºå•ä½ï¼Œå¯ä»¥ä½¿ç”¨ |\mkern| ï¼ˆ\xref\mkern ï¼‰ä»£æ›¿ä¹‹ã€‚
^^{æ–­è¡Œ//æ–­è¡Œå¤„çš„ç´§æŽ’}
^^{åˆ†é¡µ//åˆ†é¡µå¤„çš„ç´§æŽ’}

\example
\centerline{$\Downarrow$}\kern 3pt % ç«–ç›´çš„ç´§æŽ’
\centerline{$\Longrightarrow$\kern 6pt % æ°´å¹³çš„ç´§æŽ’
   {\bf ç•™æ„æˆ‘çš„è­¦ç¤ºï¼ï¼}\kern 6pt % å¦ä¸€æ°´å¹³çš„ç´§æŽ’
   $\Longleftarrow$}
\kern 3pt % å¦ä¸€ç«–ç›´çš„ç´§æŽ’
\centerline{$\Uparrow$}
|
\produces
\centerline{$\Downarrow$}\kern 3pt % a vertical kern
\centerline{$\Longrightarrow$\kern 6pt % a horizontal kern
%  {\bf Heed my warning!}\kern 6pt % another horizontal kern
   {\bf ç•™æ„æˆ‘çš„è­¦ç¤ºï¼}\kern 6pt % another horizontal kern
   $\Longleftarrow$}
\kern 3pt % another vertical kern
\centerline{$\Uparrow$}
\endexample
\enddesc

%\begindesc
%\makecolumns 4/2:
%\cts hfil {}
%\cts hfill {}
%\cts vfil {}
%\cts vfill {}
%\explain
%\bix^^{glue//infinitely stretchable}
%These commands produce infinitely stretchable horizontal
%and vertical glue that
%overwhelms any finite stretch that may be present.
%|\hfil| and |\hfill| produce horizontal glue, while
%|\vfil| and |\vfill| produce vertical glue.
\begindesc
\makecolumns 4/2:
\cts hfil {}
\cts hfill {}
\cts vfil {}
\cts vfill {}
\explain
\bix^^{ç²˜è¿ž//å¯æ—&nbsp;é™ä¼¸å±•çš„ç²˜è¿ž}
è¿™äº›å‘½ä»¤äº§ç”Ÿå¯æ—&nbsp;é™ä¼¸å±•çš„æ°´å¹³æˆ–ç«–ç›´çš„ç²˜è¿žï¼Œå®ƒä»¬å°†å–ä»£ä»»ä½•å­˜åœ¨çš„æœ‰é™ä¼¸å±•ã€‚|\hfil| å’Œ |\hfill| äº§ç”Ÿæ°´å¹³çš„ç²˜è¿žï¼Œè€Œ |\vfil| å’Œ |\vfill| äº§ç”Ÿç«–ç›´çš„ç²˜è¿žã€‚

%|\hfill| is infinitely larger than |\hfil|.
%If both |\hfill| and |\hfil| appear in the same \minref{box},
%the |\hfill| will consume all the available extra space
%and the |\hfil| will be effectively ignored.
%|\hfill| can in turn be overwhelmed by |\hskip 0pt plus 1filll|.
%The glue produced by
%|\hfil| and |\hfill| never shrinks.
%|\hfill| æ—&nbsp;é™åœ°å¤§äºŽ |\hfil|ã€‚å¦‚æžœ |\hfill| å’Œ |\hfil|  å‡ºçŽ°åœ¨ä¸€åŒä¸€ä¸ª\minref{ç›’å­}é‡Œï¼Œ|\hfill| å°†å&nbsp;æ®æ‰€æœ‰å¯ä»¥èŽ·å¾—çš„é¢å¤–é—´éš”ï¼Œè€Œ |\hfil| çš„æ•ˆåº”å°†è¢«å¿½ç•¥ã€‚è€Œ |\hfill| å¯ä»¥è¢« |\hskip 0pt plus 1filll| å–ä»£ã€‚ç”± |\hfil| å’Œ |\hfill| äº§ç”Ÿçš„ç²˜è¿žä¸èƒ½è¢«åŽ‹ç¼©ã€‚

%The behavior of |\vfil| and |\vfill| is analogous.
|\vfil| å’Œ |\vfill| æœ‰ç€ç±»ä¼¼çš„è¡Œä¸ºã€‚

\example
\hbox to 2in{å·¦\hfil ä¸­ \hfil å³}
|
\produces
%\hbox to 2in{Left\hfil Middle \hfil Right}
\hbox to 2in{å·¦\hfil ä¸­ \hfil å³}

\doruler{\8\8}2{in}
\nextexample
\hbox to 2in{å·¦\hfil ä¸­ \hfill å³}
|
\produces
%\hbox to 2in{Left\hfil Middle \hfill Right}
\hbox to 2in{å·¦\hfil ä¸­ \hfill å³}

\doruler{\8\8}2{in}
\nextexample
\leftline{%
\vbox to 4pc{%
   \hbox{ä¸Š}\vfil\hbox{ä¸­}\vfil \hbox{ä¸‹}}\quad
\vbox to 4pc{%
   \hbox{ä¸Š}\vfil\hbox{ä¸­}\vfill\hbox{ä¸‹}}}
|
\produces
\smallskip
\leftline{%
\vbox to 4pc{%
   %\hbox{Top}\vfil\hbox{Middle}\vfil \hbox{Bottom}}\quad
   \hbox{ä¸Š}\vfil\hbox{ä¸­}\vfil \hbox{ä¸‹}}\quad
\vbox to 4pc{%
   %\hbox{Top}\vfil\hbox{Middle}\vfill\hbox{Bottom}}}
   \hbox{ä¸Š}\vfil\hbox{ä¸­}\vfill\hbox{ä¸‹}}}
\endexample

%\eix^^{glue//infinitely stretchable}
%\enddesc
\eix^^{ç²˜è¿ž//å¯æ—&nbsp;é™ä¼¸å±•çš„ç²˜è¿ž}
\enddesc

\begindesc
\cts hss {}
\cts vss {}
\explain
%These commands produce horizontal and vertical glue
%that is both infinitely stretchable and
%infinitely shrinkable. The glue can shrink
%to a negative distance, producing the effect of backspacing along a line
%(for |\hss|) or moving back up a page (for |\vss|).
è¿™äº›å‘½ä»¤äº§ç”Ÿæ°´å¹³å’Œç«–ç›´çš„å¯æ—&nbsp;é™ä¼¸å±•å’Œæ”¶ç¼©çš„ç²˜è¿žã€‚
ç²˜è¿žå¯ä»¥æ”¶ç¼©è‡³è´Ÿçš„è·ç¦»ï¼Œäº§ç”Ÿçš„æ•ˆæžœæ˜¯%
ï¼ˆå¯¹äºŽ |\hss| è€Œè¨€ï¼‰æ²¿ä¸€è¡Œå‘å·¦ç§»åŠ¨æˆ–ï¼ˆå¯¹äºŽ |\vss| è€Œè¨€ï¼‰å‘é¡µé¢é¡¶éƒ¨ç§»åŠ¨ã€‚

\example
\line{æ­£æ–‡æ–‡æœ¬\hfil\hbox to 0pt{é¡µè¾¹ç©ºç™½\hss}}
% `é¡µè¾¹ç©ºç™½\hss' æ”¶ç¼©åˆ°å®½åº¦ä¸ºé›¶çš„æ°´å¹³ç›’å­ä¸­ã€‚
|
\produces
%\line{text\hfil\hbox to 0pt{margin\hss}}
\line{æ­£æ–‡æ–‡æœ¬\hfil\hbox to 0pt{é¡µè¾¹ç©ºç™½\hss}}
\nextexample
\vbox to 1pc{\hrule width 6pc % Top of box.
   \hbox{1} \vskip 1pc\hbox to 2pc{\hfil 2}
   % \vss æ¶ˆé™¤äº†ç”± \vskip äº§ç”Ÿçš„é¢å¤–é—´è·ã€‚
   \vss \hbox to 3pc{\hfil 3}
   \hrule width 6pc}% ç›’å­çš„åº•éƒ¨
|
\produces
\medskip
\vbox to 1pc{\hrule width 6pc % top of box
   \hbox{1} \vskip 1pc\hbox to 2pc{\hfil 2}
   \vss \hbox to 3pc{\hfil 3}
   \hrule width 6pc}% bottom of box
\vskip 2.5pc
\endexample
\enddesc

%\begindesc
%\cts hfilneg {}
%\cts vfilneg {}
%\explain
%^^{glue//negative}
%These commands cancel the effect of a preceding |\hfil|
%or |\vfil|. While |\hfil| and |\vfil|
%produce infinitely stretchable positive \minref{glue}, |\hfilneg|
%and |\vfilneg| produce infinitely stretchable negative glue.
%(Thus, $n$ |\hfilneg|s cancel $n$ ^|\hfil|s, and similarly for
%|\vfilneg|.)
%The main use of |\hfilneg| and |\vfilneg|
%is to counteract the effect of an |\hfil| or |\vfil|
%inserted by a \minref{macro}.
\begindesc
\cts hfilneg {}
\cts vfilneg {}
\explain
^^{ç²˜è¿ž//è´Ÿç²˜è¿ž}
è¿™äº›å‘½ä»¤å¯ä»¥æ¶ˆé™¤å…¶å‰æŽ¥çš„ |\hfil| æˆ– |\vfil| äº§ç”Ÿçš„æ•ˆæžœã€‚å½“ |\hfil| å’Œ |\vfil| äº§ç”Ÿæ­£çš„æ—&nbsp;é™å¯ä¼¸å±•çš„ç²˜è¿žæ—¶ï¼Œ|\hfilneg| å’Œ |\vfilneg| äº§ç”Ÿè´Ÿçš„æ—&nbsp;é™å¯ä¼¸å±•ç²˜è¿žã€‚ï¼ˆå›&nbsp;æ­¤ï¼Œ$n$ |\hfilneg| æ¶ˆé™¤ $n$ ^|\hfil| äº§ç”Ÿçš„æ•ˆæžœï¼Œå¯¹äºŽ |\vfilneg| ä¹Ÿæ˜¯ç›¸ä¼¼çš„ã€‚ï¼‰|\hfilneg| å’Œ |\vfilneg| ä¸»è¦çš„ç”¨é€”æ˜¯æŠµæ¶ˆç”±\minref{å®} å¼•å…¥çš„ |\hfil| æˆ– |\vfil| äº§ç”Ÿçš„æ•ˆæžœã€‚

%|\hfilneg| and |\vfilneg| have
%the curious property that if they are the only infinitely stretchable
%glue in a box, they produce exactly the same effect as |\hfil|
%and |\vfil|.
å¦‚æžœå®ƒä»¬æ˜¯ä¸€ä¸ªç›’å­ä¸­ä»…æœ‰çš„å¯æ—&nbsp;é™ä¼¸å±•çš„ç²˜è¿žï¼Œ|\hfilneg| å’Œ |\vfilneg| åˆ™å…·æœ‰å¥‡å¼‚çš„ç‰¹æ€§ï¼Œå³å®ƒä»¬äº§ç”Ÿä¸Ž |\hfil| å’Œ |\vfil| å®Œå…¨ä¸€è‡´çš„æ•ˆæžœã€‚

\example
\leftline{\hfil ä½äºŽå³ç«¯\hfilneg}
% æ¶ˆé™¤äº† \leftline åœ¨å…¶å‚æ•°å³ä¾§äº§ç”Ÿçš„ \hfilã€‚
|
\produces
%\leftline{\hfil on the right \hfilneg}
\leftline{\hfil ä½äºŽå³ç«¯ \hfilneg}
% Cancel the \hfil that \leftline produces to the right
% of its argument.
%
\nextexample
\def\a{\hbox to 1pc{\hfil 2}\vfil}
\vbox to 4pc{\hbox{1} \vfil \a
   \vfilneg \hbox to 2pc{\hfil 3}}
|
\produces
\smallskip
\def\a{\hbox to 1pc{\hfil 2}\vfil}
\vbox to 4pc{\hbox{1} \vfil \a
   \vfilneg \hbox to 2pc{\hfil 3}}
\endexample\enddesc

%{\emergencystretch=2em
%\see |\hbadness| and |\vbadness| (\xref \vbadness),
%|\hfuzz| and |\vfuzz| (\xref \vfuzz),
%\conceptcit{leaders}.\par}
%\eix^^{space//producing}
%\eix^^{horizontal space}
%\eix^^{vertical space}
\see |\hbadness| å’Œ |\vbadness|ï¼ˆ\xref \vbadness ï¼‰ï¼Œ
|\hfuzz| å’Œ |\vfuzz|ï¼ˆ\xref \vfuzz ï¼‰ï¼ŒåŠ\conceptcit{æŒ‡å¼•çº¿}ã€‚
\eix^^{é—´éš”//äº§ç”Ÿé—´éš”}
\eix^^{æ°´å¹³é—´éš”}
\eix^^{ç«–ç›´é—´éš”}

%==========================================================================
%\section {Manipulating boxes}
\section {æ“ä½œç›’å­}

%==========================================================================
%\subsection {Constructing hboxes and vboxes}
\subsection {æž„é€&nbsp; hbox å’Œ vbox}

%\begindesc
%\bix^^{box commands}
%^^{hboxes//constructing with \b\tt\\hbox\e}
\begindesc
\bix^^{ç›’å­å‘½ä»¤}
^^{æ°´å¹³ç›’å­//ç”¨ \b\tt\\hbox\e æž„é€&nbsp;}
%
\cts hbox {\rqbraces{\&lt;horizontal mode material&gt;}}
\aux\cts hbox {{\bt to} \&lt;dimen&gt; \rqbraces{\&lt;horizontal mode material&gt;}}
\aux\cts hbox {{\bt spread} \&lt;dimen&gt; \rqbraces{\&lt;horizontal mode material&gt;}}
\explain
%This command produces an hbox
%(horizontal \minref{box}) containing \&lt;horizontal mode material&gt;.
%The braces around \&lt;horizontal mode material&gt; define a group.
%\TeX\ doesn't break the \&lt;horizontal mode material&gt; into lines,
%since it's in restricted horizontal mode when it's assembling the box.
%\TeX\ won't change the size of the box once it's been produced.
è¯¥å‘½ä»¤äº§ç”Ÿä¸€ä¸ª hboxï¼ˆæ°´å¹³\minref{ç›’å­}ï¼‰ä»¥å®¹çº³ \&lt;horizontal mode material&gt;ã€‚
\&lt;horizontal mode material&gt; ä¸¤ä¾§çš„å¤§æ‹¬å·å®šä¹‰ä¸€ä¸ªç¼–ç»„ã€‚
\TeX\ ä¸ä¼šå¯¹ \&lt;horizontal mode material&gt; æ–­è¡Œï¼Œ
å›&nbsp;ä¸ºå½“å…¶ç»„è£…ç›’å­æ—¶å®ƒå¤„äºŽå—é™æ°´å¹³æ¨¡å¼ä¸‹ã€‚ä¸€æ—¦ç›’å­ç”ŸæˆåŽï¼Œ\TeX\ ä¸ä¼šæ”¹å˜å…¶å¤§å°ã€‚

%|\hbox| is often useful when you want to keep some text all on one line.
%If your use of |\hbox| prevents \TeX\ from breaking lines in an acceptable
%way, \TeX\ will complain about an overfull hbox.
å½“ä½&nbsp;å¸Œæœ›å°†ä¸€äº›æ–‡å­—å…¨éƒ¨æ”¾åœ¨ä¸€è¡Œä¸Šæ—¶ï¼Œ|\hbox| æ˜¯æœ‰ç”¨çš„ã€‚
å¦‚æžœä½&nbsp;æ‰€ç”¨çš„ |\hbox| ä½¿å¾— \TeX\ ä¸èƒ½ä»¥ä¸€ç§å¯ä»¥æŽ¥å—çš„æ–¹å¼æ–­è¡Œæ—¶ï¼Œ
\TeX\ ä¼šç»™å‡º hbox è¿‡æ»¡çš„è­¦å‘Šã€‚

%The width of the hbox depends on the arguments to |\hbox|:
%\ulist\compact
%\li If you specify only \&lt;horizontal mode material&gt;,
%the hbox will have its natural \minref{width}.
%\li If you specify |to| \&lt;dimen&gt;, the width of the hbox will be \&lt;dimen&gt;.
%\li If you specify |spread| \&lt;dimen&gt;, the width of the hbox will be
%its natural width plus \&lt;dimen&gt;, i.e., the hbox will be spread out by
%\&lt;dimen&gt;.
%\endulist
hbox çš„å®½åº¦å–å†³äºŽ |\hbox| çš„å‚æ•°ï¼š
\ulist\compact
\li å¦‚æžœä½&nbsp;åªè®¾å®šäº† \&lt;horizontal mode material&gt;ï¼Œhbox å°†å…·æœ‰å‚æ•°æœ¬èº«çš„\minref{å®½åº¦}ã€‚
\li å¦‚æžœä½&nbsp;è®¾å®šäº† |to| \&lt;dimen&gt;ï¼Œåˆ™ hbox çš„å®½åº¦å°†æ˜¯ \&lt;dimen&gt;ã€‚
\li å¦‚æžœä½&nbsp;è®¾å®šäº† |spread| \&lt;dimen&gt;ï¼Œåˆ™ hbox çš„å®½åº¦å°†æ˜¯å‚æ•°æœ¬èº«çš„å®½åº¦å†åŠ&nbsp;ä¸Š \&lt;dimen&gt;ï¼Œä¹Ÿå°±æ˜¯è¯´ï¼Œhbox å°†ä¼¸å±• \&lt;dimen&gt;ã€‚
\endulist

%The ^|\hfil| command (\xref\hfil) is useful for filling out an
%hbox with empty space when the material in the box isn't as wide as
%the width of the box.
å½“ç›’å­ä¸­å†…å®¹çš„å®½åº¦æ²¡æœ‰ç›’å­å®½ï¼Œéœ€è¦ä½¿ç”¨ç©ºç™½é—´éš”æ¥å¡«å…… hbox æ—¶ï¼Œ^|\hfil| å‘½ä»¤ï¼ˆ\xref\hfil ï¼‰æ˜¯éžå¸¸æœ‰ç”¨çš„ã€‚
\example
\hbox{ugly suburban sprawl}
\hbox to 2in{ugly \hfil suburban \hfil sprawl}
\hbox spread 1in {ugly \hfil suburban \hfil sprawl}
% åœ¨ä¸Šé¢ä¸¤è¡Œä¸­ï¼Œå¦‚æžœåŽ»æŽ‰ \hfilï¼Œå°†ä¼šå¾—åˆ° `underfull hbox' è­¦å‘Šã€‚
|
\produces
\hbox{ugly suburban sprawl}
\hbox to 2in{ugly \hfil suburban \hfil sprawl}
\hbox spread 1in {ugly \hfil suburban \hfil sprawl}
% Without \hfil in the two preceding lines,
% you'd get `underfull hbox'es.

\doruler{\8\8\8}3{in}
\endexample
\enddesc

%\begindesc
%\cts vtop {\&lt;vertical mode material&gt;}
%\aux\cts vtop {{\bt to} \&lt;dimen&gt; \rqbraces{\&lt;vertical mode material&gt;}}
%\aux\cts vtop {{\bt spread} \&lt;dimen&gt; \rqbraces{\&lt;vertical mode material&gt;}}
%\cts vbox {\rqbraces{\&lt;vertical mode material&gt;}}
%\aux\cts vbox {{\bt to} \&lt;dimen&gt; \rqbraces{\&lt;vertical mode material&gt;}}
%\aux\cts vbox {{\bt spread} \&lt;dimen&gt; \rqbraces{\&lt;vertical mode material&gt;}}
%\explain
%^^{hbox//constructing with \b\tt\\hbox\e}
%These commands
%produce a \minref{vbox} (vertical \minref{box})
%containing \&lt;vertical mode material&gt;.
%The braces around \&lt;vertical mode material&gt; define a group.
%\TeX\ is in internal vertical mode when it's assembling the box.
%\TeX\ won't change the size of the box once it's been produced.
\begindesc
\cts vtop {\&lt;vertical mode material&gt;}
\aux\cts vtop {{\bt to} \&lt;dimen&gt; \rqbraces{\&lt;vertical mode material&gt;}}
\aux\cts vtop {{\bt spread} \&lt;dimen&gt; \rqbraces{\&lt;vertical mode material&gt;}}
\cts vbox {\rqbraces{\&lt;vertical mode material&gt;}}
\aux\cts vbox {{\bt to} \&lt;dimen&gt; \rqbraces{\&lt;vertical mode material&gt;}}
\aux\cts vbox {{\bt spread} \&lt;dimen&gt; \rqbraces{\&lt;vertical mode material&gt;}}
\explain
^^{æ°´å¹³ç›’å­//ç”¨ \b\tt\\hbox\e æž„é€&nbsp;}
è¿™äº›å‘½ä»¤äº§ç”Ÿä¸€ä¸ª \minref{vbox}ï¼ˆç«–ç›´\minref{ç›’å­}ï¼‰ä»¥å®¹çº³ \&lt;vertical mode material&gt;ã€‚
\&lt;vertical mode material&gt; ä¸¤ä¾§çš„å¤§æ‹¬å·å®šä¹‰ä¸€ä¸ªç¼–ç»„ã€‚
å½“ \TeX\ ç»„è£…ç›’å­æ—¶å®ƒå¤„äºŽå†…éƒ¨ç«–ç›´æ¨¡å¼ä¸‹ã€‚ä¸€æ—¦ç›’å­ç”ŸæˆåŽï¼Œ\TeX\ ä¸ä¼šæ”¹å˜å…¶å¤§å°ã€‚

%The difference between |\vtop| and |\vbox| lies in where \TeX\ puts
%the reference point of the constructed vbox.
%Ordinarily, the reference point gotten from |\vtop| tends to be at or near
%the top of the constructed vbox,
%while
%the reference point gotten from |\vbox| tends to be at or near
%the bottom of the constructed vbox.
%Thus a row of vboxes all constructed with |\vtop|
%will tend to have their tops nearly in a line,
%while a row of vboxes all constructed with |\vbox|
%will tend to have their bottoms nearly in a line.
|\vtop| å’Œ |\vbox| ä¹‹é—´çš„ä¸åŒç‚¹åœ¨äºŽ \TeX\ æ”¾ç½®å·²æž„æˆçš„ vbox çš„åŸºå‡†ç‚¹çš„ä½ç½®ã€‚
é€šå¸¸æƒ…å†µä¸‹ï¼Œç”± |\vtop| èŽ·å¾—çš„åŸºå‡†ç‚¹ä½äºŽæˆ–æŽ¥è¿‘äºŽå·²æž„æˆçš„ vbox çš„é¡¶éƒ¨ï¼›
è€Œ |\vbox| èŽ·å¾—çš„åŸºå‡†ç‚¹ä½äºŽæˆ–æŽ¥è¿‘äºŽå·²æž„æˆçš„ vbox çš„åº•éƒ¨ã€‚
å›&nbsp;æ­¤ï¼Œä¸€è¡Œå…¨éƒ¨ç”± |\vtop| æž„æˆçš„ vboxï¼Œå…¶é¡¶éƒ¨å°†ä¼šè¿‘ä¼¼åœ¨ä¸€æ¡çº¿ä¸Šï¼›
ç›¸åº”åœ°ï¼Œä¸€è¡Œå…¨éƒ¨ç”± |\vbox| æž„æˆçš„ vboxï¼Œå…¶åº•éƒ¨å°†ä¼šè¿‘ä¼¼åœ¨ä¸€æ¡çº¿ä¸Šã€‚

%|\vtop| and |\vbox| are often useful
%when you want to keep some text together on a single page.
%(For this purpose, it usually doesn't matter which command you use.)
%If your use of these commands
%prevents \TeX\ from breaking pages in an acceptable
%way, \TeX\ will complain that it's found an overfull or underfull vbox while
%|\output| is active.
å½“ä½&nbsp;å¸Œæœ›å°†ä¸€äº›æ–‡å­—æ”¾åœ¨å•ç‹¬çš„ä¸€é¡µä¸Šæ—¶ï¼Œ|\vtop| å’Œ |\vbox| æ˜¯æœ‰ç”¨çš„ã€‚%
ï¼ˆä¸ºäº†è¿™ä¸ªç›®çš„ï¼Œå®ƒé€šå¸¸ä¸åœ¨ä¹Žä½&nbsp;ä½¿ç”¨çš„å‘½ä»¤ã€‚ï¼‰%
å¦‚æžœä½&nbsp;ä½¿ç”¨è¿™äº›å‘½ä»¤ä½¿å¾— \TeX\ ä¸èƒ½ä»¥ä¸€ç§å¯ä»¥æŽ¥å—çš„æ–¹å¼åˆ†é¡µæ—¶ï¼Œ
\TeX\ ä¼šåœ¨ |\output| å¤„äºŽæ´»åŠ¨çš„æƒ…å†µä¸‹ï¼Œç»™å‡º vbox è¿‡æ»¡æˆ–ä¸è¶³çš„è­¦å‘Šã€‚

%The height of a vbox depends on
%the arguments to |\vtop| or |\vbox|.
%For |\vbox|, \TeX\ determines the height as follows:
%\ulist\compact
%\li If you specify only \&lt;vertical mode material&gt;,
%the vbox will have its natural height.
%\li If you specify |to| \&lt;dimen&gt;,
%the height of the vbox will be \&lt;dimen&gt;.
%\li If you specify |spread| \&lt;dimen&gt;, the height of the vbox will be
%its natural height plus \&lt;dimen&gt;, i.e.,
%the height of the vbox will be stretched vertically by \&lt;dimen&gt;.
%\endulist
%\noindent
%For |\vtop|,
%\TeX\ constructs the box using its rules for |\vbox| and then
%apportions the vertical extent between the height and the depth as
%described below.
vbox çš„é«˜åº¦å–å†³äºŽ |\vtop| æˆ– |\vbox| çš„å‚æ•°ã€‚å¯¹äºŽ |\vbox|ï¼Œ\TeX\ é‡‡ç”¨å¦‚ä¸‹æ–¹æ³•ç¡®å®šå…¶é«˜åº¦ï¼š
\ulist\compact
\li å¦‚æžœä½&nbsp;åªè®¾å®š \&lt;vertical mode material&gt;ï¼Œvbox å°†å…·æœ‰å‚æ•°æœ¬èº«çš„é«˜åº¦ã€‚
\li å¦‚æžœä½&nbsp;è®¾å®š |to| \&lt;dimen&gt;ï¼Œvbox çš„é«˜åº¦å°†æ˜¯ \&lt;dimen&gt;ã€‚
\li å¦‚æžœä½&nbsp;è®¾å®šäº† |spread| \&lt;dimen&gt;ï¼Œåˆ™ vbox çš„é«˜åº¦å°†æ˜¯å‚æ•°æœ¬èº«çš„é«˜åº¦å†åŠ&nbsp;ä¸Š \&lt;dimen&gt;ï¼Œ
ä¹Ÿå°±æ˜¯è¯´ï¼Œvbox å°†åœ¨ç«–ç›´æ–¹å‘ä¸Šä¼¸å±• \&lt;dimen&gt;ã€‚
\endulist
\noindent
å¯¹äºŽ |\vtop|ï¼Œ\TeX\ é‡‡ç”¨ |\vbox| ä¸€æ&nbsp;·çš„è§„åˆ™æ¥æž„é€&nbsp;ç›’å­ï¼Œ
ç„¶åŽä»¥ä¸‹é¢æè¿°çš„æ–¹æ³•åœ¨é«˜åº¦å’Œæ·±åº¦ä¹‹é—´åˆ†é…ç«–ç›´æ–¹å‘ä¸Šçš„æ‰©å±•ã€‚

%Ordinarily, the width of a constructed vbox is the width of the widest
%item inside it.\footnote
%{More precisely, it's the distance from the reference point to the rightmost
%edge of the constructed vbox.  Therefore,
%if you move any of the items right using ^|\moveright| or
%^|\moveleft| (with a negative distance),
%the constructed vbox might be wider.}
%The rules for apportioning the vertical extent between the
%height and the depth are more complicated:
%\ulist
%\li For |\vtop|,
%the height is the height of its first item, if that item is a box or rule.
%Otherwise the height is zero. The depth is whatever vertical
%extent remains after the height is subtracted.
%\li For |\vbox|,
%the depth is the depth of its last item, if that item is a box or rule.
%Otherwise the depth is zero. The height is whatever vertical
%extent remains after the depth is subtracted.%
%\footnote{In fact, there's a further complication.
%Suppose that after the depth has been determined
%using the two rules just given, the depth turns out to be greater than
%^|\boxmaxdepth|.
%Then the depth is reduced to |\boxmaxdepth| and the height is adjusted
%accordingly.}
%\endulist
é€šå¸¸ï¼Œæž„é€&nbsp;çš„ vbox çš„å®½åº¦æ˜¯å…¶å†…éƒ¨æœ€å®½é¡¹ç›®çš„å®½åº¦ã€‚
\footnote{æ›´å‡†ç¡®åœ°è¯´ï¼Œæ˜¯ä»ŽåŸºå‡†ç‚¹è‡³æž„é€&nbsp;çš„ vbox æœ€å³ä¾§ä¹‹é—´çš„è·ç¦»ã€‚
å›&nbsp;æ­¤ï¼Œå¦‚æžœä½&nbsp;ä½¿ç”¨ ^|\moveright| æˆ–ï¼ˆè´Ÿæ•°è·ç¦»çš„ï¼‰^|\moveleft| å‘å³ç§»åŠ¨ä»»ä½•é¡¹ç›®ï¼Œ
é‚£ä¹ˆæž„é€&nbsp;çš„ vbox åˆ™å¯èƒ½æ›´å®½ã€‚}
åœ¨é«˜åº¦ä¸Žæ·±åº¦é—´åˆ†é…ç«–ç›´æ‰©å±•çš„è§„åˆ™æ›´åŠ&nbsp;å¤æ‚ï¼š
\ulist
\li å¯¹äºŽ |\vtop|ï¼Œå¦‚æžœç¬¬ä¸€ä¸ªé¡¹ç›®æ˜¯ä¸€ä¸ªç›’å­æˆ–æ&nbsp;‡çº¿ï¼Œåˆ™å…¶é«˜åº¦æ˜¯å…¶ç¬¬ä¸€ä¸ªé¡¹ç›®çš„é«˜åº¦ã€‚
å¦åˆ™ï¼Œå…¶é«˜åº¦æ˜¯é›¶ã€‚æ·±åº¦æ˜¯å‡åŽ»é«˜åº¦åŽçš„ç«–ç›´æ‰©å±•ã€‚
\li å¯¹äºŽ |\vbox|ï¼Œå¦‚æžœæœ€åŽä¸€ä¸ªé¡¹ç›®æ˜¯ä¸€ä¸ªç›’å­æˆ–æ&nbsp;‡çº¿ï¼Œåˆ™å…¶æ·±åº¦æ˜¯å…¶æœ€åŽä¸€ä¸ªé¡¹ç›®çš„æ·±åº¦ã€‚
å¦åˆ™æµ“åº¦æ˜¯é›¶ã€‚é«˜åº¦æ˜¯å‡åŽ»æ·±åº¦åŽçš„ç«–ç›´æ‰©å±•ã€‚
\footnote{å®žé™…ä¸Šï¼Œè§„åˆ™å¯ä»¥æ›´åŠ&nbsp;å¤æ‚ã€‚å‡å®šåœ¨æ·±åº¦ç¡®å®šåŽï¼Œä½¿ç”¨ç»™å‡ºçš„ä¸¤æ¡è§„åˆ™ï¼Œ
åˆ™æ·±åº¦å°†ä¼šå¤§äºŽ ^|\boxmaxdepth|ã€‚ éšåŽï¼Œæ·±åº¦å°†è¢«ç¼©å°è‡³ |\boxmaxdepth|ï¼Œé«˜åº¦ä¹Ÿç›¸åº”åœ°è¢«è°ƒæ•´ã€‚}
\endulist

%The |\vfil| command (\xref\vfil) is useful for filling out a vbox
%^^|\vfil//filling a vbox|
%with empty space when the material in the box isn't as tall as
%the vertical extent of the box.
å½“ç›’å­ä¸­å†…å®¹çš„é«˜åº¦æ²¡æœ‰ç›’å­ç«–ç›´ä¼¸å±•é«˜ï¼Œ
éœ€è¦ä½¿ç”¨ç©ºç™½é—´éš”æ¥å¡«å…… vbox ^^|\vfil//å¡«å……ç«–ç›´ç›’å­|æ—¶ï¼Œ
^|\vfil| å‘½ä»¤ï¼ˆ\xref\vfil ï¼‰æ˜¯éžå¸¸æœ‰ç”¨çš„ã€‚
\example
\hbox{\hsize = 10pc \raggedright\parindent = 1em
\vtop{åœ¨è¿™ä¸ªä¾‹å­ä¸­ï¼Œæˆ‘ä»¬å°†çœ‹åˆ°å¦‚ä½•ä½¿ç”¨ vbox äº§ç”ŸåŒæ&nbsp;çš„æ•ˆæžœã€‚
æ¯ä¸ª vbox éƒ½åŒ…å«ä¸¤ä¸ªæ®µè½ï¼Œé™¤äº†è®¾ç½®ä¸ºå·¦å¯¹é½ä»¥å¤–å‡ä¾ç…§ \TeX
é€šå¸¸çš„è§„åˆ™è¿›è¡ŒæŽ’ç‰ˆã€‚\par
è¿™å®žé™…ä¸Šå¹¶ä¸æ˜¯èŽ·å¾—çœŸæ­£åŒæ&nbsp;çš„æœ€å¥½çš„æ–¹æ³•ï¼Œå›&nbsp;ä¸ºä¸¤æ&nbsp;}
\hskip 2pc
\vtop{\noindent
å¹¶ä¸å¯¹ç§°ï¼Œè€Œä¸”æˆ‘ä»¬æ—&nbsp;æ³•è‡ªåŠ¨é€‰æ‹©ç¬¬ä¸€æ&nbsp;åœ¨ä½•å¤„æ–­å¼€ï¼Œ
ç”šè‡³ä¸èƒ½ç¡®å®šç¬¬ä¸€æ&nbsp;çš„æœ€åŽä¸€è¡Œã€‚\par
ç„¶è€Œï¼Œå°†è¡Œæ–‡æ”¾åœ¨ vbox ä¸­æ˜¯ä¸€ä¸ªå°†æ–‡æœ¬æ”¾åœ¨é¡µé¢ä¸Š
ä½&nbsp;å¸Œæœ›çš„ä½ç½®ä¸Šçš„æœ‰ç”¨çš„æŠ€å·§ã€‚
}}
|
\produces
\hbox{\hsize = 10pc \raggedright\parindent = 1em
%\vtop{In this example, we see how to use vboxes to
%produce the effect of double columns.  Each vbox
%contains two paragraphs, typeset according to \TeX's
%usual rules except that it's ragged right.\par
%This isn't really the best way to get true double
%columns because the columns}
%\hskip 2pc
%\vtop{\noindent
%aren't balanced and we haven't done anything to choose
%the column break automatically or even to fix up the
%last line of the first column.\par
%However, the technique of putting running text into a
%vbox is very useful for placing that text where you
%want it on the page.}}
\vtop{åœ¨è¿™ä¸ªä¾‹å­ä¸­ï¼Œæˆ‘ä»¬å°†çœ‹åˆ°å¦‚ä½•ä½¿ç”¨ vbox äº§ç”ŸåŒæ&nbsp;çš„æ•ˆæžœã€‚
æ¯ä¸ª vbox éƒ½åŒ…å«ä¸¤ä¸ªæ®µè½ï¼Œé™¤äº†è®¾ç½®ä¸ºå·¦å¯¹é½ä»¥å¤–å‡ä¾ç…§ \TeX
é€šå¸¸çš„è§„åˆ™è¿›è¡ŒæŽ’ç‰ˆã€‚\par
è¿™å®žé™…ä¸Šå¹¶ä¸æ˜¯èŽ·å¾—çœŸæ­£åŒæ&nbsp;çš„æœ€å¥½çš„æ–¹æ³•ï¼Œå›&nbsp;ä¸ºä¸¤æ&nbsp;}
\hskip 2pc
\vtop{\noindent
å¹¶ä¸å¯¹ç§°ï¼Œè€Œä¸”æˆ‘ä»¬æ—&nbsp;æ³•è‡ªåŠ¨é€‰æ‹©ç¬¬ä¸€æ&nbsp;åœ¨ä½•å¤„æ–­å¼€ï¼Œ
ç”šè‡³ä¸èƒ½ç¡®å®šç¬¬ä¸€æ&nbsp;çš„æœ€åŽä¸€è¡Œã€‚\par
ç„¶è€Œï¼Œå°†è¡Œæ–‡æ”¾åœ¨ vbox ä¸­æ˜¯ä¸€ä¸ªå°†æ–‡æœ¬æ”¾åœ¨é¡µé¢ä¸Š
ä½&nbsp;å¸Œæœ›çš„ä½ç½®ä¸Šçš„æœ‰ç”¨çš„æŠ€å·§ã€‚
}}
\nextexample
\hbox{\hsize = 1in \raggedright\parindent = 0pt
\vtop to .75in{\hrule è¿™ä¸ªç›’å­çš„æ·±åº¦æ˜¯ .75inã€‚ \vfil\hrule}
\qquad
\vtop{\hrule è¿™ä¸ªç›’å­å…·ä½“å…¶æœ¬èº«çš„æ·±åº¦ã€‚ \vfil\hrule}
\qquad
\vtop spread .2in{\hrule è¿™ä¸ªç›’å­çš„æ·±åº¦æ¯”å…¶è‡ªèº«çš„æ·±åº¦å¤š .2inã€‚\vfil\hrule}}
|
\produces
\hbox{\hsize = 1in \raggedright\parindent=0pt
%\vtop to .75in{\hrule This box is .75in deep. \vfil\hrule}
\vtop to .75in{\hrule è¿™ä¸ªç›’å­çš„æ·±åº¦æ˜¯ .75inã€‚ \vfil\hrule}
\qquad
%\vtop{\hrule This box is at its natural depth. \vfil\hrule}
\vtop{\hrule è¿™ä¸ªç›’å­å…·ä½“å…¶æœ¬èº«çš„æ·±åº¦ã€‚ \vfil\hrule}
\qquad
%\vtop spread .2in{\hrule This box is .2in deeper than
%                  its natural depth.\vfil\hrule}}
\vtop spread .2in{\hrule è¿™ä¸ªç›’å­çš„æ·±åº¦æ¯”å…¶è‡ªèº«çš„æ·±åº¦å¤š .2inã€‚\vfil\hrule}}
\nextexample
% æ˜¾ç¤º \vbox æ˜¯å¦‚ä½•åº•éƒ¨å¯¹é½ï¼Œè€Œéžé¡¶éƒ¨å¯¹é½çš„ã€‚
\hbox{\hsize = 1in \raggedright
\vbox to .5in{\hrule è¿™ä¸ªç›’å­çš„æ·±åº¦æ˜¯ .5inã€‚\vfil\hrule}
\qquad
\vbox to .75in{\hrule è¿™ä¸ªç›’å­çš„æ·±åº¦æ˜¯ .75inã€‚\vfil\hrule}}
|
\produces
\hbox{\hsize = 1in \raggedright
%\vbox to .5in{\hrule This box is .5in deep.\vfil\hrule}
\vbox to .5in{\hrule è¿™ä¸ªç›’å­çš„æ·±åº¦æ˜¯ .5inã€‚\vfil\hrule}
\qquad
%\vbox to .75in{\hrule This box is .75in deep.\vfil\hrule}}
\vbox to .75in{\hrule è¿™ä¸ªç›’å­çš„æ·±åº¦æ˜¯ .75inã€‚\vfil\hrule}}
\vskip 16pt % to avoid running into the next command description
\endexample
\enddesc

\begindesc
%\margin{Two commands interchanged here.}
\margin{å¯äº¤æ¢çš„ä¸¤ä¸ªå‘½ä»¤}
\cts boxmaxdepth {\param{dimen}}
\explain
%This parameter contains a dimension $D$.
%\TeX\ will not construct a box whose depth exceeds $D$.
%If you produce a box whose depth $d$ would exceed $D$,
%\TeX\ will transfer the
%excess depth to the height of the box, effectively moving the
%\minref{reference point} of the box down by $d-D$.
%If you set |\boxmaxdepth| to zero, \TeX\ will line up a row of vboxes
%so that their bottom boundaries all lie on the same horizontal line.
%\PlainTeX\ sets |\boxmaxdepth| to |\maxdimen| \ctsref{\maxdimen},
%so |\boxmaxdepth| won't affect your boxes unless you change it.
è¿™ä¸ªå‚æ•°åŒ…å«çš„æ˜¯ä¸€ä¸ªå°ºå¯¸ $D$ã€‚å¦‚æžœç›’å­çš„æ·±åº¦è¶…è¿‡ $D$ï¼Œ\TeX\ å°†ä¸ä¼šæž„é€&nbsp;è¿™ä¸ªç›’å­ã€‚
å¦‚æžœä½&nbsp;ç”Ÿæˆä¸€ä¸ªç›’å­ï¼Œå…¶æ·±åº¦ $d$ å¤§äºŽ $D$ï¼Œ\TeX\ å°†è¶…å‡ºçš„æ·±åº¦ä¼&nbsp;é€’ç»™ç›’å­çš„é«˜åº¦ï¼Œ
å³é«˜æ•ˆåœ°å°†ç›’å­çš„\minref{åŸºå‡†ç‚¹}å‘ä¸‹ç§»åŠ¨ $d-D$ã€‚å¦‚æžœä½&nbsp;å°† |\boxmaxdepth| è®¾ä¸ºé›¶ï¼Œ
\TeX\ ä¼šå°†ç›’å­å‘ä¸ŠæŽ’ä¸€åˆ—ï¼Œä»¥ä¾¿å®ƒä»¬çš„åº•çº¿éƒ½ä½äºŽåŒä¸€ä¸ªæ°´å¹³çº¿ä¸Šã€‚
\PlainTeX\ å°† |\boxmaxdepth| è®¾ä¸º |\maxdimen|\ctsref{\maxdimen}ï¼Œ
å›&nbsp;æ­¤ï¼Œ|\boxmaxdepth| ä¸ä¼šå½±å“ä½&nbsp;çš„ç›’å­ï¼Œé™¤éžä½&nbsp;æœ‰æ„æ”¹åŠ¨å®ƒã€‚
\enddesc

\begindesc
\cts underbar {\&lt;argument&gt;}
\explain
%This command puts \&lt;argument&gt; into an \minref{hbox}
%and underlines it without regard to anything that protrudes below the
%\minref{baseline} of the box.
è¿™ä¸ªå‘½ä»¤å°† \&lt;argument&gt; æ”¾å…¥åˆ°ä¸€ä¸ª \minref{hbox}ï¼Œå¹¶åœ¨å…¶ä¸‹åˆ’çº¿ï¼Œè€Œä¸è€ƒè™‘ä»»ä½•çªå‡ºåˆ°ç›’å­çš„\minref{åŸºçº¿}ä»¥ä¸‹çš„ä¸œè¥¿ã€‚
\example
\underbar{ä¸ºä»€ä¹ˆä¸å­¦ä¹&nbsp; \TeX?}
|
\produces
%\underbar{ä¸ºä»€ä¹ˆä¸å­¦ä¹&nbsp; \TeX?}
\underbar{Why not learn \TeX?}
\endexample
\enddesc

\begindesc
\cts everyhbox {\param{token list}}
\cts everyvbox {\param{token list}}
\explain
%These parameters contain token lists that \TeX\ expands at the start of
%every \minref{hbox} or \minref{vbox} that it constructs.
%Any items resulting from the expansion then become
%the beginning of the list of items for the box.
%By default these token lists are empty.
è¿™äº›å‚æ•°åŒ…å«çš„æ˜¯è®°å·åˆ—è¡¨ã€‚\TeX\ ä¼šåœ¨å¼€å§‹æž„é€&nbsp;æ¯ä¸ª \minref{hbox} æˆ– \minref{vbox} æ—¶å¯¹å…¶è¿›è¡Œæ‰©å±•ã€‚æ¥è‡ªäºŽæ‰©å±•çš„ä»»ä½•é¡¹ç›®éšåŽæˆä¸ºç›’å­çš„é¡¹ç›®åˆ—è¡¨çš„å¼€å§‹ã€‚è¿™äº›è®°å·åˆ—è¡¨é»˜è®¤æ˜¯ç©ºçš„ã€‚
\enddesc

%==========================================================================
%\subsection {Setting and retrieving the contents of boxes}
\subsection {è®¾ç½®å’ŒèŽ·å–ç›’å­çš„å†…å®¹}

%\begindesc
%\bix^^{box registers}
%%
%\cts setbox {\&lt;register&gt;\thinspace{\bt =}\thinspace\&lt;box&gt;}
%\cts box {\&lt;register&gt;}
%\explain
%^^{assignments//of boxes}
%These commands respectively set and retrieve the contents
%of the box register
%whose number is \&lt;register&gt;.
%Note that you set a box register a little differently than
%you set the other kinds of registers: you use
%|\setbox|$\,n$~|=| rather than |\box|$\,n$~|=|.
\begindesc
\bix^^{ç›’å­å¯„å­˜å™¨}
%
\cts setbox {\&lt;register&gt;\thinspace{\bt =}\thinspace\&lt;box&gt;}
\cts box {\&lt;register&gt;}
\explain
^^{èµ‹å€¼//ç»™ç›’å­èµ‹å€¼}
è¿™äº›å‘½ä»¤åˆ†åˆ«è®¾ç½®å’ŒèŽ·å–ç¼–å·ä¸º \&lt;register&gt; çš„ç›’å­å¯„å­˜å™¨çš„å†…å®¹ã€‚
éœ€è¦æ³¨æ„ï¼Œè®¾ç½®ç›’å­å¯„å­˜å™¨ä¸Žè®¾ç½®å…¶å®ƒå¯„å­˜å™¨æœ‰ç»†å¾®çš„å·®åˆ«ï¼š
ä½&nbsp;åº”è¯¥ä½¿ç”¨ |\setbox|$\,n$~|=|ï¼Œè€Œä¸æ˜¯ |\box|$\,n$~|=|ã€‚

%\emph{Retrieving the contents of a box register
%with these commands has the side effect of emptying it,
%so that the box register become void.}  If you don't want that to happen,
%you can use |\copy| (see below) to retrieve the contents.
%You should use |\box| in preference to |\copy|
%when you don't care about what's in a box register after you've used it,
%so as not to exhaust \TeX's memory by filling it with obsolete boxes.
\emph{ä½¿ç”¨è¿™äº›å‘½ä»¤èŽ·å–ç›’å­å¯„å­˜å™¨ä¸­çš„å†…å®¹æ—¶ï¼Œæœ‰æ¸…ç©ºå…¶å†…å®¹çš„å‰¯ä½œç”¨ï¼Œæ‰€ä»¥ç›’å­å¯„å­˜å™¨å°†å¤±æ•ˆã€‚}å¦‚æžœä½&nbsp;ä¸å¸Œæœ›è¿™äº›å‘ç”Ÿï¼Œä½&nbsp;å¯ä»¥ä½¿ç”¨ |\copy|ï¼ˆå‚è§åŽé¢çš„å†…å®¹ï¼‰æ¥èŽ·å–å†…å®¹ã€‚å¦‚æžœä½&nbsp;ä¸åœ¨ä¹Žä½&nbsp;ä½¿ç”¨ä¹‹åŽçš„ç›’å­å¯„å­˜å™¨ä¸­çš„å†…å®¹ï¼Œä½&nbsp;åº”è¯¥ä¼˜å…ˆä½¿ç”¨ |\box| è€Œä¸æ˜¯ |\copy|ï¼Œè¿™æ&nbsp;·å¯ä»¥ä¸è‡´äºŽç”¨åºŸå¼ƒçš„ç›’å­æ¥æ¶ˆè€— \TeX\ çš„å†…å­˜ã€‚

\example
\setbox0 = \hbox{è˜‘è‡}
\setbox1 = \vbox{\copy0\box0\box0}
\box1
|
\produces
%\setbox0 = \hbox{mushroom}
\setbox0 = \hbox{è˜‘è‡}
\setbox1 = \vbox{\copy0\box0\box0}
\box1
\endexample
\enddesc

%\begindesc
%\cts copy {\&lt;register&gt;}
%\explain
%^^{boxes//copying}%\minrefs{box}
%\minrefs{ç›’å­}
%This command
%produces a copy of box register \&lt;register&gt;.
%This command is useful when you want to retrieve the contents of a box
%register but don't want to destroy the contents.
%(Retrieving the register contents with ^|\box| makes the register void.)
\begindesc
\cts copy {\&lt;register&gt;}
\explain
^^{ç›’å­//å¤åˆ¶ç›’å­}%\minrefs{box}
\minrefs{ç›’å­}
è¿™ä¸ªå‘½ä»¤å¯ä»¥äº§ç”Ÿç›’å­å¯„å­˜å™¨ \&lt;register&gt; çš„ä¸€ä¸ªæ‹·è´ã€‚å½“ä½&nbsp;å¸Œæœ›èŽ·å–ä¸€ä¸ªç›’å­çš„å†…å®¹ï¼Œ
ä½†åˆä¸å¸Œæœ›ç&nbsp;´åå…¶ä¸­çš„å†…å®¹æ—¶æ˜¯æœ‰ç”¨çš„ã€‚ï¼ˆä½¿ç”¨ ^|\box| èŽ·å–å¯„å–å™¨å†…å®¹ä¼šä½¿å¯„å­˜å™¨å¤±æ•ˆã€‚ï¼‰
\example
\setbox0 = \hbox{ç¾Žå¥½}
ç¥ä½&nbsp;æ‹¥æœ‰ \copy0 \box0 \box0 çš„ä¸€å¤©ï¼
|
\produces
%\setbox0 = \hbox{good }
%Have a \copy0 \box0 \box0 day!
\setbox0 = \hbox{ç¾Žå¥½}
ç¥ä½&nbsp;æ‹¥æœ‰ \copy0 \box0 \box0 çš„ä¸€å¤©ï¼
\endexample
\enddesc

%\begindesc
%\cts unhbox {\&lt;register&gt;}
%\cts unvbox {\&lt;register&gt;}
%^^{boxes//extracting contents of}
%\explain
%These commands produce the list contained in box register \&lt;register&gt; and make
%that box register void.
%|\unhbox| applies to box registers containing
%hboxes and |\unvbox| applies to box registers containing vboxes.
%You should use these commands in preference to |\unhcopy| and |\unvcopy|
%(see below)
%when you don't care about what's in the box register after you've used it,
%so as not to exhaust \TeX's memory by filling it with obsolete boxes.
\begindesc
\cts unhbox {\&lt;register&gt;}
\cts unvbox {\&lt;register&gt;}
^^{ç›’å­//æå–ç›’å­çš„å†…å®¹}
\explain
è¿™äº›å‘½ä»¤å¯ä»¥ç»™å‡ºç›’å­å¯„å­˜å™¨ \&lt;register&gt; å®¹çº³çš„åˆ—è¡¨ï¼Œå¹¶ä¸”ä½¿ç›’å­å¯„å­˜å™¨å¤±æ•ˆã€‚
|\unhbox| é€‚ç”¨äºŽåŒ…å« hbox çš„ç›’å­å¯„å­˜å™¨ï¼Œè€Œ |\unvbox| é€‚ç”¨äºŽåŒ…å« vbox çš„ç›’å­å¯„å­˜å™¨ã€‚
å½“ä½&nbsp;ä¸åœ¨ä¹Žä½&nbsp;ä½¿ç”¨ä¹‹åŽçš„ç›’å­å¯„å­˜å™¨ä¸­çš„å†…å®¹ï¼Œä½&nbsp;åº”è¯¥ä¼˜å…ˆä½¿ç”¨è¿™äº›å‘½ä»¤è€Œä¸æ˜¯ |\unhcopy| å’Œ |\unvcopy|ï¼Œ
è¿™æ&nbsp;·å¯ä»¥ä¸è‡´äºŽç”¨åºŸå¼ƒçš„ç›’å­æ¥æ¶ˆè€— \TeX\ çš„å†…å­˜ã€‚
\example
\setbox0=\hbox{ç´&nbsp;ç”²é±¼æ·±æ·±åœ°å¹æ¯ç€ï¼Œç”¨ä¸€åªæ‰‹èƒŒæŠ¹ç€çœ¼æ³ªã€‚}
\setbox1=\hbox{ä»–æƒ³è¯´è¯ï¼Œå¯æ˜¯æœ‰å¥½ä¸€é˜µå­æ³£ä¸æˆå£°ã€‚}
\unhbox0 \unhbox1
% \box0 \box1 å°†å¹¶æŽ’è®¾ç½®ä¸¤ä¸ª hbox
% ï¼ˆå¹¶ä¸”è¾“å‡ºéš¾çœ‹çš„è¿‡æ»¡è¡Œï¼‰ã€‚
\box1 % ä»€ä¹ˆä¹Ÿä¸è¾“å‡ºã€‚
|
\produces
%\setbox0=\hbox{The Mock Turtle sighed deeply, and
%drew the back of one flapper across his eyes. }
%\setbox1=\hbox{He tried to speak, but sobs choked
%               his voice. }
\setbox0=\hbox{ç´&nbsp;ç”²é±¼æ·±æ·±åœ°å¹æ¯ç€ï¼Œç”¨ä¸€åªæ‰‹èƒŒæŠ¹ç€çœ¼æ³ªã€‚}
\setbox1=\hbox{ä»–æƒ³è¯´è¯ï¼Œå¯æ˜¯æœ‰å¥½ä¸€é˜µå­æ³£ä¸æˆå£°ã€‚}
\unhbox0 \unhbox1
% \hbox0 \hbox1 would set two hboxes side by side
% (and produce a badly overfull line).
\box1 % Produces nothing.
\endexample
\enddesc

%\begindesc
%\cts unhcopy {\&lt;register&gt;}
%\cts unvcopy {\&lt;register&gt;}
%^^{boxes//extracting contents of}
%^^{boxes//copying }%\minrefs{box}
%\minrefs{ç›’å­}
%\explain
\begindesc
\cts unhcopy {\&lt;register&gt;}
\cts unvcopy {\&lt;register&gt;}
^^{ç›’å­//æå–ç›’å­çš„å†…å®¹}
^^{ç›’å­//å¤åˆ¶ç›’å­}%\minrefs{box}
\minrefs{ç›’å­}
\explain
%These commands produce the list contained in box register \&lt;register&gt; and
%leave the contents of the register undisturbed.
%|\unhcopy| applies to box registers containing hboxes
%and |\unvcopy| applies to box registers containing vboxes.
è¿™äº›å‘½ä»¤å¯ä»¥ç»™å‡ºç›’å­å¯„å­˜å™¨ \&lt;register&gt; å®¹çº³çš„åˆ—è¡¨ï¼Œå¹¶ä¸”ä¿æŒå¯„å­˜å™¨çš„å†…å®¹ä¸è¢«æ”¹å˜ã€‚
|\unhcopy| é€‚ç”¨äºŽåŒ…å« hbox çš„ç›’å­å¯„å­˜å™¨ï¼Œè€Œ |\unvcopy| é€‚ç”¨äºŽåŒ…å« vbox çš„ç›’å­å¯„å­˜å™¨ã€‚
\example
\setbox0=\hbox{ç´&nbsp;ç”²é±¼æ·±æ·±åœ°å¹æ¯ç€ï¼Œç”¨ä¸€åªæ‰‹èƒŒæŠ¹ç€çœ¼æ³ªã€‚}
\setbox1=\hbox{ä»–æƒ³è¯´è¯ï¼Œå¯æ˜¯æœ‰å¥½ä¸€é˜µå­æ³£ä¸æˆå£°ã€‚}
\unhcopy0 \unhcopy1\par\noindent
% \box0 \box1 å°†å¹¶æŽ’è®¾ç½®ä¸¤ä¸ª hbox
% ï¼ˆå¹¶ä¸”è¾“å‡ºéš¾çœ‹çš„è¿‡æ»¡è¡Œï¼‰ã€‚
\box1 % è¾“å‡ºä¸€ä¸ªï¼ˆä¸èƒ½è¢«æ–­è¡Œï¼‰hboxã€‚
|
\produces
%\setbox0=\hbox{The Mock Turtle sighed deeply, and
%drew the back of one flapper across his eyes. }
%\setbox1=\hbox{He tried to speak, but sobs choked his
%          voice. }
\setbox0=\hbox{ç´&nbsp;ç”²é±¼æ·±æ·±åœ°å¹æ¯ç€ï¼Œç”¨ä¸€åªæ‰‹èƒŒæŠ¹ç€çœ¼æ³ªã€‚}
\setbox1=\hbox{ä»–æƒ³è¯´è¯ï¼Œå¯æ˜¯æœ‰å¥½ä¸€é˜µå­æ³£ä¸æˆå£°ã€‚}
\unhcopy0 \unhcopy1\par\noindent
% \hbox0 \hbox1 would set two hboxes side by side
% (and produce a badly overfull line).
\box1 % produces an hbox (which can't be broken)
\endexample
\enddesc

%\see |\wd|, |\dp|, |\ht| (\xref\ht).
%\eix^^{box registers}
\see |\wd|, |\dp|, |\ht|ï¼ˆ\xref\ht ï¼‰ã€‚
\eix^^{ç›’å­å¯„å­˜å™¨}

%==========================================================================
%\subsection {Shifting boxes}
\subsection {ç§»åŠ¨ç›’å­}

%\begindesc
%\cts moveleft {\&lt;dimen&gt; \&lt;box&gt;}
%\cts moveright {\&lt;dimen&gt; \&lt;box&gt;}
%\bix^^{boxes//shifting}
%%\minrefs{box}
%\minrefs{ç›’å­}
%\explain
%These commands move \&lt;box&gt; left or right by \&lt;dimen&gt; (which can be
%negative). You can only apply |\moveleft| and |\moveright| to a box
%that's in a \minref{vertical list}.
\begindesc
\cts moveleft {\&lt;dimen&gt; \&lt;box&gt;}
\cts moveright {\&lt;dimen&gt; \&lt;box&gt;}
\bix^^{ç›’å­//ç§»åŠ¨ç›’å­}
%\minrefs{box}
\minrefs{ç›’å­}
\explain
è¿™äº›å‘½ä»¤å°† \&lt;box&gt; å‘å·¦æˆ–å³ç§»åŠ¨ \&lt;dimen&gt;ï¼ˆè¿™ä¸ªæ•°å€¼å¯ä»¥æ˜¯è´Ÿçš„ï¼‰ã€‚
ä½&nbsp;åªèƒ½å¯¹å­˜åœ¨äºŽ\minref{ç«–ç›´åˆ—è¡¨} ä¸­çš„ç›’å­ä½¿ç”¨ |\moveleft| å’Œ |\moveright|ã€‚
\example
\vbox{\vbox{Phoebe}\vbox{walked}%
\moveleft 20pt\vbox{a}\moveright 20pt\vbox{crooked}%
\vbox{mile.}}
|
\produces
\hfuzz = \maxdimen
\vbox{\vbox{Phoebe}\vbox{walked}%
\moveleft 20pt\vbox{a}\moveright 20pt\vbox{crooked}%
\vbox{mile.}}
\endexample
\enddesc

\begindesc
\cts lower {\&lt;dimen&gt; \&lt;box&gt;}
\cts raise {\&lt;dimen&gt; \&lt;box&gt;}
\explain
%These commands move \&lt;box&gt; up or down by \&lt;dimen&gt;
%(which can be negative).
%You can only apply |\raise| and |\lower| to a box
%that's in a \minref{horizontal list}.
è¿™äº›å‘½ä»¤å°† \&lt;box&gt; å‘ä¸Šæˆ–ä¸‹ç§»åŠ¨ \&lt;dimen&gt;ï¼ˆè¿™ä¸ªæ•°å€¼å¯ä»¥æ˜¯è´Ÿçš„ï¼‰ã€‚ä½&nbsp;åªèƒ½å¯¹å­˜åœ¨äºŽ\minref{æ°´å¹³åˆ—è¡¨} ä¸­çš„ç›’å­ä½¿ç”¨ |\raise| å’Œ |\lower|ã€‚
\example
å…³äºŽä½&nbsp;é¼»å­ä¸Šçš„ \lower 6pt \hbox{è‚¿å—}ï¼Œä½&nbsp;è§‰å¾—
                \raise 6pt \hbox{æ²®ä¸§}å—ï¼Ÿ
|
\produces
%Are you feeling \lower 6pt \hbox{depressed} about the
%                \raise 6pt \hbox{bump} on your nose?
å…³äºŽä½&nbsp;é¼»å­ä¸Šçš„ \lower 6pt \hbox{è‚¿å—}ï¼Œä½&nbsp;è§‰å¾—
                \raise 6pt \hbox{æ²®ä¸§}å—ï¼Ÿ
\endexample

\eix^^{ç›’å­//ç§»åŠ¨ç›’å­}
\enddesc

%==========================================================================
%\subsection {Dimensions of box registers}
\subsection {ç›’å­å¯„å­˜å™¨çš„å°ºå¯¸}

%\begindesc
%\bix^^{box registers}
%\bix^^{dimensions//of box registers}
%\cts ht {\&lt;register&gt;\param{dimen}}
%\cts dp {\&lt;register&gt;\param{dimen}}
%\cts wd {\&lt;register&gt;\param{dimen}}
%\explain
%These parameters refer to the ^{height}, ^{depth}, and ^{width}
%respectively of \minref{box} \minref{register} \&lt;register&gt;.
%You can use them to find out the dimensions of a box.
%You can also change the dimensions of a box, but it's a tricky business;
%if you want to be adventurous you can
%learn all about it from \knuth{pages~388--389}.
\begindesc
\bix^^{ç›’å­å¯„å­˜å™¨}
\bix^^{å°ºå¯¸//ç›’å­å¯„å­˜å™¨çš„å°ºå¯¸}
\cts ht {\&lt;register&gt;\param{dimen}}
\cts dp {\&lt;register&gt;\param{dimen}}
\cts wd {\&lt;register&gt;\param{dimen}}
\explain
è¿™äº›å‚æ•°åˆ†åˆ«è¡¨ç¤º\minref{ç›’å­}\minref{å¯„å­˜å™¨} \&lt;register&gt; çš„^{é«˜åº¦}ã€^{æ·±åº¦}å’Œ^{å®½åº¦}ã€‚
ä½&nbsp;å¯ä»¥ä½¿ç”¨è¿™äº›å‘½ä»¤èŽ·å¾—ä¸€ä¸ªç›’å­çš„å°ºå¯¸ã€‚ä½&nbsp;ä¹Ÿå¯ä»¥æ”¹å˜ä¸€ä¸ªç›’å­çš„å°ºå¯¸ï¼Œä½†è¿™æ˜¯ä¸€ä¸ªéœ€è¦æŠ€å·§çš„äº‹æƒ…ï¼›
å¦‚æžœä½&nbsp;å¸Œæœ›æˆä¸ºå†’é™©è€…ï¼Œä½&nbsp;å¯ä»¥ä»Ž \knuth{pages~388--389} ä¸­èŽ·å¾—å…¨éƒ¨çš„æŠ€å·§ã€‚
\example
\setbox0 = \vtop{\hbox{ä¸€ä¸ª}\hbox{ç±³é»„è‰²çš„}\hbox{å…”å­}}%
é‚£ä¸ªç›’å­çš„å®½åº¦æ˜¯ \the\wd0ï¼Œé«˜åº¦æ˜¯ \the\ht0ï¼Œ
æ·±åº¦æ˜¯ \the\dp0ã€‚
|
\produces
%\setbox0 = \vtop{\hbox{a}\hbox{beige}\hbox{bunny}}%
%The box has width \the\wd0, height \the\ht0,
%and depth \the\dp0.
\setbox0 = \vtop{\hbox{ä¸€ä¸ª}\hbox{ç±³é»„è‰²çš„}\hbox{å…”å­}}%
é‚£ä¸ªç›’å­çš„å®½åº¦æ˜¯ \the\wd0ï¼Œé«˜åº¦æ˜¯ \the\ht0ï¼Œ
æ·±åº¦æ˜¯ \the\dp0ã€‚
%\endexample
%\eix^^{box registers}
%\eix^^{dimensions//of box registers}
%\enddesc
\endexample
\eix^^{ç›’å­}
\eix^^{å°ºå¯¸//ç›’å­å¯„å­˜å™¨çš„å°ºå¯¸}
\enddesc

%==========================================================================
%\subsection {Struts, phantoms, and empty boxes}
\subsection {æ”¯æž¶ã€å¹»å½±å’Œç©ºç›’å­}

\begindesc
%\margin{This subsection is a merger of two previous subsections.
%The commands have also been reordered.}
\margin{è¿™ä¸€å°èŠ‚æ˜¯å‰ä¸¤ä¸ªå°èŠ‚çš„è”åˆä½“ã€‚ç›¸åº”çš„å‘½ä»¤ä¹Ÿè¢«é‡æ–°æŽ’åºã€‚}
%\bix^^{struts}
%\cts strut {}
%\explain
%This command produces a box whose width is zero
%and whose height (|8.5pt|) and depth (|3.5pt|)
%are those of a more or less typical line of type in |cmr10|,
%the default \plainTeX\ font.
%Its main use is in forcing lines to have the same height
%when you've disabled \TeX's interline glue with
%|\offinter!-lineskip| ^^|\offinterlineskip| or a similar command,
%e.g., when you're constructing an alignment.
%If the natural height of a line is
%too short, you can bring it up to standard by including a |\strut|
%in the line.  The strut will force the height and depth of the line
%to be larger, but it won't print anything or consume any horizontal
%space.
\bix^^{æ”¯æž¶}
\cts strut {}
\explain
è¿™ä¸ªå‘½ä»¤äº§ç”Ÿä¸€ä¸ªå®½åº¦ä¸ºé›¶çš„ç›’å­ï¼Œ
ç›’å­çš„é«˜åº¦ (|8.5pt|) å’Œæ·±åº¦ (|3.5pt|) ä¸Žç”¨ \plainTeX\ çš„é»˜è®¤å­—ä½“ |cmr10| æŽ’å‡ºçš„å…¸åž‹çš„ä¸€è¡Œæ–‡å­—æ˜¯ä¸€è‡´çš„ã€‚
å½“ä½&nbsp;ä½¿ç”¨ |\offinter!-lineskip| ^^|\offinterlineskip| æˆ–ç±»ä¼¼çš„å‘½ä»¤å…³é—­ \TeX\ çš„è¡Œé—´ç²˜è¿žï¼Œ
å¦‚ä½&nbsp;æ­£åœ¨æž„å»ºä¸€ä¸ªé˜µåˆ—æ—¶ï¼Œè¯¥å‘½ä»¤ä¸»è¦ç”¨äºŽå¼ºè¿«ä¸€è¡Œå…·æœ‰ç›¸åŒçš„é«˜åº¦ã€‚
å¦‚æžœä¸€è¡Œçš„è‡ªç„¶é«˜åº¦è¿‡çŸ®ï¼Œä½&nbsp;å¯ä»¥åœ¨è¡Œä¸­æ’å…¥ä¸€ä¸ª |\strut| ä½¿å®ƒå›žåˆ°æ&nbsp;‡å‡†çš„é«˜åº¦ã€‚
æ”¯æž¶å°†ä½¿å¾—ä¸€è¡Œçš„é«˜åº¦å’Œæ·±åº¦æ›´å¤§ä¸€äº›ï¼Œä½†å®ƒä¸ä¼šæ‰“å°å‡ºä»»ä½•ä¸œè¥¿ï¼Œæˆ–è€…æ¶ˆè€—ä»»ä½•æ°´å¹³é—´éš”ã€‚

%If you're setting type in a font that's bigger or smaller than |cmr10|,
%you should redefine |\strut| for that context.
å¦‚æžœä½&nbsp;æ­£åœ¨ä½¿ç”¨ä¸€ä¸ªå¤§äºŽæˆ–å°äºŽ |cmr10| çš„å­—ä½“æŽ’ç‰ˆï¼Œä½&nbsp;åº”è¯¥æ&nbsp;¹æ®æ‰€å¤„çŽ¯å¢ƒé‡æ–°å®šä¹‰ |\strut|ã€‚
\example
\noindent % ä½¿æˆ‘ä»¬å¤„äºŽæ°´å¹³æ¨¡å¼ä¸‹ã€‚
\offinterlineskip % æˆ‘ä»¬å¾—åˆ°å›ºæœ‰çš„é—´éš”ã€‚
% ä¸‹é¢è¿™äº› vbox ä¸­çš„å¥å·åœ¨ç«–ç›´æ–¹å‘ä¸æ˜¯ç­‰é—´è·çš„ã€‚
\vtop{\hbox{.}\hbox{.(}\hbox{.x}
   \hbox{.\vrule height 4pt depth 0pt}}\qquad
% å›&nbsp;ä¸ºæ”¯æž¶çš„ç¼˜æ•…ï¼Œ
%ä¸‹é¢è¿™äº› vbox ä¸­çš„å¥å·åœ¨ç«–ç›´æ–¹å‘ä¸Šåˆ™æ˜¯ç­‰é—´è·çš„ã€‚
\vtop{\hbox{.\strut}\hbox{.(\strut}\hbox{.x\strut}
   \hbox{.\vrule height 4pt depth 0pt\strut}}
|

\produces
\noindent % So we're in horizontal mode.
\offinterlineskip % So we get the inherent spacing.
% The periods in this vbox are not vertically equidistant.
\vtop{\hbox{.}\hbox{.(}\hbox{.x}
   \hbox{.\vrule height 4pt depth 0pt}}\qquad
% The periods in this vbox are vertically equidistant
% because of the struts.
\vtop{\hbox{.\strut}\hbox{.(\strut}\hbox{.x\strut}
   \hbox{.\vrule height 4pt depth 0pt\strut}}
\endexample
\enddesc

\begindesc
\cts mathstrut {}
\explain
%This command produces a phantom formula whose width is zero
%and whose height and depth are the same as those of a left parenthesis.
%|\mathstrut| is in fact defined as `|\vphantom(|'.
%Its main use is for getting radicals, underbars, and overbars to line
%up with other radicals, underbars, and overbars in a formula.
%It is much like ^|\strut| (\xref \strut),
%except that it adjusts itself to the different \minref{style}s
%that can occur in math formulas.
è¿™ä¸ªå‘½ä»¤äº§ç”Ÿä¸€ä¸ªå®½åº¦ä¸ºé›¶çš„å¹»å½±å…¬å¼ï¼Œå®ƒçš„é«˜åº¦ä¸Žæ·±åº¦ä¸Žå·¦åœ†æ‹¬å·æ˜¯ä¸€è‡´çš„ã€‚
|\mathstrut| å®žé™…ä¸Šçš„å®šä¹‰æ˜¯ `|\vphantom(|'ã€‚
å®ƒä¸»è¦ç”¨äºŽä½¿å¾—æ&nbsp;¹å·ã€ä¸‹æ¨ªçº¿å’Œä¸Šæ¨ªçº¿èƒ½ä¸Žå…¬å¼ä¸­å…¶å®ƒçš„æ&nbsp;¹å·ã€ä¸‹æ¨ªçº¿å’Œä¸Šæ¨ªçº¿æˆè¡ŒæŽ’åˆ—ã€‚
é™¤èƒ½æ&nbsp;¹æ®å‡ºçŽ°åœ¨æ•°å­¦å…¬å¼ä¸­çš„ä¸åŒ\minref{æ&nbsp;·å¼}è‡ªåŠ¨è°ƒèŠ‚ä»¥å¤–ï¼Œå®ƒä¸Ž ^|\strut| ï¼ˆ\xref \strutï¼‰éžå¸¸ç›¸ä¼¼ã€‚
\example
$$\displaylines{
\overline{a_1a_2} \land \overline{b_1b_2}
\quad{\rm versus}\quad \overline{a_1a_2\mathstrut}
  \land \overline{b_1b_2\mathstrut}\cr
\sqrt{\epsilon} + \sqrt{\xi} \quad{\rm versus}\quad
\sqrt{\epsilon\mathstrut} + \sqrt{\xi\mathstrut}\cr}$$
|
\dproduces
\kern 4pt
$$\displaylines{
\overline{a_1a_2} \land \overline{b_1b_2}
\quad{\rm versus}\quad \overline{a_1a_2\mathstrut}
  \land \overline{b_1b_2\mathstrut}\cr
\sqrt{\epsilon} + \sqrt{\xi} \quad{\rm versus}\quad
\sqrt{\epsilon\mathstrut} + \sqrt{\xi\mathstrut}\cr}$$
\endexample
\eix^^{æ”¯æž¶}
\enddesc

%\begindesc
%\cts phantom {\&lt;argument&gt;}
%\explain
%\bix^^{boxes//phantom}
%\bix^^{phantoms}
%This command produces an empty \minref{box}
%having the same size and placement
%that \&lt;argument&gt; would have were it typeset.
%One use of |\phantom| is for reserving space for a symbol that for some
%reason needs to be drawn in by hand.
\begindesc
\cts phantom {\&lt;argument&gt;}
\explain
\bix^^{ç›’å­//å¹»å½±ç›’å­}
\bix^^{å¹»å½±}
æ­¤å‘½ä»¤äº§ç”Ÿä¸€ä¸ªç©º\minref{ç›’å­}ï¼Œå®ƒçš„å¤§å°å’Œä½ç½®ä¸Žå‡å®š \&lt;argument&gt; è¢«æŽ’ç‰ˆå‡ºæ¥æ—¶çš„ç›¸åŒã€‚
å›&nbsp;æŸç§åŽŸå›&nbsp;éœ€è¦æ‰‹å·¥ç»™ä¸€ä¸ªç¬¦å·ç•™å‡ºç©ºé—´æ—¶ï¼Œ|\phantom| å°±å¯æ´¾ä¸Šç”¨åœºã€‚
\example
$1\phantom{9}2$
|
\produces
$1\phantom{9}2$
\endexample
\enddesc

\begindesc
\cts hphantom {\&lt;argument&gt;}
\cts vphantom {\&lt;argument&gt;}
\explain
%These commands produce phantom boxes\minrefs{box}\ that
%don't print anything:
%\ulist\compact
%\li |\hphantom| produces a box with the same width as \&lt;argument&gt;
%but zero height and depth.
%\li |\vphantom| produces a box with the same height and depth as \&lt;argu\-ment&gt;
%but zero width.
%\endulist
%\noindent
%Their main purpose is to force a subformula to have a certain minimum
%horizontal or vertical dimension.
è¿™äº›å‘½ä»¤äº§ç”Ÿå¹»å½±ç›’å­\minrefs{box}ï¼Œå¹¶ä¸æ‰“å°ä»»ä½•ä¸œè¥¿ï¼š
\ulist\compact
\li |\hphantom| äº§ç”Ÿä¸€ä¸ªå®½åº¦ä¸Ž \&lt;argument&gt; ä¸€è‡´çš„ç›’å­ï¼Œä½†é«˜åº¦ä¸Žæ·±åº¦å‡ä¸ºé›¶ã€‚
\li |\vphantom| äº§ç”Ÿä¸€ä¸ªé«˜åº¦ä¸Žæ·±åº¦ä¸Ž \&lt;argu\-ment&gt; ä¸€è‡´çš„ç›’å­ï¼Œä½†å®½åº¦ä¸ºé›¶ã€‚
\endulist
\noindent
å®ƒä»¬çš„ä¸»è¦ç›®çš„æ˜¯è¿«ä½¿ä¸€ä¸ªå­å…¬å¼å…·æœ‰ç‰¹å®šçš„æœ€å°æ°´å¹³æˆ–ç«–ç›´å°ºå¯¸ã€‚
\example
$$\left[\vphantom{u\over v}t\right] \star
      \left[{u\over v}\right]\quad
   \{\hphantom{xx}\}$$
|
\dproduces
\kern 4pt
$$\left[\vphantom{u\over v}t\right] \star
      \left[{u\over v}\right]\quad
   \{\hphantom{xx}\}$$
\endexample
\enddesc

\begindesc
\cts smash {\&lt;argument&gt;}
\explain
%This command typesets \&lt;argument&gt;,
%but forces the height and depth of its containing \minref{box} to be zero.
%You can use |\smash| and |\vphantom| in combination to give a subformula
%any height and depth that you wish.
è¯¥å‘½ä»¤æŽ’å‡º \&lt;argument&gt;ï¼Œä½†è¿«ä½¿å…¶åŒ…å«çš„\minref{ç›’å­}çš„é«˜åº¦å’Œæ·±åº¦è®¾ä¸ºé›¶ã€‚ä½&nbsp;å¯ä»¥è”åˆä½¿ç”¨ |\smash| å’Œ |\vphantom| æ¥èŽ·å¾—ä»»ä½•ä½&nbsp;æœŸæœ›é«˜åº¦ä¸Žæ·±åº¦çš„å­å…¬å¼ã€‚
\example
$${\smash{r_m \brace r_n}\vphantom{r}} \Longrightarrow r$$
|
\dproduces
\kern 4pt
$${\smash{r_m \brace r_n}\vphantom{r}} \Longrightarrow r$$
\endexample
%\eix^^{boxes//phantom}
%\eix^^{phantoms}
%\enddesc
\eix^^{ç›’å­//å¹»å½±ç›’å­}
\eix^^{å¹»å½±}
\enddesc

%\begindesc
%^^{boxes//empty}
%\cts null {}
%\explain
%This command produces an empty \minref{hbox}.
\begindesc
^^{ç›’å­//ç©ºç›’å­}
\cts null {}
\explain
è¿™ä¸ªå‘½ä»¤äº§ç”Ÿä¸€ä¸ªç©ºçš„ \minref{hbox}ã€‚
\example
\setbox0 = \null
ç©ºç›’å­ \null çš„å®½åº¦æ˜¯ \the\wd0ï¼Œé«˜åº¦æ˜¯ \the\ht0ï¼Œ
æ·±åº¦æ˜¯ \the\dp0ã€‚
|
\produces
\setbox0 = \null
%The null box \null has width \the\wd0, height \the\ht0,
%and depth \the\dp0.
ç©ºç›’å­ \null çš„å®½åº¦æ˜¯ \the\wd0ï¼Œé«˜åº¦æ˜¯ \the\ht0ï¼Œ
æ·±åº¦æ˜¯ \the\dp0ã€‚
\endexample
\enddesc


%==========================================================================
%\subsection {Parameters pertaining to malformed boxes}
\subsection {æœ‰å…³ç•¸å½¢ç›’å­çš„å‚æ•°}

%\begindesc
%\bix^^{boxes//overfull}
%\bix^^{boxes//underfull}
%\cts overfullrule {\param{dimen}}
%\explain
%This parameter specifies the width of the rule
%that \TeX\ appends to an overfull \minref{hbox}.
%\PlainTeX\ sets it to |5pt|.
\begindesc
\bix^^{ç›’å­//è¿‡æ»¡ç›’å­}
\bix^^{ç›’å­//æœªæ»¡ç›’å­}
\cts overfullrule {\param{dimen}}
\explain
è¿™ä¸ªå‚æ•°è®¾å®š \TeX\ é™„åŠ&nbsp;åœ¨è¿‡æ»¡\minref{æ°´å¹³ç›’å­}åŽçš„æ&nbsp;‡çº¿çš„å®½åº¦ã€‚\PlainTeX\ å°†å…¶è®¾ä¸º |5pt|ã€‚
\enddesc

\begindesc
\cts hbadness {\param{number}}
\cts vbadness {\param{number}}
\explain
%These parameters specify the thresholds of horizontal and vertical
%\minref{badness} for reporting underfull or overfull boxes.
%|\hbadness| applies to hboxes and |\vbadness| applies to vboxes.
%If the badness of a constructed box exceeds the threshold,
%\TeX\ will report an error.  If you raise the thresholds
%(the \plainTeX\ defaults are both $1000$),
%\TeX\ will be less likely to complain.
%Note that the settings of |\hbadness| and |\vbadness| have no effect on
%the appearance of your typeset document; they only affect the error
%messages that you get.
%See \knuth{page~302} for a precise description
%of how \TeX\ decides when to complain about an overfull or underfull
%box.
è¿™äº›å‚æ•°è®¾å®šäº†æŠ¥å‘Šç›’å­æœªæ»¡æˆ–è¿‡æ»¡è­¦å‘Šæ—¶çš„æ°´å¹³å’Œç«–ç›´çš„\minref{æ¶åŠ£çŠ¶æ€}çš„é˜ˆå€¼ã€‚|\hbadness| é€‚ç”¨äºŽ hboxï¼Œè€Œ |\vbadness| é€‚ç”¨äºŽ vboxã€‚å¦‚æžœä¸€ä¸ªç›’å­çš„æ¶åŠ£çŠ¶æ€è¶…è¿‡äº†é˜ˆå€¼ï¼Œ\TeX\ å°†æŠ¥å‘Šä¸€ä¸ªé”™è¯¯ã€‚å¦‚æžœä½&nbsp;æé«˜é˜ˆå€¼ï¼ˆ\plainTeX çš„é»˜è®¤å€¼æ˜¯ $1000$ï¼‰ï¼Œ\TeX\ å°†ä¸å†ç»å¸¸ç»™å‡ºè­¦å‘Šã€‚éœ€è¦æ³¨æ„çš„æ˜¯ï¼Œè®¾å®š |\hbadness| å’Œ |\vbadness| å¯¹ä½&nbsp;çš„æ–‡æ¡£æŽ’ç‰ˆç»“æžœæ²¡æœ‰å½±å“ï¼Œå®ƒä»¬åªå½±å“ä½&nbsp;èŽ·å¾—çš„é”™è¯¯ä¿¡æ¯ã€‚å‚è§ \knuth{page~302}ï¼Œä»¥èŽ·å¾— \TeX\ å¦‚ä½•ç¡®å®šåœ¨ä»€ä¹ˆæ—¶å€™å¯¹è¿‡æ»¡æˆ–æœªæ»¡ç›’å­è¿›è¡Œè­¦å‘Šçš„å‡†ç¡®æè¿°ã€‚

%\margin{The material on tolerance was inappropriate here and has been
%removed.  A new example replaces it.}
\margin{åœ¨è¿™é‡Œè®¨è®ºå®¹è®¸é‡çš„å†…å®¹æ˜¯ä¸åˆé€‚çš„ï¼Œè¢«åŽ»æŽ‰äº†ã€‚å›&nbsp;æ­¤ï¼Œé‡‡ç”¨ä¸€ä¸ªæ–°çš„ä¾‹å­å–ä»£äº†å®ƒã€‚}
\example
\hbadness = 10000 % å–æ¶ˆä»»ä½•å…³äºŽ hbadness çš„è­¦å‘Šã€‚
\hbox to 2in{a b}\par
\hbadness = 500 % å½“ hbadness è¶…è¿‡ 500 å°±ç»™å‡ºè­¦å‘Šã€‚
\hbox to 2in{a\hskip 0pt plus .5in b}
|
\logproduces
Underfull \hbox (badness 5091) detected at line 4
\tenrm a b

\hbox(6.94444+0.0)x144.54, glue set 3.70787
.\tenrm a
.\glue 0.0 plus 36.135
.\tenrm b
|
\endexample
\enddesc

\begindesc
\cts badness {}
\explain
%This command yields the numerical value of the badness of the \minref{box}
%(either horizontal or vertical) that \TeX\ has most recently produced.
%If the box was overfull, |\badness| will be $1000000$; in all other cases
%it will be between $0$ and $10000$.
è¯¥å‘½ä»¤ç»™å‡º \TeX\ åˆšåˆšäº§ç”Ÿçš„ï¼ˆæ°´å¹³çš„æˆ–ç«–ç›´çš„ï¼‰\minref{ç›’å­}çš„æ¶åŠ£çŠ¶æ€çš„æ•°å€¼ã€‚
å¦‚æžœç›’å­æ˜¯è¿‡æ»¡çš„ï¼Œ|\badness| å°†æ˜¯ $1000000$ï¼›åœ¨æ‰€æœ‰å…¶å®ƒæƒ…å†µä¸‹ï¼Œå®ƒå°†åœ¨ $0$ è‡³ $10000$ ä¹‹é—´ã€‚
\enddesc

\begindesc
\cts hfuzz {\param{dimen}}
\cts vfuzz {\param{dimen}}
\explain
%These parameters specify the amount that
%a \minref{box} can exceed its natural size before \TeX\ considers it to be
%overfull. ^^{boxes//overfull}
%|\hfuzz| applies to hboxes and |\vfuzz| applies to vboxes.
%\PlainTeX\ sets both parameters to |0.1pt|.
è¿™äº›å‚æ•°è®¾ç½®åœ¨ \TeX\ è®¤ä¸ºä¸€ä¸ªç›’å­è¿‡æ»¡ä¹‹å‰ï¼Œä¸€ä¸ª\minref{ç›’å­} èƒ½å¤Ÿè¶…å‡ºå…¶æœ¬èº«å¤§å°çš„é‡ã€‚
^^{ç›’å­//è¿‡æ»¡ç›’å­}|\hfuzz| é€‚ç”¨äºŽæ°´å¹³ç›’å­ï¼Œè€Œ |\vfuzz| é€‚ç”¨äºŽç«–ç›´ç›’å­ã€‚\PlainTeX\ å°†ä¸¤ä¸ªå‚æ•°å‡è®¾ä¸º |0.1pt|ã€‚
\example
\hfuzz = .5in
\hbox to 2in{This box is longer than two inches.}
% æ²¡æœ‰é”™è¯¯çš„ç»“æžœã€‚
|
\produces
\hfuzz = .5in
\hbox to 2in{This box is longer than two inches.}
% No error results
\doruler{\8\8\8}3{in}
\endexample

%\eix^^{boxes//overfull}
%\eix^^{boxes//underfull}
%\eix^^{box commands}
%\enddesc
\eix^^{ç›’å­//è¿‡æ»¡ç›’å­}
\eix^^{ç›’å­//æœªæ»¡ç›’å­}
\eix^^{ç›’å­å‘½ä»¤}
\enddesc

%\see |\tolerance| \ctsref{\tolerance}.
\see |\tolerance| \ctsref{\tolerance}ã€‚

%==========================================================================
%\section {Retrieving the last item from a list}
\section {ä»Žåˆ—è¡¨ä¸­èŽ·å–æœ€åŽçš„é¡¹ç›®}

%\begindesc
%^^{boxes//last box in a list}
%^^{kerns//last kern in a list}
%^^{penalties//last penalty in a list}
%^^{glue//last glue item in a list}
%\margin{This section has been moved in its entirety from the chapter
%(`Commands for general operations')}
\begindesc
^^{ç›’å­//åˆ—è¡¨ä¸­æœ€åŽä¸€ä¸ªç›’å­}
^^{ç´§æŽ’//åˆ—è¡¨ä¸­æœ€åŽä¸€ä¸ªç´§æŽ’}
^^{æƒ©ç½š//åˆ—è¡¨ä¸­æœ€åŽä¸€ä¸ªæƒ©ç½šé¡¹}
^^{ç²˜è¿ž//åˆ—è¡¨ä¸­æœ€åŽä¸€ä¸ªç²˜è¿ž}
\margin{è¿™ä¸€èŠ‚æ•´ä¸ªå„¿åœ°ä»Žï¼ˆâ€œå¸¸è§„æ“ä½œå‘½ä»¤â€ï¼‰ä¸€ç«&nbsp;ä¸­ç§»è¿‡æ¥çš„ã€‚}
\cts lastkern {}
\cts lastskip {}
\cts lastpenalty {}
\cts lastbox {}
\explain
%These control sequences yield the value of the last item on the current
%list.  They aren't true commands because they can only appear as
%part of an argument.
%If the last item on the list isn't of the indicated type,
%they yield a zero value (or an empty box, in the case of |\lastbox|).
%For example,
%if the last item on the current list is a \minref{kern},
%|\lastkern| yields the dimension of that kern; if it
%isn't a kern, it yields a dimension of $0$.
è¿™äº›æŽ§åˆ¶åºåˆ—äº§ç”Ÿä½äºŽå½“å‰åˆ—è¡¨æœ€åŽçš„é¡¹ç›®å€¼ã€‚å®ƒä»¬ä¸æ˜¯çœŸæ­£çš„å‘½ä»¤ï¼Œå›&nbsp;ä¸ºå®ƒä»¬åªèƒ½ä»¥å‚æ•°çš„ä¸€éƒ¨åˆ†å‡ºçŽ°ã€‚å¦‚æžœåˆ—è¡¨ä¸­çš„æœ€åŽçš„é¡¹ç›®ä¸æ˜¯æŒ‡ç¤ºç±»åž‹ï¼Œå®ƒä»¬å°†ç»™å‡ºé›¶å€¼ï¼ˆæˆ–è€…ç©ºç›’å­ï¼Œåœ¨ |\lastbox| çš„æƒ…å†µä¸‹ï¼‰ã€‚ä¾‹å¦‚ï¼Œå¦‚æžœåœ¨å½“å‰åˆ—è¡¨ä¸­æœ€åŽä¸€é¡¹æ˜¯ä¸€ä¸ª\minref{ç´§æŽ’}ï¼Œ|\lastkern| ç»™å‡ºé‚£ä¸ªç´§æŽ’çš„å°ºå¯¸ï¼›å¦‚æžœå®ƒä¸æ˜¯ç´§æŽ’ï¼Œå®ƒç»™å‡ºä¸€ä¸ªå°ºå¯¸ $0$ã€‚

%Using |\lastbox| has the additional effect of removing the last box from
%the list.
%If you want the original |\last!-box| to remain on the list, you
%have to add a copy of it to the list.
%|\last!-box| is not permitted in a math list or in the main
%vertical~list.
ä½¿ç”¨ |\lastbox| å…·æœ‰ä»Žåˆ—è¡¨ä¸­ç§»é™¤æœ€åŽä¸€ä¸ªç›’å­çš„é™„åŠ&nbsp;æ•ˆåº”ã€‚å¦‚æžœä½&nbsp;å¸Œæœ›åŽŸæ¥çš„ |\last!-box| ä»ä¿ç•™åœ¨åˆ—è¡¨ä¸­ï¼Œä½&nbsp;ä¸å¾—ä¸å‘åˆ—è¡¨ä¸­å¢žåŠ&nbsp;å®ƒçš„ä¸€ä¸ªæ‹·è´ã€‚|\last!-box| ä¸å…è®¸ç”¨äºŽæ•°å­¦åˆ—è¡¨æˆ–ä¸»ç«–ç›´åˆ—è¡¨ã€‚

%These control sequences are
%most useful after macro calls that might have inserted entities of
%the indicated kinds.
è¿™äº›æŽ§åˆ¶åºåˆ—åœ¨å¯èƒ½æ’å…¥æŒ‡æ&nbsp;‡ç±»åž‹çš„å®è°ƒç”¨åŽæ˜¯éžå¸¸æœ‰ç”¨çš„ã€‚

\example
\def\a{two\kern 15pt}
one \a\a\hskip 2\lastkern three\par
% åœ¨`ä¸‰'ä¹‹å‰äº§ç”Ÿä¸‰å€çš„ç´§æŽ’ã€‚
\def\a{\hbox{äºŒ}}
ä¸€ \a
\setbox0 = \lastbox % å°†`äºŒ'åŽ»æŽ‰ã€‚
ä¸‰ \box0.
|
\produces
\def\a{äºŒ\kern 15pt}
ä¸€ \a\a\hskip 2\lastkern ä¸‰\par
% get three times as much space before `three'
\def\a{\hbox{äºŒ}}
ä¸€ \a
\setbox0 = \lastbox % removes `two'
ä¸‰ \box0.
\endexample
\enddesc

\begindesc
\cts unkern {}
\cts unskip {}
\cts unpenalty {}
\explain
%If the last item on the current list is of type \minref{kern},
%\minref{glue}, or \minref{penalty} respectively, these commands remove it
%from that list.  If the item isn't of the right type, these commands have
%no effect.  Like ^|\lastbox|, you can't apply them to lists in math mode or to
%the main vertical list.
%These commands
%are most useful after a macro call that is known to have inserted
%a specific item that you don't want there.
%\TeX\ doesn't provide an ^|\unbox| command because |\lastbox| produces
%nearly the same effect.
å¦‚æžœå½“å‰åˆ—è¡¨çš„æœ€åŽä¸€é¡¹åˆ†åˆ«æ˜¯\minref{ç´§æŽ’}ã€\minref{ç²˜è¿ž}æˆ–\minref{æƒ©ç½š}çš„ç±»åž‹ï¼Œè¿™äº›å‘½ä»¤å¯ä»¥å°†å®ƒä»¬ä»Žåˆ—è¡¨ä¸­åŽ»é™¤ã€‚å¦‚æžœé¡¹ç›®ä¸æ˜¯æ­£ç¡®çš„ç±»åž‹ï¼Œè¿™äº›å‘½ä»¤å°†ä¸èµ·ä½œç”¨ã€‚ä¸Ž ^|\lastbox| ç±»ä¼¼ï¼Œä½&nbsp;ä¸èƒ½å°†å®ƒä»¬åº”ç”¨äºŽå¤„äºŽæ•°å­¦æ¨¡å¼æˆ–ä¸»ç«–ç›´åˆ—è¡¨ä¸­ã€‚åœ¨å·²çŸ¥é“ä¼šæ’å…¥ä½&nbsp;ä¸å¸Œæœ›å­˜åœ¨çš„ç‰¹å®šé¡¹ç›®çš„å®è°ƒç”¨åŽï¼Œè¿™äº›å‘½ä»¤æ˜¯éžå¸¸æœ‰ç”¨çš„ã€‚\TeX\ ä¸æä¾› ^|\unbox| å‘½ä»¤ï¼Œå›&nbsp;ä¸º |\lastbox| äº§ç”Ÿäº†è¿‘ä¹Žä¸€è‡´çš„æ•ˆæžœã€‚
\enddesc


%==========================================================================
%\section {Rules and leaders}
\section {æ&nbsp;‡çº¿ä¸ŽæŒ‡å¼•çº¿}

%\begindesc
%\bix^^{rules}
%\bix^^{horizontal rules}
%\bix^^{vertical rules}
\begindesc
\bix^^{æ&nbsp;‡çº¿}
\bix^^{æ°´å¹³æ&nbsp;‡çº¿}
\bix^^{ç«–ç›´æ&nbsp;‡çº¿}
%
\cts hrule {}
\aux\cts hrule {\bt height \&lt;dimen&gt; width \&lt;dimen&gt; depth \&lt;dimen&gt;}
\cts vrule {}
\aux\cts vrule {{\bt width \&lt;dimen&gt; height \&lt;dimen&gt; depth \&lt;dimen&gt;}}
\explain
%The |\hrule| command produces a horizontal rule; the |\vrule| command
%produces a vertical rule.  You can specify any or all of the width,
%height, and depth of the rule---\TeX\ supplies default values for those
%that you omit.  You can give the dimensions of the rule in any order;
%the forms listed above show just two of the possible combinations.  You
%can even give a dimension of a given kind more than once---if you do,
%the last one is the one that counts.
|\hrule| å‘½ä»¤ç”¨äºŽäº§ç”Ÿæ°´å¹³çš„æ&nbsp;‡çº¿ï¼›ç›¸åº”çš„ |\vrule| å‘½ä»¤ç”¨äºŽäº§ç”Ÿç«–ç›´çš„æ&nbsp;‡çº¿ã€‚
ä½&nbsp;å¯ä»¥æŒ‡å®šæ&nbsp;‡çº¿çš„å®½åº¦ã€é«˜åº¦æˆ–æ·±åº¦çš„ä»»æ„æˆ–å…¨éƒ¨ã€‚
\TeX\ ä¼šä¸ºä½&nbsp;çœç•¥çš„é‚£äº›æä¾›é»˜è®¤å€¼ã€‚ä½&nbsp;å¯ä»¥ä»¥ä»»ä½•é¡ºåºç»™å®šæ&nbsp;‡çº¿çš„å°ºå¯¸ï¼›
ä¸Šé¢ç»™å‡ºçš„å½¢å¼åªæ˜¯å¯èƒ½çš„ç»„åˆä¸­çš„ä¸¤ä¸ªã€‚
ä½&nbsp;ç”šè‡³å¯ä»¥ä¸ºä¸€ä¸ªç»™å®šç±»åž‹çš„å°ºå¯¸ç»™å‡ºå¤šä¸ªå€¼---å¦‚æžœä½&nbsp;è¿™ä¹ˆåšï¼Œèµ·ä½œç”¨çš„æ˜¯æœ€åŽä¸€ä¸ªå€¼ã€‚

%If you don't specify the width of a horizontal rule, the rule is
%extended horizontally to the boundaries of the innermost \minref{box} or
%\minref{alignment} that contains the rule.  If you don't specify the
%height of a horizontal rule, it defaults to |0.4pt|; if you don't
%specify the depth of a horizontal rule, it defaults to |0pt|.
å¦‚æžœä½&nbsp;æ²¡æœ‰è®¾å®šæ°´å¹³æ&nbsp;‡çº¿çš„å®½åº¦ï¼Œ
åˆ™æ&nbsp;‡çº¿å°†æ°´å¹³åœ°æ‰©å±•åˆ°åŒ…å«æ&nbsp;‡çº¿çš„\minref{ç›’å­}æˆ–\minref{é˜µåˆ—}çš„æœ€å†…ä¾§çš„è¾¹ç•Œã€‚
å¦‚æžœä½&nbsp;æ²¡æœ‰è®¾å®šæ°´å¹³æ&nbsp;‡çº¿çš„é«˜åº¦ï¼Œå…¶é»˜è®¤å€¼æ˜¯ |0.4pt|ï¼›
å¦‚æžœä½&nbsp;æ²¡æœ‰è®¾å®šæ°´å¹³æ&nbsp;‡çº¿çš„æ·±åº¦ï¼Œå…¶é»˜è®¤å€¼æ˜¯ |0pt|ã€‚

%If you don't specify the width of a vertical rule, it defaults to
%|0.4pt|.  If you don't specify the height or the depth of a vertical
%rule, the rule is extended to the boundary of the innermost \minref{box}
%or \minref{alignment} that contains the rule.
å¦‚æžœä½&nbsp;æ²¡æœ‰è®¾å®šç«–ç›´æ&nbsp;‡çº¿çš„å®½åº¦ï¼Œå…¶é»˜è®¤å€¼æ˜¯ |0.4pt|ï¼›
å¦‚æžœä½&nbsp;æ²¡æœ‰è®¾å®šç«–ç›´æ&nbsp;‡çº¿çš„é«˜åº¦æˆ–æ·±åº¦ï¼Œ
åˆ™æ&nbsp;‡çº¿å°†åœ°æ‰©å±•åˆ°åŒ…å«æ&nbsp;‡çº¿çš„\minref{ç›’å­}æˆ–\minref{é˜µåˆ—}çš„æœ€å†…ä¾§çš„è¾¹ç•Œã€‚

%\TeX\ treats a horizontal rule as an inherently vertical item
%and a vertical rule as an inherently horizontal item.
%Thus a horizontal rule is legal only in a \minref{vertical mode},
%while a vertical rule is legal only in a \minref{horizontal mode}.
%^^{horizontal mode//rules in}
%^^{vertical mode//rules in}
%If this seems surprising, visualize it---a horizontal rule runs
%from left to right and separates vertical items in a sequence, while
%a vertical rule runs up and down and
%separates horizontal items in a sequence.
\TeX\ ä»¥å†…åœ¨çš„ç«–ç›´é¡¹ç›®å¤„ç†æ°´å¹³æ&nbsp;‡çº¿ï¼Œè€Œä»¥å†…åœ¨çš„æ°´å¹³é¡¹ç›®å¤„ç†ç«–ç›´æ&nbsp;‡çº¿ã€‚
å›&nbsp;æ­¤ï¼Œæ°´å¹³æ&nbsp;‡çº¿åªæœ‰\minref{ç«–ç›´æ¨¡å¼}ä¸‹æ˜¯æœ‰æ•ˆçš„ï¼Œè€Œç«–ç›´æ&nbsp;‡çº¿åªåœ¨\minref{æ°´å¹³æ¨¡å¼}ä¸‹æ˜¯æœ‰æ•ˆçš„ã€‚
^^{æ°´å¹³æ¨¡å¼//æ°´å¹³æ¨¡å¼ä¸­çš„æ&nbsp;‡çº¿}
^^{ç«–ç›´æ¨¡å¼//ç«–ç›´æ¨¡å¼ä¸­çš„æ&nbsp;‡çº¿}
å¦‚æžœè§‰å¾—æ„å¤–ï¼Œå¯ä»¥ç›´è§‚åŒ–åœ°è§‚æµ‹ã€‚æ°´å¹³æ&nbsp;‡çº¿ä»Žå·¦å‘å³ç§»åŠ¨ï¼Œå¹¶ä¸”å°†ç«–ç›´çš„é¡¹ç›®æœ‰åºåœ°åˆ†å¼€ï¼Œ
è€Œç«–ç›´æ&nbsp;‡çº¿ä»Žä¸Šåˆ°ä¸‹ï¼Œå°†æ°´å¹³é¡¹ç›®æœ‰åºåœ°åˆ†å¼€ã€‚

\example
\hrule\smallskip
\hrule width 2in \smallskip
\hrule width 3in height 2pt \smallskip
\hrule width 3in depth 2pt
|
\produces
\medskip
\hrule\smallskip
\hrule width 2in \smallskip
\hrule width 3in height 2pt \smallskip
\hrule width 3in depth 2pt
\nextexample
% åœ¨è¿™é‡Œï¼Œä½&nbsp;èƒ½çœ‹åˆ°åŸºçº¿ä¸Ž \hrule çš„é«˜åº¦ä¸Žæ·±åº¦ä¹‹é—´æœ‰çš„å…³ç³»ã€‚
\leftline{
   \vbox{\hrule width .6in height 5pt depth 0pt}
   \vbox{\hrule width .6in height 0pt depth 8pt}
   \vbox{\hrule width .6in height 5pt depth 8pt}
   \vbox{\hbox{åŸºçº¿}\kern 3pt \hrule width .6in}
}
|
\produces
\medskip
\leftline{
   \vbox{\hrule width .6in height 5pt depth 0pt}
   \vbox{\hrule width .6in height 0pt depth 8pt}
   \vbox{\hrule width .6in height 5pt depth 8pt}
   \vbox{\hbox{åŸºçº¿}\kern 3pt \hrule width .6in}
}
\nextexample
\hbox{( {\vrule} {\vrule width 8pt} )}
\hbox {( {\vrule height 13pt depth 0pt}
   {\vrule height 13pt depth 7pt} x)}
% åœ†æ‹¬å·å®šä¹‰äº†ä¸¤ä¸ªè¿žç»­çš„ç›’å­çš„é«˜åº¦ä¸Žæ·±åº¦ï¼›
% è€Œ `x' ä½äºŽåŸºçº¿ä¹‹ä¸Šã€‚
|
\produces
\medskip
\hbox{( {\vrule} {\vrule width 8pt} )}
\hbox {( {\vrule height 13pt depth 0pt}
   {\vrule height 13pt depth 7pt} x)}
\endexample

%\eix^^{rules}
%\eix^^{horizontal rules}
%\eix^^{vertical rules}
%\enddesc
\eix^^{æ&nbsp;‡çº¿}
\eix^^{æ°´å¹³æ&nbsp;‡çº¿}
\eix^^{ç«–ç›´æ&nbsp;‡çº¿}
\enddesc

%\begindesc
%\bix^^{leaders}
%\easy\cts leaders {\&lt;box or rule&gt; \&lt;skip command&gt;}
%\cts cleaders {\&lt;box or rule&gt; \&lt;skip command&gt;}
%\cts xleaders {\&lt;box or rule&gt; \&lt;skip command&gt;}
%\explain
%These commands produce \minref{leaders}, i.e., they fill a
%horizontal or vertical space with
%copies of a pattern \seeconcept{leaders}.
%The \&lt;box&gt; or \&lt;rule&gt; specifies a leader,
%i.e., a single copy of the pattern,
%while the \&lt;skip command&gt; specifies a
%window to be filled with a
%row or a column of the leaders.
%The pattern is repeated as many times as will fit into the window.
%If \&lt;skip command&gt; is a horizontal skip, the window
%contains a row of leaders and \TeX\ must be in a horizontal mode;
%if \&lt;skip command&gt; is a vertical skip, the window
%contains a column of leaders and \TeX\ must be in a vertical mode.
\begindesc
\bix^^{æŒ‡å¼•çº¿}
\easy\cts leaders {\&lt;box or rule&gt; \&lt;skip command&gt;}
\cts cleaders {\&lt;box or rule&gt; \&lt;skip command&gt;}
\cts xleaders {\&lt;box or rule&gt; \&lt;skip command&gt;}
\explain
è¿™äº›å‘½ä»¤ç”¨äºŽäº§ç”Ÿ\minref{æŒ‡å¼•çº¿}ï¼Œ
ä¹Ÿå°±æ˜¯ç”¨æŸä¸€ä¸ªæ¨¡å¼\seeconcept{æŒ‡å¼•çº¿}çš„å¤æœ¬å¡«å……æ°´å¹³æˆ–ç«–ç›´çš„é—´éš”ã€‚
\&lt;box&gt; æˆ– \&lt;rule&gt; ç¡®å®šä¸€ä¸ªæŒ‡å¼•ä½“ï¼Œå³æ¨¡å¼çš„å•ä¸ªå¤æœ¬ï¼Œ
è€Œ \&lt;skip command&gt; ç¡®å®šäº†ç”¨ä¸€è¡Œæˆ–ä¸€åˆ—çš„æŒ‡å¼•ä½“å¡«å……çš„çª—ä½“ã€‚
æ¨¡å¼å°†é‡å¤å¤šæ¬¡ï¼Œç›´åˆ°å¡«å……äº†æ•´ä¸ªçª—ä½“ã€‚å¦‚æžœ \&lt;skip command&gt; æ˜¯ä¸€ä¸ªæ°´å¹³çš„é—´è·ï¼Œ
çª—ä½“ä¸­åŒ…æ‹¬çš„æ˜¯è¡Œå‘çš„æŒ‡å¼•çº¿ï¼Œ\TeX\ å¿…é¡»å¤„äºŽæ°´å¹³æ¨¡å¼ä¸‹ï¼›
å¦‚æžœ \&lt;skip command&gt; æ˜¯ä¸€ä¸ªç«–ç›´çš„é—´è·ï¼Œ
çª—ä½“ä¸­åŒ…æ‹¬çš„æ˜¯åˆ—å‘çš„æŒ‡å¼•çº¿ï¼Œ\TeX\ å¿…é¡»å¤„äºŽç«–ç›´æ¨¡å¼ä¸‹ã€‚

%The commands differ in how they arrange the repeated pattern in the space
%and where they put any leftover space:
è¿™äº›å‘½ä»¤çš„å·®å¼‚æ˜¯å®ƒä»¬åœ¨ç©ºé—´å†…å¦‚ä½•ç»„ç»‡é‡å¤çš„æ¨¡å¼ä»¥åŠåœ¨ä»€ä¹ˆåœ°æ–¹æ”¾ç½®å‰©ä½™çš„é—´è·ï¼š

%\ulist\compact
%\li For |\leaders|, \TeX\ aligns a row of leaders with the left end of
%the innermost \minref{box} $B$ that is to contain the result of the
%|\leaders| command.
%It aligns a column of leaders with the top of $B$.
%Those leaders that fall entirely within the window are retained.
%Any leftover space at the top and bottom of the window is left empty.
%\li For |\cleaders|, the leaders are centered within the window.
%\li For |\xleaders| the pattern is uniformly distributed throughout the window.
%If the leftover space is $l$ and the leader is repeated  $n$ times,
%\TeX\ puts space of width or height $l/(n+1)$ between adjacent leaders and
%at the two ends (left and right or top and bottom) of the leaders.
%\endulist
\ulist\compact
\li å¯¹äºŽ |\leaders|ï¼Œ\TeX\ å°†ä¸€è¡ŒæŒ‡å¼•çº¿ä¸ŽåŒ…å« |\leaders| è¿™ä¸€å‘½ä»¤ç»“æžœçš„æœ€å†…ä¾§çš„\minref{ç›’å­} $B$ çš„å·¦ä¾§å¯¹é½ã€‚å®ƒå°†ä¸€åˆ—æŒ‡å¼•çº¿ä¸Ž $B$ çš„é¡¶ç«¯å¯¹é½ã€‚æ•´ä¸ªè½åœ¨çª—ä½“ä¸­çš„æŒ‡å¼•çº¿å°†è¢«ä¿ç•™ã€‚ä»»ä½•åœ¨çª—ä½“é¡¶éƒ¨æˆ–åº•éƒ¨å‰©ä½™çš„é—´éš”å°†ç©ºç€ã€‚
\li å¯¹äºŽ |\cleaders|ï¼ŒæŒ‡å¼•çº¿åœ¨çª—ä½“å†…æ˜¯å±…ä¸­çš„ã€‚
\li å¯¹äºŽ |\xleaders|ï¼Œæ¨¡å¼æ˜¯å‡åŒ€åˆ†å¸ƒåœ¨çª—ä½“ä¸­çš„ã€‚å¦‚æžœå‰©ä½™ç©ºé—´æ˜¯ $l$ï¼ŒæŒ‡å¼•ä½“è¢«é‡å¤ $n$ æ¬¡ï¼Œ\TeX\ å°†åœ¨ç›¸é‚»çš„æŒ‡å¼•çº¿ä»¥åŠæŒ‡å¼•çº¿çš„ä¸¤ä¸ªç«¯ç‚¹ï¼ˆå·¦å’Œå³æˆ–è€…ä¸Šå’Œä¸‹ï¼‰ä¹‹é—´å¡«å……å®½åº¦æˆ–é«˜åº¦ä¸º $l/(n+1)$ çš„é—´éš”ã€‚
\endulist

\example
\def\pattern{\hbox to 15pt{\hfil.\hfil}}
\line{Down the Rabbit-Hole {\leaders\pattern\hfil} 1}
\line{The Pool of Tears {\leaders\pattern\hfil} 9}
\line{A Caucus-Race and a Long Tale {\cleaders\pattern
      \hfil} 19}
\line{Pig and Pepper {\xleaders\pattern\hfil} 27}
|
\produces
\def\pattern{\hbox to 15pt{\hfil.\hfil}}\par
\line{Down the Rabbit-Hole {\leaders\pattern\hfil} 1}
\line{The Pool of Tears {\leaders\pattern\hfil} 9}
\line{A Caucus-Race and a Long Tale {\cleaders\pattern
      \hfil} 19}
\line{Pig and Pepper {\xleaders\pattern\hfil} 27}
\nextexample
\def\bulletfill{\vbox to 3ex{\vfil\hbox{$\bullet$}\vfil}}%
\def\mybox{\vbox to 1in}
\def\myrule{\hrule width 4pt}\hsize=2in
\hrule \line{%
   \mybox{\myrule depth 8pt \leaders\bulletfill\vfill}
   \hfil
   \mybox{\myrule depth 15pt \leaders\bulletfill\vfill}
   \hfil
   \mybox{\myrule depth 18pt \cleaders\bulletfill\vfill}
   \hfil
   \mybox{\myrule depth 12pt \xleaders\bulletfill\vfill}%
}\hrule
|
\produces
\medskip
\def\bulletfill{\vbox to 3ex{\vfil\hbox{$\bullet$}\vfil}}%
\def\mybox{\vbox to 1in}\def\myrule{\hrule width 4pt}\hsize=2in
\hrule \line{%
   \mybox{\myrule depth 8pt \leaders\bulletfill\vfill}
   \hfil
   \mybox{\myrule depth 15pt \leaders\bulletfill\vfill}
   \hfil
   \mybox{\myrule depth 18pt \cleaders\bulletfill\vfill}
   \hfil
   \mybox{\myrule depth 12pt \xleaders\bulletfill\vfill}%
}\hrule
\endexample\enddesc

%\begindesc
%\cts dotfill {}
%\cts hrulefill {}
%\explain
%^^{fill}
%These commands respectively fill the enclosing horizontal space with
%a row of dots on the baseline and with
%a horizontal line on the baseline.
%It's usually a good idea to leave a space between
%|\dotfill| or |\hrulefill|
%and any text that precedes or follows it (see the example below).
\begindesc
\cts dotfill {}
\cts hrulefill {}
\explain
^^{å¡«å……}
è¿™äº›å‘½ä»¤åˆ†åˆ«é‡‡ç”¨ä¸€è¡Œä½äºŽåŸºçº¿ä¸Šçš„ç‚¹å’Œæ°´å¹³çº¿å¡«å……å°é—­çš„æ°´å¹³ç©ºé—´ã€‚
é€šå¸¸ï¼Œåœ¨ |\dotfill| æˆ– |\hrulefill| ä¸Žä»»ä½•å…¶ä¹‹å‰æˆ–ä¹‹åŽçš„æ–‡å­—ä¹‹é—´ç•™ä¸€ä¸ªç©ºæ&nbsp;¼æ˜¯ä¸€ä¸ªå¥½çš„ä¸»æ„ï¼ˆå‚è§ä¸‹é¢çš„ä¾‹å­ï¼‰ã€‚
\example
\hbox to 3in{å¼€å§‹ {\dotfill} ç»“æŸ}
\hbox to 3in{ç‘žå…¸è¯­ {\hrulefill} èŠ¬å…°è¯­}
|
\produces
\par\hbox to 3in{å¼€å§‹ {\dotfill} ç»“æŸ}
\hbox to 3in{ç‘žå…¸è¯­ {\hrulefill} èŠ¬å…°è¯­}
\endexample\enddesc

%\begindesc
%\cts leftarrowfill {}
%\cts rightarrowfill {}
%\explain
%^^{fill}
%These commands fill the enclosing horizontal space with
%left-pointing or right-pointing ^{arrows}.
\begindesc
\cts leftarrowfill {}
\cts rightarrowfill {}
\explain
^^{å¡«å……}
è¿™äº›å‘½ä»¤ç”¨å‘å·¦æˆ–å‘å³çš„^{ç®­å¤´}æ¥å¡«å……å°é—­çš„æ°´å¹³ç©ºé—´ã€‚
\example
\hbox to 3in{\vrule \rightarrowfill \ 3 in
             \leftarrowfill\vrule}
|
\produces
\medskip
\hbox to 3in{\vrule \rightarrowfill \ 3 in
        \leftarrowfill\vrule}
\endexample

%\eix^^{leaders}
%\enddesc
\eix^^{æŒ‡å¼•çº¿}
\enddesc

%==========================================================================
%\section {Alignments}
\section {é˜µåˆ—}

%==========================================================================
%\subsection {Tabbing alignments}
\subsection {åˆ¶è¡¨é˜µåˆ—}

%\begindesc
%\bix^^{tabbing alignments}
%\bix^^{alignments//commands for}
%%
%\ctspecial + {{\bt \&lt;text&gt;\thinspace\&amp;\thinspace\&lt;text&gt;%
%   \thinspace\&amp; $\cdots$ \\cr}}
%\ctsxrdef{@plus}
%\cts tabalign {}
%\explain
\begindesc
\bix^^{åˆ¶è¡¨é˜µåˆ—}
\bix^^{é˜µåˆ—//ç”¨äºŽé˜µåˆ—çš„å‘½ä»¤}
%
\ctspecial + {{\bt \&lt;text&gt;\thinspace\&amp;\thinspace\&lt;text&gt;%
   \thinspace\&amp; $\cdots$ \\cr}}
\ctsxrdef{@plus}
\cts tabalign {}
\explain
%These commands begin a single line in a  tabbed \minref{alignment}.
%The only difference between |\+| and |\tabalign| is that
%|\+| is an outer macro---you can't use it when \TeX\ is reading tokens at
%high speed \seeconcept{outer}.
åœ¨åˆ¶è¡¨\minref{é˜µåˆ—}ä¸­ï¼Œè¿™äº›å‘½ä»¤å¼€å§‹å•ç‹¬çš„ä¸€è¡Œã€‚
|\+| ä¸Ž |\tabalign| ä¹‹é—´å”¯ä¸€çš„ä¸åŒåœ¨äºŽ |\+| æ˜¯ä¸€ä¸ªå¤–éƒ¨å®ï¼Œ
å½“ \TeX\ é«˜é€Ÿè¯»å–è®°å·æ—¶ï¼Œä½&nbsp;ä¸èƒ½ä½¿ç”¨å®ƒ\seeconcept{å¤–éƒ¨çš„}ã€‚

%If you place an `|&amp;|' at a position
%to the right of all existing tabs in a tabbing alignment,
%the `|&amp;|' establishes a new tab at that position.
åœ¨åˆ¶è¡¨é˜µåˆ—ä¸­ï¼Œå¦‚ä½&nbsp;å°† `|&amp;|' æ”¾åœ¨æ‰€æœ‰å·²ç»å­˜åœ¨çš„åˆ¶è¡¨ç¬¦çš„å³ä¾§ï¼Œé‚£ä¹ˆ `|&amp;|' å°†åœ¨é‚£ä¸ªä½ç½®ä¸Šå»ºç«‹ä¸€ä¸ªæ–°çš„åˆ¶è¡¨ç¬¦ã€‚
\example
\cleartabs % Nullify any previous \settabs.
\+ {\bf if }$a[i] &lt; a[i+1]$ &amp;{\bf then}&amp;\cr
\+&amp;&amp;$a[i] := a[i+1]$;\cr
\+&amp;&amp;{\it found }$:=$ {\bf true};\cr
\+&amp;{\bf else}\cr
\+&amp;&amp;{\it found }$:=$ {\bf false};\cr
\+&amp;{\bf end if};\cr
|
\produces
\cleartabs % Nullify any previous \settabs.
\+ {\bf if }$a[i] &lt; a[i+1]$ &amp;{\bf then}&amp;\cr
\+&amp;&amp;$a[i] := a[i+1]$;\cr
\+&amp;&amp;{\it found }$:=$ {\bf true};\cr
\+&amp;{\bf else}\cr
\+&amp;&amp;{\it found }$:=$ {\bf false};\cr
\+&amp;{\bf end if};\cr
\endexample
\enddesc

\begindesc
\cts settabs {\&lt;number&gt; {\bt \\columns}}
\aux\cts settabs {{\bt \\+} \&lt;sample line&gt; {\bt \\cr}}
\explain
%The first form of
%this command defines a set of tab stops ^^{tabs}
%for a tabbing \minref{alignment}.
%It tells \TeX\ to set the tab stops so as to divide each line into
%\&lt;number&gt; equal parts.  \TeX\ takes the length of a line to be
%|\hsize|, as usual.  You can make the alignment narrower by decreasing
%|\hsize|.
è¿™ä¸ªå‘½ä»¤çš„ç¬¬ä¸€ç§å½¢å¼ä¸ºåˆ¶è¡¨\minref{é˜µåˆ—}å®šä¹‰ä¸€ç³»åˆ—åˆ¶è¡¨ç¬¦^^{åˆ¶è¡¨ç¬¦}çš„åœæ­¢ä½ç½®ã€‚
å®ƒå‘Šè¯‰ \TeX\ è®¾ç½®åˆ¶è¡¨ç¬¦åœæ­¢ä½ç½®ä»¥ä¾¿å°†æ¯ä¸€è¡Œåˆ†æˆ \&lt;number&gt; ç­‰ä»½ã€‚
\TeX\ ä»å°†è¡Œçš„é•¿åº¦è®¾ä¸º |\hsize|ã€‚ä½&nbsp;å¯ä»¥é€šè¿‡å‡å° |\hsize| æ¥ä½¿å¾—é˜µåˆ—æ›´åŠ&nbsp;ç´§å¯†ã€‚
%\margin{paragraph ``The tab settings $\ldots$'' moved to below.}
\margin{``åˆ¶è¡¨ç¬¦è®¾å®š $\ldots$''ä¸€æ®µè¢«ç§»åˆ°ä¸‹é¢äº†ã€‚}
\example
{\hsize = 3in \settabs 3 \columns
\+$1$&amp;ä¸€&amp;ç¬¬ä¸€\cr
\+$2$&amp;äºŒ&amp;ç¬¬äºŒ\cr
\+$3$&amp;ä¸‰&amp;ç¬¬ä¸‰\cr}
|
\produces
{\hsize = 3in \settabs 3 \columns
\+$1$&amp;ä¸€&amp;ç¬¬ä¸€\cr
\+$2$&amp;äºŒ&amp;ç¬¬äºŒ\cr
\+$3$&amp;ä¸‰&amp;ç¬¬ä¸‰\cr}

\noindent\doruler{\8\8\8}3{in}
\smallskip
\endexample

%The second form of this command defines tab stops by setting the tab stops
%at the positions indicated by the `|&amp;|'s in the sample line.
%The sample line itself does not appear in the output.  When you
%use this form you'll usually want to put material into the sample line that is
%somewhat wider than the widest corresponding material in the alignment,
%in order to produce space between the columns.
%That's what we've done in the
%example below.  The material following the last tab
%stop is irrelevant, since \TeX\ does not need to position
%anything at the place where the |\cr|~appears.
è¿™ä¸ªå‘½ä»¤çš„ç¬¬äºŒåˆ©å½¢å¼æ˜¯åˆ©ç”¨æ&nbsp;·ä¾‹è¡Œä¸­çš„ `|&amp;|' æŒ‡ç¤ºçš„ä½ç½®æ¥å®šä¹‰åˆ¶è¡¨ç¬¦åœæ­¢ä½ç½®ã€‚æ&nbsp;·ä¾‹è¡Œæœ¬èº«ä¸ä¼šå‡ºçŽ°åœ¨æœ€ç»ˆè¾“å‡ºä¸­ã€‚å½“ä½&nbsp;ä½¿ç”¨è¿™ç§å½¢å¼ï¼Œä½&nbsp;é€šå¸¸å¸Œæœ›å°†ä¸€äº›å®½åº¦å¤§äºŽéœ€è¦æŽ’åˆ—çš„æœ€å®½çš„å†…å®¹æ”¾åœ¨æ&nbsp;·ä¾‹è¡Œä¸­ï¼Œä»¥ä¾¿åœ¨åˆ—ä¹‹é—´äº§ç”Ÿé—´éš”ã€‚æ­£è±¡æˆ‘ä»¬åœ¨ä¸‹é¢çš„ä¾‹å­ä¸­æ‰€åšçš„é‚£æ&nbsp;·ã€‚æœ€åŽä¸€ä¸ªåˆ¶è¡¨ç¬¦åŽçš„å†…å®¹æ˜¯æ—&nbsp;å…³ç´§è¦çš„ï¼Œå›&nbsp;ä¸º \TeX\ åœ¨ |\cr| å‡ºçŽ°çš„åœ°æ–¹ä¸éœ€è¦ä»»ä½•ä½ç½®æŒ‡ç¤ºã€‚

%The tab settings established by |\settabs| remain in effect until
%you issue a new |\settabs| command or end a group containing
%the |\settabs| command.
%This is true for both forms of the command.
ç”± |\settabs| å»ºç«‹èµ·æ¥çš„åˆ¶è¡¨ç¬¦è®¾ç½®ä¸€ç›´æœ‰æ•ˆï¼Œç›´åˆ°ä½&nbsp;ä½¿ç”¨ä¸€ä¸ªæ–°çš„ |\settabs| å‘½ä»¤æˆ–ç»“æŸåŒ…å« |\settabs| å‘½ä»¤çš„ç¼–ç»„ã€‚è¯¥å‘½ä»¤çš„ä¸¤ç§å½¢å¼éƒ½æ˜¯è¿™æ&nbsp;·çš„ã€‚

\example
% The first line establishes the template.
\settabs \+$1$\qquad &amp; three\quad &amp; seventh\cr
\+$1$&amp;ä¸€&amp;ç¬¬ä¸€\cr
\+$2$&amp;äºŒ&amp;ç¬¬äºŒ\cr
\+$3$&amp;ä¸‰&amp;ç¬¬ä¸‰\cr
|
\produces
\settabs \+$1$\qquad &amp; three\quad &amp; seventh\cr % the sample line
\+$1$&amp;ä¸€&amp;ç¬¬ä¸€\cr
\+$2$&amp;äºŒ&amp;ç¬¬äºŒ\cr
\+$3$&amp;ä¸‰&amp;ç¬¬ä¸‰\cr
\smallskip
\endexample
\enddesc

\begindesc

\cts cleartabs {}
\explain
%This command clears all the tabs to the right of the current column.
%Its main use is in applications such as typesetting computer programs
%in which the tab positions change from line to line.
è¿™ä¸ªå‘½ä»¤æ¶ˆé™¤ä½äºŽå½“å‰åˆ—å³ä¾§çš„æ‰€æœ‰åˆ¶è¡¨ç¬¦ã€‚å®ƒä¸»è¦ç”¨äºŽæŽ’ç‰ˆè®¡ç®—æœºç¨‹åºç­‰ä¸€äº›åº”ç”¨ï¼Œåœ¨è¿™ç±»åº”ç”¨ä¸­ï¼Œä»Žä¸€è¡Œè‡³å¦ä¸€è¡Œï¼Œåˆ¶è¡¨ç¬¦çš„ä½ç½®æ˜¯å˜åŒ–çš„ã€‚
\enddesc

%\see |\cr|, |\endline|, |\crcr| (\xref \endline).
%\eix^^{tabbing alignments}
\see |\cr|ã€|\endline|ã€|\crcr|ï¼ˆ\xref \endline ï¼‰ã€‚
\eix^^{åˆ¶è¡¨é˜µåˆ—}

%==========================================================================
%\subsection {General alignments}
\subsection {å¸¸è§„é˜µåˆ—}

\begindesc
\cts halign {{\bt \rqbraces{\&lt;preamble&gt; \\cr \&lt;row&gt; \\cr $\ldots$ \&lt;row&gt; \\cr}}}
   \xrdef{@and}\xrdef{@pound}
\aux\cts halign {{\bt to \&lt;dimen&gt;%
   \rqbraces{\&lt;preamble&gt; \\cr \&lt;row&gt; \\cr $\ldots$ \&lt;row&gt; \\cr}}}
\aux\cts halign {{\bt spread \&lt;dimen&gt;%
   \rqbraces{\&lt;preamble&gt; \\cr \&lt;row&gt; \\cr $\ldots$ \&lt;row&gt; \\cr}}}
\explain
%This command produces a horizontal \minref{alignment} consisting of a
%sequence of rows, where each row in turn contains a sequence of column
%entries.  \TeX\ adjusts the widths of the column entries to accommodate
%the widest one in each column.
è¿™ä¸€å‘½ä»¤äº§ç”Ÿç”±ä¸€ç³»åˆ—è¡Œç»„æˆçš„æ°´å¹³çš„\minref{é˜µåˆ—}ï¼Œæ¯ä¸€è¡ŒåˆåŒ…æ‹¬äº†ä¸€ç³»åˆ—çš„åˆ—ã€‚\TeX\ è°ƒèŠ‚åˆ—çš„å®½åº¦ä»¥å®¹çº³æ¯ä¸€åˆ—ä¸­æœ€å®½çš„é‚£ä¸€ä¸ªæ¡ç›®ã€‚

%A horizontal alignment can only appear when \TeX\ is in a vertical
%\minref{mode}.  We recommend that you first study alignments in general
%(\xref{alignment}) before you attempt to use this command.
åªæœ‰å½“ \TeX\ ä½äºŽç«–ç›´\minref{æ¨¡å¼}ä¸‹æ°´å¹³é˜µåˆ—æ‰èƒ½å‡ºçŽ°ã€‚
æˆ‘ä»¬å»ºè®®ä½&nbsp;åœ¨ä½¿ç”¨è¯¥å‘½ä»¤ä¹‹å‰é¦–å…ˆå­¦ä¹&nbsp;ä¸€ä¸‹å¸¸è§çš„é˜µåˆ—ï¼ˆ\xref{é˜µåˆ—}ï¼‰ã€‚

%An alignment consists of a ^{preamble}
%followed by the text to be aligned. The preamble,
%which describes the layout of the rows that follow, consists of a
%sequence of column templates, separated by `|&amp;|' and ended
%by |\cr|.
é˜µåˆ—ç”±^{å¯¼è¨€}å’ŒéšåŽçš„éœ€è¦æŽ’åˆ—çš„æ–‡å­—æž„æˆã€‚å¯¼è¨€æè¿°éšåŽè¡Œçš„ç‰ˆå¼ï¼Œ
ç”±ä¸€ç³»åˆ—åˆ—çš„æ¨¡æ¿æž„æˆï¼Œåˆ—ä¹‹é—´ç”± `|&amp;|' åˆ†éš”ï¼Œç”¨ |\cr| ä½œä¸ºç»“æŸæ&nbsp;‡å¿—ã€‚
%\bix^^{template}
%\bix^^{entry (column or row)}
%Each row consists of a sequence of column
%entries, also separated by `|&amp;|' and ended by |\cr|. Within
%a template, `|#|' indicates where \TeX\ should insert the
%corresponding text of a column entry.
%In contrast, |\settabs| uses a fixed implicit template of `|#|',
%i.e., it just inserts the text as is.
\bix^^{æ¨¡æ¿}
\bix^^{æ¡ç›®ï¼ˆåœ¨è¡Œæˆ–åˆ—ä¸­ï¼‰}
æ¯ä¸€è¡Œç”±ä¸€ç³»åˆ—åˆ—çš„æ¡ç›®æž„æˆï¼Œä¹Ÿç”± `|&amp;|' åˆ†éš”ï¼Œç”¨ |\cr| ä½œä¸ºç»“æŸæ&nbsp;‡å¿—ã€‚
åœ¨æ¨¡æ¿ä¸­ï¼Œ`|#|' è¡¨ç¤º \TeX\ åº”è¯¥åœ¨ä¸€ä¸ªåˆ—æ¡ç›®ä¸­æ’å…¥ç›¸åº”æ–‡å­—çš„ä½ç½®ã€‚
ä¸Žä¹‹ç›¸åï¼Œ|\settabs| ä½¿ç”¨ `|#|' çš„å›ºå®šéšå¼æ¨¡æ¿ï¼Œå³å®ƒåªæ’å…¥æ–‡å­—æœ¬èº«ã€‚

%\TeX\ typesets each column entry in restricted horizontal mode,
%i.e., as the contents of an \minref{hbox},
%and implicitly encloses it in a group.
\TeX\ åœ¨å—é™æ°´å¹³æ¨¡å¼ä¸­å¯¹æ¯ä¸€åˆ—æ¡ç›®è¿›è¡ŒæŽ’ç‰ˆï¼Œå³åƒ \minref{hbox} çš„å†…å®¹ä¸€æ&nbsp;·ï¼Œå¹¶ä¸”éšå¼åœ°å°†å®ƒå°é—­åœ¨ä¸€ä¸ªç¼–ç»„ä¸­ã€‚

%The |to| form of this command instructs \TeX\
%to make the width of the alignment be \&lt;dimen&gt;,
%adjusting the space between columns as necessary.
%The |spread| form of this command instructs \TeX\
%to make the alignment wider by \&lt;dimen&gt; than its natural width.
%These forms are like the corresponding forms of |\hbox| \ctsref\hbox.
è¿™ä¸ªå‘½ä»¤çš„ |to| å½¢å¼æŒ‡å¯¼ \TeX\ æž„é€&nbsp;ä¸€ä¸ªå®½åº¦ä¸º \&lt;dimen&gt; çš„é˜µåˆ—ï¼Œåœ¨éœ€è¦çš„æ—¶å€™è°ƒèŠ‚åˆ—çš„é—´è·ã€‚
è¿™ä¸ªå‘½ä»¤çš„ |spread| å½¢å¼æŒ‡å¯¼ \TeX\ æž„é€&nbsp;ä¸€ä¸ªæ¯”å…¶æœ¬èº«å®½åº¦å†å®½ \&lt;dimen&gt; çš„é˜µåˆ—ã€‚
è¿™äº›å½¢å¼ä¸Ž |\hbox|\ctsref\hbox ç›¸åº”çš„å½¢å¼æ˜¯ç±»ä¼¼çš„ã€‚

%See |\tabskip| \ctsref\tabskip{} for an example using the
%|to| form.
å‚è§ |\tabskip| \ctsref\tabskip{}ä¸­ä½¿ç”¨ |to| å½¢å¼çš„ä¾‹å­ã€‚

\example
\tabskip = 1em \halign{%
   \hfil\it#\hfil&amp;\hfil#\hfil&amp;#&amp;\hfil\$#\cr
      ç¾Žå›½&amp;åŽç››é¡¿&amp;ç¾Žå…ƒ&amp;1.00\cr
      æ³•å›½&amp;å·´é»Ž&amp;æ³•æœ—&amp;0.174\cr
      ä»¥è‰²åˆ—&amp;è€¶è·¯æ’’å†·&amp;æ–°è°¢å…‹å°”&amp;0.507\cr
      æ—¥æœ¬&amp;ä¸œäº¬&amp;æ—¥å…ƒ&amp;0.0829\cr}
|
\produces
\tabskip = 1em \halign{%
   \hfil\it#\hfil&amp;\hfil#\hfil&amp;#&amp;\hfil\$#\cr
      ç¾Žå›½&amp;åŽç››é¡¿&amp;ç¾Žå…ƒ&amp;1.00\cr
      æ³•å›½&amp;å·´é»Ž&amp;æ³•æœ—&amp;0.174\cr
      ä»¥è‰²åˆ—&amp;è€¶è·¯æ’’å†·&amp;æ–°è°¢å…‹å°”&amp;0.507\cr
      æ—¥æœ¬&amp;ä¸œäº¬&amp;æ—¥å…ƒ&amp;0.0829\cr}
\endexample
\enddesc

\begindesc
{\tighten
\cts valign {{\bt \rqbraces{\&lt;preamble&gt;\\cr \&lt;column&gt;\\cr $\ldots$
   \&lt;column&gt;\\cr}}}
\aux\cts valign {{\bt to \&lt;dimen&gt;%
   \rqbraces{\&lt;preamble&gt;\\cr \&lt;column&gt;\\cr $\ldots$ \&lt;column&gt;\\cr}}}
\aux\cts valign {{\bt spread \&lt;dimen&gt;%
   \rqbraces{\&lt;preamble&gt;\\cr \&lt;column&gt;\\cr $\ldots$ \&lt;column&gt;\\cr}}}
\par}
\explain
%This command produces a vertical \minref{alignment}
%consisting of
%a sequence of columns, where each column in turn contains a sequence
%of row entries.
%\TeX\ adjusts the heights of the row entries to accommodate the tallest one
%in each row.
è¿™ä¸€å‘½ä»¤äº§ç”Ÿç”±ä¸€ç³»åˆ—åˆ—ç»„æˆçš„ç«–ç›´çš„\minref{é˜µåˆ—}ï¼Œæ¯ä¸€åˆ—åˆåŒ…æ‹¬äº†ä¸€ç³»åˆ—çš„è¡Œã€‚
\TeX\ è°ƒèŠ‚è¡Œçš„é«˜åº¦ä»¥å®¹çº³æ¯ä¸€åˆ—ä¸­æœ€é«˜çš„é‚£ä¸€ä¸ªæ¡ç›®ã€‚

%A vertical alignment
%can only appear when \TeX\ is in a horizontal \minref{mode}.
%Because vertical alignments are (a)~conceptually somewhat difficult and
%(b)~not often used, we recommend that you learn about
%alignments in general
%(\xref{alignment}) and the |\halign| command (see above) before
%you attempt to use the |\valign| command.
åªæœ‰å½“ \TeX\ ä½äºŽæ°´å¹³\minref{æ¨¡å¼}ä¸‹ç«–ç›´é˜µåˆ—æ‰èƒ½å‡ºçŽ°ã€‚
å›&nbsp;ä¸ºç«–ç›´é˜µåˆ—ï¼ˆaï¼‰åœ¨æ¦‚å¿µä¸Šæœ‰ä¸€äº›å›°éš¾ï¼Œå¹¶ä¸”ï¼ˆbï¼‰ä¸ç»å¸¸ä½¿ï¼Œ
å›&nbsp;æ­¤ï¼Œæˆ‘ä»¬å»ºè®®åœ¨ä½&nbsp;è¯•å›¾ä½¿ç”¨ |\valign| å‘½ä»¤ä¹‹å‰é¦–å…ˆå­¦ä¹&nbsp;ä¸€ä¸‹å¸¸è§çš„é˜µåˆ—ï¼ˆ\xref{é˜µåˆ—}ï¼‰%
ä»¥åŠ |\halign| å‘½ä»¤ï¼ˆå‚è§ä¸Šé¢çš„æè¿°ï¼‰ã€‚

%An alignment consists of a ^{preamble}
%followed by the text to be aligned. The preamble,
%which describes the layout of the columns that follow,
%consists of a
%sequence of row templates, separated by `|&amp;|' and ended
%by |\cr|.
é˜µåˆ—ç”±^{å¯¼è¨€}å’ŒéšåŽçš„éœ€è¦æŽ’åˆ—çš„æ–‡å­—æž„æˆã€‚å¯¼è¨€æè¿°éšåŽåˆ—çš„ç‰ˆå¼ï¼Œ
ç”±ä¸€ç³»åˆ—è¡Œçš„æ¨¡æ¿æž„æˆï¼Œåˆ—ä¹‹é—´ç”± `|&amp;|' åˆ†éš”ï¼Œç”¨ |\cr| ä½œä¸ºç»“æŸæ&nbsp;‡å¿—ã€‚
%\bix^^{template}
%Each column consists of a sequence of ^{row}
%entries, also separated by `|&amp;|' and ended by |\cr|. Within
%a template, `|#|' indicates where \TeX\ should insert the
%corresponding text of a row entry.
\bix^^{æ¨¡æ¿}
æ¯ä¸€åˆ—ç”±ä¸€ç³»åˆ—è¡Œçš„æ¡ç›®æž„æˆï¼Œä¹Ÿç”± `|&amp;|' åˆ†éš”ï¼Œç”¨ |\cr| ä½œä¸ºç»“æŸæ&nbsp;‡å¿—ã€‚
åœ¨æ¨¡æ¿ä¸­ï¼Œ`|#|' è¡¨ç¤º \TeX\ åº”è¯¥åœ¨ä¸€ä¸ªè¡Œæ¡ç›®ä¸­æ’å…¥ç›¸åº”æ–‡å­—çš„ä½ç½®ã€‚

%\TeX\ typesets each row entry in internal vertical
%mode, i.e., as the contents of a \minref{vbox},
%and implicitly encloses the entry in a group.
%It always gives the vbox zero depth.
%Any text or other horizontal mode material in a row entry then puts \TeX\
%into ordinary horizontal mode.
%(This is just an application of the general rules for \TeX's behavior
%in internal vertical mode.)
%The usual paragraphing parameters apply in this case:
%the row entry has an initial
%indentation of |\parindent| (\xref\parindent) and
%its lines have the
%|\leftskip| and |\rightskip| (\xref\leftskip) \minref{glue}
%appended to~them.
\TeX\ åœ¨å†…éƒ¨ç«–ç›´æ¨¡å¼ä¸­å¯¹æ¯ä¸€è¡Œæ¡ç›®è¿›è¡ŒæŽ’ç‰ˆï¼Œå³åƒ\minref{ç«–ç›´ç›’å­}çš„å†…å®¹ä¸€æ&nbsp;·ï¼Œ
å¹¶ä¸”éšå¼åœ°å°†å®ƒå°é—­åœ¨ä¸€ä¸ªç¼–ç»„ä¸­ã€‚å®ƒæ€»æ˜¯å°† vbox çš„æ·±åº¦è®¾ä¸ºé›¶ã€‚
éšåŽï¼Œåˆ—ä¸­çš„ä»»ä½•æ–‡å­—æˆ–å…¶å®ƒæ°´å¹³æ¨¡å¼å†…å®¹å°† \TeX\ å¸¦å›žé€šå¸¸çš„æ°´å¹³æ¨¡å¼ã€‚%
ï¼ˆè¿™åªæ˜¯åœ¨å†…éƒ¨ç«–ç›´æ¨¡å¼ä¸‹ \TeX è¡Œä¸ºå¸¸è§å‡†åˆ™çš„ä¸€ä¸ªåº”ç”¨ã€‚ï¼‰å¸¸è§çš„æ®µè½å‚æ•°é€‚ç”¨äºŽè¿™ç§æƒ…å½¢ï¼š
è¡Œæ¡ç›®å…·æœ‰ |\parindent|ï¼ˆ\xref\parindent ï¼‰çš„èµ·å§‹ç¼©è¿›ï¼Œ
è€Œä¸”å®ƒçš„æ¯ä¸€è¡Œéƒ½é™„åŠ&nbsp;äº† |\leftskip| å’Œ |\rightskip|ï¼ˆ\xref\leftskip ï¼‰\minref{ç²˜è¿ž}ã€‚

%Note in particular that a row entry containing text has
%a width of |\hsize| (\xref\hsize).  Unless you reset
%|\hsize| to the row width that you want, you're likely to
%encounter overfull \minref{hbox}es, or find that
%the first column takes up the width of the entire page, or both.
å°¤å…¶éœ€è¦æ³¨æ„çš„æ˜¯ï¼Œåˆ—æ¡ç›®åŒ…å«çš„æ–‡å­—å…·æœ‰ |\hsize|ï¼ˆ\xref\hsize ï¼‰çš„å®½åº¦ã€‚
é™¤éžä½&nbsp;é‡æ–°è®¾ç½® |\hsize| åˆ°ä½&nbsp;å¸Œæœ›å¾—åˆ°çš„è¡Œå®½ï¼Œå¦åˆ™ä½&nbsp;æ€»èƒ½é‡åˆ°è¿‡æ»¡\minref{æ°´å¹³ç›’å­}çš„æƒ…å†µï¼Œ
æˆ–è€…å‘çŽ°ç¬¬ä¸€åˆ—å&nbsp;æ®äº†æ•´é¡µçš„å®½åº¦ï¼Œæˆ–è€…ä¸¤ç§æƒ…å†µéƒ½ä¼šå‡ºçŽ°ã€‚
\eix^^{æ¡ç›®ï¼ˆåœ¨è¡Œæˆ–åˆ—ä¸­ï¼‰}

%Normally, you need to include a \minref{strut}
%^^{struts//in vertical alignments}
%in each
%template so that the rows don't come out crooked as a result
%of the varying heights of the entries in the alignment.  You
%can produce a strut with the |\strut| command.
æ­£å¸¸æƒ…å†µä¸‹ï¼Œä½&nbsp;éœ€è¦åœ¨æ¯ä¸ªæ¨¡æ¿ä¸­åŒ…æ‹¬\minref{æ”¯æž¶}^^{æ”¯æž¶//åœ¨ç«–ç›´é˜µåˆ—ä¸­}ï¼Œ
ä»¥ä¾¿è¡Œä¸ä¼šç”±äºŽé˜µåˆ—ä¸­æ¡ç›®é«˜åº¦çš„å˜åŒ–è€Œå˜å¾—å¼¯æ›²ã€‚ä½&nbsp;å¯ä»¥ä½¿ç”¨ |\strut| èŽ·å¾—æ”¯æž¶ã€‚

%The |to| form of this command instructs \TeX\
%to make the vertical extent of the alignment be \&lt;dimen&gt;,
%adjusting the space between rows as necessary.
%The |spread| form of this command instructs \TeX\
%to make the alignment taller by \&lt;dimen&gt; than its natural height.
%These forms are like the corresponding forms of |\vbox| \ctsref\vbox.
è¿™ä¸ªå‘½ä»¤çš„ |to| å½¢å¼æŒ‡å¯¼ \TeX\ æž„é€&nbsp;ä¸€ä¸ªç«–ç›´ä¼¸å±•ä¸º \&lt;dimen&gt; çš„é˜µåˆ—ï¼Œåœ¨éœ€è¦çš„æ—¶å€™è°ƒèŠ‚è¡Œçš„é—´è·ã€‚
è¿™ä¸ªå‘½ä»¤çš„ |spread| å½¢å¼æŒ‡å¯¼ \TeX\ æž„é€&nbsp;ä¸€ä¸ªæ¯”å…¶æœ¬èº«é«˜åº¦å†é«˜ \&lt;dimen&gt; çš„é˜µåˆ—ã€‚
è¿™äº›å½¢å¼ä¸Ž |\vbox| \ctsref\vbox ç›¸åº”çš„å½¢å¼æ˜¯ç±»ä¼¼çš„ã€‚

\example
{\hsize=1in \parindent=0pt
\valign{#\strut&amp;#\strut&amp;#\strut&amp;#\strut\cr
   bernaise&amp;curry&amp;hoisin&amp;hollandaise\cr
   ketchup&amp;marinara&amp;mayonnaise&amp;mustard\cr
   rarebit&amp;tartar\cr}}
|
\produces
{\hsize=1in \parindent=0pt \leftskip=0pt
\valign{#\strut&amp;#\strut&amp;#\strut&amp;#\strut\cr
   bernaise&amp;curry&amp;hoisin&amp;hollandaise\cr
   ketchup&amp;marinara&amp;mayonnaise&amp;mustard\cr
   rarebit&amp;tartar\cr}}
\nextexample
% ä¸Žä¸Šä¾‹ç›¸åŒçš„å†…å®¹ï¼Œä½†æ²¡æœ‰æ”¯æž¶
%ï¼ˆè¿™ä¸ªä¾‹å­æ˜¾ç¤ºäº†æ”¯æž¶å­˜åœ¨çš„å¿…è¦æ€§ï¼‰ã€‚
{\hsize=1in \parindent=0pt
\valign{#&amp;#&amp;#&amp;#\cr
   bernaise&amp;curry&amp;hoisin&amp;hollandaise\cr
   ketchup&amp;marinara&amp;mayonnaise&amp;mustard\cr
   rarebit&amp;tartar\cr}}
|
\produces
{\hsize=1in \parindent=0pt \leftskip=0pt
\valign{#&amp;#&amp;#&amp;#\cr
   bernaise&amp;curry&amp;hoisin&amp;hollandaise\cr
   ketchup&amp;marinara&amp;mayonnaise&amp;mustard\cr
   rarebit&amp;tartar\cr}}
\endexample
\enddesc

\begindesc
\cts ialign {}
\explain
%This command behaves just like ^|\halign|,
%except that it first sets the |\tabskip| glue to zero and
%sets |\everycr| empty.
é™¤äº†é¦–å…ˆå°† |\tabskip| ç²˜è¿žè®¾ä¸ºé›¶ï¼Œå¹¶å°† |\everycr| æ¸…ç©ºä»¥å¤–ï¼Œè¿™ä¸ªå‘½ä»¤çš„è¡Œä¸ºä¸Ž ^|\halign| ç›¸ä¼¼ã€‚
\enddesc

\begindesc
\cts cr {}
\explain
%This command ends the preamble of a horizontal or vertical
%alignment, a row of a horizontal or tabbing alignment,
%or a column of a vertical alignment.
%You can cause \TeX\ to take certain actions whenever it sees a |\cr|
%by setting the value of the ^|\everycr| parameter \ctsref\everycr.
è¿™ä¸ªå‘½ä»¤ç”¨äºŽç»“æŸæ°´å¹³æˆ–ç«–ç›´é˜µåˆ—çš„å¯¼è¨€ã€æ°´å¹³çš„æˆ–åˆ¶è¡¨é˜µåˆ—çš„è¡Œï¼Œæˆ–ç«–ç›´é˜µåˆ—çš„åˆ—ã€‚ä½&nbsp;å¯ä»¥é€šè¿‡è®¾ç½® ^|\everycr|\ctsref\everycr å‚æ•°çš„å€¼ï¼Œå¼•å¯¼ \TeX\ é‡‡å–ç‰¹å®šçš„è¡ŒåŠ¨ï¼Œæ—&nbsp;è®ºä»€ä¹ˆæ—¶å€™å®ƒé‡åˆ° |\cr|ã€‚
\enddesc

\begindesc
\cts endline {}
\explain
%This command is a synonym for the ^|\cr| command.  It is useful when
%you've redefined |\cr| but still need access to the original definition.
è¿™ä¸ªå‘½ä»¤æ˜¯ ^|\cr| çš„å¦ä¸€ç§å½¢å¼ã€‚åœ¨ä½&nbsp;é‡æ–°å®šä¹‰äº† |\cr|ï¼Œä½†è¿˜éœ€è¦åˆ©ç”¨å…¶åŽŸå§‹çš„å®šä¹‰æ˜¯ï¼Œè¿™ä¸ªå‘½ä»¤æ˜¯æœ‰ç”¨çš„ã€‚
\enddesc

\begindesc
\cts crcr {}
\explain
%This command behaves just like ^|\cr|, except that \TeX\ ignores it if
%it comes immediately after a |\cr| or a ^|\noalign|.
%Its main application is as a safety measure to avoid a misleading error
%message caused by a \minref{macro} that expects an argument ending in |\cr|.
%If you put |\crcr| after the `|#|$n$' that denotes such an argument
%in the macro's definition, the
%macro will work properly whether or not the argument ends with |\cr|.
å¦‚æžœè¯¥å‘½ä»¤ç´§éš |\cr| æˆ– ^|\noalign| ä¹‹åŽå‡ºçŽ°ï¼Œ\TeX\ ä¼šå¿½ç•¥å®ƒã€‚é™¤æ­¤ä¹‹å¤–ï¼Œå®ƒçš„è¡Œä¸ºä¸Ž ^|\cr| ç±»ä¼¼ã€‚å®ƒä¸»è¦çš„åº”ç”¨æ˜¯ä½œä¸ºä¸€ç§å®‰å…¨æŽªæ–½ä»¥é¿å…ç”±æœŸæœ›ä»¥ |\cr| ä½œä¸ºç»“æŸç¬¦çš„\minref{å®åŒ…}è€Œå¼•èµ·çš„é”™è¯¯ä¿¡æ¯ã€‚å¦‚æžœä½&nbsp;å°† |\crcr| æ”¾åœ¨ç”¨ä»¥è¡¨ç¤ºå®å®šä¹‰ä¸­æ­¤ç±»å‚æ•°çš„åŽé¢ï¼Œå®å°†æ­£å¸¸å·¥ä½œï¼Œæ—&nbsp;è®ºå…¶å‚æ•°æ˜¯å¦ä»¥ |\cr| ä½œä¸ºç»“æŸæ&nbsp;‡è®°ã€‚
\enddesc

\begindesc
\cts omit {}
\explain
%This command tells \TeX\ to ignore a template in a horizontal or vertical
%\minref{alignment} while processing a particular column or row entry
%respectively.
%|\omit| must appear as the first item in a column or row entry; in effect,
%it overrides the template from the preamble with the simple
%template `|#|'.
è¿™ä¸ªå‘½ä»¤å‘Šè¯‰ \TeX\ åœ¨å¤„ç†ç‰¹å®šçš„åˆ—æˆ–è¡Œæ¡ç›®æ—¶ï¼Œå¿½ç•¥æ°´å¹³çš„æˆ–ç«–ç›´çš„\minref{é˜µåˆ—} ä¸­çš„ä¸€ä¸ªæ¨¡æ¿ã€‚|\omit| å¿…é¡»ä»¥ç¬¬ä¸€ä¸ªé¡¹ç›®å‡ºçŽ°åœ¨åˆ—æˆ–è¡Œæ¡ç›®ä¸­ï¼Œå®ƒæœ‰æ•ˆåœ°ä½¿ç”¨ç®€å•çš„æ¨¡æ¿ `|#|' è¦†ç›–æ¥è‡ªå¯¼è¨€ä¸­çš„æ¨¡æ¿ã€‚

\example
\tabskip = 2em\halign{%
   \hfil\it#\hfil&amp;\hfil#\hfil&amp;#&amp;\hfil\$#\cr
   ç¾Žå›½&amp;åŽç››é¡¿&amp;ç¾Žå…ƒ&amp;1.00\cr
   \omit \dotfill æ³•å›½\dotfill&amp;å·´é»Ž&amp;æ³•æœ—&amp;0.174\cr
   ä»¥è‰²åˆ—&amp;è€¶è·¯æ’’å†·&amp;æ–°è°¢å…‹å°”&amp;0.507\cr
   æ—¥æœ¬&amp;ä¸œäº¬&amp;æ—¥å…ƒ&amp;0.0829\cr}

|
\produces
\tabskip = 2em\halign{%
   \hfil\it#\hfil&amp;\hfil#\hfil&amp;#&amp;\hfil\$#\cr
   ç¾Žå›½&amp;åŽç››é¡¿&amp;ç¾Žå…ƒ&amp;1.00\cr
   \omit \dotfill æ³•å›½\dotfill&amp;å·´é»Ž&amp;æ³•æœ—&amp;0.174\cr
   ä»¥è‰²åˆ—&amp;è€¶è·¯æ’’å†·&amp;æ–°è°¢å…‹å°”&amp;0.507\cr
   æ—¥æœ¬&amp;ä¸œäº¬&amp;æ—¥å…ƒ&amp;0.0829\cr}
\nextexample
{\hsize=1.2in \parindent=0pt
\valign{(#)\strut&amp;(#)\strut&amp;(#)\strut&amp;(#)\strut\cr
   bernaise&amp;curry&amp;hoisin&amp;hollandaise\cr
   ketchup&amp;\omit\strut{\bf MARINARA!!}&amp;mayonnaise&amp;mustard\cr
   rarebit&amp;tartar\cr}}
|
\produces
{\hsize=1.2in \parindent=0pt \leftskip=0pt
\valign{(#)\strut&amp;(#)\strut&amp;(#)\strut&amp;(#)\strut\cr
   bernaise&amp;curry&amp;hoisin&amp;hollandaise\cr
   ketchup&amp;\omit\strut{\bf MARINARA!}&amp;mayonnaise&amp;mustard\cr
   rarebit&amp;tartar\cr}}
\endexample
\enddesc

\begindesc
\cts span {}
\explain
%The meaning of this command depends on whether it appears in a preamble
%or in an alignment entry.
%\ulist
%\li Normally, \TeX\ does not expand tokens in the preamble
%when it reads them.
%Putting |\span| in front of a token in the preamble causes
%that token to be expanded immediately according to \TeX's usual rules
%of \minref{macro} expansion.
%\li Putting |\span| instead of `|&amp;|' between two column or row entries
%causes those columns or rows to be combined.
%For a horizontal alignment,
%the width of the combined column is the sum of the
%widths of the component columns.
%For a vertical alignment,
%the height of the combined row is the sum of the
%heights of the component rows.
%The template of the combined column or combined row forms a single group,
%so font-setting commands preceding a |\span| affect everything up to
%the next `|&amp;|'.
%\endulist
%\noindent
%|\span| is rarely useful by itself outside of a template,
%but it provides the basic mechanism
%for defining ^|\multispan|.
è¿™ä¸ªå‘½ä»¤çš„æ„ä¹‰å–å†³äºŽå®ƒå‡ºçŽ°åœ¨å¯¼è¨€ä¸­ï¼Œè¿˜æ˜¯åœ¨é˜µåˆ—æ¡ç›®ä¸­ã€‚
\ulist
\li é€šå¸¸ï¼Œ\TeX\ å¹¶ä¸æ‰©å±•å®ƒè¯»å…¥çš„å¯¼è¨€ä¸­çš„è®°å·ã€‚å°† |\span| æ”¾åœ¨å¯¼è¨€ä¸­è®°å·çš„å‰é¢ï¼Œæ&nbsp;¹æ®\minref{å®}æ‰©å±•çš„ \TeX å¸¸ç”¨è§„åˆ™ï¼Œä¼šå¯¼è‡´è¿™äº›è®°å·ç«‹å³å¾—åˆ°æ‰©å±•ã€‚
\li ç”¨ |\span| å–ä»£ `|&amp;|'ï¼Œæ”¾åœ¨ä¸¤åˆ—æˆ–ä¸¤è¡Œæ¡ç›®ä¹‹å‰ï¼Œä¼šå¯¼è‡´è¿™äº›åˆ—æˆ–è¡Œåˆå¹¶åˆ°ä¸€èµ·ã€‚å¯¹äºŽæ°´å¹³é˜µåˆ—ï¼Œåˆå¹¶çš„åˆ—çš„å®½åº¦æ˜¯åˆ—æˆå‘˜å®½åº¦ä¹‹å’Œã€‚å¯¹äºŽç«–ç›´é˜µåˆ—ï¼Œåˆå¹¶çš„è¡Œçš„é«˜åº¦æ˜¯è¡Œæˆå‘˜é«˜åº¦ä¹‹å’Œã€‚åˆå¹¶çš„è¡Œæˆ–åˆå¹¶çš„åˆ—çš„æ¨¡æ¿å½¢æˆä¸€ä¸ªç¼–ç»„ï¼Œå›&nbsp;æ­¤ï¼Œåœ¨ |\span| å‰çš„å­—ä½“è®¾ç½®å‘½ä»¤å½±å“ä¸‹ä¸€ä¸ª `|&amp;|' å‰çš„ä¸€åˆ‡ã€‚
\endulist
\noindent
|\span| å¾ˆå°‘å•ç‹¬ç”¨åœ¨æ¨¡æ¿ä¹‹å¤–ï¼Œä½†å®ƒä¸ºå®šä¹‰ ^|\multispan| æä¾›äº†åŸºæœ¬çš„æœºåˆ¶ã€‚
\enddesc

\begindesc
\cts multispan {\&lt;number&gt;}
\explain
%This command tells \TeX\ that the following
%\&lt;number&gt; columns in a row of a horizontal alignment,
%or
%\&lt;number&gt; rows in a column of a vertical alignment,
%should be combined into a single column or row (as with
%|\span|) and that their templates should be omitted (as with |\omit|).
è¯¥å‘½ä»¤å‘Šè¯‰ \TeX ï¼ŒéšåŽæ°´å¹³é˜µåˆ—çš„è¡Œä¸­çš„ \&lt;number&gt; åˆ—æˆ–ç«–ç›´é˜µåˆ—çš„åˆ—ä¸­çš„ \&lt;number&gt; è¡Œåº”è¯¥åˆå¹¶æˆä¸€ä¸ªå•ç‹¬çš„åˆ—æˆ–è¡Œï¼ˆå°±åƒ |\span| é‚£æ&nbsp;·ï¼‰ï¼Œå¹¶ä¸”å®ƒä»¬çš„æ¨¡æ¿åº”è¯¥è¢«å¿½ç•¥ï¼ˆå°±åƒ |\omit| é‚£æ&nbsp;·ï¼‰ã€‚

\example
\tabskip = 13pt\halign{%
   \hfil\it#\hfil&amp;\hfil#\hfil&amp;#&amp;\hfil\$#\cr
   ç¾Žå›½&amp;åŽç››é¡¿&amp;ç¾Žå…ƒ&amp;1.00\cr
   æ³•å›½&amp;å·´é»Ž&amp;æ³•æœ—&amp;0.174\cr
   ä»¥è‰²åˆ—&amp;è€¶è·¯æ’’å†·&amp;
   \multispan 2 \hfil\it(æ—&nbsp;ä¿¡æ¯)\hfil \cr
   æ—¥æœ¬&amp;ä¸œäº¬&amp;æ—¥å…ƒ&amp;0.0829\cr}
|
\produces
\tabskip = 13pt\halign{%
   \hfil\it#\hfil&amp;\hfil#\hfil&amp;#&amp;\hfil\$#\cr
   ç¾Žå›½&amp;åŽç››é¡¿&amp;ç¾Žå…ƒ&amp;1.00\cr
   æ³•å›½&amp;å·´é»Ž&amp;æ³•æœ—&amp;0.174\cr
   ä»¥è‰²åˆ—&amp;è€¶è·¯æ’’å†·&amp;
   \multispan 2 \hfil\it(æ—&nbsp;ä¿¡æ¯)\hfil \cr
   æ—¥æœ¬&amp;ä¸œäº¬&amp;æ—¥å…ƒ&amp;0.0829\cr}
\nextexample
{\hsize=1.2in \parindent=0pt
\valign{(#)\strut&amp;(#)\strut&amp;(#)\strut&amp;(#)\strut\cr
   bernaise&amp;curry&amp;hoisin&amp;hollandaise\cr
   \multispan 3$$\left\{{{\rm ketchup}\atop{\rm marinara}}
      \right\}$$&amp;mustard\cr
   rarebit&amp;tartar\cr}}
|
\produces
{\hsize=1.2in \parindent=0pt \leftskip=0pt
\valign{(#)\strut&amp;(#)\strut&amp;(#)\strut&amp;(#)\strut\cr
   bernaise&amp;curry&amp;hoisin&amp;hollandaise\cr
   \multispan 3$$\left\{{{\rm ketchup}\atop{\rm marinara}}
      \right\}$$&amp;mustard\cr
   rarebit&amp;tartar\cr}}
\endexample

%\eix^^{template}
%\enddesc
\eix^^{æ¨¡æ¿}
\enddesc

\begindesc
\cts noalign {\rqbraces{\&lt;vertical mode material&gt;}}
\aux\cts noalign {\rqbraces{\&lt;horizontal mode material&gt;}}
\explain
%This command inserts
%\&lt;vertical mode material&gt;
%after the current row of a horizontal \minref{alignment} or
%\&lt;horizontal mode material&gt; after the current column of a vertical
%\minref{alignment}.
%The material can be text, glue, a rule, or anything else.
è¯¥å‘½ä»¤åœ¨æ°´å¹³\minref{é˜µåˆ—}çš„å½“å‰è¡Œä¹‹åŽæ’å…¥ \&lt;vertical mode material&gt;ï¼Œæˆ–è€…åœ¨ç«–ç›´\minref{é˜µåˆ—}çš„å½“å‰åˆ—ä¹‹åŽæ’å…¥ \&lt;horizontal mode material&gt;ã€‚æ’å…¥çš„å†…å®¹å¯ä»¥æ˜¯æ–‡æœ¬ã€ç²˜è¿žã€æ&nbsp;‡çº¿ï¼Œæˆ–è€…å…¶å®ƒä»»ä½•ä¸œè¥¿ã€‚

%The most common use of |\noalign|
%is to put extra space after a row or column.
%If you want to put extra space after \emph{every\/} row of a horizontal
%alignment, use ^|\openup| (\xref\openup).
|\noalign| æœ€å¸¸è§çš„ç”¨é€”æ˜¯åœ¨ä¸€è¡Œæˆ–åˆ—åŽæ’å…¥é¢å¤–çš„é—´éš”ã€‚å¦‚æžœä½&nbsp;å¸Œæœ›åœ¨æ°´å¹³é˜µåˆ—çš„\emph{æ¯}è¡ŒåŽéƒ½æ’å…¥é¢å¤–çš„é—´éš”ï¼Œå¯ä»¥ä½¿ç”¨ ^|\openup|ï¼ˆ\xref\openupï¼‰ã€‚

\example
\halign{%
   \hfil\it#\hfil\tabskip=2em&amp;\hfil#\hfil&amp;#&amp;
      \hfil\$#\tabskip=0em\cr
   % æ”¹å˜ \tabskip å°†é˜»æ­¢ä¸‹é¢çš„æ&nbsp;‡çº¿çªå‡ºæ¥ã€‚
   ç¾Žå›½&amp;åŽç››é¡¿&amp;ç¾Žå…ƒ&amp;1.00\cr
   æ³•å›½&amp;å·´é»Ž&amp;æ³•æœ—&amp;0.174\cr
   \noalign{\smallskip\hrule\smallskip}
   ä»¥è‰²åˆ—&amp;è€¶è·¯æ’’å†·&amp;æ–°è°¢å…‹å°”&amp;0.507\cr
   æ—¥æœ¬&amp;ä¸œäº¬&amp;æ—¥å…ƒ&amp;0.0829\cr}
|
\produces
\halign{%
   \hfil\it#\hfil\tabskip=2em&amp;\hfil#\hfil&amp;#&amp;
      \hfil\$#\tabskip=0em\cr
   % The \tabskip changes prevent the rule below
   % from sticking out.
   ç¾Žå›½&amp;åŽç››é¡¿&amp;ç¾Žå…ƒ&amp;1.00\cr
   æ³•å›½&amp;å·´é»Ž&amp;æ³•æœ—&amp;0.174\cr
   \noalign{\smallskip\hrule\smallskip}
   ä»¥è‰²åˆ—&amp;è€¶è·¯æ’’å†·&amp;æ–°è°¢å…‹å°”&amp;0.507\cr
   æ—¥æœ¬&amp;ä¸œäº¬&amp;æ—¥å…ƒ&amp;0.0829\cr}
\nextexample
{\hsize=1in \parindent=0pt
\valign{#\strut&amp;#\strut&amp;#\strut&amp;#\strut\cr
   \noalign{\vrule width 2pt\quad}
   bernaise&amp;curry&amp;hoisin&amp;hollandaise\cr
   \noalign{\vrule width 2pt\quad}
   ketchup&amp;marinara&amp;mayonnaise&amp;mustard\cr
   \noalign{\vrule width 2pt\quad}
   rarebit&amp;tartar\cr
   \noalign{\vrule width 2pt\quad}}}
|
\produces
\medskip
{\hsize=1in \parindent=0pt
\valign{#\strut&amp;#\strut&amp;#\strut&amp;#\strut\cr
   \noalign{\vrule width 2pt\quad}
   bernaise&amp;curry&amp;hoisin&amp;hollandaise\cr
   \noalign{\vrule width 2pt\quad}
   ketchup&amp;marinara&amp;mayonnaise&amp;mustard\cr
   \noalign{\vrule width 2pt\quad}
   rarebit&amp;tartar\cr
   \noalign{\vrule width 2pt\quad}}}
\endexample
\enddesc

\begindesc
\cts tabskip {\param{glue}}
\explain
%This parameter specifies the amount of horizontal or vertical glue
%that \TeX\ puts between the
%columns of a horizontal alignment or between the
%rows of a vertical alignment.
%\TeX\ also puts the |\tabskip| glue
%to the left of the first column and to the right of the last column
%of a horizontal alignment, and
%above the first row
%and below the last row of a vertical alignment.
%You can change |\tabskip| within a template---%
%the change will affect the glue associated with all the following
%|&amp;|'s as well as the glue after the last row or column.
è¯¥å‚æ•°æŒ‡å®š \TeX åœ¨æ°´å¹³é˜µåˆ—çš„åˆ—ä¹‹é—´æˆ–ç«–ç›´é˜µåˆ—çš„è¡Œä¹‹é—´æ”¾ç½®æ°´å¹³æˆ–ç«–ç›´ç²˜è¿žçš„é‡ã€‚\TeX\ ä¹Ÿåœ¨æ°´å¹³é˜µåˆ—çš„ç¬¬ä¸€åˆ—çš„å·¦ä¾§å’Œæœ€åŽä¸€è¡Œçš„å³ä¾§ï¼Œä»¥åŠç«–ç›´é˜µåˆ—çš„ç¬¬ä¸€è¡Œçš„ä¸Šç«¯å’Œæœ€åŽä¸€è¡Œçš„ä¸‹ç«¯æ”¾ç½® |\tabskip| ç²˜è¿žã€‚ä½&nbsp;å¯ä»¥åœ¨æ¨¡æ¿ä¸­æ”¹å˜ |\tabskip|---è¿™ä¸€æ”¹å˜å°†å½±å“æ‰€æœ‰ç´§æŽ¥å…¶åŽçš„ |&amp;| çš„ç²˜è¿žä»¥åŠæœ€åŽä¸€è¡Œæˆ–åˆ—ä¹‹åŽçš„ç²˜è¿žã€‚
\example
\halign to 3.5in{%
   \hfil\it#\tabskip = 2em plus 8pt
      \hfil&amp;\hfil#\hfil&amp;#\tabskip = 1em
      &amp;\hfil\$#\tabskip = 0em\cr
      ç¾Žå›½&amp;åŽç››é¡¿&amp;ç¾Žå…ƒ&amp;1.00\cr
      æ³•å›½&amp;å·´é»Ž&amp;æ³•æœ—&amp;0.174\cr
      ä»¥è‰²åˆ—&amp;è€¶è·¯æ’’å†·&amp;æ–°è°¢å…‹å°”&amp;0.507\cr
      æ—¥æœ¬&amp;ä¸œäº¬&amp;æ—¥å…ƒ&amp;0.0829\cr}
|
\produces
\halign to 3.5in{%
   \hfil\it#\tabskip = 2em plus 8pt
      \hfil&amp;\hfil#\hfil&amp;#\tabskip = 1em
      &amp;\hfil\$#\tabskip = 0em\cr
      ç¾Žå›½&amp;åŽç››é¡¿&amp;ç¾Žå…ƒ&amp;1.00\cr
      æ³•å›½&amp;å·´é»Ž&amp;æ³•æœ—&amp;0.174\cr
      ä»¥è‰²åˆ—&amp;è€¶è·¯æ’’å†·&amp;æ–°è°¢å…‹å°”&amp;0.507\cr
      æ—¥æœ¬&amp;ä¸œäº¬&amp;æ—¥å…ƒ&amp;0.0829\cr}
\nextexample
{\hsize = 1in \parindent=0pt \tabskip=5pt
\valign{#\strut&amp;#\strut\tabskip = 3pt
   &amp;#\strut&amp;#\strut\cr
   bernaise&amp;curry&amp;hoisin&amp;hollandaise\cr
   ketchup&amp;marinara&amp;mayonnaise&amp;mustard\cr
   rarebit&amp;tartar\cr}}
|
\produces
{\hsize = 1in \parindent=0pt \tabskip=5pt
\valign{#\strut&amp;#\strut\tabskip = 3pt
   &amp;#\strut&amp;#\strut\cr
   bernaise&amp;curry&amp;hoisin&amp;hollandaise\cr
   ketchup&amp;marinara&amp;mayonnaise&amp;mustard\cr
   rarebit&amp;tartar\cr}}
\endexample
\enddesc

\begindesc
\cts hidewidth {}
\explain
%This command tells \TeX\ to ignore the width of the next column entry in a
%horizontal alignment.  It's useful when you have an entry that is longer
%than most of the others in the same column,
%and you'd rather have that entry stick out of the column than
%make all the entries
%in the column wider.  If the |\hidewidth| is at the left of the
%entry, the entry sticks out to the left; if the |\hidewidth| is at the
%right of the entry, the entry sticks out to the~right.
è¯¥å‘½ä»¤å‘Šè¯‰ \TeX\ å¿½ç•¥æ°´å¹³é˜µåˆ—ä¸­ä¸‹ä¸€ä¸ªåˆ—æ¡ç›®çš„å®½åº¦ã€‚å¦‚æžœä½&nbsp;æœ‰ä¸€ä¸ªæ¡ç›®é•¿äºŽåŒä¸€åˆ—ä¸­å…¶å®ƒå¤§å¤šæ•°ï¼Œå¹¶ä¸” ï¼Œä½&nbsp;å¸Œæœ›æ¡ç›®ä¼¸åˆ°åˆ—å¤–ï¼Œè€Œä¸æ˜¯ä½¿å¾—è¯¥æ¡ç›®æ‰€åœ¨åˆ—å˜å¾—æ›´å®½æ—¶ï¼Œè¯¥å‘½ä»¤æ˜¯æœ‰ç”¨çš„ã€‚å¦‚æžœ |\hidewidth| åœ¨æ¡ç›®çš„å·¦ä¾§ï¼Œåˆ™æ¡ç›®å‘å·¦ä¼¸å±•ï¼›å¦‚æžœ |\hidewidth| åœ¨æ¡ç›®çš„å³ä¾§ï¼Œåˆ™æ¡ç›®å‘å³ä¼¸å±•ã€‚
\example
\tabskip = 25pt\halign{%
   \hfil\it#\hfil&amp;\hfil#\hfil&amp;#&amp;\hfil\$#\cr
   ç¾Žå›½&amp;\hidewidth åŽç››é¡¿&amp;ç¾Žå…ƒ&amp;1.00\cr
   æ³•å›½&amp;å·´é»Ž&amp;æ³•æœ—&amp;0.174\cr
   ä»¥è‰²åˆ—&amp;è€¶è·¯æ’’å†·&amp;æ–°è°¢å…‹å°”&amp;0.507\cr
   æ—¥æœ¬&amp;ä¸œäº¬&amp;æ—¥å…ƒ&amp;0.0829\cr}
|
\produces
\tabskip = 25pt\halign{%
   \hfil\it#\hfil&amp;\hfil#\hfil&amp;#&amp;\hfil\$#\cr
   ç¾Žå›½&amp;\hidewidth åŽç››é¡¿&amp;ç¾Žå…ƒ&amp;1.00\cr
   æ³•å›½&amp;å·´é»Ž&amp;æ³•æœ—&amp;0.174\cr
   ä»¥è‰²åˆ—&amp;è€¶è·¯æ’’å†·&amp;æ–°è°¢å…‹å°”&amp;0.507\cr
   æ—¥æœ¬&amp;ä¸œäº¬&amp;æ—¥å…ƒ&amp;0.0829\cr}
\endexample
\enddesc

\begindesc
\cts everycr {\param{token list}}
\explain
%\TeX\ expands \&lt;token list&gt; whenever it executes
%a |\cr|---at the end of every preamble,
%at the end of every row of a horizontal alignment,
%and at the end of every column of a vertical alignment.
%The |\everycr| commands are expanded just after the |\cr|.
%Thus you can cause \TeX\ to
%execute certain commands at the end of a preamble, row, or column by
%assigning a list of those commands to |\everycr|.
æ—&nbsp;è®ºä»€ä¹ˆæ—¶å€™ï¼Œå½“ \TeX\ é‡åˆ°å¤„äºŽæ¯ä¸ªå¯¼è¨€ç»“å°¾å¤„ã€æ°´å¹³é˜µåˆ—çš„æ¯è¡Œç»“å°¾å¤„ä»¥åŠç«–ç›´é˜µåˆ—çš„æ¯åˆ—ç»“å°¾å¤„çš„|\cr| æ—¶ï¼Œå®ƒæ‰©å±• \&lt;token list&gt;ã€‚|\everycr| åªåœ¨ |\cr| åŽæ‰©å±•ã€‚å›&nbsp;æ­¤ï¼Œä½&nbsp;å¯ä»¥é€šè¿‡å‘ |\everycr| èµ‹ä¸Žå¯¼è¨€ã€è¡Œã€åˆ—ç›¸å…³åˆ—è¡¨ï¼Œå¼•å¯¼ \TeX\ åœ¨å¯¼è¨€ã€è¡Œæˆ–åˆ—çš„ç»“å°¾å¤„æ‰§è¡Œç‰¹å®šçš„å‘½ä»¤ã€‚

%The |\everycr| tokens shouldn't include any commands other than |\no!-align|.
%That's because
%the |\everycr| tokens will reappear after the last
%|\cr| of the alignment. A command other than
%|\noalign| will then make \TeX\ think that it's starting a new
%row or column.
%\TeX\ will complain about a missing |\cr|, insert
%a |\cr|, insert the |\everycr| tokens again, and repeat these actions
%indefinitely.
|\everycr| çš„è®°å·ä¸åº”è¯¥åŒ…æ‹¬ |\no!-align| ä»¥å¤–çš„ä»»ä½•å‘½ä»¤ã€‚è¿™æ˜¯å›&nbsp;ä¸ºï¼Œ|\everycr| è®°å·ä¼šå‡ºçŽ°åœ¨é˜µåˆ—çš„æœ€åŽä¸€ä¸ª |\cr|ã€‚ä»»ä½•ä¸€ä¸ªéž |\no!-align| å‘½ä»¤ä¼šå¯¼è‡´ \TeX\ è®¤ä¸ºå®ƒæ–°å¼€äº†ä¸€è¡Œæˆ–ä¸€åˆ—ï¼Œå›&nbsp;æ­¤ï¼Œ\TeX\ ä¼šæŠ¥æ€¨ä¸¢å¤±äº† |\cr|ï¼Œæ’å…¥ |\cr|ï¼Œå†æ¬¡æ’å…¥ |\everycr| è®°å·ï¼Œå¹¶ä¸”æ—&nbsp;é™åœ°é‡å¤è¿™äº›åŠ¨ä½œã€‚

\example
\everycr={\noalign{\smallskip\hrule\smallskip}}
\halign{#\tabskip = 11pt&amp;\hfil#\hfil&amp;\hfil#\hfil
      \tabskip = 0pt\cr
   $1$&amp;ä¸€&amp;ç¬¬ä¸€\cr
   $2$&amp;äºŒ&amp;ç¬¬äºŒ\cr
   $3$&amp;ä¸‰&amp;ç¬¬ä¸‰\cr}
|
\produces
\medskip
\everycr={\noalign{\smallskip\hrule\smallskip}}
\halign{#\tabskip = 11pt&amp;\hfil#\hfil&amp;\hfil#\hfil
      \tabskip = 0pt\cr
   $1$&amp;ä¸€&amp;ç¬¬ä¸€\cr
   $2$&amp;äºŒ&amp;ç¬¬äºŒ\cr
   $3$&amp;ä¸‰&amp;ç¬¬ä¸‰\cr}
\endexample

%\eix^^{alignments//commands for}
%\enddesc
\eix^^{é˜µåˆ—//ç”¨äºŽé˜µåˆ—çš„å‘½ä»¤}
\enddesc

\enddescriptions

\ifoldeplain\else\ifcompletebook\else
\vskip4em{\sectionfonts\leftline{æœ¬ç«&nbsp;ç´¢å¼•}}
\readindexfile{i}
\fi\fi

\endchapter
\byebye
</pre></body></html>