我正在创建一个包含常用数学命令的列表,但 \newcommand 和 \DeclareMathOperator 都在我刚刚定义的符号后添加了一个空格。例如,比较下面定义的两个命令,
\DeclareMathOperator{\dd}{d}
% Derivartive in Leibniz notation d{#1}/d{#2}
\newcommand{\deriv}[2]{ \frac{\mathrm{d}}#1 }{ \mathrm{d}#2^} }
\newcommand{\dderiv}[2]{ \frac{\dd #1 }{ \dd #2 } }
\deriv{f}{x} 给了我通常的
而 \dderiv{f}{x} 被编译为
我正在使用 Overleaf。有什么方法可以避免这种情况吗?
答案1
该\DeclareMathOperator
命令给出字符串\mathop
间距,类似于\log
或\cos
运算符。
要获取\mathord
(普通数学原子)间距,请将其包裹在括号中:
\newcommand{\dderiv}[2]{ \frac{{\dd} #1 }{{\dd} #2 } }
该\mathord{\dd}
命令也将起作用,因此这是否使事情变得过于复杂或使您更容易理解为什么要包装取决于您\dd
。
因此,对于 MWE 来说:
\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\dd}{d}
% Derivative in Leibniz notation d{#1}/d{#2}
\newcommand{\deriv}[2]{ \frac{\mathrm{d}#1 }{ \mathrm{d}#2} }
\newcommand{\dderiv}[2]{ \frac{{\dd} #1 }{{\dd} #2 } }
\begin{document}
\[ \dderiv{x}{t}
\]
\end{document}
但是,您可能希望在左侧使用类似运算符的间距,而在右侧使用普通间距\dd
,例如\dd x \dd y
:
\documentclass{article}
\usepackage{amsmath}
\newcommand\dd{\mathop{}\mathrm{d}}
% Derivartive in Leibniz notation d{#1}/d{#2}
\newcommand{\deriv}[2]{ \frac{\mathrm{d}#1 }{ \mathrm{d}#2} }
\newcommand{\dderiv}[2]{ \frac{\dd #1 }{\dd #2 } }
\begin{document}
\[ \iint 1 \dd x \dd y
\]
\end{document}
预计到达时间:
一些评论者认为第二个例子增加了过多的空间,因此我将从评论中重印 Henri Menke 的调整:
\newcommand\dd{\mathop{}\!\mathrm{d}}
答案2
对不起,可是
\DeclareMathOperator{\dd}{d}
在很多方面都是错误的,而且行不通任何地方如预期。
我指的不是“直立的 d”(我认为这在数学上是错误的,但这不是重点),而是\dd
指自动地当其后跟有普通符号时添加。
你想要的是
\newcommand{\dd}{\mathop{}\!\mathrm{d}}
一切都会顺利。
\documentclass{article}
\usepackage{amsmath}
\newcommand\dd{\mathop{}\!\mathrm{d}}
% Derivartive in Leibniz notation d{#1}/d{#2}
\newcommand{\dderiv}[2]{ \frac{\dd #1 }{\dd #2 } }
\begin{document}
\[
\dderiv{f}{t} + \iint f(x,y) \dd x \dd y
\]
\end{document}