Fügen Sie \maketitle in das Inhaltsverzeichnis ein, um ein „Buch“ mit IEEE-Artikeln zusammenzustellen

Fügen Sie \maketitle in das Inhaltsverzeichnis ein, um ein „Buch“ mit IEEE-Artikeln zusammenzustellen

Hintergrund:

Ich erstelle eine Zusammenstellung mehrerer Artikel im IEEE-Format. Diese Zusammenstellung wird ein einzelnes Inhaltsverzeichnis haben. Jeder Artikel enthält einen Titel und \maketitleeinen Befehl. Ich möchte, dass das Inhaltsverzeichnis den Titel jedes Artikels als primäre Ebene enthält, zusammen mit allen Abschnitten/Unterabschnitten usw.

    \documentclass[journal]{IEEEtran}

    \begin{document}
    \onecolumn
    \tableofcontents
     \twocolumn        


    % Title and Author information  Paper 1
        \title{Title 1}
        \author{Author 1}
        % Make the title area
        \maketitle
       $ Paper Content

    % Title and Author information  Paper 2
        \title{Title 2}
        \author{Author 2}
        % Make the title area
        \maketitle
       $ Paper Content

\end{document}

Sollte ein Inhaltsverzeichnis generieren, das ungefähr folgendes enthält:

  1. Titel 1

    I - Abschnitt 1

    IA Unterabschnitt 1

    IB Unterabschnitt 2

    II - Abschnitt 2

  2. Titel 2

    I - Abschnitt 1

    IA Unterabschnitt 1

    IB Unterabschnitt 2

    II - Abschnitt 2

Frage:

Wie kann ich das Inhaltsverzeichnis ändern, um Titel einzuschließen?

Ich bin offen für andere Vorschläge. Mir ist klar, dass die ieeetran- oder andere Artikel-/Journalklassen keine \chapteroder \part-Befehle verwenden, aber wenn es eine Möglichkeit gäbe, diesen Vorgang zu erzwingen, ohne die Klasse zu ändern, wäre ich auch an einer solchen Lösung interessiert.

Antwort1

\maketitleist ein Befehl, der sich kurz vor dem Ende des Makros selbst „deaktiviert“ (also, es wird \relaxdann beendet). Ein weiterer Aufruf dieses Makros bringt daher nichts. Mit einem Patch-Befehl \let\maketitle\relaxkann dies abgefangen und \addcontentslinestattdessen ein Befehl eingefügt werden, der dann den ToC-Eintrag vornimmt.

Ich habe außerdem einen titlecounterZähler eingeführt, der automatisch neu gestartet wird, also \labelsollte das auch funktionieren. Das Format des ToC-Eintrags ist im Moment recht einfach – ändern Sie es nach Belieben.

Mico hatte einen wichtigen Einwand: Es müsste gleich \clearpagezu Beginn des \maketitleBefehls ein Häkchen stehen, das eventuell vorhandene Floats aus dem vorhergehenden Artikel aussortiert. Ich habe dieses Verhalten allerdings auf den 2. usw. beschränkt \maketitle.

\documentclass[journal]{IEEEtran}

\usepackage{etoolbox}%
\usepackage{xpatch}
\usepackage{blindtext}

\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}\addcontentsline{toc}{section}{\protect{\numberline{\thetitlecounter}{\@title~ \@author}}}}{\typeout{Patching was successful}}{\typeout{patching failed}}%
\makeatother
\begin{document}
\onecolumn
\tableofcontents
\twocolumn        



% Title and Author information  Paper 1
\title{Title 1}
\author{Author 1}
% Make the title area
\maketitle
\blindtext[10]
%$ Paper Content

% Title and Author information  Paper 2
\title{Title 2}
\author{Author 2}
% Make the title area
\maketitle
\blindtext[20]
%$ Paper Content

\end{document}

Bildbeschreibung hier eingeben

Ausführung mit ebener Einkerbung

Verwenden Sie \setlength{\articlesectionindent}{10pt}(oder einen anderen geeigneten Wert), um die Einrückung der Ebenen relativ zum Titelinhaltsverzeichniseintrag zu erhalten.

Das Zurücksetzen von Abschnitten etc. erfolgt mit dem Befehl \@addtoreset{section}{titlecounter}, d. h. jedes Mal, wenn der titlecounterSchritt ausgeführt wird, werden die Abschnitte (und anschließend auch die Unterabschnitte etc.) zurückgesetzt.

\documentclass[journal]{IEEEtran}

\usepackage{etoolbox}%
\usepackage{xpatch}
\usepackage{blindtext}
\usepackage{tocloft}%

\newlength{\articlesectionshift}%
\setlength{\articlesectionshift}{10pt}%
\addtolength{\cftsecindent}{\articlesectionshift}%

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

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

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

Bildbeschreibung hier eingeben

** Warnung ** Beide Versionen schlagen in Verbindung mit hyperrefdem Paket fehl. Es liegt ein Problem mit dem \footnotemarkBefehl vor.

verwandte Informationen