真正的网格:如果某个部分直接跟在一个章节后面,那么垂直空间会发生什么情况?

真正的网格:如果某个部分直接跟在一个章节后面,那么垂直空间会发生什么情况?

我试图让所有页面的行都保持在相同的网格中。所以我设置了上下空格\chapter等来补偿标题之间的\section差异。baselineskip

例如,我将 设置为\beforechapskip3.5\onelineskip因为章节的字体大小设置为,\LARGE在回忆录中,这意味着它的基线跳跃为 18pt(18pt - \onelineskip = 6pt)。

我设置\beforesecskip-2\onelineskip + 2.5pt补偿部分字体大小\large,结果baselineskip为14.5pt

但是我很难理解 LaTeX 在不同情况下如何处理上方和下方的垂直空间等\chapter\section因为这似乎会导致完美的网格,除非某个部分直接跟在某个章节后面。

为什么?我以为 LaTeX 会占用该部分上方的空间,这样得到的结果与将该部分设置在页面顶部时相同。但事实并非如此,而是将其设置为比网格低 2.5pt。

我能做什么?我想到的唯一解决方案是重新定义命令,并chapter在命令末尾添加如下内容:

\@ifnextchar\section{\vspace*{-2.5pt}}{}%

但这仅在章节和章节之间没有换行符时才有效,而且无论如何这似乎是一个混乱的解决方案。

这是一个最小的工作示例:

\documentclass[a4paper,10pt,twoside]{memoir}
\usepackage{calc}
\usepackage{lipsum}
\setlength{\parskip}{0pt plus 0pt minus 0pt}
\renewcommand{\chapnamefont}{\centering\normalfont} 
\renewcommand{\chapnumfont}{\centering\normalfont} 
\setlength{\midchapskip}{\onelineskip}
\setlength{\afterchapskip}{2\onelineskip}
\setlength{\beforechapskip}{3.5\onelineskip}

\renewcommand*{\printchapternonum}{\vspace{2\onelineskip}}

\renewcommand\chaptitlefont{\centering\LARGE\normalfont}
\setsecheadstyle{\centering\Large\normalfont\noindent}

\setbeforesecskip{-2\onelineskip + 2.5pt}
\setaftersecskip{\onelineskip}

\begin{document}
\chapter{Test}
\section{Test}
\lipsum[2-12]
\chapter{Test what ever?}
\lipsum[2-12]
\section{Test}
\lipsum[2-11]

\newpage
\section{Don't read that sh*t1}
\lipsum[2-11]
\end{document}

以下是一些屏幕截图:

如果某个章节位于某个章节之后,则不会保留网格。

如果只有一个章节,则保留网格。

在此处输入图片描述

编辑:我发现解决方案可能是:

\setlength{\afterchapskip}{2\onelineskip  plus 0pt minus 2.5pt}

答案1

memoir 在节的开头有一个钩子,可以用来插入负空间。如果要进行网格排版,请不要使用可拉伸空间。您可能还需要 \raggedbottom。

\documentclass[a4paper,10pt,twoside]{memoir}
\usepackage{calc}
\usepackage{lipsum}
\setlength{\parskip}{0pt plus 0pt minus 0pt}
\renewcommand{\chapnamefont}{\centering\normalfont}
\renewcommand{\chapnumfont}{\centering\normalfont}
\setlength{\midchapskip}{\onelineskip}
\normalfont
\setlength{\afterchapskip}{2\onelineskip}
\setlength{\beforechapskip}{3.5\onelineskip}

\renewcommand*{\printchapternonum}{\vspace{2\onelineskip}}

\renewcommand\chaptitlefont{\centering\LARGE\normalfont}
\setsecheadstyle{\centering\Large\normalfont\noindent}

\setbeforesecskip{-2\onelineskip+2.5pt}
\setaftersecskip{\onelineskip}

\makeatletter
\newcommand\sectionblock{\if@nobreak \vskip-2.5pt\fi}
\makeatother

%to show the grid
\usepackage{returntogrid,tikz}
\AddToShipoutPictureBG {\AtTextUpperLeft{\showdebugpagegrid}}
\begin{document}
\chapter{Test}
\section{Test}
abc
\section{Test}
TTTabc

\section{Tesy}
abc

\chapter{Tesy}
\section{Test}
abc

\chapter{Tesy}
abc
\chapter{Test}

abc
\end{document}

在此处输入图片描述

相关内容