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