我在尝试弄清楚report
文档结构时遇到了问题。
目前我有:
\chapter[Chapter 1]{}
\section{Section 1}
\subsection{Subsection 1}
\subsection{Subsection 2}
\section{Section 2}
ToC 中的效果是:
1. Chapter 1
1.1 Section 1
1.1.1 Subsection 1
1.1.2 Subsection 2
1.2 Section 2
我正在寻找的是:
Chapter 1
1 Section 1
1.1 Subsection 1
1.2 Subsection 2
2 Section 2
我已经尝试使用\addcontentsline{toc}{chapter}{Chapter 1}
,但显然它只解决了章节问题,并且章节和小节的错误编号仍然存在。
我也尝试过更改\chapter
为\part
。不幸的是,效果并不令人满意,因为它导致目录和文档结构中出现更多需要修复的问题。
答案1
这将从计数器格式\thechapter
中删除计数器输出\thesection
。由于\thesubsection
等正在递归使用\thesection
等,这将为所有分段命令提供正确的编号。
请注意,这也会改变正文内的编号!
最有可能的是,间距应该改变!
\documentclass{book}
\renewcommand{\thesection}{\arabic{section}}
\begin{document}
\tableofcontents
\chapter[Chapter 1]{}
\section{Section 1}
\subsection{Subsection 1}
\subsection{Subsection 2}
\section{Section 2}
\end{document}
答案2
如果您希望在正文中正常编号,则可以使用该\p@section
功能。
\documentclass{report}
\makeatletter
\renewcommand{\thesection}{\arabic{section}}
\renewcommand{\p@section}{\thechapter.}
\renewcommand{\p@subsection}{\thechapter.}
\renewcommand{\@seccntformat}[1]{%
\csname p@#1\endcsname\csname the#1\endcsname\quad
}
\makeatother
\begin{document}
\tableofcontents
\chapter{Chapter 1}\label{ch1}
\section{Section 1}\label{sec1}
\subsection{Subsection 1}\label{ssec1}
\subsection{Subsection 2}
\section{Section 2}
\ref{ch1}; \ref{sec1}; \ref{ssec1}
\end{document}
如果您还想删除目录中章节标题旁边的数字,您可以 patch\@makechapterhead
或\l@chapter
。
后一种方法是添加
\let\original@l@chapter\l@chapter
\renewcommand{\l@chapter}[2]{%
\begingroup\let\numberline\@gobble\original@l@chapter{#1}{#2}\endgroup
}
\makeatother
就在上面的代码之前。
另一种方法需要etoolbox
:
\documentclass{report}
\usepackage{etoolbox}
\makeatletter
\renewcommand{\thesection}{\arabic{section}}
\renewcommand{\p@section}{\thechapter.}
\renewcommand{\p@subsection}{\thechapter.}
\renewcommand{\@seccntformat}[1]{%
\csname p@#1\endcsname\csname the#1\endcsname\quad
}
\patchcmd{\@chapter}{\numberline}{\@gobble}{}{}
\makeatother
\begin{document}
\tableofcontents
\chapter{Chapter 1}\label{ch1}
\section{Section 1}\label{sec1}
\subsection{Subsection 1}\label{ssec1}
\subsection{Subsection 2}
\section{Section 2}
\ref{ch1}; \ref{sec1}; \ref{ssec1}
\end{document}
您也可以使用 获得相同的结果tocloft
。