没有考虑 ifmmode 的数字列表?

没有考虑 ifmmode 的数字列表?

我有以下代码:

\documentclass{article}

\usepackage{amsmath}

\def\cma#1{$A_{c}(#1)$}

\def\cmbs#1{B_{c_{\mathcal{L}}}^{#1}}
\def\cmb#1{\ifmmode\cmbs{#1}\else$\cmbs{#1}$\fi}

\begin{document}

\listoffigures

\begin{figure}[h]
\caption{\cma{\cmb{+}}}
\end{figure}

\end{document}

当尝试编译它(第二次获取图形列表)时,我得到:

! 缺少插入 $。

<插入文本>

l.1 ...es $A_{c}($B_{c_{\mathcal {L}}}^{+}$)$}}{1}

如果我注释掉\listoffigures,一切都会正常。当我查看文件时.lof,我看到:

\contentsline {figure}{\numberline {1}{\ignorespaces $A_{c}($B_{c_{\mathcal {L}}}^{+}$)$}}{1}

这似乎意味着该\ifmmode命令没有正常工作......

有什么方法可以解决这个问题而不必明确使用\cma{\cmbs{+}}

答案1

当 LaTeX 编写目录行时,它不是在数学模式中。

你可以定义

\newcommand{\cma}[1]{\ensuremath{A_{c}(#1)}}
\newcommand{\cmb}[1]{\ensuremath{B_{c_{\mathcal{L}}}^{#1}}}

进而

\caption{\cma{\cmb{+}}}

会起作用。另一方面,我看不出有什么改进

\newcommand{\cma}[1]{A_{c}(#1)}
\newcommand{\cmb}[1]{B_{c_{\mathcal{L}}}^{#1}}

以及更具语义的

\caption{$\cma{\cmb{1}}$}

避免 \def

相关内容