我正在考虑编写一个具有类似语法的偏导数宏Mathematica D 函数。 (例子)
语法可能是这样的:
\D{f}{x}
扩展为\frac{\partial f}{\partial x}
\D{f}{x,y}
扩展为\frac{\partial^2 f}{\partial x\,\partial y}
\D{f}{{x,2},y}
扩展为\frac{\partial^3 f}{\partial x^2\,\partial y}
- 对于任意数量的衍生品也是如此。
可选参数的加分项,例如
\D[subscript]{f}{{x,2},y}
扩展为f_{xxy}
我看了看commath
包,但语法有点繁琐。例如,要使用\frac{\partial^3 f}{\partial x^2\,\partial y}
该包,我需要执行\md{f}{3}{x}{2}{y}{}
。而且它不能推广到三个变量。
在我深入研究之前,我想先询问蜂巢并看看做了什么。
答案1
这cool
该包提供了用于编写偏导数(以及许多其他东西)的命令。
一个简短的例子:
\documentclass{article}
\usepackage{cool}
\begin{document}
\begin{equation*}
\pderiv{f}{x} \qquad
\pderiv[2,3]{f}{x,y} \qquad
\pderiv[1,n,4]{f}{x,y,z}
\end{equation*}
\end{document}
笔记
默认情况下,最后两个不起作用,因为包中有一个错误。可以通过将的第 2059 行中的a 更改\def
为来修复此问题,请参阅\edef
cool.sty
使用 cool 包的导数进行基本使用时失败,并显示“缺少 \endcsname 插入”
答案2
我有这个,它与你想要的非常相似:
\documentclass[a4paper]{article}
\makeatletter
\newcommand{\der}[2]{\begingroup
\@tempswafalse\toks@={}\count@=\z@
\@for\next:=#2\do
{\expandafter\check@var\next
\advance\count@\der@exp
\if@tempswa
\toks@=\expandafter{\the\toks@\,}%
\else
\@tempswatrue
\fi
\toks@=\expandafter{\the\expandafter\toks@\expandafter\partial\der@var}}%
\frac{\partial\ifnum\count@=\@ne\else^{\number\count@}\fi#1}{\the\toks@}%
\endgroup}
\def\check@var{\@ifstar{\mult@var}{\one@var}}
\def\mult@var#1#2{\def\der@var{#2^{#1}}\def\der@exp{#1}}
\def\one@var#1{\def\der@var{#1}\chardef\der@exp\@ne}
\makeatother
\begin{document}
\[
\der{f}{x}\qquad \der{f}{*{2}{x},y}\qquad \der{f}{*{3}{x},y,*{4}{z}}
\]
\end{document}
编辑:以下代码也将正确呈现
\pder{f}{\mathbf{x}}
\pder{f_1}{x_1}
这里是:
\makeatletter
\newcommand{\der}[2]{\begingroup
\@tempswafalse\toks@={}\count@=\z@
\@for\next:=#2\do
{\expandafter\check@var\next\@nil
\advance\count@\der@exp
\if@tempswa
\toks@=\expandafter{\the\toks@\,}%
\else
\@tempswatrue
\fi
\toks@=\expandafter{\the\expandafter\toks@\expandafter\partial\der@var}}%
\frac{\partial\ifnum\count@=\@ne\else^{\number\count@}\fi#1}{\the\toks@}%
\endgroup}
\def\check@var{\@ifstar{\mult@var}{\one@var}}
\def\mult@var#1#2\@nil{\def\der@var{#2^{#1}}\def\der@exp{#1}}
\def\one@var#1\@nil{\def\der@var{#1}\chardef\der@exp\@ne}
\makeatother
答案3
答案4
自 2019-07-21 起,有另一个软件包允许以相当简单的方式编写导数或偏导数。这个包就是derivative
。以下是取自手册的一些示例:
\documentclass[12pt]{article}
\usepackage{derivative,mathtools}
\begin{document}
\[
\begin{aligned}
\odv{y}{x}\\
\odv*{y}{x}\quad \texttt{switch-*=false}\\
\odv[n]{y}{x}\\
\odv{y}/{x}\\
\odv{y}{x}_{a}\\
\odv{y}{x}^{b}\\
\odv{y}{x}^{b}_{a}\\
\pdv{f}{x,y}\\
\pdv*{f}{x,y}\\
\pdv{ f(x,y,z) }{ x, y, z }\\
\end{aligned}
\]
\end{document}