Решения проблем в конце главы

Решения проблем в конце главы

Я пишу документ с несколькими главами. В каждой главе есть проблемы, а у каждой проблемы есть решение. Я хочу, чтобы некоторые решения были сразу после проблемы, а другие — в конце главы.

В настоящее время я использую

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

Выход:

выход1

Конечно, вы можете легко обернуть эти шаги в макрос и новую среду, чтобы сделать все немного проще:

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

с точно таким же результатом, как и раньше.

Связанный контент