那么,设置首选行距的正确方法是什么?更改 Book 中的默认行距会返回 underfull \vbox 警告

那么,设置首选行距的正确方法是什么?更改 Book 中的默认行距会返回 underfull \vbox 警告

简单任务:book-class文档、12pt字体大小、6x9页面大小。使用默认book设置(我真的不知道book-class文档中的默认行距是多少),文档排版完美,没有任何警告。但它只返回页面上的 37 行,并且行距很宽,符合我的需要。我更喜欢更多的行(可能是 42),而不改变字体大小或边距。我看到的唯一方法是减少默认行距(对我来说)太宽了。
我尝试了这里建议的所有方法书籍文档类中的行距

但无论我把什么值输入到文本中,它看起来都很丑陋,并且代码会返回很多underfull \vbox (badness)警告。\linespread{}似乎无法减小行距,只能增加。
那么,为文档的行距设置一个值(默认值除外)的正确(和简单)方法是什么?在我的情况下是减小它。最好只针对,这样,\mainmatter之前title的所有页面\mainmatter都不会受到影响。这是 MWE。

% !TEX TS-program = LuaLaTeX
\documentclass[12pt,twoside,openany]{book}
\pagestyle{plain}
\usepackage[english, russian]{babel}
\usepackage{fontspec}
\setmainfont{EB Garamond}[
]
\usepackage{microtype}
\usepackage[shortcuts]{extdash}
\usepackage[pagewise]{lineno}
\linenumbers 
\usepackage[
  paperwidth=6in,
  paperheight=9in,
  inner=13mm,
  top=15mm,
  outer=20mm,
  bottom=24mm, showframe,
  heightrounded,
]{geometry} 

\usepackage{lettrine}
\setcounter{DefaultLines}{3}
\renewcommand{\DefaultLoversize}{0.1} 
\renewcommand{\DefaultLraise}{0} 
\renewcommand{\LettrineTextFont}{}
\setlength{\DefaultFindent}{\fontdimen2\font}

\usepackage{lipsum}
\setlength{\parskip}{0pt} 
\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage[pages=some]{background}

\usepackage{fancyhdr}
\fancyhf{} 
\renewcommand{\headrulewidth}{0ex} 
\fancyfoot[LE,RO]{\thepage} 
\pagestyle{fancy}
\fancypagestyle{plain}{%
  \fancyhf{}%
  \renewcommand{\headrulewidth}{0ex}%
  \fancyhf[lef,rof]{\thepage}%
}
 
\usepackage{etoolbox}
\makeatletter
\patchcmd{\chapter}{\if@openright\cleardoublepage\else\clearpage\fi}{\par}{}{}
\makeatother

%\raggedbottom % If used, it messes up the bottom line the way that its baseline hangs above the frame on some pages

\usepackage{titlesec}
\titleclass{\part}{top}
\titleformat{\part}{\vfil\penalty500\vfilneg\centering\normalfont\large}{\thepart.}{4ex}{\LARGE\centering}
\titlespacing*{\part}{0ex}{2ex plus 2ex minus 1ex}{0ex} 
\titleclass{\chapter}{straight}
\titleformat{\chapter}{\vfil\penalty500\vfilneg\centering\normalfont\large}{\thechapter.}{4ex}{\large\centering}
\titlespacing*{\chapter} {0ex}{6ex plus 4ex minus 1ex}{2ex} 

\setcounter{secnumdepth}{0}
\usepackage{tocloft}

\begin{document} 
\pagestyle{plain}
\pagenumbering{gobble}
\addtocounter{page}{0}

\begin{titlepage}
    \centering
    {\large TITLE\par}
    \vfill
    \title{SOME TITLE}
    \author{SOME AUTHOR}
    \date{}
\end{titlepage}
\clearpage
\frontmatter

\mainmatter
\pagenumbering{arabic}

\part{PART ONE}
\begin{center}
    \includegraphics[height=15ex,keepaspectratio]{example-image-a}
  \end{center} 
\chapter{CHAPTER ONE}
\begin{center}
    \includegraphics[height=35ex,keepaspectratio]{example-image-b}
  \end{center} 
\lipsum[1-24]
\chapter{CHAPTER TWO}
\begin{center}
    \includegraphics[height=35ex,keepaspectratio]{example-image-b}
  \end{center} 
\lipsum[1-24]
\chapter{CHAPTER THREE}
\begin{center}
    \includegraphics[height=35ex,keepaspectratio]{example-image-b}
  \end{center} 
\lipsum[1-24]  
\end{document}

答案1

第 2 页只有文本,因此该页面由行填充,\topskip从顶部开始,然后延伸至 n \baselineskip。因此您需要

\textheight=\topkip + n\baselineskip

对于某个 n。这就是heightrounded选项的作用geometry,但如果您稍后更改 baselineskip,则需要重新进行计算。

为了进行快速测试,您可以在之后进行设置\begin{document}

\begin{document} 
\setlength\baselineskip{13pt}
\setlength\textheight{\dimexpr\topskip+40\baselineskip}

例如,不给出任何警告和 41 行(你可以减少\topskip,或者压缩\baselineskip更多)

在此处输入图片描述

为了更完整地修复在开始文档后不要设置,请修改\normalsizesize12.clo

\renewcommand\normalsize{%
   \@setfontsize\normalsize\@xiipt{14.5}%
   \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
   \abovedisplayshortskip \z@ \@plus3\p@
   \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
   \belowdisplayskip \abovedisplayskip
   \let\@listi\@listI}

因此您\renewcommand可能\@setfontsize\normalsize\@xiipt{13}还想减少一些其他空间,以进行匹配。

相关内容