将章节分为第 1 章、第 2a 章、第 2b 章、第 3 章等

将章节分为第 1 章、第 2a 章、第 2b 章、第 3 章等

我正在排版一本书,其中一章分成两章,所以我需要像这样计算:

chapter 1
---------

chapter 2a
----------

chapter 2b
----------

chapter 3
---------

chapter 4
---------

我看到了一个几乎可以解决的问题这里。但此解决方案不允许我继续进行非分离章节计数。

这只是章节,各个部分没有编号,我正在使用book带有hyperref包的类。

答案1

如果你使用提供以下功能的标准文档类\chapter(如book或者report),则以下内容有效:

在此处输入图片描述

\documentclass{report}
\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
%\usepackage{hyperref}% http://ctan.org/pkg/hyperref
\newcounter{subchapter}\renewcommand{\thesubchapter}{\alph{subchapter}}
\makeatletter
% \patchcmd{<cmd>}{<search>}{<replace>}{<success>}{<failure>}
\newcommand{\updatechaptercounter}{}
\patchcmd{\@chapter}{\@afterheading}{\updatechaptercounter\@afterheading}{}{}% Regular patch of \@chapter
%\patchcmd{\Hy@org@chapter}{\@afterheading}{\updatechaptercounter\@afterheading}{}{}% Hyperref patch of \@chapter
\makeatother
\providecommand{\theHchapter}{}%
\newcommand{\startsubchapters}{%
  \setcounter{subchapter}{0}% Reset sub-chapter numbering
  \renewcommand{\thechapter}{\arabic{chapter}\thesubchapter}% Update chapter number display
  \renewcommand{\theHchapter}{\arabic{chapter}\thesubchapter}% Update chapter number display (for hyperref)
  \renewcommand{\updatechaptercounter}{\addtocounter{chapter}{-1}}% Update chapter number
  \let\oldchapter\chapter%
  \renewcommand{\chapter}{\stepcounter{subchapter}\oldchapter}% Increment subchapter
}
\newcommand{\stopsubchapters}{%
  \renewcommand{\thechapter}{\arabic{chapter}}% Reset chapter numbering
  \renewcommand{\theHchapter}{\arabic{chapter}}% Reset chapter numbering (for hyperref)
  \let\chapter\oldchapter% Restore regular \chapter command
  \renewcommand{\updatechaptercounter}{}% Clear chapter counter update
  \stepcounter{chapter}% Update chapter counter
}
\begin{document}
\tableofcontents
\chapter{First chapter}
\startsubchapters
\chapter{Second sub-chapter}
\chapter{Second sub-chapter}
\stopsubchapters
\chapter{Third chapter}
\chapter{Fourth chapter}
\end{document}

此解决方案背后的想法是修补\@chapter并插入一个特殊宏\updatechaptercounter。然后以特定方式重新定义此宏,具体取决于您是开始子章节编号 ( \startsubchapters) 还是停止它 ( \stopsubchapters)。

如果你使用hyperref那么您需要按照上面的 MWE 所示更新补丁。

相关内容