段落の終わりに影響を与えずにフォントサイズを変更するときに行間隔を修正する

段落の終わりに影響を与えずにフォントサイズを変更するときに行間隔を修正する

次のコードを考えてみましょう。

\documentclass[12pt]{article}
\usepackage{xcolor}
\usepackage{lipsum}
\begin{document}
\lipsum[1]%
\begingroup%
\tiny\color{red}%
\lipsum[2]%
\endgroup%
\lipsum[3]%
\end{document}

次の出力が生成されます。


問題


私が抱えている問題は、テキストの小さな部分の行間隔を再計算したいということです。これを実現するには、\parグループに を追加することです。

\documentclass[12pt]{article}
\usepackage{xcolor}
\usepackage{lipsum}
\begin{document}
\lipsum[1]%
\begingroup%
\tiny\color{red}%
\lipsum[2]%
\par%
\endgroup%
\lipsum[3]%
\end{document}

これにより、次のものが生成されます。


パー


どちらが良いかはわかりませんが、同じ段落内に留まり、改行を避けたいと考えています。


質問:段落の終わりや改行を起こさずに、小さなフォントで書かれたテキストの行間を狭くするにはどうすればよいでしょうか? (どのフォント サイズにも対応できるソリューションを希望します)。

答え1

小さなテキストの終了位置を記録し、その位置に戻って大きなテキストを開始することができます。これには 2 回の実行が必要です。

\documentclass[12pt]{article}
\usepackage{xcolor}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\makeatletter
\begingroup%
\tiny\color{red}%
aaa \lipsum[2]%
{\normalsize\strut}%
\pdfsavepos\write\@auxout{\gdef\string\wdA{\the\pdflastxpos}}
\par%
\endgroup
\nopagebreak\kern-\baselineskip
\noindent\pdfsavepos\write\@auxout{\gdef\string\wdB{\the\pdflastxpos}}
\ifx\wdA\undefined\else 
\kern\numexpr\wdA-\wdB\relax sp\fi
\lipsum[3]%
\end{document}

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

関連情報