
У меня есть коллекция лекционных заметок, в которых разбросаны упражнения. Я хотел бы предоставить ключ к этим упражнениям, который является отдельным файлом от скомпилированных заметок, но чей соответствующий код TeX находится в том же коде, что и заметки, и ссылается на главу/раздел, из которого взято упражнение.
Например, если бы код лекций выглядел так:
\begin{document}
\chapter{Lecture 1}
...
\begin{exercise}
What is 2 + 2?
\end{exercise}
\begin{solution}
4
\end{solution}
...
\begin{exercise}
What is 2 * 3?
\end{exercise}
\begin{solution}
6
\end{solution}
\chapter{Lecture 2}
...
\begin{exercise}
How many Canadian provinces are there?
\end{exercise}
\begin{solution}
10
\end{solution}
...
\begin{exercise}
What is the capital of Nova Scotia?
\end{exercise}
\begin{solution}
Halifax
\end{solution}
\end{document}
Тогда соответствующий PDF-файл для конспектов лекций будет содержать Лекции 1 и 2 с упражнениями, без решений, но отдельные PDF-файлы, содержащие решения упражнений из Лекции 1, еще один PDF-файл с решениями из Лекции 2, и эти PDF-файлы будут содержать информацию о том, что отображаемое решение было из Упражнения 2 в Лекции 1, и т. д.
Самое очевидное решение, которое я могу придумать, — это использовать etoolbox
переключатели для отображения только заметок с упражнениями или только решений, но тогда мне придется \iftoggle
вручную создавать PDF-файл решений каждой лекции, что быстро станет утомительным, если лекций несколько или если мне нужно будет вернуться и внести изменения, которые изменят нумерацию задачи или лекции.
(Меня устраивают решения, не связанные с TeX, включающие скрипты оболочки, если нет хорошего способа сделать это в LaTeX.)
решение1
Вот способ использованияответыпакет и\includeonly
основной файл (драйвер)myfile.tex
\documentclass{book}
\usepackage{answers}
\newtheorem{exercise}{Exercise}[chapter]
\Newassociation{solution}{Soln}{mycor}
\renewcommand{\Solnlabel}[1]{\textbf{Answer #1}}
\includeonly{Lectures}
%\includeonly{Lecture1}
%\includeonly{Lecture2}
\begin{document}
\include{Lectures}
\include{Lecture1}
\include{Lecture2}
\end{document}
основной (исходный) файлLectures.tex
\Opensolutionfile{mycor}[Lecture1]
\chapter{Lecture 1}
...
\begin{exercise}
What is 2 + 2?
\begin{solution}
4
\end{solution}
\end{exercise}
...
\begin{exercise}
What is 2 * 3?
\begin{solution}
6
\end{solution}
\end{exercise}
\Closesolutionfile{mycor}
\Opensolutionfile{mycor}[Lecture2]
\chapter{Lecture 2}
...
\begin{exercise}
How many Canadian provinces are there?
\begin{solution}
10
\end{solution}
\end{exercise}
...
\begin{exercise}
What is the capital of Nova Scotia?
\begin{solution}
Halifax
\end{solution}
\end{exercise}
\Closesolutionfile{mycor}