
Estou tentando definir uma distância relativa ao tamanho da fonte. O problema é que a distância é reaproveitada diversas vezes no documento, potencialmente em ambientes com tamanho de fonte diferente. Em cada caso, a distância deve ser redimensionada automaticamente para manter sua proporção com o tamanho da fonte. Infelizmente, simplesmente especificar a distância em em
ou ex
não funciona porque a distância é armazenada no tamanho em
ou ex
na fonte atual. Quando a fonte muda, a distância não é atualizada adequadamente.
Existe uma maneira de contornar isso? Idealmente, a solução deve funcionar tanto em LaTeX quanto em PlainTeX.
Abaixo está um M(n)WE que mostra o comportamento atual e indesejado.
\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}
Responder1
Defina a distância como uma macro, em vez de um registro de comprimento:
\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}
Responder2
Você pode definir um novo comando para a regra que redefine o comprimento da regra cada vez que você a chama. Como foi solicitada uma solução compatível com Plain, usei \newskip
, mas incluo uma versão LaTeX comentada abaixo dela.
\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}
As três linhas inferiores mostram a saída do novo comando em tamanhos diferentes.