\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}