如何重新定義一個部分以獲得這個結果?

如何重新定義一個部分以獲得這個結果?

我正在為一本已出版的書的章節末尾的問題編寫一份解決方案手冊。為此,我需要目錄中列出的未編號部分,另外我需要每個未編號部分的標題準確位於is和is 的Problem xx.yy位置。xx\thechapteryy\thesection

使用book文檔類,我設法做到了這一點:

\section*{Problem~\thesection}\addcontentsline{toc}{section}{Problem~\thesection}\addtocounter{section}{1}

我的問題是,如何定義新的切片命令或重新定義\section\section*這樣我就不必為每個問題重寫所有內容。我有 100 多個問題!

這是一個 MWE

\documentclass[11pt,letterpaper]{book}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\begin{document}
\tableofcontents
\chapter{Introductory Problems}\addtocounter{section}{1}
\section*{Problem~\thesection}\addcontentsline{toc}{section} {Problem~\thesection}\addtocounter{section}{1}
Here is bla bla bla the solution to bla bla bla. 
\end{document}

但可能有一種方法可以抑制目錄中節號的列印,以便我可以使用\section{}代替\section*{},這樣就不需要\addtocounter等待。但我不知道如何禁止列印目錄中的節號?

答案1

只需為問題分配一個自己的計數器並將重複的任務埋入巨集中

\documentclass[11pt,letterpaper]{book}

\newcommand\problem{%
  \refstepcounter{problem}%
  \section*{Problem \theproblem}%
  \addcontentsline{toc}{section}{Problem \theproblem}%
}
\newcounter{problem}[chapter]
\renewcommand{\theproblem}{\thechapter.\arabic{problem}}

\begin{document}
\tableofcontents

\chapter{Introductory Problems}

\problem
Here is bla bla bla the solution to bla bla bla. 

\problem
Here is bla bla bla the solution to bla bla bla. 

\chapter{Harder Problems}

\problem
Here is bla bla bla the solution to bla bla bla. 

\problem
Here is bla bla bla the solution to bla bla bla. 

\end{document}

在此輸入影像描述

答案2

您只需要重新定義節計數器的\thecounter列印方式:

\renewcommand\thesection{Problem \arabic{chapter}.\arabic{section}}

但是,如果您只這樣做,那麼「問題 1.1」標籤就會與目錄中的節名稱發生衝突。如果您不想在目錄中顯示這些部分,請使用

\setcounter{tocdepth}{0}

如果您確實想要它們,那麼解決衝突問題的一種方法是使用托克洛夫特包裹:

\documentclass{book}
\usepackage{tocloft}
\setcounter{tocdepth}{2}
\renewcommand\thesection{Problem \arabic{chapter}.\arabic{section}}
\settowidth\cftsecnumwidth{Problem 8.88}
\begin{document}
\tableofcontents
  \chapter{First chapter}
  \section{First problem, chapter one}
  \section{Second problem, chapter one}

  \chapter{Second chapter}
  \section{First problem, chapter two}
  \section{Second problem, chapter two}
\end{document}

使用托克洛夫特此變數\cftsecnumwidth控制用於排版「數位」部分的剩餘空間量。

這是輸出:

在此輸入影像描述

在此輸入影像描述

答案3

你可以用 來做到這一點titlesec/titletoc。這是一個代碼;我定義了一個problem命令,帶有一個可選參數(問題標題,它有一個。您也可以有未編號的部分:

 \documentclass[11pt,letterpaper]{book}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage[explicit]{titlesec}
\usepackage{titletoc}
\usepackage{lipsum}
\titleformat{name=\section,numberless}[hang]{\large\bfseries}{}{0pt}{\addcontentsline{toc}{section}{#1}}

\titleformat{\section}[hang]{\large\bfseries}{Problem~\thesection}{1em}{}
\newcommand\problem[1][]{\section{#1}}

\titlecontents{section}[1.5em]{\smallskip}%
          {Problem~\thecontentslabel~}%numbered
          {}%numberless\
          {\hfill\quad\contentspage}[\smallskip]%

\begin{document}

\tableofcontents

\chapter{Introductory Problems}%

\problem
\lipsum[1-3]
\problem
\lipsum[4-6]
Here is bla bla bla the solution to bla bla bla.

\problem[(the marriage lemma)]
Here is bla bla bla the solution to bla bla bla.


\section*{A numberless section}%
\lipsum[7-9]

\end{document} 

在此輸入影像描述

相關內容