我有这个编号:
一、引言
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}