调整自定义符号表的点填充

调整自定义符号表的点填充

考虑以下代码/图片:

\documentclass{article}
\usepackage{graphicx}
\usepackage{amsmath}
\begin{document}
\noindent
\begin{tabular}{@{}p{2.62cm}@{}p{9.5cm}@{}}
$\varliminf,\varlimsup$ & test test test test test test test test test test test  \dotfill 123\\
$\varliminf,\varlimsup$ & test test test test test test test test test test test test  \dotfill 123\\
$\varliminf,\varlimsup$ & test test test test test test test test test test test test test  \dotfill 123\\
$\varliminf,\varlimsup$ & test test test test test test test test test test test test test test  \dotfill 123\\
$\varliminf,\varlimsup$ & test test test test test test test test test test test test test test test  \dotfill 123\\
$\liminf,\limsup$ & idem  \dotfill 123 \\
\end{tabular}
\end{document}

结果

我对第 6 项中的第 3 项和第 4 项不满意:第 3 项中数字前的空格太少(用点填充!),第 4 项中缺少点。我尝试进行调整这个帖子,但没有成功。我只是不明白它是如何工作的。\zdotfill不应引入未填充空间(未填充=没有点),它应该只有 1cm 的最小长度(用点填充),其他一切都应该按照\dotfill

错误代码:

\documentclass{article}
\usepackage{graphicx}
\usepackage{amsmath}
\newcommand{\zdotfill}{\hskip 1cm plus 1fill\dotfill}
\begin{document}
\noindent
\begin{tabular}{@{}p{2.62cm}@{}p{9.5cm}@{}}
$\varliminf,\varlimsup$ & test test test test test test test test test test test  \zdotfill 123\\
$\varliminf,\varlimsup$ & test test test test test test test test test test test test  \zdotfill 123\\
$\varliminf,\varlimsup$ & test test test test test test test test test test test test test  \zdotfill 123\\
$\varliminf,\varlimsup$ & test test test test test test test test test test test test test test  \zdotfill 123\\
$\varliminf,\varlimsup$ & test test test test test test test test test test test test test test test  \zdotfill 123\\
$\liminf,\limsup$ & idem  \zdotfill 123 \\
\end{tabular}
\end{document}

答案1

你需要:

  • 将 的重新定义限制\hfill在 之后立即完成的组内\dotfill,否则您将破坏\hfill文档中使用的其他命令(可能是 LaTeX 内部使用的);

  • 确保从\dotfill您插入的领导者\zdotfill不构成有效的断点,否则当它们恰好位于行尾时,根据 TeX 的段落中断算法,它们会被丢弃(您所见证的);

  • 确保在调用之前没有空格标记\zdotfill,否则这又是一个可能的断点,而断点恰好出现在您不想要的位置。

我将重命名您的\zdotfill命令\mindotfill,以免与来自的命令混淆参考值(准确地说,从它的dotfill模块来看)。

\documentclass{article}
\usepackage{graphicx}
\usepackage{amsmath}
\newcommand{\mindotfill}{%
  \nolinebreak
  {\def\hfill{\hskip 1cm plus 1fill\relax}%
   \dotfill
  }%
}

\begin{document}
\noindent
\begin{tabular}{@{}p{2.62cm}@{}p{9.5cm}@{}}
$\varliminf,\varlimsup$ & test test test test test test test test test test test\mindotfill 123\\
$\varliminf,\varlimsup$ & test test test test test test test test test test test test\mindotfill 123\\
$\varliminf,\varlimsup$ & test test test test test test test test test test test test test\mindotfill 123\\
$\varliminf,\varlimsup$ & test test test test test test test test test test test test test test\mindotfill 123\\
$\varliminf,\varlimsup$ & test test test test test test test test test test test test test test test\mindotfill 123\\
$\liminf,\limsup$ & idem\mindotfill 123\\
\end{tabular}
\end{document}

截屏

供您参考,\dotfill定义为:

\dotfill:
macro:->\leavevmode \cleaders \hb@xt@ .44em{\hss .\hss }\hfill \kern \z@ 

这里所做\mindotfill的是修改 使用的 〈skip〉\cleaders,它在本定义中由 生成\hfill\hb@xt@ .44em{\hss .\hss }只生成一个\hbox包含单个点的合适宽度的字符)。TeX 将前导符同化为粘合符,这就是为什么它们在行末被丢弃的原因。

相关内容