是否可以捕获宏本身添加的子标/上标?请考虑以下示例:
\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}
这使