如何用命令来定义符号?

如何用命令来定义符号?

有一个符号:

\mathbf{P}^{m}_{b}(n)

如何使用来定义它\newcommand

PS 变量 m、b、n 应该作为参数

答案1

在 LaTeX 中,您可以使用 来定义一个新宏\newcommand\newcommand可以有一个可选的星号,它决定新创建的宏的参数是否可以包含一个\par(或两个连续的换行符)。接下来是新宏的名称。之后是两个可选参数,第一个指定参数的数量,第二个如果使用则定义可选参数的默认值,该参数始终是第一个参数。之后是宏的定义。

\newcommand*\mycmd{my replacement}

定义一个新的宏,称为,展开时\mycmd被替换为。my replacement

\newcommand\mycmd[1]{my replacement with the argument ``#1''}

定义一个接受一个参数的新宏。正确用法如下\mycmd{mandatory}

\newcommand\mycmd[2][default]{optional argument: ``#1''; mandatory argument: ``#2''}

定义一个带有两个参数的新宏,第一个是可选的,第二个是必选的。正确的用法应该是\mycmd[optional]{mandatory}\mycmd{mandatory}


因此,就你的情况而言,如果什么都不需要改变,你可以使用

\newcommand*\mysymbol{\mathbf{P}^{m}_{b}(n)}

如果你希望索引灵活,你可以使用

\newcommand\mynotation[2]{\mathbf{P}^{#1}_{#2}(n)}

然后您就可以\mynotation{m}{b}在文档中使用。

如果也P应该是可变的,你可以使用类似

\newcommand\mynotation[3][P]{\mathbf{#1}^{#2}_{#3}(n)}

然后您可以使用\mynotation[P]{m}{b}\mynotation{m}{b}

如果你甚至希望它(n)是变量,你可以添加另一个参数

\newcommand\mynotation[4][P]{\mathbf{#1}^{#2}_{#3}(#4)}

然后\mynotation[P]{m}{b}{n}或者\mynotation{m}{b}{n}就可以使用。


为了获得更强大的接口来定义宏,你可以使用xparse,你可以用它定义你的宏

\usepackage{xparse}
\NewDocumentCommand \mynotation { O{P} E{^_}{mb} D(){n} }{\mathbf{#1}^{#2}_{#3}(#4)}

然后你可以使用

  • \mynotation它会扩大到\mathbf{P}^{m}_{b}(n)

  • \mynotation[B]它会扩大到\mathbf{B}^{m}_{b}(n)

  • \mynotation^{e}它会扩大到\mathbf{P}^{e}_{b}(n)

  • \mynotation_{d}它会扩大到\mathbf{P}^{m}_{d}(n)

  • \mynotation(x)它会扩大到\mathbf{P}^{m}_{b}(x)

  • \mynotation[B]^{e}_{d}(x)它将扩展为\mathbf{B}^{e}_{d}(x),这与 相同\mynotation[B]_{d}^{e}(x)

答案2

按照射影空间的通常符号,我使用:

射影空间符号

\documentclass{amsart}
\usepackage{xparse}
\NewDocumentCommand\Proj{e^e_d()}{%
    \IfNoValueTF{#1}{\IfNoValueTF{#2}{\mathbb{P}}{\mathbb{P}_{\!#2}}}%
    {\IfNoValueTF{#2}{\mathbb{P}^{#1}}{\mathbb{P}^{#1}_{\!#2}}}%
    \IfValueTF{#3}{\!\left(#3\right)}{}%
}%
\begin{document}
\(\Proj^n, \Proj_k, \Proj^n_k, \Proj(V), \Proj^n(k)\)
\end{document}

相关内容