只要页面上有图像或者不仅仅是纯文本(当然,通过\vspace
命令隔开),行距就会被破坏。
看看MWE
下面的内容。请注意第 1 页(第一部分和第一章所在位置)底部文本行的基线与文档框架重合,字体下行线(延伸到字体基线以下的字母部分)位于框架下方,而第 2 页最后一行完全是空的!
在第 3 至第 5 页上,一切都很好:底部文本行的基线位于文档框架之上,而字体降部位于框架之内。
然后第 6-7 页再次出现空白的底线,其余部分看起来不错。
我认为问题可能出在以下方面:也许\vspace
我使用的命令和/或图像是以公制或与文档无关的度量单位设置的(例如,in、mm、pt、em、ex),这是页面设置损坏的原因,在我看来,页面设置是以行数来衡量的,当然是文本方面的。我知道该页面是以英寸或厘米设置的。
换句话说,假设行高为 3 毫米,那么当我告诉 Tex 添加\vspace
10 毫米时,该 10 毫米与行数不匹配(3x3mm=9 毫米,而不是 10 毫米),这就是为什么在添加 10 毫米后,页面上还剩下一些行数加上多余的 2 毫米!
如果是真的,有没有办法测量\vspace
图像的尺寸(以相对于文档的测量单位为单位)?例如,\lineheight
或者只是一行、两行等等?这样\vspace
,图像高度将以行数为单位进行设置!
当我尝试\vspace
这样修改时\vspace{0.5\lineheight}
,它返回了一个错误,尽管\vspace{0.5\linewidth}
它能工作但却没有返回我想要的结果。
如果以上内容都是废话且与问题无关,那么什么是?
% !TEX TS-program = LuaLaTeX
\documentclass[11pt,twoside,openany]{book}
\pagestyle{plain}
\usepackage[pagewise]{lineno}
\usepackage{fontspec}
\setmainfont{EB Garamond}
\setmainfont[Ligatures=TeX]{EB Garamond}
\usepackage{microtype}
\usepackage{lipsum}
\usepackage{hyphenat}
\usepackage[shortcuts]{extdash}
\usepackage[paperwidth=6in,paperheight=9in,inner=15mm,top=15mm,outer=20mm,bottom=22mm,showframe]{geometry}
\usepackage[all]{nowidow}
\setlength{\parskip}{0pt}
\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage{titlesec}
\titleclass{\part}{top}
\titleformat{\part}{\centering\normalfont\large}{\thepart.}{20pt}{\LARGE\centering}
\titlespacing*{\part}{0pt}{10pt}{40pt}
\titleclass{\chapter}{straight}
\titleformat{\chapter}{\centering\normalfont\large}{\thechapter.}{20pt}{\large\centering}
\titlespacing*{\chapter} {0pt}{30pt}{10pt}
\let\cleardoublepage\clearpage
\begin{document}
\frontmatter
\begin{titlepage}
\centering
\vspace*{10mm}
{\scshape\huge{TITLE}\par}
\vspace{0mm}
\end{titlepage}
\clearpage
\mainmatter
\pagenumbering{arabic}
\obeylines
\part{PART ONE}
\vspace{-10mm}
\begin{center}
\includegraphics[width=50mm,height=5mm,keepaspectratio]{example-image}
\vspace{0mm}
\end{center}
\chapter[CHAPTER ONE]{\begin{center}{CHAPTER ONE} \end{center}}
\vspace{-10mm}
\begin{center}
\includegraphics[width=100mm,height=50mm,keepaspectratio]{example-image}
\vspace{0mm}
\end{center}
\lipsum[1-48]
\end{document}
答案1
首先,使用heightrounded
:你设置\parskip
没有灵活性,这可能是一件好事,但如果你不调整文本高度以包含整数行数,你就注定要失败。
我还注释掉了包nowidow
,因为它设置的参数太严格,但这不是强制性的:你必须调整一些只差一行的页面。
无需center
在标题内使用,只需适当定义章节标题格式:检查我所做的更改。由于您不知道图像的精确高度,因此我为章节标题后的间距增加了一些灵活性。
最后,我注释掉了hyphenat
:试图避免连字符是没有意义的:你只会得到糟糕的段落。
最后\obeylines
应予以删除。
\documentclass[11pt,twoside,openany]{book}
\usepackage[
paperwidth=6in,
paperheight=9in,
inner=15mm,
top=15mm,
outer=20mm,
bottom=22mm,
heightrounded,% <---- IMPORTANT
showframe,
]{geometry}
\usepackage[pagewise]{lineno}
\usepackage{fontspec}
\usepackage{microtype}
\usepackage{lipsum}
%\usepackage{hyphenat}
\usepackage[shortcuts]{extdash}
%\usepackage[all]{nowidow}
\usepackage{graphicx}
\usepackage[dvipsnames]{xcolor}
\usepackage{titlesec}
\titleclass{\part}{top}
\titleformat{\part}{\filcenter\normalfont\large}{\thepart.}{20pt}{\LARGE}
\titlespacing*{\part}{0pt}{10pt}{40pt}
\titleclass{\chapter}{straight}
\titleformat{\chapter}[display]{\filcenter\normalfont\large}{\thechapter.}{6pt}{}
\titlespacing*{\chapter}{0pt}{30pt}{10pt plus 10pt}
\setmainfont{EB Garamond}
\setlength{\parskip}{0pt}
\let\cleardoublepage\clearpage
\pagestyle{plain}
\begin{document}
\frontmatter
\begin{titlepage}
\centering
\vspace*{10mm}
{\scshape\huge TITLE\par}
\end{titlepage}
\mainmatter
\pagenumbering{arabic}
\part{PART ONE}
\begin{center}
\includegraphics[width=50mm,height=5mm,keepaspectratio]{example-image}
\end{center}
\chapter{CHAPTER ONE}
\begin{center}
\includegraphics[width=100mm,height=50mm,keepaspectratio]{example-image}
\end{center}
\lipsum[1-48]
\end{document}
如果我运行此版本,我将不会收到任何Underfull \vbox
消息。