Incluya \maketitle en la tabla de contenidos para compilar un "libro" de artículos IEEE

Incluya \maketitle en la tabla de contenidos para compilar un "libro" de artículos IEEE

Fondo:

Estoy creando una compilación de varios artículos en formato IEEE. Esta recopilación tendrá un único índice. Cada artículo incluye un título y \maketitleun comando. Me gustaría que el TOC incluya el título de cada artículo como nivel primario, junto con todas las secciones/subsecciones, etc.

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

Debería generar un TOC que se aproxime a esto:

  1. Título 1

    I - Sección 1

    IA Subsección 1

    Subsección 2 del IB

    II - Sección 2

  2. Título 2

    I - Sección 1

    IA Subsección 1

    Subsección 2 del IB

    II - Sección 2

Pregunta:

¿Cómo puedo modificar el TOC para incluir títulos?

Estoy abierto a otras sugerencias. Me doy cuenta de que ieeetran u otras clases de artículos/revistas no usan comandos \chapterni \part, pero si hubiera una manera de forzar esta operación sin cambiar la clase, también estaría interesado en esa solución.

Respuesta1

\maketitlees un comando que se 'deshabilita' justo antes del final de la macro (bueno, \relaxentonces se edita). Como tal, una nueva llamada a esta macro no proporcionará nada. Al usar un comando de parche, esto \let\maketitle\relaxse puede detectar e \addcontentslineinyectar un comando en su lugar, que luego realizará la entrada de ToC.

Además, introduje un titlecountercontador, que se actualiza automáticamente, por lo que \labeltambién debería funcionar. El formato de la entrada de ToC es bastante simple en este momento: cámbielo a voluntad.

Mico tenía una objeción importante: debería haber un \clearpagederecho al inicio del \maketitlecomando, que eliminaría posibles flotadores del artículo anterior. Sin embargo, restringí este comportamiento al segundo \maketitle, etc.

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

ingrese la descripción de la imagen aquí

Versión con sangría de nivel

Use \setlength{\articlesectionindent}{10pt}(o cualquier otro valor apropiado), para obtener la sangría de niveles relativa a la entrada del título.

El reinicio de secciones, etc. se realiza con el comando \@addtoreset{section}{titlecounter}, es decir, cada vez que titlecounterse pisa, se reinician las secciones (y consecutivamente también las subsecciones, etc.)

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

ingrese la descripción de la imagen aquí

** Advertencia ** Ambas versiones fallarán junto con hyperrefel paquete. Es algún problema con el \footnotemarkcomando.

información relacionada