我定义了一个新的命令或定义,它应该存储我的默认字体的值:
\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