여러 장으로 구성된 문서를 작성 중입니다. 각 장에는 문제가 있고 각 문제에는 해결책이 있습니다. 일부 해결책은 문제 바로 뒤에 있고 나머지는 이 장의 마지막 부분에 나타나기를 원합니다.
현재, 나는 사용하고 있습니다
\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}
산출:
물론 매크로와 새로운 환경에서 이러한 단계를 쉽게 래핑하여 작업을 좀 더 매끄럽게 만들 수 있습니다.
\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}
이전과 정확히 동일한 출력으로.