章节末尾的问题解决方案

章节末尾的问题解决方案

我正在写一个包含多个章节的文档。每个章节都有问题,每个问题都有解决方案。我希望一些解决方案紧跟在问题之后,而其他解决方案则出现在章节末尾。

目前,我正在使用

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

输出:

输出1

当然,您可以轻松地将这些步骤包装在宏和新环境中,以使事情变得更加顺利:

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

输出与之前完全相同。

相关内容