Hintergrund:
Ich füge mehrere IEEE-Style-Paper an, die die Lösung verwendenHier.
Die meisten Dokumente enthalten Anhänge, die mit dem \appendices
Schalter „Neudefinieren“ \thesection
als Anhang A, B, C usw. erstellt werden. Mein Problem besteht darin, dass der Abschnitt nie neu definiert wird, wenn ein neues Dokument in das Dokument aufgenommen wird. Daher ist das, was als Abschnitt 1 bezeichnet werden sollte, nun Anhang A.
Frage:
Wie definiere ich \thesection neu, um die normalen Abschnittsmarkierungen im ieeetran-Stil wiederherzustellen?
Antwort1
Ich habe mir erlaubt, die Lösung schamlos zu stehlen in Fügen Sie \maketitle in das Inhaltsverzeichnis ein, um ein „Buch“ mit IEEE-Artikeln zusammenzustellenvon dem komischen Typen, der es bereitgestellt hat (;-))
IEEEtran
ist insofern restriktiv, als dass es sections
nach einem \appendix
oder \appendices
-Befehl nichts zulässt. Auf diese Weise definiert es das Makro
\def\@IEEEdestroythesectionargument#1
um eine Warnung/einen Fehler auszugeben. Dies kann behoben werden, indem \let\LaTeXStandardSection
anstelle der Warnung das gespeicherte Abschnittsmakro eingefügt wird. (Kleiner Vorbehalt: Funktioniert jedoch nicht für Abschnitte mit optionalem Argument --> besserer Weg: Patchen Sie den Befehl \appendix
usw.
Die \thesection
usw. Zählerformatmakros müssen am Ende wiederhergestellt werden \maketitle
!
Schnelle und schmutzige MethodeDefinieren Sie es neu \appendices
usw., sodass es nichts anderes bewirkt, als das Zählerformat für die Strukturierungsebenenzähler zurückzusetzen.
\documentclass[journal]{IEEEtran}
\usepackage{etoolbox}%
\usepackage{xpatch}
\usepackage{blindtext}
\usepackage{tocloft}%
\newlength{\articlesectionshift}%
\setlength{\articlesectionshift}{10pt}%
\addtolength{\cftsecindent}{\articlesectionshift}%
\let\LaTeXStandardSection\section
\let\LaTeXStandardTheSection\thesection
\let\LaTeXStandardTheSubSection\thesubsection
\let\LaTeXStandardTheSubSubSection\thesubsubsection
\let\LaTeXStandardTheParagraph\theparagraph
\makeatletter
\newcounter{titlecounter}
\xpretocmd{\maketitle}{\ifnumgreater{\value{titlecounter}}{1}}{\clearpage}{}{} % Well, this is lazy at the end ;-)
\xpatchcmd{\maketitle}{\let\maketitle\relax\let\@maketitle\relax}{\refstepcounter{titlecounter}\begingroup
\addtocontents{toc}{\begingroup\addtolength{\cftsecindent}{-\articlesectionshift}}%
\addcontentsline{toc}{section}{\protect{\numberline{\thetitlecounter}{\@title~ \@author}}}%
\addtocontents{toc}{\endgroup}
}{%
\typeout{Patching was successful}
}{%
\typeout{patching failed}
}%
\def\@IEEEdestroythesectionargument#1{\LaTeXStandardSection{#1}}%
\xapptocmd{\maketitle}{%
\renewcommand{\thesection}{\LaTeXStandardTheSection}%
\renewcommand{\thesubsection}{\LaTeXStandardTheSubSection}%
\renewcommand{\thesubsubsection}{\LaTeXStandardTheSubSubSection}%
\renewcommand{\theparagraph}{\LaTeXStandardTheParagraph}%
}{}{}%
\@addtoreset{section}{titlecounter}
\makeatother
\begin{document}
\onecolumn
\tableofcontents
\twocolumn
% Title and Author information Paper 1
\title{Title 1}
\author{Author 1}
% Make the title area
\maketitle
\section{First}
\subsection{First subsection of 1st section}%
\subsection{2nd subsection of 1st section}%
\subsection{3rd subsection of 1st section}%
\subsection{4th subsection of 1st section}%
\blindtext[10]
\section{Two}
\subsection{First subsection of 2nd section}%
\appendix
\section{First of Appendix}
% Title and Author information Paper 2
\title{Title 2}
\author{Author 2}
% Make the title area
\maketitle
\section{First from second paper}
\subsection{First subsection of 2nd section of 2nd article}%
\blindtext[20]
%$ Paper Content
\end{document}