在下面的MWE中,我将纸张边缘到正文的距离设置为25mm。
\documentclass[a4paper]{article}
\usepackage[showframe, paper = a4paper, tmargin = 25mm]{geometry}
\usepackage{lipsum}
\begin{document}
\lipsum
\end{document}
但是,当我在 Evince 等 PDF 查看器中以全尺寸检查纸张时,以及当我打印纸张时,用尺子测量时得到的结果是 27 毫米。为什么?geometry
不准确吗?
答案1
答案2
让我们看看。输出的第一行是 6.94444pt 高(TeX 告诉我的,它是该行中字符的最大高度,即 'd'),其前面是\topskip
3.05556pt 的粘连,因为
6.94444 + 3.05556 = 10
\topskip
10pt 是十点大小文档的标准值。
纸张边缘到第一条基线的距离为 25mm 加\topskip
。由于 3.05556pt = 1.074mm,因此纸张边缘到 'd' 顶部的距离为 26.074mm。
另一方面,如果您测量开口“L”的顶部,即 6.83331pt,则必须添加 0.11113pt = 0.039mm,得到 26.113mm。
如果从“o”的顶部测量,高度为 4.30554pt=1.513mm,则得到
25 + 1.074 + 1.513 = 27.587
毫米。
所以这只是决定如何进行测量的问题。
如果你设置\topskip=0pt
,比如\begin{document}
在Ulrike的代码中,你会得到
因此,该距离实际上是从纸张边缘到行上最高字符顶部测量的。
\documentclass[a4paper]{article}
\usepackage[showframe, paper = a4paper, tmargin = 25mm]{geometry}
\usepackage{lipsum,tikz}
\begin{document}
\topskip=0pt
\tikz[overlay,remember picture] \draw[<->,red] (current page.north)
--++(0,-25mm)node[midway]{25mm};
\lipsum
\end{document}
当然,仅仅为了符合愚蠢的规范而改变 TeX 的模型是错误的,但有时是必要的。
TeX 为什么使用\topskip
?因为这样页面上第一个基线的位置将不依赖于行的内容(除非它的高度异常大),而如果\topskip
设置为零,则无法保证这一点。