
フォント サイズに相対的な距離を設定しようとしています。問題は、ドキュメント内で距離が複数回再利用され、フォント サイズが異なる環境で使用される可能性があることです。いずれの場合も、距離はフォント サイズとの比率を維持するために自動的に再スケールされる必要があります。残念ながら、距離は現在のフォントのサイズまたはに保存されるため、単にem
またはで距離を指定してex
も機能しません。フォントが変更されても、距離はそれに応じて更新されません。em
ex
これを回避する方法はありますか? 理想的には、このソリューションは LaTeX と PlainTeX の両方で機能するはずです。
以下は、現在の望ましくない動作を示す M(n)WE です。
\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}
答え1
距離を長さレジスタではなくマクロとして定義します。
\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}
答え2
ルールを呼び出すたびにルールの長さをリセットする新しいコマンドをルールに定義できます。 Plain 互換のソリューションが要求されたため、 を使用しました\newskip
が、その下にコメント アウトされた LaTeX バージョンを含めます。
\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}
下の 3 行には、新しいコマンドの出力がさまざまなサイズで表示されます。