自定义枚举练习列表

自定义枚举练习列表

我想排版一本书中不同章节的一组练习,并给出解决方案。我知道像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。(如果您需要帮助,请随时询问。)

相关内容