
Я создаю список с общими математическими командами, которые я использую, но \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}
Расчетное время прибытия:
Некоторые комментаторы посчитали, что второй пример добавляет слишком много места, поэтому я перепечатаю поправку Анри Менке из комментариев:
\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}