我正在用 LaTeX 为数学课程写一些讲义(目前使用的是书本课程,但我可能会改变它),在写讲义时,我想到了一些可能的家庭作业练习,我想把它们包含在讲义中。我还没有决定是把练习放在每节的末尾还是每章的末尾,无论哪种情况,如果我改变了对主题组织的想法,练习可能需要与相关文本一起移动。
(我不希望将问题散布在整个文本中,这当然是技术上最简单的解决方案。
理想情况下,最好能够按照以下方式处理这个问题:在 .tex 文件中,在关于主题 A 的文本之后立即写入\exercise{Problem about A}
,这不会立即产生输出。稍后,我写入\exerciseshere
,这将生成一个枚举列表,标题为“练习”,其中包含自上一个 以来的所有练习\exerciseshere
。或者,序言中的命令允许我设置是否在每个部分末尾或每个章节末尾自动生成练习列表(请记住,如果没有练习,则不应执行任何操作)。
添加:在练习中能够包括一个也很好\label
,它可以用来引用枚举列表中的计数器。
如何实现这样的功能?或者已经有可以实现此功能的软件包了吗?
PS:我无法为这个问题想出一个非常有用的标题或标签。请随意重新命名或重新标记。
答案1
我不知道有哪个软件包可以立即实现这一点,但我怀疑有几个软件包可以被“滥用”来实现这一效果。不过,直接实现这一点也不太难。
\documentclass{article}
\usepackage{amsthm}
\theoremstyle{remark}
\newtheorem{ExInternal}{Exercise}[section]
\makeatletter
\let\@exercises\@empty%
\newcommand\exercise[2][]{%
\g@addto@macro\@exercises{%
\begin{ExInternal}[#1]%
#2%
\end{ExInternal}%
}%
}
\newcommand\exerciseshere{%
\subsection*{Exercises}
\@exercises%
\global\let\@exercises\@empty%
}
\makeatother
\begin{document}
\section{Prime Numbers}
A \emph{prime number} is a positive integer other than $1$ that is only divisible by $1$ and itself.
\exercise[Euclid's Theorem]{\label{ex:euclid}Show that there are infinitely many prime numbers.}
As you will show in Exercise \ref{ex:euclid}, there are infinitely many primes.
The number of primes that are smaller than a given natural number $n$ is denoted $\pi(n)$.
\exercise{Find an asymptotic formula for $\pi(n)$. \emph{Hint:} You might find Exercise \ref{ex:zeta} helpful.}
\exerciseshere
\section{Zeta function}
The zeta function is given by $\zeta(s) = \sum_{n=1}^\infty n^{-s}$, where $s$ is a complex number with real part bigger than $1$.
\exercise{\label{ex:zeta}Extend $\zeta$ as far as possible and find all zeros of the function.}%
For example $\zeta(2) = \frac{\pi^2}{6}$.
\exerciseshere
\end{document}
一些解释:
实际练习使用定理环境进行排版
ExInternal
,该环境在顶部定义。当然,您可以根据需要更改它。定理环境的优点是它们负责编号。该命令将环境
\exercise
包装ExInternal
在其参数周围,并将结果添加到末尾\@exercises
(通过内部 LaTeX 宏\g@addto@macro
)。它还接受一个可选参数,该参数作为可选参数传递给定理环境。最后,
\exerciseshere
打印一个标题(您可能想要更改它以满足您的需要),然后打印其中的内容\@exercises
,之后清空\@exercises
。