
我正在創建一個包含我使用的常見數學命令的列表,但 \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} 被編譯為
我正在使用背頁。有什麼辦法可以避免這種情況嗎?
答案1
這個\DeclareMathOperator
指令給予字串\mathop
間距,就像\log
or\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}