Soluções de problemas no final do capítulo

Soluções de problemas no final do capítulo

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 \apptoabordagem. 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 \apptoabordagem, 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:

saída1

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.

informação relacionada