Soluciones de problemas al final del capítulo.

Soluciones de problemas al final del capítulo.

Estoy escribiendo un documento con varios capítulos. Cada capítulo tiene problemas y cada problema tiene una solución. Quiero que algunas de las soluciones estén justo después del problema y que otras aparezcan al final del capítulo.

Actualmente estoy usando

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

Cuando debería aparecer una solución al final del capítulo, hago:

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

y al final del capítulo, simplemente invoco el comando con

\SolutionsChapterFive

Desafortunadamente, eso arruina la numeración de los problemas.

Por ejemplo:

Capítulo 5

Problema 5.1.Bla, bla

Solución 5.1.ablh ablh

Problema 5.2.balh balh

Problema 5.3.albh albh

Solución 5.3.Ablh ablh (Pero eso aparece como solución 5.2 ☹️)

Problema 5.4.Habl Habl

Soluciones

Solución 5.2.Ablh ablh (Pero eso aparece como solución 5.3 ☹️)

Solución 5.4.ablh ablh

¿Cómo puedo arreglar eso? ¿Existe una mejor manera de abordar el problema?

Respuesta1

Transferir correctamente el número de solución con \appto(o alguna otra macro) parece complicado debido a cómo funciona la expansión en LaTeX. Quizás alguien que tenga conocimientos del paquete etoolbox pueda proporcionar una solución con el \apptoenfoque. Por ahora sugeriría una solución simple:

Cuando llegue a las soluciones que deberían aparecer al final, guarde el número de la solución actual en un nuevo contador y luego avance en el contador de soluciones (para que las siguientes soluciones estén numeradas correctamente). Luego, antes de escribir las soluciones al final del capítulo, configure el contador de soluciones en este valor guardado.

Se pierde la conveniencia del \apptoenfoque, pero siempre que no tenga una gran cantidad de soluciones al final del capítulo, considero que el flujo de trabajo es completamente práctico.

Un ejemplo 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}

Producción:

salida1

Por supuesto, puedes incluir fácilmente estos pasos en una macro y un nuevo entorno para hacer las cosas un poco más sencillas:

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

con exactamente el mismo resultado que antes.

información relacionada