笔记

笔记

我正在考虑编写一个具有类似语法的偏导数宏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为来修复此问题,请参阅\edefcool.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}

相关内容