格式化 Eplain 目录条目

格式化 Eplain 目录条目

我需要定义一个宏来格式化表格列表中的条目:

\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一定要在闭团前去。

在此处输入图片描述

相关内容