我正在编写一本教科书和一本配套的解决方案手册。在这本书中,我在每一章的末尾都安排了一系列练习。随着章节和练习数量的增加,我很容易将练习和解决方案的顺序搞混。所以我正在寻找一种简单但有效的方法,让它们始终保持一致的顺序。
我曾经想过,但还不知道如何实现,那就是将每个练习和相应的解决方案放在一个 tex 文件中。然后我可以将该\input
文件放在书中和手册中的适当位置,并且(通过尚未确定的机制)只输入练习或解决方案。我还认为我可以为每个章节创建一个单独的“主”tex 文件,该文件依次输入练习/解决方案 tex 文件。然后我只需将该“主”tex 文件输入书中和手册中即可。这样,就不可能混淆顺序了。
在 UNIX 中,我猜测实现这一点的一种方法是使用真正的环境变量,但我不知道这在 LaTeX 中是否可行以及是否合理。
提前感谢您的批评、想法和反馈。
答案1
这是一种可能性(我真的不喜欢这种可能性)——再次- 看起来像广告):我有一个包裹外页 我还没有将其上传到 CTAN,因为它还需要一些测试(非常欢迎反馈)。有了它,手头的任务似乎相当容易。
为每个章节创建一个单独的tex
文件,其中包含练习和解决方案。在这些文件中,解决方案直接写在它所属的练习之后。
然后,这些文件将被输入到主书各章的适当位置或提供解决方案的文档中。是否打印练习或解决方案可通过包选项进行选择。
例如,主文件看起来如下:
\documentclass{book}
\usepackage{exsheets}
\SetupExSheets{
counter-format = ch.qu ,
counter-within = chapter
}
\begin{document}
\chapter{One}
\section{Exercises}
\input{\jobname-exercises-one}
\chapter{Two}
\section{Exercises}
\input{\jobname-exercises-two}
\end{document}
练习的文件如下所示:
% this is \jobname-exercises-one.tex
\begin{question}
The first exercise in chapter one.
\end{question}
\begin{solution}
The answer to the first exercise in chapter one.
\end{solution}
\begin{question}
The second exercise in chapter one.
\end{question}
\begin{solution}
The answer to the second exercise in chapter one.
\end{solution}
第二个文件:
% this is \jobname-exercises-two.tex
\begin{question}
The first exercise in chapter two.
\end{question}
\begin{solution}
The answer to the first exercise in chapter two.
\end{solution}
\begin{question}
The second exercise in chapter two.
\end{question}
\begin{solution}
The answer to the second exercise in chapter two.
\end{solution}
合适的解决方案文档现在可能如下所示:
\documentclass{article}
\usepackage{exsheets}
\SetupExSheets{
question/print = false ,
solution/print = true ,
counter-format = se.qu ,
counter-within = section
}
\makeatletter
\@addtoreset{question}{section}
\makeatother
\begin{document}
\section{Solutions to chapter one}
\input{\jobname-exercises-one}
\section{Solutions to chapter one}
\input{\jobname-exercises-two}
\end{document}
答案2
您可能希望查看包toggle
中的命令etoolbox
。例如,您可以设置如下内容
\documentclass{article}
\usepackage{etoolbox}
\providetoggle{problem}
\toggletrue{problem}
\providetoggle{solution}
\togglefalse{solution}
\begin{document}
\input{problem_file}
\end{document}
problem_file 将包含类似以下内容的内容
\iftoggle{problem}{Problem statement}{}
\iftoggle{solution}{Solution}{}