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