Como definir uma distância redimensionada com a fonte

Como definir uma distância redimensionada com a fonte

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 emou exnão funciona porque a distância é armazenada no tamanho emou exna 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}

insira a descrição da imagem aqui

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.

insira a descrição da imagem aqui

informação relacionada