\includegraphics 具有多行高度

\includegraphics 具有多行高度

作为书中段落之间的垂直分隔符(见图),我想插入一个小图像,该图像的高度为几行(某个可定义的数字),前后垂直空间量可定义。图像不应干扰该页面上其余垂直文本的对齐方式。也就是说,底部应齐平并与前后页面一致。

当然,我可以通过反复试验手动找出正确的间距,并添加相应的垂直空格以使底部齐平,但这取决于字体/文档类。此外,当图像出现在页面顶部或底部时,或者当前一段只有几个字时,就会出现问题(见第二张图片)。

Example of image spacer, separating two paragraphs.

Wrong spacing when preceding paragraph is very short or when the image is place at top of page.

答案1

将所包含图像的高度定义为的倍数\baselineskip

\newcommand\vspacer
  {\par
     {\centering
      \raisebox{-0.2\baselineskip}%
        {\includegraphics[height=3\baselineskip]{example-image}%
        }%
      \par
     }%
  }

根据评论中的讨论,一页的行应该与其他页的相应行对齐。因此,必须注意空间对齐\parskip\lineskip不要拉伸或收缩。这可以通过发出命令\raggedbottom并消除拉伸来实现。

\raggedbottom
\lineskip0pt
\parskip0pt

在下面的例子中,我加载包showframe来标记文本区域的边框。

enter image description here enter image description here enter image description here

\documentclass[12pt]{scrbook}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage{showframe}
\newcommand\vspacer
  {\par
     {\centering
      \raisebox{-0.2\baselineskip}%
        {\includegraphics[height=3\baselineskip]{example-image}%
        }%
      \par
     }%
  }
\raggedbottom
\lineskip0pt
\parskip0pt
\begin{document}
\Blindtext
\vspacer
\Blindtext
\vspacer
\Blindtext
\vspacer
\Blindtext
\blindtext
\end{document}

答案2

我会在垫片前后的空间里加一些胶水。这样它们就可以根据需要拉伸/收缩,以保持\flushbottom

enter image description here

\documentclass{book}

\usepackage{graphicx,lipsum}

\newcommand{\insertseparator}{%
  \par
  \vspace{.2\baselineskip plus .2\baselineskip minus .2\baselineskip}% Space above
  \noindent
  \makebox[\linewidth]{\includegraphics[height=3\baselineskip]{example-image}}%
  \par
  \vspace{.2\baselineskip plus .2\baselineskip minus .2\baselineskip}% Space below
}

\begin{document}

\lipsum[1]

\insertseparator

\lipsum[2-14]

\insertseparator

\lipsum[15-29]

\insertseparator

\lipsum[30-45]

\insertseparator

\lipsum[46-50]

\end{document}

您可能需要尝试使用plus和/或的合适值minus。我刚刚使用了部分\baselineskip

相关内容