В настоящее время я полагаюсь на экзаменационный класс, чтобы создать отдельные листы упражнений для вопросов и решений. Есть ли способ использовать этот класс, чтобы создать третий лист с подсказками вместо полных решений, или лучшую альтернативу?
Структура уникального tex-файла будет выглядеть примерно так:
\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}
А затем соответствующий оператор Makefile
with latexmk
создаст sheet-questions.pdf, sheet-hints.pdf и sheet-solutions.pdf, передав нужные параметры выбранному классу, как указано в другом месте на этом сайте.
решение1
У меня уже было много файлов, которые использовали exam
класс, поэтому я в итоге использовал optional
пакет для определения простой среды, которая ничего не показывает, если опция showhints
не используется. Вот простой пример:
\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}
Если предположить, что приведенное выше сохранено в файле с именем mwe.tex
, то следующее Makefile
даст три различных результата:
mwe-base.pdf
, который является предполагаемым листом упражнений;mwe-answers.pdf
, в котором есть решения, но нет подсказок;mwe-hints.pdf
, в котором есть подсказки, но нет решений.
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
Скорее всего, есть возможности для улучшения.