![输入行 22 上的 \begin{tcb@savebox} 以 \end{center} 结尾,添加额外行时有效](https://linux22.com/image/475082/%E8%BE%93%E5%85%A5%E8%A1%8C%2022%20%E4%B8%8A%E7%9A%84%20%5Cbegin%7Btcb%40savebox%7D%20%E4%BB%A5%20%5Cend%7Bcenter%7D%20%E7%BB%93%E5%B0%BE%EF%BC%8C%E6%B7%BB%E5%8A%A0%E9%A2%9D%E5%A4%96%E8%A1%8C%E6%97%B6%E6%9C%89%E6%95%88.png)
\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
环境后面跟着两个参数:
- 第一个是可选的(由于 [])
- 第二是强制性的。
但是,在 使用 时\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}