如何更改 \dotfill 中的点间距?

如何更改 \dotfill 中的点间距?

我在命名法中使用 \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,如下所示,以便仅在需要时修改间距(\dotfillLaTeX 在各个地方使用):

\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和右边距之间,左边有点,右边有胶水。

答案4

(供更多读者阅读)。如果您只想在类中拉伸toc、 、的点lof,只需在序言中写入以下代码:lot(ext)article (ext)book

\makeatletter
\renewcommand{\@dotsep}{1}% default value is 4.5
\makeatother

在此处输入图片描述

相关内容