将 \d 重命名为微分

将 \d 重命名为微分

我知道这个问题听起来很危险,就像在征求意见,但我还是试了一下。因为我从来没有用过“下点重音符”,所以\d我把它重新命名为数学模式中的微分

\renewcommand*{\d}{\mathop{}\!\mathrm{d}}

出于可移植性考虑,我决定稍微改变一下,以保留文本模式下的原意,写作

\let\originald\d
\renewcommand*{\d}{\relax\ifmmode\mathop{}\!\mathrm{d}\else\d\fi}

这不起作用,因为文本模式下的下划线位置很糟糕。然后我尝试了以下构造(现在在 MWE 中)

\documentclass{article}   

\let\originald\d
\makeatletter
\renewcommand*{\d}{\relax\ifmmode\mathop{}\!\mathrm{d}\expandafter\@gobble\else\expandafter\@firstofone\fi\originald}
\makeatother

\begin{document}
Compare \d{x} with $\d{x}$.
\end{document}

看起来运行正常。

我的问题是:这种结构是否仍然会失效?或者可能有更好的方法?或者这只是一个非常糟糕的想法,我在任何情况下都不应该使用?;-)

答案1

不久前我得到了这个

\usepackage{etoolbox}
\letcs\originald{\encodingdefault\string\d}
\DeclareRobustCommand*\d
  {\ifmmode\mathop{}\!\mathrm{d}\else\expandafter\originald\fi}

而且,没有\letcs

\expandafter\let\expandafter\originald\csname\encodingdefault\string\d\endcsname
\DeclareRobustCommand*\d
  {\ifmmode\mathop{}\!\mathrm{d}\else\expandafter\originald\fi}

我不知道它是否有效,但我没有编造它:) 也许它\def\let宏更好\originald

相关内容