我可以根据预测宽度更改字体吗

我可以根据预测宽度更改字体吗

是否可以定义一个宏,根据框的宽度改变字体?

我想定义一个 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 宽的文本。

相关内容