目录编号问题

目录编号问题

我有这个编号:

一、引言

I.1.blabla

I.2.blablabla

我希望它是这样的:

一、引言

1.blabla

2.blablabla

答案1

这使用命令的补丁\@sect,将显式阿拉伯数字写入 ToC 而不是\thesection。但是,这是一个快速破解,所有*section类型都只需使用\arabic{*section}。只要这没有问题,代码就没问题。

\documentclass{report}


\usepackage{xpatch}

\makeatletter
\xpatchcmd{\@sect}{%
  \protect\numberline{\csname the#1\endcsname}%
}{%
  \protect\numberline{\arabic{#1}.}%
}{\typeout{success}}{\typeout{failed}}
\makeatother

\renewcommand{\thechapter}{\Roman{chapter}}
\begin{document}
\tableofcontents
\chapter{Introduction}

\section{First}
\section{Second}
\subsection{First subsection}
\end{document}

在此处输入图片描述

答案2

您可以进行修补\@sect,以便它不会发出通用\numberline命令,而是发出特定\numberline<level>命令,我们可以定义该命令来吞噬第一个时期并对\numberline剩余部分执行正常操作。

\documentclass{book}

\usepackage{xpatch}

\makeatletter
\xpatchcmd{\@sect}
  {\protect\numberline}
  {\expandafter\protect\csname numberline#1\endcsname}
  {}{}
\def\remove@to@period#1.#2\@nil{\numberline{#2}}
\newcommand{\numberlinesection}[1]{%
  \remove@to@period#1\@nil
}
\let\numberlinesubsection\numberlinesection
\let\numberlinesubsubsection\numberlinesection
\makeatother

\renewcommand{\thechapter}{\Roman{chapter}}

\begin{document}
\frontmatter

\tableofcontents

\mainmatter

\chapter{Introduction}\label{ch-intro}

\section{Bla bla}

With a reference to chapter~\ref{ch-intro}
and to section~\ref{sec-bbb}

\section{Bla bla bla}\label{sec-bbb}

\end{document}

在此处输入图片描述

相关内容