是否可以定义一个宏,根据框的宽度改变字体?
我想定义一个 LaTeX 宏来执行以下操作:
\newcommand{\mylabel}[1] {
\if\latexMagicWidthOf{\labelfont #1}>2em
{\labelfont #1}
\else
{\condensedlabelfont #1}
\fi
}
换句话说,如果 #1 在 labelfont 中宽度超过 2em,则使用 condensedlabelfont。
我认为我可以使用 \newbox 和 \wd\labelbox 来实现 \latexMagicWidthOf,但是我无法比较维度是否相等。
答案1
你可以使用
\newsavebox\mybox
\newcommand{\mylabel}[1] {%%%%%
\sbox\mybox{\labelfont #1}%
\ifdim\wd\mybox <2em % do you want to set the font here? 2em is in whatever the current font is
\usebox{\mybox}%%%%
\else
{\condensedlabelfont #1}%%%%
\fi
}
但也许更简单
\newcommand{\mylabel}[1] {{\labelfont\resizebox{2em}{!}{#1}}}
这将在标签字体中设置 2em 宽的文本。