不同字体大小的文本短语的垂直对齐

不同字体大小的文本短语的垂直对齐

(第 2 和第 3 条中,左侧的“line 001”、“line 002”等仅用于表示右侧各行的基线的垂直距离是\baselineskipnormalsize 中 normalfont 的倍数。)

  1. 确保以两种不同字体大小排版的短语对齐的最佳/最不麻烦的方法是什么,以便界定较大字体的字母升部顶部的规则位于界定较小字体的升部顶部的规则的高度,如下图所示?

    在此处输入图片描述

  2. 确保两行文本基线之间的垂直粘贴(例如在段落分隔符处)始终是整数倍数(\baselineskip即使短语的字体大小不同)的最佳/最麻烦的方法是什么?

    在此处输入图片描述

  3. 什么是最佳/最不麻烦的方法,可以确保两行文本基线之间的垂直粘贴(例如在段落分隔符处)始终是整数倍数\baselineskip- 即使短语具有不同的字体大小并且以两种不同字体大小排版的短语对齐,以便分隔较大字体的字母升部顶部的规则位于分隔较小字体的升部顶部的规则的高度?

    在此处输入图片描述

我只找到了一些繁琐的方法来实现这些事情,即需要将“手动调整”和奇怪的原始指令直接写入保存文档文本的文件中。我还没有找到实现宏的方法,这些宏可以作为单独的私有包提供,这样使用这些方法/宏也不会很麻烦。我想学习编写 LaTeX 代码,让 LaTeX 在处理保存文档文本的文件时自动执行这些操作 - 而不需要我在文档的实际文本中穿插大量奇怪的指令,例如将排版模式从水平模式切换到受限水平模式或垂直模式,或者创建和测量框,或者撤消一些高度/深度超过的 es/s,\lineskip以便\vbox到后续行的垂直距离低于,...\vtop\baselineskip\lineskiplimit

和 TeX⁠ ⁠-⁠ ⁠LaTeX Stack Exchange 一样,要求提供完整的最小可重现示例是一种条件反射,即使在不是修复代码而是要求最佳实践的情况下也是如此,而必须询问最佳实践的人的代码可能不会展示最佳实践,我展示了我到目前为止所做的。我希望这也能满足那些不信任的人,他们要求提问者以一种自我羞辱的姿态出现,不仅要说他们已经花了相当长的时间在这个问题上挣扎而没有真正的成功,还要提供代码片段,这些代码片段形成了糟糕的、写得很差的代码,对任何人都没有真正的用处,可能只是为了反驳他们在说他们已经花了相当长的时间挣扎时撒谎的暗示。

我按照以下繁琐的方式做了1.:

\documentclass{book}
\newsavebox\mynormalbox
\newsavebox\myhugebox

\begin{document}

\savebox\mynormalbox{\hbox{\normalsize Text}}%
\savebox\myhugebox{\hbox{\huge Text}}%
Text Text \lower\dimexpr\ht\myhugebox-\ht\mynormalbox\relax\hbox{\huge Text Text} Text Text

\end{document}

我按照以下繁琐的方式做了2.:

\documentclass{book}

\begin{document}
\noindent %\leavevmode
\vbox to 12\baselineskip{%
  \hbox{line 001}%
  \hbox{line 002}%
  \hbox{line 003}%
  \hbox{line 004}%
  \hbox{line 005}%
  \hbox{line 006}%
  \hbox{line 007}%
  \hbox{line 008}%
  \hbox{line 009}%
  \hbox{line 010}%
  \hbox{line 011}%
  \hbox{line 012}%
} 
\vrule{}
\vbox to 12\baselineskip{%
  \hbox{line 1 line 1 line 1 line 1 line 1 line 1}%
  \vskip-\lineskip
  \vbox to 3\baselineskip{\vfill\hbox{Line 2 Line 2 {\huge Line 2} Line 2 Line 2}}%
  \hbox{line 3 line 3 line 3 line 3 line 3 line 3}%
  \vskip-\lineskip
  \vbox to 3\baselineskip{\vfill\hbox{Line 4 Line 4 {\huge Line 4} Line 4 Line 4}}%
  \hbox{line 5 line 5 line 5 line 5 line 5 line 5}%
  \vskip-\lineskip
  \vbox to 3\baselineskip{\vfill\hbox{Line 6 Line 6 {\huge Line 6} Line 6 Line 6}}%
}%
\end{document}

我按照以下繁琐的方式做了3.:

\documentclass{book}
\newsavebox\mynormalbox
\newsavebox\myhugebox

\begin{document}
\noindent %\leavevmode
\vbox to 16\baselineskip{%
  \vfill
  \hbox{\strut line 001}%
  \hbox{line 002}%
  \hbox{line 003}%
  \hbox{line 004}%
  \hbox{line 005}%
  \hbox{line 006}%
  \hbox{line 007}%
  \hbox{line 008}%
  \hbox{line 009}%
  \hbox{line 010}%
  \hbox{line 011}%
  \hbox{line 012}%
  \hbox{line 013}%
  \hbox{line 014}%
  \hbox{line 015}%
  \hbox{line 016\strut}%
  \vfill
} 
\vrule{}
\vbox to 16\baselineskip{%
  \vfill
  \savebox\mynormalbox{\hbox{\normalsize line1234567890}}%
  \savebox\myhugebox{\hbox{\huge  line1234567890}}%
  \hbox{\strut line 1 line 1 line 1 line 1 line 1 line 1}%
  \vtop to 3\baselineskip{%
    \hbox{\vphantom{line2}}%
    \hbox{line 2 line 2 \lower\dimexpr\ht\myhugebox-\ht\mynormalbox\relax\hbox{\huge line 2} line 2 line 2}%
    \vfill
  }%
  \vskip-\lineskip
  \hbox{line 3 line 3 line 3 line 3 line 3 line 3}%
  \vtop to 3\baselineskip{%
    \hbox{line 4 line 4 \lower\dimexpr\ht\myhugebox-\ht\mynormalbox\relax\hbox{\huge line 4} line 4 line 4}%
    \vfill
  }%
  \vskip-\lineskip
  \hbox{line 5 line 5 line 5 line 5 line 5 line 5}%
  \vbox to 3\baselineskip{%
    \vfill
    \hbox{\lower-\lineskip\hbox{line 6 line 6 {\huge line 6} line 6 line 6}}%
  }%
  \vskip-\lineskip
  \hbox{line 7 line 7 line 7 line 7 line 7 line 7}%
  \vbox to 2\baselineskip{%
    \vfill
    \hbox{\lower-\lineskip\hbox{line 8 line 8 {\huge line 8} line 8 line 8}}%
  }%
  \vskip-\lineskip
  \hbox{line 9 line 9 line 9 line 9 line 9 line 9\strut}%
  \vfill
}%
\end{document}

(第 2 和第 3 条中,左侧的“line 001”、“line 002”等仅用于表示右侧各行的基线的垂直距离是\baselineskipnormalsize 中 normalfont 的倍数。)

相关内容