如何使点与文本之间的水平间距等于编号列表的数字标签点与其项之间的水平间距?

如何使点与文本之间的水平间距等于编号列表的数字标签点与其项之间的水平间距?

昨天,我敢肯定编号列表的项目标签(数字后跟一个点)的末尾与该标签后面的项目文本之间的水平间距是 5.2pt,尽管输出(\showoutput log)显示 5.0。今天运行一些测试后,它(令人惊讶地)不是 5.2pt,而是 5.05。考虑到今天的代码不是昨天的副本(不幸的是,现在无法恢复),最有可能的解释是代码发生了变化。但是,5.05pt 仍然不是 5.0。这是一个我希望您反馈的问题。

第二个问题是,我所知道的没有长度宏可以定义所讨论的间距(列表标签和其项目之间的间距),而此类宏通常可供调整(所以我无法调整列表的间距)。

现在我们来看一下下面的演示。

\documentclass[varwidth]{standalone}
\usepackage{fontspec}
\setmainfont{Georgia}
\showoutput
\begin{document}
  \begin{enumerate}
  \item{}hello
  \end{enumerate}
  1.\ hello

  \newlength\spaceWidth
  \settowidth{\spaceWidth}{\ }
  \the\spaceWidth % 2.41211pt
\end{document}

...........\TU/Georgia(0)/m/n/10 1.
.........\glue 5.0
........\penalty 0
........\TU/Georgia(0)/m/n/10 hello

........\TU/Georgia(0)/m/n/10 1.
........\glue 2.41211 plus 1.20605 minus 0.80403
........\TU/Georgia(0)/m/n/10 hello

(2.41211pt 的空间小于 5.0pt 的粘合。)

替换1.\ hello1.\makebox[5.0pt]{}hello(并删除\the\spaceWidth):

\begin{enumerate}
\item{}hello
\end{enumerate}
1.\makebox[5.0pt]{}hello

...........\TU/Georgia(0)/m/n/10 1.
.........\glue 5.0
........\penalty 0
........\TU/Georgia(0)/m/n/10 hello

........\TU/Georgia(0)/m/n/10 1.
........\hbox(0.0+0.0)x5.0, glue set 2.5fil
.........\glue 0.0 plus 1.0fil minus 1.0fil
.........\glue 0.0 plus 1.0fil minus 1.0fil
........\TU/Georgia(0)/m/n/10 hello

完美(目前为止)!

现在删除\setmainfont{Georgia}

显然,5.0pt是不够的。

让我们尝试 5.05pt: 替换1.\makebox[5.0pt]{}hello1.\makebox[5.05pt]{}hello

完美的。

您对此有什么看法?谢谢。

答案1

在您的文档中,两个字符串的起始水平位置不同。此差异不考虑屏幕上的整数像素数,因此您无法完美对齐点。因此,比较上的位置h变得毫无意义。如果您仔细查看包含两个 s 的最后一张图片hello,您会发现红线不会以相同的方式接触两个点。

为了获得更有意义的图片,您可以要求 TeX 以缩进标签的相同方式缩进您的文本:

\documentclass[varwidth]{standalone}
\usepackage{fontspec}
\showoutput
\begin{document}
  \begin{enumerate}
  \item{}hello
  \end{enumerate}
  \settowidth\leftskip{1.} % Don't do this in a real document!
  \advance\leftskip -20pt
  \leftskip-\leftskip
  \noindent1.\makebox[5.0pt]{}hello
\end{document}

这会将1. hello向右移动以与标签列表条目对齐。现在 和 都完全对齐了1.hello因此距离实际上正好是 5pt。

相关内容