衍生条件排版命令?

衍生条件排版命令?

我想制作一个命令来简化我的方程式排版。我有许多方程式,包括高阶导数

\frac{\partial^2y}{\partial x^2}
\frac{\partial^3z}{\partial t^3}    
....

现在我发出命令

\newcommand\mfrac[3]{\frac{\partial^{\if #1=1 \relax \else #1}#2}{\partial #3^{\if #1=1 \relax \else #1}}}

该命令有三个参数:第一个是导数的阶数,第二个是分母的参数,第三个是分子的参数。如果阶数为 1,则应省略。

但效果不太好,我怎样才能发出这样的命令呢?

答案1

我认为,您不应该重新发明轮子,而应该加载该esdiff 包,它已经通过其\diff\diffp命令实现了这一点(甚至更多)。它可以考虑下标。在偏导数中,它能够根据变量的指数计算导数的阶数。演示:

\documentclass{article}%

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{mathtools}
\usepackage[thinc]{esdiff}

 \begin{document}

\begin{alignat*}{3}
     \diff{f}{x} &\qquad  \diff[4]{g}{t} \\[2ex]
     \diffp{f}{x} &\qquad\diffp{g}{tu}& & \qquad &  \diffp{g}{{t^2}{u^3}}
 \end{alignat*}

 \end{document}

在此处输入图片描述

答案2

我也使用预定义命令来计算导数,但我采用了不同的方法。我将导数的阶定义为可选参数。因此,只有当阶数不为 1 时,我才需要指定它。我希望这能解决您的问题,尽管这是一种不同的方法。

\DeclareMathOperator{\diff}{d\,}
\newcommand{\abl}[3][]{\ensuremath{\frac{\diff^{#1}#2}{\diff #3^{#1}}}}

答案3

你的错误是:\if 2=1没有评估测试 2=1,而是比较了接下来的两个标记2=,如果这些标记相等,则打印 1。但它们当然不相等。你需要使用\ifnum 2=1。第二个错误:你的测试没有通过完成\fi

这不是重新发明轮子。这只是 TeX 编程基本知识的简单练习。例如,您的宏可以这样定义:

\def\mfrac#1#2#3{{\partial\ifnum#1>1^{#1}\fi#2\over\partial#3\ifnum#1>1^{#1}\fi}}

恕我直言,与了解特殊 LaTeX 包的用法相比,了解您的错误出在哪里以及 TeX 原始级别的条件如何工作更有帮助。

相关内容