防止 LaTeX 使页面变长或变短(即改变文本高度)

防止 LaTeX 使页面变长或变短(即改变文本高度)

当我尝试通过增加\widowpenalty和来防止出现孤行/寡行时clubpenaltyLaTeX通常会决定要么使页面缩短一行(以防止出现孤行),要么使页面延长一行(以防止下一页出现孤行)。如何尝试LaTeX最小化孤行/寡行,但不使用此方法?我每隔几段就跳过一个垂直橡皮筋长度,我希望LaTeX使用它。

后续问题:如果对开页缩短/延长的行数相同,则允许将书页缩短或延长一行。有没有办法让页面缩短或延长一行,LaTeX只要跨页的两个对开页的长度始终相同?

这是我的 MWE。请注意,在同一页面上有一个寡妇/孤儿对页的长度不同。例如,在第 8-9 页上,我们发现两页长度不等,但原因不明!

\documentclass[11pt, icelandic, leqno]{book}
\usepackage[textwidth=112mm,textheight=190mm, paperwidth=153mm, paperheight=230mm]{geometry}

\usepackage[icelandic]{babel}
\usepackage{lmodern}
%\usepackage[utf8]{inputenc} % if using utf8
\usepackage[T1]{fontenc}
\usepackage[parfill]{parskip}
\setlength{\parindent}{0.5cm}
\setlength{\parskip}{0pt}
\usepackage{microtype}
\usepackage{lipsum}
\frenchspacing

% To avoid headers and footers
% choose one of the below:

%\usepackage[defaultlines=2, all]{nowidow}

%\widowpenalty10000
%\clubpenalty10000

\widowpenalty300
\clubpenalty300

\usepackage{titlesec}
\titleformat{\chapter}[display]
  {\filright\normalfont\LARGE\bfseries}
  {\icelandicordinal{chapter}~\MakeLowercase\chaptertitlename}
  {20pt}
  {\huge}
\usepackage{titleps}
\newpagestyle{myfancy}{
    \sethead[\textsc{\chaptertitle}][][]
    {}{}{\textsc{\thesection{} \sectiontitle{}}}
    \setfoot[\usepage][][]
    {}{}{\usepage}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\title{Title}
\author{Author}
\date{}
\pagestyle{empty}
\begin{document}

\maketitle
\cleardoublepage
\pagestyle{myfancy}

\chapter*{Intro}
\sethead[\textsc{Intro}][][]
{}{}{\textsc{Intro}}

%\lipsum[4-57]
\lipsum[4-8]
\medskip
\lipsum[9-15]
\medskip
\lipsum[16-23]
\medskip
\lipsum[24-35]
\medskip
\lipsum[36-40]
\medskip
\lipsum[41-52]
\medskip
\lipsum[53-57]

\end{document}

答案1

我发现 LaTeX 的 textheight 不一致(\baselineskip一页少一个,\baselineskip另一页多一个)的原因\textheight\baselineskip

\usepackage[textwidth=112mm,textheight=190mm, paperwidth=153mm, paperheight=230mm]{geometry}

是不兼容的。我的理解是,如果\textheight不等于 n\baselineskip倍加\topskip上某个整数 n,那么在某些情况下,vbox 未满是不可避免的,这会导致 LaTeX 在奇怪的地方破坏页面。

值得庆幸的是,有一个简单的解决方法。只需使用以下选项heightrounded

\usepackage[textwidth=112mm,textheight=190mm, paperwidth=153mm, paperheight=230mm heightrounded]{geometry}

它会四舍五入\textheight为更佳值。您也可以手动设置。

使用此设置和适当的\widowpenalty和值\clubpenalty(我使用的是 500),您不应该遇到此问题。如果您想通过增加/减少跨页两页上的文本高度来防止出现孤行或孤行,您可以在分页符的两侧添加\enlargethispage{\baselineskip}(或)。我目前还不知道有更好的解决方案。-\baselineskip

相关内容