![自定义函数无缘无故停止工作](https://linux22.com/image/380652/%E8%87%AA%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0%E6%97%A0%E7%BC%98%E6%97%A0%E6%95%85%E5%81%9C%E6%AD%A2%E5%B7%A5%E4%BD%9C.png)
我定义了一个运算符
\DeclareMathOperator{\s2}{s_{2}}
而第二次使用它时,它告诉我“!\s 的使用与其定义不匹配。\s 2...”在文档的另一个实例中,它运行良好。
答案1
由于命令名称中通常不能有数字,因此一种选择是声明一个接受一个附加数字参数的命令,该参数在内部用作命令名称的一部分:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\s}[1]{\csname s#1\endcsname}
\newcommand{\declareS}[2]{%
\expandafter\DeclareMathOperator
\expandafter{\csname s#1\endcsname}{#2}%
}
\declareS1{s_{1}}
\declareS2{s_{2}}
\declareS{30}{s_{30}}
\begin{document}
$\s1(t) + \s2(t) > \s{30}(t)$
\end{document}
这定义了一个新命令\s
,该命令需要一个参数,然后调用命令\sXX
,其中XX
是参数。要定义被调用的命令,您可以使用\declareS
它XX
以 为第一个参数,以 的主体为第二个参数\DeclareMathOperator
。
如果数字参数的长度超过一位数字,请确保使用括号括起来。该\declareS
命令也非常有限,它总是声明一个\s...
命令并将其映射到数学运算符。当然,可以添加额外的参数使其更通用。