从一个源文件创建问题/解决方案文档

从一个源文件创建问题/解决方案文档

我想从单个 .tex 文件创建测试/考试类型的文档以及解决方案表。

试卷和解答表看起来几乎一模一样。我在考试课上成功做过类似的事情,我只需添加\ifprintanswers文档来标记答案,然后更改\documentclass{exam}\documentclass[answers]{exam}我想要编译答案文档的时间。

如何在不使用考试课程(比如在 scrartcl 课程中)的情况下实现类似的目标?

更好的是,如果我可以在一次运行 pdflatex 中创建这两个文档,并且无需在运行之间编辑文本文件中的任何内容。

答案1

查看该comment包提供的命令。下面是一个例子。

% main.tex
\documentclass{scrartcl}
\usepackage{comment}
\newcommand\ExamWithoutSolution[1]{%
  \excludecomment{solution}%
  \include{#1}%
}
\newcommand\ExamWithSolution[1]{%
  \includecomment{solution}%
  \include{#1}%
}
\begin{document}
\ExamWithoutSolution{myexam}
\ExamWithSolution{myexam}
\end{document}

% myexam.tex
\title{The Christmas Exam}
\author{Prof.\ John I.Q.\ Nerdelbaum Frink Jr.}
\maketitle

\begin{enumerate}
\item Compute $1+1$.

\begin{solution}
 The answer is $2$.
\end{solution}

\item Compute $1-1$.

\begin{solution}
 The answer is $0$.
\end{solution}
\end{enumerate}

运行pdflatex一次main.tex就会产生一份有两页的文档。

在此处输入图片描述

答案2

你可以使用以下命令定义开关\newif

\newif\ifSolution % defines \ifSolution, \Solutiontrue, and \Solutionfalse
\Solutiontrue     % set flag "Solution" to true
\Solutionfalse    % set flag "Solution" to false
\ifSolution ... \else ... \fi % Execute code depending on flag "Solution"

这是我的其他解决方案中的示例,其输出相同:

% main.tex
\documentclass{scrartcl}
\newif\ifSolution
\newcommand\ExamWithoutSolution[1]{%
  \Solutionfalse
  \include{#1}%
}
\newcommand\ExamWithSolution[1]{%
  \Solutiontrue
  \include{#1}%
}
\begin{document}
\ExamWithoutSolution{myexam}
\ExamWithSolution{myexam}
\end{document}

% myexam.tex
\title{The Christmas Exam}
\author{Prof.\ John I.Q.\ Nerdelbaum Frink Jr.}
\maketitle

\begin{enumerate}
\item Compute $1+1$.

\ifSolution
The answer is $2$.
\fi

\item Compute $1-1$.

\ifSolution
The answer is $0$.
\fi
\end{enumerate}

相关内容