如何创建一个具有预先未知名称的文档命令?

如何创建一个具有预先未知名称的文档命令?

我想创建一个 LaTeX3 函数,\my_func它有一个参数,#1需要初始化为 LaTeX3 字符串。方法是使用\my_func的 创建一个新的文档命令,其名称是作为 的参数传递的名称。我该怎么做?xparse\NewDocumentCommand\my_func

举一个具体的使用示例,我想定义一堆数学函数。不过,我仍然不确定要用什么符号来表示它们。因此,我定义了宏\func1\func2等,这些宏的名称相当长且富有表现力,例如\LeftProjectionOfTheSecondDegree。这些名称不会改变,但在纸面上表示它们的符号以后可能会改变。

这些函数中的每一个都可以独立出现,也可以在更大的表达式中出现。当在更大的表达式中使用时,函数总是带有参数。但是,当它们单独使用时,我需要表达它们带有多少个参数,所以我使用下标,但是当函数是更大表达式的一部分时,这些下标不应该出现,因为这样就可以很容易地从上下文中推断出参数的数量。

答案1

\ensuremath我认为,您正在寻找的正是。\ensuremath确保其内容在数学模式中排版:您处于数学模式吗?好的,只需输入代码;您退出数学模式了吗?好的,然后$..$在表达式周围输入。

\documentclass{article}

\usepackage{xparse}

\NewDocumentcommand\savelongexpression{mm}{\NewDocumentCommand#1{}{\ensuremath{#2}}

\savelongexpression\nameone{x^2 + y^2}
\savelongexpression\nametwo{\sin x \cos x}

\begin{document}

\nameone{} and \nametwo. Also $\nameone + \nametwo$, and
\[
  \nameone - \nametwo
\]
too.

\end{document}

请注意,如果您想要对空间进行标记,则需要{}在命令后添加或任何替代项。

相关内容