我正在写一个包含多个章节的文档。每个章节都有问题,每个问题都有解决方案。我希望一些解决方案紧跟在问题之后,而其他解决方案则出现在章节末尾。
目前,我正在使用
\newtheorem{problem}{Задача}[chapter]
\newtheorem{solution}{Решение}[chapter]
当解决方案应该出现在章节末尾时,我会这样做:
\appto\SolutionsChapterFive{
\begin{solution}
\end{solution}
}
在本章的最后,我只需使用以下命令调用该命令
\SolutionsChapterFive
不幸的是,这弄乱了问题的编号。
例如:
第五章
问题 5.1。啦啦啦
解决方案 5.1。啊啊啊啊
问题 5.2。呸呸
问题 5.3。阿尔巴赫阿尔巴赫
解决方案 5.3。Ablh ablh (但是这显示为解决方案 5.2 ☹️)
问题 5.4。哈布尔 哈布尔
解决方案
解决方案 5.2。Ablh ablh (但是这显示为解决方案 5.3 ☹️)
解决方案 5.4。啊啊啊啊
我该如何解决这个问题?有没有更好的方法来解决此问题?
答案1
由于 LaTeX 中的扩展方式,正确地用(或其他宏)传递解决方案编号\appto
似乎很棘手。也许熟悉 etoolbox 包的人能够提供解决方案\appto
。现在我建议一个简单的解决方案:
当你遇到应该出现在结尾的解决方案时,将当前解决方案编号保存在新的计数器中,然后步进解决方案计数器(以便后续解决方案正确编号)。然后,在章节末尾编写解决方案之前,将解决方案计数器设置为此保存的值。
您会失去方法的便利性\appto
,但只要您没有大量的章末解决方案,我认为工作流程是完全实用的。
一个简单的例子:
\documentclass{book}
\usepackage{amsmath}
\usepackage{amsthm}
\newtheorem{problem}{Problems}[chapter]
\newtheorem{solution}{Solutions}[chapter]
\begin{document}
\setcounter{chapter}{5}
\begin{problem}
Problems 1
\end{problem}
\begin{solution}
Solutions 1
\end{solution}
\begin{problem}
Problems 2
\end{problem}
\newcounter{fivea} % New counter to save solution number (`fivea' must be unique)
\setcounter{fivea}{\value{solution}} % Sote current solution number
\stepcounter{solution} % Step the counter, as if solutions occured here
\begin{problem}
Problems 3
\end{problem}
\begin{solution}
Solutions 3
\end{solution}
\begin{solution}
Solutions 4
\end{solution}
% End of chapter material
\setcounter{solution}{\value{fivea}} % Restore the saved value
\begin{solution} % Write solutions in the usual way
Solutions 2
\end{solution}
\end{document}
输出:
当然,您可以轻松地将这些步骤包装在宏和新环境中,以使事情变得更加顺利:
\documentclass{book}
\usepackage{amsmath}
\usepackage{amsthm}
\newtheorem{problem}{Problems}[chapter]
\newtheorem{solution}{Solutions}[chapter]
\newcommand\saveSolutionNumber[1]{\newcounter{#1}\setcounter{#1}{\value{solution}}\stepcounter{solution}}
\newenvironment{chapterSolutions}[1]{\setcounter{solution}{\value{#1}}\begin{solution}}{\end{solution}}
\begin{document}
\setcounter{chapter}{5}
\begin{problem}
Problems 1
\end{problem}
\begin{solution}
Solutions 1
\end{solution}
\begin{problem}
Problems 2
\end{problem}
\saveSolutionNumber{fivea} % fivea is the new counter
\begin{problem}
Problems 3
\end{problem}
\begin{solution}
Solutions 3
\end{solution}
\begin{solution}
Solutions 4
\end{solution}
\begin{chapterSolutions}{fivea} % Solutions based on counter fivea
Solutions 2
\end{chapterSolutions}
\end{document}
输出与之前完全相同。