是否可以进行编号,以便我的章节可以包含包含章节的部分?
目前我有:
Chapter
Section{foo}
Section{far}
Part{baz}
Section{bar}
Part{Caz}
Section{Coo}
正在编号:
3.1 Foo
3.2 Far
I Baz
3.3 Bar
II Caz
3.4 Coo
我希望有:
3.1 Foo
3.2 Far
I Baz
I.1 Bar
II Caz
II.1 Coo
当我写这个问题时,我在想也许最简单的方法是禁用chapter
每个中的编号Part
,而不是将其Parts
作为小节Chapter
:
Chapter
Section{foo}
Section{far}
Part{baz} % Disable chapter numbering...
Section{bar}
Part{Caz} % Disable chapter numbering...
Section{Coo}
% Re-enable chapter numbering...
但我不确定 (a) 这是不是最好的解决方案或者 (b) 如何实现这一点。
答案1
以下是您的要求的真实模型,无论多么奇怪:
\documentclass{report}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\makeatletter
\@addtoreset{section}{part}% Reset section counter with every \part
\newcounter{tempsection}
\newcommand{\sectionbypart}{%
\setcounter{tempsection}{\value{section}}% Store section counter
\setcounter{section}{0}% Reset section counter
\renewcommand{\thesection}{\thepart.\arabic{section}}% Section counter display
}
\newcommand{\sectionbychapter}{%
\addtocontents{toc}{\protect\addvspace{10\p@}}% Add gap in ToC when reverting to by-\chapter numbering
\setcounter{section}{\value{tempsection}}% Restore section counter
\renewcommand{\thesection}{\thechapter.\arabic{section}}% Section counter display
}
\makeatother
\begin{document}
\tableofcontents
\chapter{A chapter}\lipsum[1-10]
\section{foo}\lipsum[11-20]
\section{far}\lipsum[21-30]
\sectionbypart% Modify section counter to work on a by-\part basis
\part{baz}\lipsum[31-40]
\section{bar}\lipsum[41-50]
\part{Caz}\lipsum[51-60]
\section{Coo}\lipsum[61-70]
\sectionbychapter% Revert to traditional by-\chapter numbering
\section{More foo}\lipsum[71-80]
\end{document}
宏\sectionbypart
重新定义了部分计数器的显示方式(\thesection
)以与零件编号一致。\sectionbychapter
通过恢复section
计数器值及其表示来撤销此过程。
答案2
我不会使用级别宏进行枚举,这会变得混乱。(\part
单独引入整个页面!)
我宁愿重新定义枚举样式。
章节级别的罗马枚举
没有必要修补\thesection
(以获得“I.1”,“I.2”......),因为\thechapter
之前已经使用过(“3.1”,“3.2”......)。
提供的宏
\makeChapterRoman
此宏将计数器的当前值保存chapter
在计数器中chapterBackup
,将的样式设置\thechapter
为罗马(I、II、III、…),并让枚举以 开头1
。
的旧定义\thechapter
保存\let
为\oldThechapter
(更容易撤消)。\undoChapterRoman
此宏撤消所有更改,即使用旧chapter
值(来自chapterBackup
)并恢复\let
其\thechapter
初始定义。
代码
\documentclass{report}
\newcounter{chapterBackup}
\newcommand*{\makeChapterRoman}{%
\let\oldThechapter\thechapter%
\setcounter{chapterBackup}{\value{chapter}}%
\setcounter{chapter}{0}%
\renewcommand*{\thechapter}{\Roman{chapter}}%
}
\newcommand*{\undoChapterRoman}{%
\setcounter{chapter}{\value{chapterBackup}}%
\let\thechapter\oldThechapter%
}
\begin{document}
\tableofcontents
\chapter{Chapter 1}\chapter{Chapter 2}
\chapter{Chapter 3}
\section{Foo}
\section{Far}
\makeChapterRoman
\chapter{Baz}
\section{Bar}
\chapter{Caz}
\section{Coo}
\undoChapterRoman
\chapter{Back to normal}
\section{Normal section}
\end{document}
输出
罗马式分区统计
在默认样式下,子子节没有枚举。即使(计数器secnumdepth
大于 2),也无需重新定义,\thesubsubsection
因为它使用\thesubsection
而不是原始\arabic…
命令。
提供的宏
\makeSectionRoman
\undoSectionRoman
代码
\documentclass{report}
\newcounter{sectionBackup}
\newcommand*{\makeSectionRoman}{%
\let\oldThesection\thesection%
\let\oldThesubsection\thesubsection%
\setcounter{sectionBackup}{\value{section}}%
\setcounter{section}{0}%
\renewcommand*{\thesection}{\Roman{section}}%
\renewcommand*{\thesubsection}{\thesection.\arabic{subsection}}%
}
\newcommand*{\undoSectionRoman}{%
\setcounter{section}{\value{sectionBackup}}%
\let\thesection\oldThesection%
\let\thesubsection\oldThesubsection%
}
\begin{document}
\tableofcontents
\chapter{Chapter 1}\chapter{Chapter 2}
\chapter{Chapter 3}
\section{Foo}\section{Far}
\makeSectionRoman
\section{Baz}
\subsection{Bar}
\section{Caz}
\subsection{Coo}
\undoSectionRoman
\section{Back to normal}
\subsection{Normal section}
\subsection{Another normal section}
\end{document}