在目錄中包含 \maketitle 來編譯 IEEE 文章的“書”

在目錄中包含 \maketitle 來編譯 IEEE 文章的“書”

背景:

我正在創建多篇 IEEE 格式文章的彙編。該彙編將有一個目錄。每篇論文都包含標題和\maketitle命令。我希望目錄將每篇論文的標題以及所有章節/小節等作為主要等級。

    \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

    I - 第 1 節

    IA 第 1 款

    IB 第 2 款

    II - 第 2 節

  2. 標題 2

    I - 第 1 節

    IA 第 1 款

    IB 第 2 款

    II - 第 2 節

問題:

如何修改目錄以包含標題?

我願意接受其他建議。我意識到 ieeetran 或其他文章/期刊類別不使用\chapter\part命令,但如果有一種方法可以在不更改類別的情況下強制執行此操作,我也會對這樣的解決方案感興趣。

答案1

\maketitle是一個命令,它在巨集結束之前「禁用」自身(好吧,\relax然後是 ed)。因此,進一步呼叫該巨集將不會提供任何結果。透過使用 patch 命令,\let\maketitle\relax可以捕獲此問題並\addcontentsline注入命令,然後該命令將執行目錄條目。

我進一步引入了一個titlecounter計數器,它會自動重新執行,因此\label應該也可以工作。目前ToC條目的格式非常簡單-隨意更改。

\clearpageMico 有一個重要的反對意見:命令的開頭應該有一個右側\maketitle,它將從前一篇文章中發出可能的浮動。但是,我將這種行為限制為第二次等\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命令有問題。

相關內容