我正在写一本书,一个常见的问题是,当我对问题进行编号时,我会写一个列表,然后发现自己必须返回并重新编号所有问题。这很奇怪,但这个网站会出于某种原因自动更正它(可能使用了我没有的软件包)。例如,假设我有一份包含九十九个问题的列表。
问题 1 写作
问题 2 写作
问题 3 写作
问题 4 写作...
然后我意识到我应该把问题放在一和二之间。有没有办法创建一个持续的列表,这样我就不必重新编号所有的问题了?
答案1
在文档的开头写下以下内容:
\newcounter{question}
\setcounter{question}{0}
\newcounter{answer}
\setcounter{answer}{0}
另外,输入
\newcommand\que[1]{%
\leavevmode\par
\stepcounter{question}
\noindent
\thequestion. #1\par}.
此外,对于\ans{..}
,执行相同的操作。
然后,继续提问并回答,例如:
\que{Put question here}
\ans{Put answer here}
答案2
我使用的标准方法是将它们视为类似定理的构造。另一种方法是列表 (enumerate
构造),见下文。
类似定理的方法
\usepackage{amsthm}
\theoremstyle{definition}
\newtheorem{problem}{Problem}[section]
然后为您提供一个标有“问题 #.##”的环境,#
这是部分编号,也是##
该部分内的问题编号。然后您可以使用标准 LaTeX\label...\ref
机制来引用问题编号。
\documentclass{article}
\usepackage{amsthm}
\theoremstyle{definition}
\newtheorem{problem}{Problem}[section]
\begin{document}
\section{First section}
\begin{problem}
First problem
\end{problem}
Text.
\begin{problem}
\label{prob:sec}
Second problem
\end{problem}
\section{Second section}
\begin{problem}
Third problem, but first in second section.
\end{problem}
Have a look at Problem~\ref{prob:sec}.
\end{document}
如果您只想在整个文档中连续编号问题,请[section]
从\newtheorem
上面的命令中删除。如果您希望在另一个单元(例如章节)内编号,请替换[section]
为[chapter]
或任何其他命令。
为了便于引用,请考虑使用cleveref
包(最后加载所有包)。以下内容产生与上述相同的输出,但您只需编写\cref
而不是Problem~\ref
:
\documentclass{article}
\usepackage{amsthm}
\usepackage[capitalize]{cleveref}
\theoremstyle{definition}
\newtheorem{problem}{Problem}[section]
\begin{document}
\section{First section}
\begin{problem}
First problem
\end{problem}
Text.
\begin{problem}
\label{prob:sec}
Second problem
\end{problem}
\section{Second section}
\begin{problem}
Third problem, but first in second section.
\end{problem}
Have a look at \cref{prob:sec}.
\end{document}
列表方法
使用标准枚举,每个问题都可以只是一个,\item
并且您可以使用该\label...\ref
机制。
\documentclass{article}
\begin{document}
\section{Problems}
\begin{enumerate}
\item The first problem.
\item\label{prob:second} The second problem.
\item The third problem uses problem~\ref{prob:second}.
\end{enumerate}
\end{document}
当然,编号会与普通列表混淆。为了避免这种情况,您可以定义具有不同标签的专用环境。
\documentclass{article}
\newenvironment{problems}{\renewcommand{\theenumi}{\thesection.\arabic{enumi}}\begin{enumerate}}{\end{enumerate}}
\begin{document}
\section{A section}
\begin{enumerate}
\item\label{it:ord} Ordinary list item.
\end{enumerate}
\section{Problems}
\begin{problems}
\item The first problem.
\item\label{prob:second} The second problem.
\item The third problem uses problem~\ref{prob:second}.
\end{problems}
\section{Another section}
\begin{enumerate}
\item\label{it:ord2} Ordinary list item.
\end{enumerate}
Problem~\ref{prob:second} item~\ref{it:ord} and item~\ref{it:ord2}.
\end{document}