所以……我试图创建(我假设)一个简单的命令,尝试进行一些不错的格式化。这是我所拥有的。
\usepackage{enumitem}
\newenvironment{question}{\bf}{\normalfont}
\newenvironment{answer}{\it}{\normalfont}
\newcommand{\qna}[2]{
\fcolorbox{black}{yellow}{
\begin{question}
#1
\end{question}
\begin{answer}
#2
\end{answer}
}
}
现在,当我输入任何字符串时,这似乎都能完美运行。
\qna{Here's a q}{Here's an answer}
但当我尝试将非字符串作为第二个变量传递时,我遇到了问题。示例
\qna{Here's a q}{Here an answer in list format
\begin{enumerate}
\item answer 1
\item answer 2
\end{enumerate}
}
我得到的错误是
Something's wrong--perhaps a missing \item. }
我不知道我做错了什么以及有什么可以解决它的方法。
最小工作示例:
\documentclass[11pt]{book}
\usepackage{enumitem}
\usepackage{xcolor}
\newenvironment{question}{\bf}{\normalfont}
\newenvironment{answer}{\it}{\normalfont}
\newcommand{\qna}[2]{
\fcolorbox{black}{yellow}{
\begin{question}
#1
\end{question}
\begin{answer}
#2
\end{answer}
}
}
\begin{document}
\qna{test}{test}
\end{document}
答案1
的问题\fcolorbox
是不允许lists
在里面。在这种情况下,minipage
或parbox
会有所帮助,但两者都不可破坏。我使用tcolorbox
包和tcolorbox
环境来提供一个可破坏的盒子(以及许多其他可配置选项,例如盒子角、颜色、标题行等)
此外,类似exam
或的软件包exsheets
也是为此类任务而设计的。
我用xparse
's\NewDocumentCommand
表示'更容易'长篇论证到命令而不是\newcommand
。
\documentclass{article}
\usepackage{xcolor}
\usepackage{enumitem}
\usepackage{xparse}%
\usepackage[breakable]{tcolorbox}
\newenvironment{question}{\bfseries}{\normalfont}%
\newenvironment{answer}{\itshape}{\normalfont}%
\NewDocumentCommand{\qna}{+m+m}{%
\begin{tcolorbox}[breakable,colback=yellow]
\begin{question}
#1
\end{question}
\begin{answer}
#2
\end{answer}
\end{tcolorbox}
}
\begin{document}
\qna{Here's a q}{Here an answer in list format
\begin{enumerate}
\item answer 1
\item answer 2
\end{enumerate}
}%
\end{document}