Usar una clase de LaTeX para generar hojas de ejercicios separadas para preguntas, soluciones y sugerencias

Usar una clase de LaTeX para generar hojas de ejercicios separadas para preguntas, soluciones y sugerencias

Actualmente dependo de la clase de examen para producir hojas de ejercicios separadas para preguntas y soluciones. ¿Existe alguna manera de utilizar esa clase para producir una tercera hoja con sugerencias en lugar de soluciones completas, o una alternativa mejor?

La estructura del archivo tex único sería algo como:

\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}

Y luego, un Makefilewith apropiado latexmkproduciría hojas-preguntas.pdf, hojas-sugerencias.pdf y hojas-soluciones.pdf pasando las opciones correctas a la clase seleccionada, como se indica en otras partes de este sitio.

Respuesta1

Ya tenía muchos archivos que usaban la examclase, así que terminé usando el optionalpaquete para definir un entorno simple que no muestra nada si showhintsno se usa la opción. Aquí hay un ejemplo básico:

\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}

Suponiendo que lo anterior se guarda en un archivo llamado mwe.tex, lo siguiente Makefileproduce tres resultados diferentes:

  1. mwe-base.pdf, que es la hoja de ejercicios prevista;
  2. mwe-answers.pdf, que presenta soluciones pero no sugerencias;
  3. mwe-hints.pdf, que incluye sugerencias pero no soluciones.
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

Lo más probable es que haya margen de mejora.

información relacionada