昨天,我敢肯定编号列表的项目标签(数字后跟一个点)的末尾与该标签后面的项目文本之间的水平间距是 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.\ hello
为1.\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]{}hello
为1.\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。