Verfassen von Tutorien mit Prüfungsunterlagen der Klasse, mit und ohne Lösungen

Verfassen von Tutorien mit Prüfungsunterlagen der Klasse, mit und ohne Lösungen

Ich möchte einige Tutorials für meine Studenten schreiben und verwende hierfür die examDokumentklasse und die solutionUmgebung.

jetzt ist das Problem, ich habe eine Aussage

\printanswers

dass ich für das Tutorial einen Kommentar hinterlassen und für die Lösung die Kommentare entfernen muss.

Ich hatte gehofft, dass es eine Möglichkeit gibt, es einmal zu kompilieren und die Quelldatei (sagen wir tutorial.tex) zwei PDFs erstellt -

  1. tutorial.pdf (ohne Lösungen)
  2. tutorialSolution.pdf (mit Lösungen)

Nachfolgend mein Quellcode -

\documentclass{exam} 
%\printanswers
\usepackage[T1]{fontenc}
\usepackage{pslatex}
 \usepackage[pdftex]{color}  
 \usepackage[pdftex]{graphicx}     

\begin{document}
\begin{questions}

\vskip 0.5 cm \question Question header \vskip 0.5cm
Question text

\begin{solution}
Solution text
\end{solution}

\end{questions}
\end{document}

Vielen Dank für jede Hilfe, die Sie leisten können. Gaurav

Antwort1

Hier ist eine Methode, die mir für die Verwaltung dieser Art von Arbeitsablauf vorschwebte.

Sie erstellen 3 Dateien. Die erste ist Ihre Hauptdatei, tutorial.texsagen wir:

\usepackage[T1]{fontenc}
\usepackage{pslatex}
 \usepackage[pdftex]{color}  
 \usepackage[pdftex]{graphicx}     

\begin{document}
\begin{questions}

\vskip 0.5 cm \question Question header \vskip 0.5cm
Question text

\begin{solution}
Solution text
\end{solution}

\end{questions}
\end{document}

Die anderen beiden sind Wrapper. Dies könnten beispielsweise sein tutorialQuestions.tex:

\documentclass{exam} 
\input{tutorial}

Und tutorialSolutions.tex:

\documentclass{exam} 
\printanswers
\input{tutorial}

Sie können dann separat kompilieren tutorialSolutions.tex, tutorialQuestions.texohne die andere Version zu überschreiben. Oder Sie können ein Skript verwenden, das dies für Sie erledigt. (Wie das geht, hängt von Ihrem Betriebssystem ab.) Es ist auch möglich, verschiedene Helfer mit TeX zu verwenden, um vieles davon zu erledigen und/oder Ihre IDE Dinge automatisieren zu lassen. Das Obige ist jedoch die Grundidee, die Sie dann auf die Weise einbetten, die am besten zu Ihren bevorzugten Tools passt.

Antwort2

WährendcfrDie Antwort von ist sehr schön und allgemein gehalten, ich bin auch auf dieses Problem gestoßen und wollte eine spezifische Lösung mit einer IDE vorstellen,TeXstudio.

Um dies zu erreichen, habe ich eineBenutzerbefehl( Preferences > Build > User Commands) als

"/path/to/script/compile-exam.py" %.tex -f | txs:///pdflatex | mv %.pdf %Solutions.pdf | mv %.synctex.gz %Solutions.synctex.gz | "/path/to/script/compile-exam.py" %.tex | txs:///pdflatex | txs:///view-pdf-internal "?m)Solutions.pdf"

wo compile-exam.pyist ein Python-Skript, das ich geschrieben habe (verfügbarHier):

from argparse import ArgumentParser
import re
from shutil import copyfile

parser = ArgumentParser()
parser.add_argument('filename')
parser.add_argument('-f', '--forward', action='store_true')

args = parser.parse_args()
copyfile(args.filename, args.filename+'.bak')

basename = re.match(r".+(?=\.tex)", args.filename).group(0)

if args.forward:
    contents = []
    with open(args.filename, 'r') as in_file:
        for line in in_file:
            if r'\printanswers' in line:
                contents.append('\printanswers\n')
            else:
                contents.append(line)
    with open(args.filename, 'w') as out_file:
        for line in contents:
            out_file.write(line)
else:
    contents = []
    with open(args.filename, 'r') as in_file:
        for line in in_file:
            if r'\printanswers' in line:
                contents.append('%\printanswers\n')
            else:
                contents.append(line)
    with open(args.filename, 'w') as out_file:
        for line in contents:
            out_file.write(line)

Von hier aus definiere ich eine Tastenkombination zum Ausführen des Befehls ( Preferences > Shortcuts > Tools > User)


Mit dieser Tastenkombination erstellt der Compiler die Lösungsdatei exam1.pdfund exam1Solutions.pdfzeigt sie im integrierten Viewer an (mit der Möglichkeit, weiterhin zum Speicherort der letzten Bearbeitung usw. zu scrollen).

Beachten Sie auch, dass Sie entweder zuerst aufrufen pythonoder das Skript ausführbar machen und #!/usr/bin/pythonin der ersten Zeile etwas wie hinzufügen müssen.

Dies ist offensichtlich keine allgemeine Lösung und erfordert den Aufruf eines externen Programms, aber es funktioniert gut und in angemessener Zeit.

verwandte Informationen