行距断裂(底线低于框架甚至为空)可能是由于 \vspace 和图像的度量单位

行距断裂(底线低于框架甚至为空)可能是由于 \vspace 和图像的度量单位

只要页面上有图像或者不仅仅是纯文本(当然,通过\vspace命令隔开),行距就会被破坏。

看看MWE下面的内容。请注意第 1 页(第一部分和第一章所在位置)底部文本行的基线与文档框架重合,字体下行线(延伸到字体基线以下的字母部分)位于框架下方,而第 2 页最后一行完全是空的!

在第 3 至第 5 页上,一切都很好:底部文本行的基线位于文档框架之上,而字体降部位于框架之内。

然后第 6-7 页再次出现空白的底线,其余部分看起来不错。

我认为问题可能出在以下方面:也许\vspace我使用的命令和/或图像是以公制或与文档无关的度量单位设置的(例如,in、mm、pt、em、ex),这是页面设置损坏的原因,在我看来,页面设置是以行数来衡量的,当然是文本方面的。我知道该页面是以英寸或厘米设置的。

换句话说,假设行高为 3 毫米,那么当我告诉 Tex 添加\vspace10 毫米时,该 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消息。

在此处输入图片描述

相关内容