我正在排版一道考试题目,比如
\documentclass{article}
\newenvironment{answer}{\par[}{]}
\newenvironment{answersonly}{}{}
\begin{document}
\begin{answersonly}
\begin{enumerate}
\item Question 1
\begin{answer}Answer 1\end{answer}
\item
\begin{enumerate}
\item Question 2a
\begin{answer}Answer 2a\end{answer}
\item Question 2b\par more details
\begin{answer}Answer 2b\end{answer}
\end{enumerate}
\end{enumerate}
\end{answersonly}
\end{document}
导致排版输出如下
1. Question 1
[Answer 1]
2. (a) Question 2a
[Answer 2a]
(b) Question 2b
more details
[Answer 2b]
我现在想将此文档的排版切换为打印模式仅有的答案,但不包含问题,同时保持嵌套枚举完整,这样文档看起来就像
1. [Answer 1]
2. (a) [Answer 2a]
(b) [Answer 2b]
具体来说,我想通过重新定义环境来做到这一点,answersonly
使得其内容的排版就像字符串Question 1
、Question 2a
和Question 2b\par more details
已被删除一样,然后修改answer
环境以中和其内容的影响。
换句话说,我想定义一个answersonly
环境,抑制其主体中任何文本的输出,但以下情况除外
- 枚举环境的项目标签
answer
环境的内容
重要的:我无法修改的内容answersonly
,即我无法在\begin{question}Question 2a\end{question}
要抑制的文本周围放置任何条件编译环境。
是否存在某种“吞咽文本”模式,可以将 LaTeX 更改为这样它就不会输出遇到的任何文本,然后修改enumerate
和answer
环境,使得的项目标签和垂直项目间跳过enumerate
和的内容answers
仍然可以通过?
关于如何做到这一点有什么想法吗?
答案1
我会编辑源代码,使其更像
\item
\begin{question}Question 2b\par more details\end{question}
\begin{answer}Answer 2b\end{answer}
然后结构就更清晰了,您可以简单地定义question
不执行任何操作(因此内容排版)或丢弃其主体,但是正如您所拥有的......
\documentclass{article}
\newenvironment{answer}{\par[}{]}
\newenvironment{answersonly}{
\let\xitem\item\long\def\item##1\begin{\xitem\begin}}{}
\begin{document}
\begin{answersonly}
\begin{enumerate}
\item Question 1
\begin{answer}Answer 1\end{answer}
\item
\begin{enumerate}
\item Question 2a
\begin{answer}Answer 2a\end{answer}
\item Question 2b\par more details
\begin{answer}Answer 2b\end{answer}
\end{enumerate}
\end{enumerate}
\end{answersonly}
\end{document}
答案2
不久前我偶然看到一篇文章,其中有人很好地阐述了类似的东西,使用了“考试”文档类和命令“\printanswers”。我只会链接到这篇文章,他们对此的解释要好得多(第 3 部分应该是您特别想要的)。