Правильный межстрочный интервал при изменении размера шрифта без создания конца абзаца

Правильный межстрочный интервал при изменении размера шрифта без создания конца абзаца

Рассмотрим следующий код:

\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

Вы можете записать положение конца небольшого текста, а затем вернуться назад, чтобы начать большой текст с этой позиции, что займет два прохода.

\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}

введите описание изображения здесь

Связанный контент