如何设置随字体重新缩放的距离

如何设置随字体重新缩放的距离

我正在尝试设置一个相对于字体大小的距离。问题是该距离在文档中被重复使用多次,可能在字体大小不同的环境中。在每种情况下,距离都应自动重新缩放以保持其与字体大小的比例。不幸的是,简单地在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}

下面三行以不同的大小显示新命令的输出。

在此处输入图片描述

相关内容