我正在編寫一個包含多個章節的文檔。每一章都有問題,每個問題都有解決方案。我希望一些解決方案出現在問題之後,而其他解決方案出現在本章的末尾。
目前,我正在使用
\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
\appto
由於 LaTeX 中擴展的工作原理,使用(或其他巨集)正確地傳遞解決方案編號似乎很棘手。也許熟悉 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}
輸出與以前完全相同。