我正在经历KOMA-script Documentation
我在第 32 页发现了一个漂亮的表格,其中根据您设置的文件type area
数量。DIV
现在我必须做错了什么,因为当我用不同的DIV
值设置我的 MWE 时,我得到的结果\textheight
与\textwidth
KOMA 文档中的不同。
\documentclass[a4paper,BCOR=0mm,DIV=12]{scrbook}
\usepackage{layouts}
\begin{document}
\printinunitsof{mm}{\pagevalues}
\verb|\marginparwidth|: \printinunitsof{mm}\prntlen{\marginparwidth}
\pagediagram
\end{document}
此外,我费尽心思打印了这些页面,然后测量了距离。它们似乎都不一致(其中一些偏差了几毫米,另一些偏差更大)。
所以,我的问题是:
- KOMA 脚本文档的人员是如何得出上述这些值的?
- 如果他们做对了(我确信他们做对了),为什么这在印刷版本上却不正确?
- 为什么我从包中获得的值
layouts
与 KOMA 文档或印刷版本不一致?
答案1
水平值
KOMA-Script 的理念是:如果有两页并排,则左页(偶数页)左侧的空白与右页(奇数页)右侧的空白相同和与左页正文与右页文本之间的空白相同。
使用 时DIV=12
,外边距获得 2 个单位,内边距获得 1 个单位(因为它们从偶数页和奇数页加起来为 2 个单位),文本宽度获得 9 个单位:
unit width: 210mm / 12 = 17.5mm
outer margin: 2 * 17.5mm = 35mm
inner margin: 1 * 17.5mm = 17.5mm
text width: 9 * 17.5mm = 157.5mm
因此,表格中文本宽度和内边距的值是正确的。
文本宽度
\textwidth
表格显示的值是正确的,157,50mm
并且您得到157.49817mm
。(英文版应该用句点代替小数点分隔符中的逗号。
左边距
左边距奇怪的编号页是内边距,应为 17.5 毫米:
25.4mm (TeX origin)
-7.89989mm (\oddsidemargin)
----------
17.50011mm
正确(模数舍入误差)
左边距甚至编号页是外边距,应为 35mm:
25.4mm (TeX origin)
9.59988mm (\evensidemargin)
----------
34.99988mm
正确(模数舍入误差)
垂直值
DIV=12
表示将页面高度分为 12 个单位。顶部边距为一个单位,底部边距为两个单位,其余 9 个单位为文本高度。
unit height: 297mm / 12 = 24.75mm
top margin: 1 * 24.75mm = 24.75mm
bottom margin: 2 * 24.75mm = 49.5mm
text height: 9 * 24.75mm = 222.75mm
因此,表格中文本高度和顶部边距的值是正确的。
上边距
表值:24,75mm
25.4mm (TeX origin)
-13.79442mm (\topmargin)
5.97475mm (\headheight)
7.1697mm (\headsep)
------------
24.75mm
正确的。
文本高度
表格标题翻译不正确,德文版也说,\topskip
没有考虑到这一点。
\@typearea
按以下方式计算文本高度:
RealTextHeight = topskip + n * baselineskip
with
n is a natural number
and
0 ≤ RealTextHeight - DivTextHeight < baselineskip
\topskip
因此,实际文本高度取决于通过 div 方法计算的值、 (取决于字体大小)和\baselineskip
(也取决于字体大小)的设置。
因此文本高度可以大于表格值。视觉文本高度甚至可以更大,因为文本区域底部框的深度可以下降到文本区域下方\maxdepth
(= .5\topskip
) 。typearea
类选项的值11pt
(默认):
\topskip: 11pt ≈ 3.86606mm
\baselineskip: 13.6pt ≈ 4.77985mm
\maxdepth: 5.5pt ≈ 1.93303mm
然后
\textheight = \topskip + 46 * \baselineskip
636.60028pt = 11pt + 46 * 13.6pt (modulo rounding error)
223.73679mm = 3.86606mm + 46 * 4.77985mm (modulo rounding error)
和
223.73679mm ≥ 222.75mm
223.73679mm < \topskip + 47 * \baselineskip
因此,根据所使用的算法,文本高度是正确的\typearea
。
答案2
但是您的 LaTeX 文档生成的值与表格中的值一致。我没有发现任何问题。\textwidth
、\textheight
和几乎与预测的一致。奇数页上的\topmargin
内边距为 ,因此也与预测的一致。1in + \oddsidemargin
25.4 - 7.9 = 17.5mm
对于偶数页,内边距为\paperwidth - 1in - \evensidemargin - \textwidth = 210 - 25.4 - 9.6 - 157.5 = 17.5mm
。同样,如表格所预测的那样。
所以我确实没发现什么问题。
现在,如果您打印它,那么 Adobe Reader 可能会添加额外的边距,因为它实际上会缩小页面,除非您在打印对话框中选择了正确的选项。所以我预计边距会增加,宽度和高度会缩小。确保在打印时选择“实际大小”选项。您的打印机可能也不是很准确。所以边距可能会增加/减少几毫米。但我预计宽度和高度对于大多数打印机来说应该是准确的,除非您在 Adobe Reader 中选择了错误的打印选项。