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

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

我想按照这个问题中描述的方式将我的章节划分为子章节: 将章节分为第 1 章、第 2a 章、第 2b 章、第 3 章等

但是我没有得到正确的结果。虽然章节名称/计数都正确,但小节的编号却不正确。

考虑上述问题的接受答案中提供的修改后的文件:

\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}
\section{one one}
\section{one two}
\startsubchapters
\chapter{Second sub-chapter}
\section{2 A one}
\section{2 A two}
\chapter{Second sub-chapter}
\section{2 B one}
\section{2 B two}

\stopsubchapters
\chapter{Third chapter}
\chapter{Fourth chapter}
\end{document}

(我只是添加了部分内容而已)

为我提供以下输出: 内容页 它应该是第 2A.1、2B.1 等节,而不是 1A.1 1B.1 等。我做错了什么?

(在 Windows 上使用 pdfTeX 3.14159265-2.6-1.40.17(TeX Live 2016/W32TeX)编译)

答案1

检查你的定义\startsubchapter

\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
}

第一次\chapter使用重新定义的值时,它将具有前一章节的值,而且,该值永远不会改变。当您启动子章节组时,章节计数器确实需要步进 - 仅一次。

这可以通过使用开关来指示新组来实现,例如:

\newif\iffirstsubchapter
\firstsubchaptertrue

然后在设置之前添加一些代码来使用它\oldchapter

  \iffirstsubchapter
    \firstsubchapterfalse
  \fi
  \let\oldchapter\chapter

最后,对的定义添加反转\stopsubchapters

  \firstsubchaptertrue

它可以出现在定义中的任何位置。(我把它放在最后。)

相关内容