Включить \maketitle в оглавление для составления «книги» статей IEEE

Включить \maketitle в оглавление для составления «книги» статей IEEE

Фон:

Я создаю компиляцию из нескольких статей формата IEEE. Эта компиляция будет иметь единое оглавление. Каждая статья включает заголовок и \maketitleкоманду. Я хотел бы, чтобы TOC включал заголовок каждой статьи в качестве основного уровня, вместе со всеми разделами/подразделами и т. д.

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

Необходимо сгенерировать оглавление, которое приблизительно выглядит следующим образом:

  1. Заголовок 1

    Я - Раздел 1

    Подраздел 1 IA

    Подраздел 2 IB

    II - Раздел 2

  2. Заголовок 2

    Я - Раздел 1

    Подраздел 1 IA

    Подраздел 2 IB

    II - Раздел 2

Вопрос:

Как изменить оглавление, включив в него заголовки?

Я открыт для других предложений. Я понимаю, что ieeetran или другие классы статей/журналов не используют команды \chapteror \part, но если бы был способ принудительно выполнить эту операцию, не меняя класс, мне было бы интересно и такое решение.

решение1

\maketitleэто команда, которая «отключает» себя прямо перед концом макроса (ну, \relaxтогда он ed). Таким образом, дальнейший вызов этого макроса ничего не даст. Используя команду patch, это \let\maketitle\relaxможно поймать и\addcontentsline вместо этого ввести команду, которая затем выполнит запись ToC.

Я также ввел titlecounterсчетчик, который автоматически рефшагирует, так что\label тоже должно работать. Формат записи ToC на данный момент довольно прост — меняйте по желанию.

У Мико было важное возражение: \clearpageв начале команды должно быть право \maketitle, которое отправит возможные поплавки из предыдущей статьи. Однако я ограничил это поведение 2-й и т. д \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}

введите описание изображения здесь

Версия с отступом уровня

Используйте \setlength{\articlesectionindent}{10pt}(или любое другое подходящее значение), чтобы получить отступ уровней относительно записи заголовка оглавления.

Сброс разделов и т.д. производится командой \@addtoreset{section}{titlecounter}, т.е. каждый раз при titlecounterнажатии сбрасываются разделы (а затем и подразделы и т.д.)

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

введите описание изображения здесь

** Предупреждение ** Обе версии не будут работать в сочетании с hyperrefпакетом. Это какая-то проблема с \footnotemarkкомандой.

Связанный контент