在数学模式中重新定义`\S`

在数学模式中重新定义`\S`

我想通过\DeclareMathOperator{\S}{\mathsf{S}}new 运算符进行定义,但它说\S已经定义。我该如何重新定义它?

答案1

(更新后的答案纳入了 egreg 的意见和建议)

假设您希望保留的文本模式含义\S,我建议您按照下面的代码所示进行操作。

enter image description here

\S如果您碰巧加载了任何使用 的包\S,那么保留 的文本模式含义尤其有用(实际上是必不可少的)。

\documentclass{article}
\usepackage{letltxmacro} % for '\LetLtxMacro' macro
\usepackage{amsmath}     % for '\operatorname' macro
\LetLtxMacro\origS\S % preserve original def. of "\S"
\renewcommand{\S}{\ifmmode\operatorname{\mathsf{S}}\else\origS\fi}

\begin{document}
\S1, $\mathsf{a}\S \mathsf{a}$, $\mathsf{a}\S(\mathsf{a})$
\end{document}

答案2

我不认为以这种方式重载命令是一种好的做法。事实上,我非常确信事实恰恰相反。

定义\opS之后你就可以上路了。

无论如何,如果你真的想要它,请查看的\S定义latex.ltx

% latex.ltx, line 2119:
\DeclareRobustCommand{\S}{\ifmmode\mathsection\else\textsection\fi}

因此,您会发现\S数学模式已经做了一些不同的事情(它将§打印为数学符号)。您只需重新定义\mathsection

\documentclass{article}
\usepackage{amsmath}

\renewcommand\mathsection{\operatorname{\mathsf{S}}}

\begin{document}

Text: \S

Math: $\S(a)$

\end{document}

enter image description here

相关内容