输入行 22 上的 \begin{tcb@savebox} 以 \end{center} 结尾,添加额外行时有效

输入行 22 上的 \begin{tcb@savebox} 以 \end{center} 结尾,添加额外行时有效
\usepackage[most]{tcolorbox}
\newtcolorbox{qq}[2][]{,
    #1,
}
\newcommand{\qa}[2]{
    \noindent
    \begin{minipage}{\linewidth}
    \textbf{Q:} 
    #1
    \textbf{A:}
    #2
    \end{minipage}
    \vspace{1em}
}

\begin{document}
\qa{\begin{qq}
    \begin{center}
    hi
    \end{center}
\end{qq}}{hello}
\end{document}

这会产生错误。在“\qa{begin{qq}”和“\begin{center}”之间(即第 18 行和第 19 行之间)添加换行符后,错误消失。我想知道这里发生了什么。

\documentclass{article}
\usepackage[most]{tcolorbox}
\newtcolorbox{qq}[2][]{,
    #1,
}
\newcommand{\qa}[2]{
    \noindent
    \begin{minipage}{\linewidth}
    \textbf{Q:} 
    #1
    \textbf{A:}
    #2
    \end{minipage}
    \vspace{1em}
}

\begin{document}
\qa{\begin{qq}

    \begin{center}
    hi
    \end{center}
\end{qq}}{hello}
\end{document}

答案1

正如评论中提到的那样,当您定义时\newtcolorbox{qq}[2][]LaTeX期望qq环境后面跟着两个参数:

  1. 第一个是可选的(由于 [])
  2. 第二是强制性的。

但是,在 使用 时\qa,您仅提供了被解释为第一个参数的一部分的内容(由于捕获参数的方式),从而导致对环境内容的实际开始位置产生混淆。

在此处输入图片描述

\documentclass{article}
\usepackage[most]{tcolorbox}
\newtcolorbox{qq}[1][]{%
    #1,
}
\newcommand{\qa}[2]{%
    \noindent
    \begin{minipage}{\linewidth}
    \textbf{Q:}%
    #1
    \textbf{A:}%
    #2
    \end{minipage}
    \vspace{1em}
}

\begin{document}
\qa{\begin{qq}
    \begin{center}
    hi
    \end{center}
\end{qq}}{hello}
\end{document}

相关内容