如何更改目录中的编号

如何更改目录中的编号

我在尝试弄清楚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

相关内容