我试图在 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}