Cómo establecer una distancia que cambia de escala con la fuente

Cómo establecer una distancia que cambia de escala con la fuente

Estoy intentando establecer una distancia relativa al tamaño de fuente. El problema es que la distancia se reutiliza varias veces en el documento, potencialmente en entornos con un tamaño de fuente diferente. En cada caso, la distancia debería cambiar de escala automáticamente para conservar su proporción con el tamaño de fuente. Desafortunadamente, simplemente especificar la distancia en emo exno funciona porque la distancia se almacena en el tamaño de emo exen la fuente actual. Cuando la fuente cambia, la distancia no se actualiza en consecuencia.

¿Hay alguna forma de evitar esto? Idealmente, la solución debería funcionar tanto en LaTeX como en PlainTeX.

A continuación se muestra un M(n)WE que muestra el comportamiento actual no deseado.

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

Respuesta1

Defina la distancia como una macro, en lugar de un registro de longitud:

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

ingrese la descripción de la imagen aquí

Respuesta2

Puede definir un nuevo comando para la regla que restablezca la longitud de la regla cada vez que la llame. Debido a que se solicitó una solución compatible con Plain, utilicé \newskip, pero incluyo una versión de LaTeX comentada debajo.

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

Las tres líneas inferiores muestran el resultado del nuevo comando en diferentes tamaños.

ingrese la descripción de la imagen aquí

información relacionada