我想排版一本书中不同章节的一组练习,并给出解决方案。我知道像xsim
或这样的包exercise
,但我还没有找到手动更改练习枚举的方法。这是一个 MWE,说明了我想要做的事情:
\documentclass{article}
\usepackage{amsthm}
\newcommand{\exer}[1]{\textbf{Exercise #1}}
\begin{document}
\begin{description}
\item[Exercise 1.2.1] Statement
\begin{proof}
\end{proof}
\item[Exercise 1.2.3] Statement
\begin{proof}
\end{proof}
\item[Exercise 1.2.7] Statement
\begin{proof}
\end{proof}
\item[Exercise 3.5.2] Statement
\begin{proof}
\end{proof}
\item[Exercise 3.5.3] Statement
\begin{proof}
\end{proof}
\end{description}
\end{document}
我如何使用任何用于此目的的包来实现这一点?提前致谢。
答案1
编辑:这是一个使用 xsim 包的解决方案,与原始问题中的提议非常相似,并通过替换自定义 ExerciseProperty“mynumber”来解决数字问题。
\documentclass{article}
\usepackage{amsmath,amsthm}
\usepackage{xsim}
\DeclareExerciseType{myexercise}{
exercise-env = myexercise,
solution-env = mysolution,
exercise-name = \XSIMtranslate{exercise},
exercises-name = \XSIMtranslate{exercises},
solution-name = \XSIMtranslate{solution},
solutions-name = \XSIMtranslate{solutions},
exercise-template = mytemplate,
solution-template = mysoltemplate
}
\DeclareExerciseProperty!{mynumber}
\DeclareExerciseEnvironmentTemplate{mytemplate}{
\begin{description}
\item[\XSIMmixedcase{\GetExerciseName}~\GetExerciseProperty{mynumber}]
}{
\end{description}
}
\DeclareExerciseEnvironmentTemplate{mysoltemplate}{
\renewcommand{\proofname}{Solution}\begin{proof}
}{
\end{proof}
}
\xsimsetup{
mysolution/print = true
}
\begin{document}
\begin{myexercise}[mynumber=2.2.1]
Statement
\end{myexercise}
\begin{mysolution}
Here is the solution.
\end{mysolution}
\end{document}
我最初的建议如下,使用更简单的设置,主要使用 amsthm。
问题只是您需要手动指定练习号码吗?
这里有几个想法。
创建一个带有练习编号作为参数的环境,让它创建一个自定义定理类型环境。(这里使用两个独立的环境,一个用于陈述,一个用于证明。)
\documentclass[12pt]{article}
\usepackage{xparse}
\usepackage{amsthm}
\theoremstyle{plain}
\NewDocumentEnvironment{exercise}{m}{
\newtheorem*{ex#1}{Exercise #1}
\begin{ex#1}
}{
\end{ex#1}
}
\begin{document}
\begin{exercise}{1.2.1}
Statement
\end{exercise}
\begin{proof}
Cuz I said so.
\end{proof}
\end{document}
或者使用单一环境来实现相同的结果,其中“语句”是第二个参数,并且证明位于中间:
\documentclass[12pt]{article}
\usepackage{xparse}
\usepackage{amsthm}
\theoremstyle{plain}
\NewDocumentEnvironment{exercise}{mm}{
\newtheorem*{ex#1}{Exercise #1}
\begin{ex#1}{#2}
\begin{proof}
}{
\end{proof}
\end{ex#1}
}
\begin{document}
\begin{exercise}{1.2.1}{Statement}
Proof here.
\end{exercise}
\end{document}
如果需要,您可以使用 amsthm 中的命令进一步指定样式\newtheoremstyle
。(如果您需要帮助,请随时询问。)