我在命名法中使用 \dotfill 命令在每行末尾添加单位。这是我使用的代码:
\usepackage[refpage]{nomencl}
\newcommand{\nomunit}[1]{%
\renewcommand{\nomentryend}{\unskip\dofill[#1]}}
\renewcommand*{\pagedeclaration}[1]{\unskip, \hyperpage{#1}}
这样做没问题,但是我的目录也有自动点填充,间距不一样。那么我该如何修改 \dotfill 间距?(实际上要与目录的间距相匹配)
答案1
的定义\dotfill
是
\leavevmode \cleaders \hb@xt@ .44em{\hss .\hss }\hfill \kern \z@
间距由 给出.44em
,因此您可以将其放在序言中:
\makeatletter
\renewcommand \dotfill {\leavevmode \cleaders \hb@xt@ .33em{\hss .\hss }\hfill \kern \z@}
\makeatother
不过,我建议您创建自己的命令,例如\Dotfill
,如下所示,以便仅在需要时修改间距(\dotfill
LaTeX 在各个地方使用):
\makeatletter
\newcommand \Dotfill {\leavevmode \cleaders \hb@xt@ .33em{\hss .\hss }\hfill \kern \z@}
\makeatother
答案2
这不是一个真正的答案,但我不知道如何在评论中添加链接。
看着想要用重复的字符串填充行。该解决方案可能对您有用。
我看了看高级 TeXbook链接建议。您可以写类似 的内容
\def\mydots{\xleaders\hbox to1em{\hfil.\hfil}\hfil}
。您可以将 更改1em
为您喜欢的度量值。 但当我自己做这个样本时,它并没有填满整个页面。唉。:(
\documentclass{article}
\usepackage{calc}
\usepackage{lipsum}
\pagestyle{empty}
\def\mydots{\xleaders\hbox to0.25em{\hfil.\hfil}\hfil}
\begin{document}
\lipsum[1]
A \mydots B
\lipsum[2]
\end{document}
我认为问题出在最后,\hfil
但当我试图摆脱它时,我收到一个错误。
Overfull \hbox (0.27779pt too wide) detected at line 10
\OT1/cmr/m/n/10 .
! Leaders not followed by proper glue.
<to be read again>
B
l.10 A \mydots B
?
当我将其改写\mydots
为
\def\mydots{\leavevmode\xleaders\hbox to 0.25em{\hfil.\hfil}\hfill\kern0pt}
我得到了我想要的结果。(我在 LaTeX 环境中是否过于忠实于 TeX?)
答案3
@tohecz 已经展示了您需要做的事情,只是进一步评论了为什么您的版本不起作用。
您使用拉伸(一个 l)对其进行了定义,在标准类中,它与用于使段落最后一行变短的粘合fil
相同。因此您的段落\parfillskip
A \mydots B
具有可2 fil
拉伸的值,一个来自\mydots
,一个来自\parfillskip
。这些将拉伸相同的量,因此B
被推到中间空间A
和右边距之间,左边有点,右边有胶水。