我正在尝试定义一个用于数学模式的自定义命令,定义为
\newcommand{\deriv2}[2]{\ensuremath{\frac{\partial^2 {#1}}{\partial {#2}^2}}}
其他非数学模式 \newcommands 在我的文档中有效,但是一旦我将其置于数学模式,就会收到错误消息:
! LaTeX 错误:缺少 \begin{document}
! 您不能在数学模式下使用“宏参数字符 #”。
我也尝试过在\newcommand
没有 的情况下定义我的\ensuremath
,并在equation
环境、$$
和内调用它的所有组合中定义它\[ \]
。我也在没有参数#1
和的情况下测试了它#2
,但\newcommand
我所做的任何操作似乎都在数学模式下失败。
现在我知道人们可以运行自己的命令来节省数学模式的繁琐,甚至向他们传递参数。
答案1
这是您当前情况的替代方法 - 使用可选参数来指定导数阶数。这样您就不必为“每个”导数定义宏:
\deriv[<order>]{<func>}{<var>}
这是一个简单的例子:
\documentclass{article}
\newcommand{\deriv}[3][]{% \deriv[<order>]{<func>}{<var>}
\ensuremath{\frac{\partial^{#1} {#2}}{\partial {#3}^{#1}}}}
\begin{document}
In text mode there is~\deriv{y}{x} and~\deriv[2]{y}{x}. In display mode there is
\[
\deriv{y}{x}\ \textrm{and}\ \deriv[2]{y}{x}\rlap{.}
\]
\end{document}
默认值为<order>
空,表示一阶偏导数。如果希望默认值为2
,请将定义修改为
\newcommand{\deriv}[3][2]{...}
从技术上讲,可以使用带有数字的宏,但使用方式远不如添加可选参数(如上所示)直观。下面是一个现在允许您使用的实现\nameuse{deriv2}{y}{x}
:
\expandafter\def\csname deriv2\endcsname#1#2{%
\ensuremath{\frac{\partial^2 {#1}}{\partial {#2}^2}}}
\makeatletter
\newcommand{\nameuse}[1]{\@nameuse{#1}}%
\makeatother
可选参数毫无疑问地击败了这一点。
答案2
你可以欺骗 TeX 并使用 2 作为参数:
\newcommand\deriv[3]{\ensuremath{\frac{\partial^2 {#2}}{\partial {#3}^2}}}
现在您可以使用\deriv2{x}{y}
。但这仅在没有\deriv
命令时才有效
答案3
自 2019-07-21 起,有一个名为衍生物。使用起来非常简单。这个包中定义了一些非常简单的宏。
\documentclass[a4paper,12pt]{article}
\usepackage{derivative}
\begin{document}
In text mode there is $\pdv{y}{x}, \quad \pdv[2]{y}{x}$.
In display mode there is
\[\pdv{y}{x}, \quad \pdv[2]{y}{x}.\]
\end{document}
我添加了第 7 页的屏幕截图以获取您问题的代码。