Как установить расстояние, которое масштабируется вместе со шрифтом

Как установить расстояние, которое масштабируется вместе со шрифтом

Я пытаюсь задать расстояние относительно размера шрифта. Проблема в том, что расстояние используется повторно несколько раз в документе, возможно, в средах с другим размером шрифта. В каждом случае расстояние должно автоматически масштабироваться, чтобы сохранить пропорцию к размеру шрифта. К сожалению, простое указание расстояния в emили exне работает, поскольку расстояние сохраняется в размере emили exв текущем шрифте. Когда шрифт изменяется, расстояние не обновляется соответствующим образом.

Есть ли способ обойти это? В идеале решение должно работать как под LaTeX, так и под PlainTeX.

Ниже приведена модель M(n)WE, которая показывает текущее нежелательное поведение.

\documentclass[12pt]{article}

\newskip\test
\test = 1em

\begin{document}

In each row, the lines should be the same length.

\rule{0.4pt}{1em} \rule{0.4pt}{\test}

{\tiny\rule{0.4pt}{1em} \rule{0.4pt}{\test}}

{\Huge\rule{0.4pt}{1em} \rule{0.4pt}{\test}}

\end{document}

решение1

Определите расстояние как макрос, а не регистр длины:

\documentclass[12pt]{article}

\newcommand{\test}{1em}

\begin{document}

In each row, the lines should be the same length.

\rule{0.4pt}{1em} \rule{0.4pt}{\test}

{\tiny\rule{0.4pt}{1em} \rule{0.4pt}{\test}}

{\Huge\rule{0.4pt}{1em} \rule{0.4pt}{\test}}

\end{document}

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

решение2

Вы можете определить новую команду для правила, которая сбрасывает длину правила каждый раз, когда вы ее вызываете. Поскольку было запрошено решение, совместимое с Plain, я использовал \newskip, но я включаю версию LaTeX, закомментированную ниже.

\documentclass[12pt]{article}

\newskip\ruleheight

\def\myrule{%
    \ruleheight = 1em
    \rule{0.4pt}{\ruleheight}%
}

% LaTeX version
%\newlength{\ruleheight}
%\newcommand{\myrule}{%
%    \setlength{\ruleheight}{1em}
%    \rule{0.4pt}{\ruleheight}%
%    

\begin{document}

In each row, the lines should be the same length.

\rule{0.4pt}{1em} \myrule

\tiny \rule{0.4pt}{1em} \myrule

\Huge \rule{0.4pt}{1em} \myrule

\end{document}

Нижние три строки показывают вывод новой команды в разных размерах.

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

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