\newcommand 在数学模式下出现错误(带或不带参数)

\newcommand 在数学模式下出现错误(带或不带参数)

我正在尝试定义一个用于数学模式的自定义命令,定义为

\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 页的屏幕截图以获取您问题的代码。

在此处输入图片描述

相关内容