フォントに合わせて再スケールする距離を設定する方法

フォントに合わせて再スケールする距離を設定する方法

フォント サイズに相対的な距離を設定しようとしています。問題は、ドキュメント内で距離が複数回再利用され、フォント サイズが異なる環境で使用される可能性があることです。いずれの場合も、距離はフォント サイズとの比率を維持するために自動的に再スケールされる必要があります。残念ながら、距離は現在のフォントのサイズまたはに保存されるため、単にemまたはで距離を指定してexも機能しません。フォントが変更されても、距離はそれに応じて更新されません。emex

これを回避する方法はありますか? 理想的には、このソリューションは 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 行には、新しいコマンドの出力がさまざまなサイズで表示されます。

ここに画像の説明を入力してください

関連情報