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