Erstellen separater Übungsblätter für Fragen, Lösungen und Hinweise mithilfe einer LaTeX-Klasse

Erstellen separater Übungsblätter für Fragen, Lösungen und Hinweise mithilfe einer LaTeX-Klasse

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 MakefileWith die latexmkDateien 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 examKlasse verwenden, also habe ich das optionalPaket verwendet, um eine einfache Umgebung zu definieren, die nichts anzeigt, wenn die Option showhintsnicht 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 Makefiledrei verschiedene Ausgaben erzeugt:

  1. mwe-base.pdf, welches das vorgesehene Übungsblatt ist;
  2. mwe-answers.pdf, das Lösungen, aber keine Hinweise enthält;
  3. 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.

verwandte Informationen