章末の問題解決

章末の問題解決

複数の章からなる文書を作成しています。各章には問題があり、各問題には解決策があります。解決策のいくつかは問題の直後に表示し、他の解決策は章の最後に表示したいと考えています。

現在、私は

\newtheorem{problem}{Задача}[chapter]
\newtheorem{solution}{Решение}[chapter]

章の最後に解決策が出てくる場合は、次のようにします。

\appto\SolutionsChapterFive{
    \begin{solution}
    \end{solution}
}

そして章の終わりに、私はコマンドを呼び出します

\SolutionsChapterFive

残念ながら、それによって問題の番号付けがおかしくなります。

例えば:

第5章

問題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

(または他のマクロ)を使用してソリューション番号を正しく引き継ぐのは、\apptoLaTeX の展開の仕組み上、難しいようです。おそらく、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}

以前とまったく同じ出力が得られます。

関連情報