笔记:这或多或少是我博客的转帖。我希望这是可以接受的,尤其是这是一个真正的问题!
我目前正在写一篇(较长的)数学论文。除其他内容外,我还写了关于豪斯多夫度量的内容,我将其表示为$d_H$
。由于这种符号经常出现,我决定为其编写一个命令:
\newcommand{\dH}{{d_H}}
这里之所以有额外的括号,是因为有时我想讨论一个关于豪斯多夫度量的球,用 表示$B_{d_H}$
– 为此,我想写成B_\dH
。如果没有额外的括号,这将行不通(原因很明显)。
到目前为止,一切都很好。但还有另一个问题:我想要一个类似于豪斯多夫度量的概念(称之为豪斯多夫拟度量),我将其表示为$d_H^*$
。按照我的定义,\dH^*
行不通(我希望星号位于下标上方)。所以我想聪明一点,使用一个可选的星号;这样,我可以写\dH
或\dH*
。我这样做了:
\newcommand{\dH}{\@ifstar{d_H^*}{d_H}}
但是我现在失去了书写能力B_\dH
!当然,在周围添加括号也\@ifstar
无济于事:这样它就永远不会“看到”星号了。(注意:我知道这xparse
会使使用可选星号定义命令变得更容易,但我认为这对我的问题没有帮助。)
就我个人而言,我看不出有什么办法可以摆脱这种困境。这不是什么大问题,我可以写B_{\dH}
(反正这是更简洁的 LaTeX 语法),但我很好奇是否有办法既能吃下这块蛋糕,又能拥有它。
答案1
延迟闭团: 之后_
,可以使用\bgroup
。
\documentclass{article}
\makeatletter
\newcommand\dH{\bgroup d_H\@ifstar{^*\egroup}{\egroup}}
\makeatother
\begin{document}
$B_\dH$ and $B_\dH*$
\end{document}
但要避免这样做。