我制作了一些如下所示的宏,它们输出普通/偏导数。我正在检查它们是否按预期工作,发现在环境中\dif{y}{x}
扩展为。 我只想在句子中使用,而不是在任何显示数学模式中使用。我应该如何更改定义才能在环境、环境等中扩展到?\tfrac{\difd y}{\difd x}
align
\tfrac
\dif{y}{x}
\dfrac{\difd y}{\difd x}
align
gather
我还有一个问题。我认为用我的命令编写的高阶导数(尤其是部分导数)在 f 之前留出了太多空间。
就数学排版而言,哪个是正确的:\frac{〈operator〉^{#1}#2}{〈operator〉#3^{#1}}
或\frac{〈operator〉^{#1}\!#2}{〈operator〉#3^{#1}}
?
编辑(2015 年 6 月 13 日 23:28 日本标准时间):
第一个问题已经解决。
编辑(2015 年 6 月 15 日 14:21 JST):
正如 David Carlisle 指出的那样,我的问题与commath 和 \ifinner和commath
包不应该使用。然后,我还有一个问题。在链接的页面中,有一个名为 的宏\spx
,其定义在下面。从{^{#1}}
定义中我们可以看出,它似乎是一个改进的。这和和^
之间有什么区别,我应该使用“和”还是“不带”?\spx
\^
\(p)dif@nth
\@(p)dif
\spx
\@ifnextchar
我的宏
% ----- differential operator -----
\def\difd@rm{\mathop{\mathrm{d}\!}\mathstrut}
\def\difd@it{\mathop{d\!}\mathstrut}
\def\makedifdrm{\let\difd=\difd@rm}
\def\makedifdit{\let\difd=\difd@it}
\makedifdit % default setting
%
% ----- ordinary derivative -----
\def\dif{\@ifnextchar[\dif@nth\@dif}
\def\dif@nth[#1]#2#3{
\ifinner
\tfrac{\difd^{#1}#2}{\difd#3^{#1}}
\else
\dfrac{\difd^{#1}#2}{\difd#3^{#1}}
\fi
}
\def\@dif#1#2{
\ifinner
\tfrac{\difd#1}{\difd#2}
\else
\dfrac{\difd#1}{\difd#2}
\fi
}
%
% ----- partial derivative -----
\def\pdif{\@ifnextchar[\pdif@nth\@pdif}
\def\pdif@nth[#1]#2#3{
\ifinner
\tfrac{\partial^{#1}#2}{\partial#3^{#1}}
\else
\dfrac{\partial^{#1}#2}{\partial#3^{#1}}
\fi
}
\def\@pdif#1#2{
\ifinner
\tfrac{\partial#1}{\partial#2}
\else
\dfrac{\partial#1}{\partial#2}
\fi
}
定义\spx
及其用法
\newcommand{\spx}[1]{%
\if\relax\detokenize{#1}\relax
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
{^{#1}}%
}
\newcommand\pd[3][]{\frac{\partial\spx{#1}#2}{\partial#3\spx{#1}}}
答案1
\over
使用的原语\frac
会自动切换样式。\tfrac
和\dfrac
宏用于特殊情况,以强制文本或显示样式。\ifinner
不测试文本/显示区别,因此解决方案很简单,只需替换所有
\ifinner
\tfrac{..}{..}
\else
\dfrac{..}{..}
\fi
经过
\frac{..}{..}
对于您的第二个问题,我不会使用负间距,当然您的图像显示的\!
太多了,您几乎可以使用它,f
但其他字符不太适合上标。