在对齐中执行的新命令会引发缺失的 $ 插入

在对齐中执行的新命令会引发缺失的 $ 插入

我正在尝试编写一个新命令,该命令会插入一个带有输入的颜色框。这适用于常规文本和数学输入,但在数学环境中,它会抛出“缺少 $ 插入”错误。

\documentclass{article}

\usepackage{amsmath,color}



% I've got several environments for conditional rendering, here's one
\newenvironment{filled}{\ifdefined\filledflag\else\setbox0\vbox\fi\bgroup}{\par\egroup}

% my command
\newcommand{\clozecontentinline}[1]{
    \begin{filled}
        \colorbox{white}{#1}
    \end{filled}
}

\begin{document}

\def\filledflag{}
%% working
\begin{align*}
    a=b+\colorbox{white}{$c$}
\end{align*}

%% not working
\begin{align*}
    a=b+\clozecontentinline{c}\\
    a=b+\clozecontentinline{$c$} % both won't work, missing $ inserted for both
\end{align*}
\end{document}

提前致谢

答案1

在所示的情况下(标志已定义),您正在以\par不允许的数学模式插入。

\documentclass{article}

\usepackage{amsmath,color}


\newbox\zzbox
% I've got several environments for conditional rendering, here's one
\newenvironment{filled}{\relax\ifdefined\filledflag\else\setbox\zzbox\vbox\fi\bgroup}
{\ifdefined\filledflag\else\par\fi\egroup}

% my command
\newcommand{\clozecontentinline}[1]{%
    \begin{filled}
        \colorbox{white}{#1}
    \end{filled}%
}

\begin{document}

\def\filledflag{}
%% working
\begin{align*}
    a=b+\colorbox{white}{$c$}
\end{align*}

%% not working
\begin{align*}
    a=b+\clozecontentinline{c}\\
    a=b+\clozecontentinline{$c$} % both won't work, missing $ inserted for both
\end{align*}
\end{document}

但是这里的 vbox 相当可疑,包含的段落会被拆分为多行\textwidth宽?另外,align永远不要在没有对齐点 () 的情况下使用,&因此不清楚此代码的意图是什么,但现在运行时没有错误。

相关内容