
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 em
o ex
no funciona porque la distancia se almacena en el tamaño de em
o ex
en 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}
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.