![那么,设置首选行距的正确方法是什么?更改 Book 中的默认行距会返回 underfull \vbox 警告](https://linux22.com/image/457048/%E9%82%A3%E4%B9%88%EF%BC%8C%E8%AE%BE%E7%BD%AE%E9%A6%96%E9%80%89%E8%A1%8C%E8%B7%9D%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F%E6%9B%B4%E6%94%B9%20Book%20%E4%B8%AD%E7%9A%84%E9%BB%98%E8%AE%A4%E8%A1%8C%E8%B7%9D%E4%BC%9A%E8%BF%94%E5%9B%9E%20underfull%20%5Cvbox%20%E8%AD%A6%E5%91%8A.png)
简单任务: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
更多)
为了更完整地修复在开始文档后不要设置,请修改\normalsize
。size12.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}
还想减少一些其他空间,以进行匹配。