Ich verlasse mich derzeit darauf, dass die Prüfungsklasse separate Übungsblätter für Fragen und Lösungen erstellt. Gibt es eine Möglichkeit, diese Klasse zu nutzen, um ein drittes Blatt mit Hinweisen anstelle von vollständigen Lösungen zu erstellen, oder eine bessere Alternative?
Die Struktur der einzigartigen Tex-Datei würde ungefähr so aussehen:
\documentclass{exam} % or any other suggestion
\begin{document}
\begin{questions}
\question Prove that $A\implies B$.
\begin{hint}
Use contradiction.
\end{hint}
\begin{solution}
The details...
\end{solution}
\end{questions}
\end{document}
Und dann würde ein entsprechendes Makefile
With die latexmk
Dateien sheet-questions.pdf, sheet-hints.pdf und sheet-solutions.pdf erzeugen, indem die richtigen Optionen an die ausgewählte Klasse übergeben werden, wie an anderer Stelle auf dieser Site beschrieben.
Antwort1
Ich hatte bereits viele Dateien, die die exam
Klasse verwenden, also habe ich das optional
Paket verwendet, um eine einfache Umgebung zu definieren, die nichts anzeigt, wenn die Option showhints
nicht verwendet wird. Hier ist ein einfaches Beispiel:
\documentclass{exam}
\qformat{\textbf{Question \thequestion\hfill}}
% The "optional" package allows the definition of an environment
% hints that will only be printed if the showhints option is passed
\usepackage[dummy]{optional} % document fails to compile if optional has no options ...
\makeatletter
\@ifpackagewith{optional}{showhints}{
% environment definition for the case where hints must be shown
\newenvironment{hints}[1][]{\textbf{Hints:} #1}{}
}{
% environment definition for the case where hints must be hidden
\newenvironment{hints}[1][]{\setbox\z@\vbox\bgroup}{\egroup}
}
\makeatother
\begin{document}
\begin{questions}
\question How do you include a package in \LaTeX?
\begin{hints}
Ask around at tex.stackexchange.com if you dare.
\end{hints}
\begin{solution}
Use the \texttt{\textbackslash usepackage} command.
\end{solution}
\end{questions}
\end{document}
Vorausgesetzt, das Obige wird in einer Datei mit dem Namen gespeichert mwe.tex
, werden im Folgenden Makefile
drei verschiedene Ausgaben erzeugt:
mwe-base.pdf
, welches das vorgesehene Übungsblatt ist;mwe-answers.pdf
, das Lösungen, aber keine Hinweise enthält;mwe-hints.pdf
, das Hinweise, aber keine Lösungen enthält.
SOURCES = $(wildcard *.tex)
TARGETS = $(patsubst %.tex, %, $(SOURCES))
all: $(TARGETS)
%: %.tex
latexmk -jobname=$(basename $<)-base -pdf -pdflatex='pdflatex -shell-escape -interaction=nonstopmode' $<
latexmk -jobname=$(basename $<)-answers -pdf -pdflatex='pdflatex -jobname=$(basename $<)-answers -shell-escape -interaction=nonstopmode "\PassOptionsToClass{answers}{exam}\input{$(basename $<)}"' $<
latexmk -jobname=$(basename $<)-hints -pdf -pdflatex='pdflatex -jobname=$(basename $<)-hints -shell-escape -interaction=nonstopmode "\PassOptionsToPackage{showhints}{optional}\input{$(basename $<)}"' $<
clean:
rm -f *.out *aux *bbl *blg *log *toc *.ptb *.tod *.fls *.fdb_latexmk *.lof
Es besteht höchstwahrscheinlich Raum für Verbesserungen.