章节级别的罗马枚举

章节级别的罗马枚举

是否可以进行编号,以便我的章节可以包含包含章节的部分?

目前我有:

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}

输出

在此处输入图片描述

相关内容