Erstellen Sie eine Hinweisumgebung (erscheint mit etwas wie „\ifhints“)

Erstellen Sie eine Hinweisumgebung (erscheint mit etwas wie „\ifhints“)

Ich verwende die exam-Klasse häufig, besonders gut gefallen mir die Lösungsumgebungen. Meine Dokumente enthalten Fragen und Lösungen, aber durch eine Änderung \printanswersder Präambel kann ich die Anzeige der Lösungen einfach umschalten oder ausblenden.

Das Gleiche möchte ich tun fürHinweise. Ich hätte gerne so etwas wie:

\documentclass[11pt]{exam}
%\ifprintanswers
\ifprinthints

\begin{document}
  \begin{questions}
    \question Prove $e^{i\pi} +1 = 0$.

    \begin{hints}
      Consider $e^{i\theta} = \cos \theta + i\sin \theta$.
    \end{hints}

    \begin{solution}
      duh.
    \end{solution}
  \end{questions}
\end{document}

Ich habe eine benutzerdefinierte Klasse erstellt, die auf der Klasse basiert, examaber einige Pakete und benutzerdefinierte Befehle lädt. Welche Befehle sollte ich hinzufügen, um diese Funktionalität zu implementieren? Kann jemand helfen?

Antwort1

Eine sehr einfache Möglichkeit hierfür ist die Verwendung desAusführungPaket. Wenn Sie die Zeilen hinzufügen:

\newenvironment{hints}{\textbf{Hint}}{}
\excludeversion{hints}

dann werden Ihre Hinweise nicht angezeigt. Kommentieren Sie sie aus \excludeversion{hints}(oder verwenden Sie \includeversion{hints}), und sie werden wie von Zauberhand wieder angezeigt. Hier ein vollständiges MWE:

\documentclass[11pt]{exam}
\usepackage{version}

\newenvironment{hints}{\textbf{Hint}}{}
\excludeversion{hints}% turn hints off

\begin{document}
  \begin{questions}
    \question Prove $e^{i\pi} +1 = 0$.

    \begin{hints}
      Consider $e^{i\theta} = \cos \theta + i\sin \theta$.
    \end{hints}

    \begin{solution}
      duh.
    \end{solution}
  \end{questions}
\end{document}

Eine zweite Möglichkeit, die Ihrer Frage näher kommt, ist die Verwendung desUmgebungPaket, um Ihre Hinweisumgebung zu definieren. Bei diesem Ansatz definieren Sie zuerst eine neue if-Anweisung, sagen wir \ifhinting, und verwenden dann \hintingtrueund , \hintingfalseum die Hinweise ein- und auszuschalten:

\documentclass[11pt]{exam}
\usepackage{environ}

\newif\ifhinting\hintingtrue % hints are on by defautl
\NewEnviron{hints}{\ifhinting\textbf{Hint} \BODY\fi}

\begin{document}
  \begin{questions}
    \question Prove $e^{i\pi} +1 = 0$.

    \begin{hints}
      Consider $e^{i\theta} = \cos \theta + i\sin \theta$.
    \end{hints}

    \begin{solution}
      duh.
    \end{solution}
  \end{questions}
\end{document}

Der \NewEnvironBefehl definiert eine neue Umgebung, saugt aber den Inhalt der Umgebung in das Makro auf \BODYund ermöglicht Ihnen so, Dinge damit zu tun, wie ihn beispielsweise zu ignorieren, wenn er \hintingfalsewahr ist.

Ein Vorteil dieses Ansatzes besteht darin, dass Sie die Hinweise in verschiedenen Teilen des Dokuments ein- und ausschalten können (dies könnte auch als Nachteil betrachtet werden, da Sie überall nachsehen müssen!).

verwandte Informationen