如何根据章节号来枚举书中的问题集?

如何根据章节号来枚举书中的问题集?

我正在写一本书,在每一章的末尾我都有一个带有标签的问题部分,如下所示:

\chapter{Chapter 1}

Bla bla bla...

\section*{Problems:}
\begin{enumerate}
\item \label{ch1_pr1} Prove...
\item \label{ch1_pr2} Calculate...
\item \label{ch1_pr3} Fill the details in...
\end{enumerate}

这种方法的问题在于,每个问题的部分在每一章中的编号方式完全相同(1、2、3、4 等...),所以,如果说,在第四章中我想引用第一章中的第一个问题,我会在我的书中只得到“1”(数字一),这会让人感到困惑,因为它没有提及我所引用的问题所属的章节。

我的问题是:我该如何列举我的问题以便让它们考虑到它们所属的章节?

我在想用 1.1、1.2、1.3…… 来表示第一章的问题,用 2.1、2.2、2.3…… 来表示第二章的问题,等等。但我不知道该怎么做。

由于我对 Latex 不是很熟练,所以我要求解决问题的方法尽可能简单。


更新:这里有一些示例代码,以便您可以编译它并更好地理解我的需求:

\documentclass[12pt,letterpaper]{book}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage[left=2cm,right=2cm,top=2cm,bottom=2cm]{geometry}

\begin{document}

\chapter{First}

Bla bla bla...

\section*{Problems:}

\begin{enumerate}
\item \label{ch1_pr1} Prove...
\item \label{ch1_pr2} Calculate...
\item \label{ch1_pr3} Fill the details in...
\end{enumerate}

\chapter{Second}

Bla bla bla....

\section*{Problems:}

\begin{enumerate}
\item \label{ch2_pr1} Prove...
\item \label{ch2_pr2} Calculate...
\item \label{ch2_pr3} Fill the details in...
\end{enumerate}

\chapter{Third}

First problem in Chapter 1:~\ref{ch1_pr1}

First problem in Chapter 2:~\ref{ch2_pr1} \\

The issue: Different problems appear to be the same when cited!

\end{document}

答案1

这是一个使用包的类似解决方案enumitem,它使定义新的和自定义的列表变得更加容易。我还将其用作problems环境名称。在这里,原始问题集中的标签只是1或任何其他内容,但引用显示为1.1等。

最好不要在\label{}s 中使用显式数字,以防以后插入或删除项目。虽然 LaTeX 不会在意,但如果chap3_prf5提到第 2 章中编号为 9 的问题,它往往会让人感到非常困惑。

\documentclass{book}
\usepackage{enumitem}
\newlist{problems}{enumerate}{1}
\setlist[problems]{label={\arabic*.}, ref={\thechapter.\arabic*}}
\begin{document}
\chapter{Chapter 1}

Bla bla bla \dots

\section*{Problems:}
\begin{problems}
  \item \label{pr:intro_prove} Prove \dots
  \item \label{pr:intro_calc} Calculate \dots
  \item \label{pr:intro_details} Fill the details in \dots
\end{problems}

\chapter{Pethau Pellach}
Fel dywedwyd ym mhroblem \ref{pr:intro_calc} \dots
\end{document}

失败 dywedwyd...

如果您希望章节编号也出现在原始标签中,请更改

\setlist[problems]{label={\arabic*.}, ref={\thechapter.\arabic*}}

\setlist[problems]{label={\thechapter.\arabic*}}

还有原始标签

答案2

这里有一种方法可以做到这一点,根据定义一个新列表,enumerate并附带一些规范,我将其命名problems为两个级别:

\documentclass{report}
\usepackage{geometry}
\usepackage{enumitem}
\usepackage{etoolbox}
\AtBeginEnvironment{enumerate}{\everymath{\displaystyle}}
\newlist{problems}{enumerate}{2}
\setlist[problems]{wide=0pt}
\setlist[problems, 1]{label =\thechapter.\arabic*, font=\bfseries, wide=0pt}
\setlist[problems,2]{label =(\alph*), wide =0.5em, topsep=2pt, itemsep =2pt}

\begin{document}

\chapter{Chapter 1}

Bla bla bla...

\section*{Problems:}

\begin{problems}
  \item \label{ch1_pr1} Prove...
  \begin{problems}
    \item A first question
    \item Another silly question. A silly question. A silly question. A silly question. A silly question. A silly question. A silly question. A silly question. A silly question.
  \end{problems}
  \item \label{ch1_pr2} Calculate...
  \item \label{ch1_pr3} Fill the details in...Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
\end{problems}

\chapter{Chapter 2}

Bla bla bla...

\section*{Problems:}

\begin{problems}
  \item \label{ch1_pr1} Prove...
  \begin{problems}
    \item A first question
    \item Another silly question. A silly question. A silly question. A silly question. A silly question. A silly question. A silly question. A silly question. A silly question.
  \end{problems}
  \item \label{ch1_pr2} Calculate...
  \item \label{ch1_pr3} Fill the details in...Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
\end{problems}

\end{document} 

在此处输入图片描述

相关内容