異なるフォントサイズのテキストフレーズの垂直配置

異なるフォントサイズのテキストフレーズの垂直配置

(2. および 3. では、左側の「行 001」、「行 002」などは、右側の行のベースラインの垂直距離が\baselineskip通常サイズの通常フォントの倍数であることを示すためだけのものです。)

  1. 2 つの異なるフォント サイズでタイプセットされたフレーズが、次の図のように、大きいフォントの文字のアセンダの上部を区切る罫線が小さいフォントのアセンダの上部を区切る罫線の高さに揃うようにするための、最も簡単で手間のかからない方法は何ですか。

    ここに画像の説明を入力してください

  2. \baselineskip段落区切りなど、2 行のテキストのベースライン間の垂直方向の結合が、フレーズのフォント サイズが異なっていても常に整数倍になるようにするための最良/最も面倒でない方法は何ですか?

    ここに画像の説明を入力してください

  3. フレーズが異なるフォント サイズで設定されてい\baselineskipても、2 つの異なるフォント サイズでタイプセットされたフレーズが、大きいフォントの文字のアセンダの上部を区切るルールが小さいフォントのアセンダの上部を区切るルールの高さに揃うように配置されていても、段落区切りなどの 2 行のテキストのベースライン間の垂直方向の結合が常に整数倍になるようにするための最良/最も面倒でない方法は何ですか。

    ここに画像の説明を入力してください

こうしたことを実現するには、「手動調整」や奇妙なプリミティブ命令を文書のテキストが入ったファイルに直接書き込む必要がある面倒な方法しか見つかりませんでした。こうしたことを実現するマクロなどのメソッドを実装する方法はまだ見つかっていません。マクロは、これらのメソッド/マクロの使用も面倒ではない、プライベートな別パッケージとして提供される可能性があります。文書のテキストが入ったファイルを処理しながら、LaTeX がこうしたことを自動的に行うようにする LaTeX コードの書き方を習得したいと思っています。文書の実際のテキストに、組版モードを水平モードから制限された水平モードまたは垂直モードに切り替えるための、またはボックスを作成して測定するための、または高さ/深さが超過して後続の行への垂直距離が以下になるようにするための、大量の奇妙な命令を散りばめる\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. では、左側の「行 001」、「行 002」などは、右側の行のベースラインの垂直距離が\baselineskip通常サイズの通常フォントの倍数であることを示すためだけのものです。)

関連情報