我需要手动创建类似于目录的内容。为此,我需要点引线从“章节”的文本转到此“章节”的页码。我尝试使用\dotfill
、\leaders
或\cleaders
来\xleaders
实现它。
我得到\dotfill
了这个:
我想将所有点引线对齐到与指向 3 位数字 (130) 的“最短”引线行相同的点。在图像上,您可以看到这些引线根据以下情况对齐到不同的点:
- 该行末尾有多少位数字
- 即使行末的数字相同,文本的长度也要高于前导符
\dotfill
通过将 替换为,第二个问题似乎会有所改善\leaders
,但它仍然存在(除非只是我的眼睛在捉弄我),但使用\leaders
并不能解决第一个问题:
我想我可以通过使用类似的东西来实现完美的对齐tabular
,但如果可能的话,我想保持简单,而不需要处理表格。
以下是 MWE 展示的我目前尝试过的所有内容,其中带注释的\mypara
定义是我测试过的替代方案:
\documentclass{book}
\newcommand\myleaders{\leavevmode\kern3pt\leaders\hbox{.}\hfill\kern6pt}
\newcommand\mycleaders{\leavevmode\kern3pt\cleaders\hbox{.}\hfill\kern6pt}
\newcommand\myxleaders{\leavevmode\kern3pt\xleaders\hbox{.}\hfill\kern6pt}
% \def \mypara#1#2{\noindent#1~~\dotfill~~#2}
\def \mypara#1#2{\noindent#1\myleaders#2}
% \def \mypara#1#2{\noindent#1\mycleaders#2}
% \def \mypara#1#2{\noindent#1\myxleaders#2}
\def \mycomment#1{\noindent\textbf{#1}:}
\begin{document}
\mycomment{1, 2 or 3 digits}
\mypara{This is a text}{1}
\mypara{This is a text}{30}
\mypara{This is a text}{130}
\mycomment{Different text}
\mypara{This is just short text}{30}
\mypara{This is a little bit longer text}{30}
\mypara{This is quite long text that goes on and on}{30}
\mycomment{1, 2 or 3 digits combined with different text}
\mypara{This is just short text}{1}
\mypara{This is a little bit longer text}{30}
\mypara{This is quite long text that goes on and on}{130}
\end{document}
无论行末有多少位数字,我怎样才能选择结束的\leaders
位置?\dotfill
答案1
正如 egreg 在评论中向您建议的那样,您可以将数字放在一个具有固定宽度的框中,这样无论其内容如何,领导者都会始终停在该距离处。
因此,像这样重写您的命令:
\def\mypara#1#2{\noindent#1\myleaders\makebox[3mm][r]{#2}}
得到以下结果