Anfügen alphanumerischer Zeichen an Kapitelnummern

Anfügen alphanumerischer Zeichen an Kapitelnummern

Ich möchte in einigen Fällen, aber nicht überall, ein Zeichen an die Kapitelnummer anhängen. Die Änderung soll sich auch im Inhaltsverzeichnis widerspiegeln. Die Kapitelnummerierung soll so aussehen:

1

2a

2b

3

Wie kann ich das erreichen?

Antwort1

Eine Variante meiner Antwort aufKapitel mit bestimmter Nummer (1, 1b, 2, 2b, 3, 4)

\documentclass{book}

\usepackage{hyperref} % optional

\makeatletter
\newcounter{repchapter}
\let\latex@chapter\chapter
\renewcommand{\chapter}{\@ifstar{\latex@chapter*}{\guuk@chapter}}
\newcommand{\guuk@chapter}{\@ifnextchar+{\repeat@chapter}{\restorechapter\latex@chapter}}
\newcommand{\repeat@chapter}[1]{% #1 is +
  \ifnum\value{repchapter}>0
    \addtocounter{chapter}{-1}%
  \fi
  \stepcounter{repchapter}%
  \latex@chapter
}
\newcommand{\restorechapter}{%
  \setcounter{repchapter}{0}%
}
\def\thechapter{\arabic{chapter}\alph{repchapter}}
% this is for hyperref (it does nothing if not loaded)
\def\theHchapter{\arabic{chapter}\alph{repchapter}}
\makeatother

\begin{document}

\tableofcontents

\chapter{Title}
x
\chapter+{First part}
x
\chapter+{Second part}
x
\chapter{Normal}
x
\end{document}

Bildbeschreibung hier eingeben

Wenn Sie so etwas brauchen wie

1
2a
2b
3a
3b

Sie müssen \restorechaptervor Kapitel 3a ausgeben, um den Nebenstellenzähler auf Null zurückzusetzen, also

\chapter{One}
<text>

\chapter+{Two A}
<text>

\chapter+{Two B}
<text>

\restorechapter

\chapter+{Three A}
<text>

\chapter+{Three B}
<text>

Eine möglicherweise bessere Schnittstelle mit einer Schlüssel-Wert-Syntax:

\documentclass{book}

\usepackage{xparse}

\usepackage{hyperref}


\newcounter{repchapter}
\let\latexchapter\chapter
\renewcommand\thechapter{\arabic{chapter}\alph{repchapter}}
% this is for hyperref (it does nothing if not loaded)
\providecommand\theHchapter{}
\renewcommand\theHchapter{\arabic{chapter}\alph{repchapter}}

\ExplSyntaxOn
\RenewDocumentCommand{\chapter}{sO{}m}
 {
  \IfBooleanTF{#1}
    {\latexchapter*{#3}}
    {\egreg_complex_chapter:nn { #2 } { #3 }}
 }

\keys_define:nn { egreg/complex_chapter }
 {
  tochead .tl_set:N = \l_egreg_complex_chapter_tochead_tl,
  suffix  .bool_set:N = \l_egreg_complex_chapter_suffix_bool,
  suffix  .default:n = { true },
  reset   .bool_set:N = \l_egreg_complex_chapter_reset_bool,
  reset   .default:n = { true },
 }

\cs_new_protected:Npn \egreg_complex_chapter:nn #1 #2
 {
  \keys_set:nn { egreg/complex_chapter }
   {
    tochead = { #2 },
    suffix = false,
    reset = false,
    #1
   }
  \bool_if:NT \l_egreg_complex_chapter_reset_bool
   {
    \setcounter{repchapter}{0}
   }
  \bool_if:NTF \l_egreg_complex_chapter_suffix_bool
   {
    \int_compare:nT { \value{repchapter} > 0 }
     {
      \addtocounter{chapter}{-1}
     }
    \stepcounter{repchapter}
   }
   {
    \setcounter{repchapter}{0}
   }
  \latexchapter[\l_egreg_complex_chapter_tochead_tl]{#2}
 }
\ExplSyntaxOff

\begin{document}

\tableofcontents

\chapter{Title}
x
\chapter[suffix]{First part}
x
\chapter[suffix,tochead=Second part]{Second part with a very long title}
x
\chapter[reset,suffix]{Another first part}
x
\chapter[suffix]{Another second part}
x
\end{document}

Der resetSchlüssel wird nur benötigt, wenn auf ein anderes Split-Kapitel ein Split-Kapitel folgt, das eine neue Nummer benötigt.

Da wir das optionale Argument überladen haben, tocheadwird der Schlüssel zur Angabe des Kurztitels verwendet.

Bildbeschreibung hier eingeben

Antwort2

Schnell und dreckig!)

\documentclass{book}

\let\latexthechapter\thechapter
% Helper counter
\newcounter{alphachapter}
\setcounter{alphachapter}{0}



\makeatletter
\newcommand{\DoReallyBadThingsToChapterCounter}{%
\setcounter{alphachapter}{0}%
\stepcounter{chapter}%
% Store chapter command 
\let\latexc@chapter\c@chapter%
% Force chapter command to be help counter
\let\c@chapter\c@alphachapter%
% Change output format
\renewcommand{\thechapter}{\the\latexc@chapter\alph{alphachapter}}%
}

\newcommand{\RestoreChapterCounterMethod}{%
% Restore chapter counter command
\let\c@chapter\latexc@chapter%
% Restore chapter counter output format
\let\thechapter\latexthechapter%
}
\makeatother



\begin{document}
\tableofcontents
\chapter{First}


\DoReallyBadThingsToChapterCounter
\chapter{Second A}
\chapter{Second B}
\chapter{Second C}

\RestoreChapterCounterMethod
\chapter{Third}

\chapter{Fourth}

\DoReallyBadThingsToChapterCounter
\chapter{Fifth A}
\chapter{Fifth B}
\chapter{Fifth C}
\RestoreChapterCounterMethod

\chapter{Sixth}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen