更新(根据 D. Carlisle 的评论)

更新(根据 D. Carlisle 的评论)

我试图在 mathmode 中定义\d\delta,但显然\d定义为下面的一个点,并且需要一个参数:\d{a}将给出一个a带有下面一个点的。我该怎么做?以下是我正在使用的包,我不想删除,因为我不确定它们到底是做什么的

\documentclass[20pt]{report}
\usepackage[utf8]{luainputenc}
\usepackage[skip=8pt,font=footnotesize]{caption}
\usepackage[a4paper, total={6.5in, 9.63in}]{geometry}
\usepackage{microtype}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage{float}
\usepackage{amsthm, bm}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{mwe}
\usepackage{physics}
\usepackage{mdframed}
\usepackage{esint}
\usepackage[export]{adjustbox}
\usepackage{bm}
\usepackage{hyperref}
\usepackage[backend=bibtex]{biblatex}
\usepackage[nottoc]{tocbibind}

如果我跑

\let\d\undefined
\renewcommand{\d}{\delta}

\begin{document}

\begin{align*}
\d
\end{align*}

\end{document

我明白了! LaTeX Error: \d undefined.

答案1

您不需要\let

\renewcommand{\d}{\delta}

将重新定义\d。然而,这几乎总是一个坏主意,任何使用下点的都会\d期望它不会被重新定义。

\documentclass{article}
\DeclareUnicodeCharacter{1ECD}{\d{o}}

\begin{document}

[ọ]
\end{document}

应该可以工作,所以如果您重新定义,\d您需要找到\d任何地方的每个用法并将其更改为使用不同的命令来表示下划线。

发布的代码不会产生}您所述的缺失错误,它会产生

! LaTeX Error: Command \d undefined.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.24 \renewcommand{\d}
                      {\delta}

\d因为如果你删除行,则未定义

\let\d\undefined

然后它运行就不会出错。

答案2

更新(根据 D. Carlisle 的评论)

\documentclass{article}
\usepackage{amsmath}

\let\oldd\d

\protected\def\d{%
    \ifmmode\delta\else\expandafter\oldd\fi}

\begin{document}
\parindent0pt


text mode: \d a
\bigskip

math mode: $\delta\frac{1}{2}$, $\begin{array}{c}\d\gamma\end{array}$, $\d^2$
\end{document}

最初的尝试

我不是专家,但似乎以下方法也有效。如果有人能更详细地讨论一下所提出的尝试是否安全,那就太好了。

\documentclass{article}
\usepackage{amsmath}

\let\oldd\d

\def\d#1{%
    \ifmmode\delta\else\oldd{#1}\fi
    \ifmmode#1\fi}

\begin{document}
\parindent0pt


text mode: \d a
\bigskip

math mode: $\d^2-4\text{\d a}$, $\d$
\end{document}

在此处输入图片描述

相关内容