배경:
여러 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}
다음과 비슷한 TOC를 생성해야 합니다.
제목 1
I - 섹션 1
IA 제1항
IB 하위 섹션 2
II - 섹션 2
제목 2
I - 섹션 1
IA 제1항
IB 하위 섹션 2
II - 섹션 2
질문:
제목을 포함하도록 TOC를 수정하려면 어떻게 해야 합니까?
다른 제안에도 열려 있습니다. ieeetran이나 다른 기사/저널 클래스에서는 \chapter
또는 \part
명령을 사용하지 않는다는 것을 알고 있지만 클래스를 변경하지 않고 이 작업을 강제로 수행할 수 있는 방법이 있다면 그러한 솔루션에도 관심이 있을 것입니다.
답변1
\maketitle
매크로가 끝나기 직전에 자체적으로 '비활성화'되는 명령입니다(글쎄, 그 \relax
다음에는 실행됩니다). 따라서 이 매크로를 추가로 호출하면 아무 것도 제공되지 않습니다. 패치 명령을 사용하면 이를 \let\maketitle\relax
포착하고 \addcontentsline
대신 명령을 삽입하여 ToC 항목을 수행할 수 있습니다.
titlecounter
또한 자동으로 다시 단계를 거치는 카운터를 도입하여 이 기능 \label
도 작동할 것입니다. ToC 항목의 형식은 현재 매우 간단합니다. 마음대로 변경할 수 있습니다.
\clearpage
Mico는 중요한 이의를 제기했습니다. 명령 시작 부분에 \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
.