我使用该软件包braket
记录物理笔记,这大大加快了速度,但我经常写\ket{\psi}
或\bra{\psi}
,而且由于这件特定的胸罩和裤子出现的频率很高,所以这变得重复,我希望有一个宏来加快速度。但是由于该braket
软件包仅在数学模式下工作,因此\newcommand{\ketp}{$\ket{\psi}}$
当我在文本模式下写作时,我的尝试有效,但在数学模式下写作时,它会中断(这并不奇怪)。
有什么方法可以使这个命令在数学模式和文本模式下工作,而不必为每个命令定义两个不同的宏?
在此先感谢您的帮助。
PS:我确信这是一个非常简单的问题,但我几乎找不到关于此功能的任何解释。
答案1
您可以使用
\newcommand{\ketp}{\ensuremath{\ket{\psi}}}
然而,目前尚不清楚这样做是否总是一个好主意。TeX 标记基于一种在文本和数学命令之间有明确区分的设计,假设作者始终知道正在使用哪种模式,并且通常在文本和数学中使用的类似命令具有不同的名称,例如比较\^
和。\hat
也就是说,它\ensuremath
被添加到 LaTeX 中来执行您要求的操作,因此如果您想使用它,它就在那里......
答案2
有一个命令专门用于此目的:\ensuremath{…}
。如果在数学模式下使用,它会给出其参数不变;如果在文本模式下使用,它会给出其参数,但进入数学模式。
所以\newcommand{\ketp}{\ensuremath{\ket{\psi}}}
我会按照你的要求去做。
关于其使用的一些良好指导:正确使用方法ensuremath
;什么时候不是使用ensuremath
。