直接获取已定义命令的值

直接获取已定义命令的值

我定义了一个新的命令或定义,它应该存储我的默认字体的值:

\newcommand{\defaultfont}{\fontname\font}

但是,在具有 \footnotesize 的表格环境中使用此命令时,我收到的值是:ec-lmr8,而不是 ec-lmr10

因此,我只想让 latex 在 \newcommand 行中使用时直接评估命令,这样就不存储纯命令,而是存储结果。这怎么可能呢?

答案1

\fontname是一个原始的 TeX 命令,其后应跟一个字体说明符或\font(代表当前字体)。

另一方面,TeX 是一种宏扩展语言,因此您的定义\defaultfont只是\defaultfont用替换了\fontname\font,因此它指的是执行扩展时当前的字体。您需要\fontname在定义时进行扩展,而不是在调用时进行扩展。

如果要存储默认字体的名称

\AtBeginDocument{\xdef\defaultfont{\fontname\font}}

例子:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\AtBeginDocument{\xdef\defaultfont{\fontname\font}}

\setlength{\textheight}{2cm} % just for the example

\begin{document}

text\footnote{The default font is \defaultfont, not
the same as \fontname\font}

\end{document}

在此处输入图片描述

答案2

我发现可以在传递参数之前使用 \edef 进行直接求值,例如

\edef\currentfont{\fontname\font}

但没有找到 \newcommand

相关内容