Estou escrevendo um documento com vários capítulos. Cada capítulo tem problemas e cada problema tem uma solução. Quero que algumas das soluções apareçam logo após o problema e outras apareçam no final do capítulo.
Atualmente estou usando
\newtheorem{problem}{Задача}[chapter]
\newtheorem{solution}{Решение}[chapter]
Quando uma solução deve aparecer no final do capítulo eu faço:
\appto\SolutionsChapterFive{
\begin{solution}
\end{solution}
}
e no final do capítulo, apenas chamo o comando com
\SolutionsChapterFive
Infelizmente, isso atrapalha a numeração dos problemas.
Por exemplo:
capítulo 5
Problema 5.1.Blá, blá
Solução 5.1.Ablh abl
Problema 5.2.Balh Balh
Problema 5.3.Albh albh
Solução 5.3.Ablh ablh (Mas isso aparece como solução 5.2 ☹️ )
Problema 5.4.Habl Habl
Soluções
Solução 5.2.Ablh ablh (Mas isso aparece como solução 5.3 ☹️ )
Solução 5.4.Ablh abl
Como posso consertar isso? Existe uma maneira melhor de abordar o problema?
Responder1
Transportar corretamente o número da solução com \appto
(ou alguma outra macro) parece complicado devido à forma como a expansão funciona no LaTeX. Talvez alguém que conheça o pacote etoolbox possa fornecer uma solução com a \appto
abordagem. Por enquanto eu sugeriria uma solução simples:
Quando você chegar a soluções que devem aparecer no final, salve o número da solução atual em um novo contador e então pise no contador de soluções (para que as soluções seguintes sejam numeradas corretamente). Então, antes de escrever as soluções no final do capítulo, defina o contador de soluções para este valor salvo.
Você perde a conveniência da \appto
abordagem, mas desde que não tenha uma grande quantidade de soluções de final de capítulo, considero o fluxo de trabalho totalmente prático.
Um exemplo mínimo:
\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}
Saída:
Claro, você pode facilmente agrupar essas etapas em uma macro e em um novo ambiente para tornar as coisas um pouco mais elegantes:
\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}
com exatamente a mesma saída de antes.