我想创建一个 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}
请注意,如果您想要对空间进行标记,则需要{}
在命令后添加或任何替代项。