通过宏捕获宏的下标/上标

通过宏捕获宏的下标/上标

是否可以捕获宏本身添加的子标/上标?请考虑以下示例:

\newcommand{\fx}[1]{f(x)}
\fx{x}   % -> f(x)
\fx{x}^2 % -> f(x)²

现在的问题是,是否有可能做类似的事情

\newcommand{\fx}[1]{f<superscript-here>(x)}
\fx{x}^2 % -> f²(x)

当然不是这样,但原则上是使用一些 hacky TeX 东西?

答案1

我发现诸如“f²(x)”这样的符号有歧义;我知道这是三角函数的传统符号,但我认为

f(x)²

当我们同意“f(x)”优先于其他代数表达式时,歧义性就会大大减少。

然而,它就在这里。

\documentclass{article}
\makeatletter
\newcommand{\fx}[1]{\def\buergi@arg{#1}\@ifnextchar^\buergi@fexp{f(#1)}}
\def\buergi@fexp^#1{f^{#1}(\buergi@arg)}
\makeatother

\begin{document}
$\fx{x}\quad\fx{x}^2$
\end{document}

您传递参数并测试该参数是否后面跟着^;在这种情况下您排版f^{<exponent>}(<argument of \fx>),否则您做简单的事情。

更通用的宏可能是

\documentclass{article}
\makeatletter
\newcommand{\fx}[2][f]{%
  \def\buergi@arg{#2}%
  \@ifnextchar^{\buergi@fexp{#1}}{#1(#2)}}
\def\buergi@fexp#1^#2{#1^{#2}(\buergi@arg)}
\makeatother

\begin{document}
$\fx{x}\quad\fx{x}^2$

$\fx[g]{x}\quad\fx[g]{x}^2$
\end{document}

这使

在此处输入图片描述

相关内容