为什么我无法正确获取回忆录类型块的高度?

为什么我无法正确获取回忆录类型块的高度?

我正在尝试使用命令在 A5 纸上定义自己的类型区域memoir,根据 Tschichold 之后的以下构造,其中文本宽度由 Høgholm 对 Bringhurst 的排版表的曲线拟合给出:

类型区域建设

如果我们暂时忽略标题可能应该被视为具有以下 MWE 中使用的样式的类型区域的一部分,则定义应该相对简单:

\documentclass{memoir}
\renewcommand*{\sfdefault}{uop} % Classico (Optima clone) font
\renewcommand{\familydefault}{\sfdefault} % sans serif default
\setstocksize{210mm}{148.5mm}
\settrimmedsize{210mm}{148.5mm}{*}
\setlxvchars
\settypeblocksize{*}{\lxvchars}{1.41421356}
%\settypeblocksize{*}{289.25285pt}{1.41421356}
%\settypeblocksize{409.06398pt}{289.25285pt}{*} % should be the same as either definition above
\setulmargins{21.9mm}{*}{*}
%\setulmargins{*}{*}{2} % should be about the same as the definition above
\setlrmargins{*}{*}{2}
\setheaderspaces{*}{18.06749pt}{*} % keep standard head sep because I don't know how to determine the "right" one
\checkandfixthelayout
\pagestyle{ruled}
\usepackage{layouts}
\usepackage{lipsum}
\begin{document}
\chapter{Lorem Ipsum}
\section{Dolor Sit Amet}
\lipsum\lipsum
\newpage
\pagevalues
\begin{figure}
\currentstock
\oddpagelayouttrue
\stockdiagram
\caption{Odd page layout for this document}
\end{figure}
\end{document}

这是输出\checkandfixthelayout

Stock height and width: 597.50787pt by 422.52342pt
Top and edge trims: 0pt and 0pt
Page height and width: 597.50787pt by 422.52342pt
Text height and width: 418pt by 289pt
Spine and edge margins: 44.41833pt and 88.85223pt
Upper and lower margins: 62.80518pt and 116.7027pt
Headheight and headsep: 12pt and 18.06749pt
Footskip: 25.29494pt
Columnsep and columnseprule: 10pt and 0pt
Marginparsep and marginparwidth: 7pt and 74.85223pt
Sidecapsep and sidecapwidth: 7pt and 128pt
Sidebarhsep and sidebarwidth: 7pt and 128pt
Sidebarvsep and sidebartopsep: 12pt and 0pt
Sidebarheight: 548.39996pt
Sidefoothsep and sidefootwidth: 7pt and 128pt
Sidefootvsep and sidefootheight: 12pt and 548.39996pt

然而,这就是以下价值观应该看起来像:

\paperheight = 597.507874pt
\paperwidth = 422.523425pt
\textheight = 409.06530pt
\textwidth = 289.25285pt
\spinemargin = 44.1017717pt
\uppermargin = 62.3115354pt

关键的区别在于\textheight哪个大约大了 9pt。

当构造的对角线覆盖在实际文本之上时,这也是可见的:

根据实际文本构造的对角线

可能是我犯了一个愚蠢的错误,或者误解了手册memoir。无论是哪种情况,如果有人能告诉我问题的原因,我会非常高兴。

答案1

我把这个放在答案中,这样我就可以使用图片和其他东西了。Lev 和 Dan 的评论让我朝着正确的方向前进,所以请随意提供一个“正确的答案”(即不是我自己的答案),我会很乐意接受。

因此,事实证明,在我所有的构造工作中,我甚至没有想到文本以这些称为“行”的离散单位出现,并且将类型区域设计为 34.09 行高可能是数学告诉你的,但它有其他缺点,例如最后一行的可读性降低,其中 90% 的内容缺失。(但是,为什么以memoir阅读文档永远不会让你相信的方式“修复”这个问题是完全不同的问题。)

无论如何,考虑到我无论如何都想改进我的第一稿,将标题视为类型区域的一部分,结果发现有一个简单的解决方法。所以现在它包含一个不离散的部分,即\headsep

memoir这使得布局页眉不属于上边距(因为它是\uppermargin……的一部分)的页面变得异常复杂。我将在漂亮的图片后面附上丑陋的代码。它之所以丑陋,主要不是因为memoir我懒惰,而且我的变量名不一致,而且我查找了哪些内部使用的变量可以重用。我还应该多使用那些丑陋的临时@宏名,而不是用已经存在的变量的变体来弄乱名称空间。(我也可以提前计算好一切,但那样有什么乐趣呢。)

修正布局

重要的是:一切都排列得非常整齐(哦,双关语),并且将标题包含在类型区域内,使得所有的计算突然看起来都是值得的。缩小\headsep了约 30%,但我个人认为这是完全可以接受的,并且即使将标题作为类型区域的一部分,效果也很好(另外,另一种方法是将其整体\baselineskip放大,这显然是完全荒谬的)。

\setlxvchars
\newlength{\typeareaheight}\setlength{\typeareaheight}{1.41421356\lxvchars} % this factor works for all A-series paper formats ... and only for those
\newlength{\minheadsep}\setlength{\minheadsep}{.8\baselineskip} % completely arbitrary minimal \headsep
\newlength{\correctedheadsep}
\newlength{\headerheight}\setlength{\headerheight}{\baselineskip}
\newlength{\correctedtextheight}
\setlength{\correctedtextheight}{\typeareaheight}
\makeatletter
\setlength{\@tempdima}{\typeareaheight}%
\addtolength{\@tempdima}{-\headerheight}%
\addtolength{\@tempdima}{-\minheadsep}%
\divide\@tempdima \baselineskip
\@tempcnta=\@tempdima
\setlength{\correctedtextheight}{\@tempcnta\baselineskip}%
\makeatother
\setlength{\correctedheadsep}{\typeareaheight}
\addtolength{\correctedheadsep}{-\correctedtextheight}
\addtolength{\correctedheadsep}{-\headerheight}
\settypeblocksize{\correctedtextheight}{\lxvchars}{*}
\newlength{\totaltopmargin}
\setlength{\totaltopmargin}{21.9mm}
\addtolength{\totaltopmargin}{\headerheight}
\addtolength{\totaltopmargin}{\correctedheadsep}
\setulmargins{\totaltopmargin}{*}{*}
\setlrmargins{*}{*}{2}
\setheaderspaces{*}{\correctedheadsep}{*}
\checkandfixthelayout[fixed]

相关内容