我需要定义一个宏来格式化表格列表中的条目:
\def\toctableentry#1#2#3{...}
其中第一个参数是表格标题,第二个参数是表格编号,第三个参数是页码。
我正在使用eplain
目录宏来处理构建列表,但每个条目的格式需要如下
1.4 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis
porttitor, ligula quis accumsan scelerisque, lacus nisi congue
dolor, at pulvinar urna augue sodales leo. Vivamus pretium
egestas sem in lacinia. . . . . . . . . . . . . . . . . . . . . 12
我知道如何使领导者填充发挥作用,但我需要左对齐才能发挥作用。
我目前的情况是这样的
\def\toctableentry#1#2#3{#2 #1\leaderfill #3\par}
适当\leaderfill
定义。这产生
1.4 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis
porttitor, ligula quis accumsan scelerisque, lacus nisi congue dolor,
at pulvinar urna augue sodales leo. Vivamus pretium egestas sem in
lacinia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
我怀疑解决方案与显示器有关,但我还不知道如何使其工作。
编辑
这是一个快速拼凑的示例文件。感兴趣的代码是\toctableentry
宏。
\input eplain
\def\leaderfill{\leaders\hbox to 1em{\hss.\hss}\hfill}
\def\toctableentry#1#2#3{\noindent{#2 #1\leaderfill #3}\par}
\newcount\tablenum
\tablenum0\relax
\def\table#1#2{
\advance\tablenum 1\relax
\xdef\tableref{\the\tablenum}
\writenumberedtocentry{table}{#2}{\tableref}
\hfil\vbox{
\hsize=0.75\hsize
\centerline{\box#1}
\noindent Table~\the\tablenum: #2
}\hfil
}
\readtocfile
\vskip1in
\newbox\tablebox
\setbox\tablebox=%
\vbox{
\offinterlineskip
\hrule
\halign{
&\vrule#&\strut\quad\hfil#\quad\cr
height2pt&\omit&&\omit&\cr
&Year\hfil&&World Population&\cr
height2pt&\omit&&\omit&\cr
\noalign{\hrule}
height2pt&\omit&&\omit&\cr
&8000 B.C.&&5,000,000&\cr
&50 A.D.&&200,000,000&\cr
&1650 A.D.&&500,000,000&\cr
&1850 A.D.&&1,000,000,000&\cr
&1945 A.D.&&2,300,000,000&\cr
&1980 A.D.&&4,400,000,000&\cr
height2pt&\omit&&\omit&\cr
}
\hrule
}
\table{\tablebox}{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duisporttitor, ligula quis accumsan scelerisque, lacus nisi congue dolor,at pulvinar urna augue sodales leo.}
\bye
答案1
你可能想要类似的东西
\def\toctableentry#1#2#3{%
\noindent
\begingroup
\leftskip=2em
\rightskip=2em plus 12em % ragged right
\parfillskip=-2em % remove the rightskip
\llap{\hbox to\leftskip{#2\hfil}}#1\leaderfill #3\par
\endgroup}
注意,\par
一定要在闭团前去。