So legen Sie einen Abstand fest, der mit der Schriftart neu skaliert wird

So legen Sie einen Abstand fest, der mit der Schriftart neu skaliert wird

Ich versuche, einen Abstand festzulegen, der relativ zur Schriftgröße ist. Das Problem besteht darin, dass der Abstand im Dokument mehrmals wiederverwendet wird, möglicherweise in Umgebungen mit unterschiedlicher Schriftgröße. In jedem Fall sollte der Abstand automatisch neu skaliert werden, um sein Verhältnis zur Schriftgröße beizubehalten. Leider funktioniert es nicht, den Abstand einfach in emoder anzugeben, da der Abstand in der Größe von oder in der aktuellen Schriftart exgespeichert ist . Wenn sich die Schriftart ändert, wird der Abstand nicht entsprechend aktualisiert.emex

Gibt es eine Möglichkeit, dies zu umgehen? Idealerweise sollte die Lösung sowohl unter LaTeX als auch unter PlainTeX funktionieren.

Unten ist ein M(n)WE, das das aktuelle, unerwünschte Verhalten zeigt.

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

Antwort1

Definieren Sie die Entfernung als Makro und nicht als Längenregister:

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

Bildbeschreibung hier eingeben

Antwort2

Sie können einen neuen Befehl für die Regel definieren, der die Regellänge bei jedem Aufruf zurücksetzt. Da eine Plain-kompatible Lösung gefordert wurde, habe ich verwendet \newskip, aber ich füge darunter eine auskommentierte LaTeX-Version ein.

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

Die unteren drei Zeilen zeigen die Ausgabe des neuen Befehls in unterschiedlichen Größen.

Bildbeschreibung hier eingeben

verwandte Informationen