修复由自定义分段命令创建的 ToC 条目

修复由自定义分段命令创建的 ToC 条目

我的目录存在问题:第一章标题的外观是

CHAPTER ONE 
INTRODUCTION

使用以下代码生成

\newcommand{\mychapter}[2]{

\setcounter{chapter}{#1}

\setcounter{section}{0}
\chapter*{#2}
\addcontentsline{toc}{chapter}{#2}
}
\usepackage{indentfirst} % to make indent from first paragraph
\begin{document}

  \titlespacing*{\chapter}{10pt}{0pt}{10pt}
  \titleformat{\chapter}[display]
      {\centering\normalfont\large\bfseries}{ \chaptertitlename\ \thechapter}{40pt}{\large}
\tableofcontents

\mychapter{1}{CHAPTER ONE\\INTRODUCTION}`
\end {document}

但是,在目录中“第一章”和“简介”并没有出现在一行中:

在此处输入图片描述

因此,问题是:我怎样才能将“第一章”和“简介”放在线?

答案1

标题元素最终分为两行,因为你告诉它们分为两行(ie\\负责这一点)。问题是你的\mychapter宏缺乏 LaTeX 标准命令所具有的某些功能:

通常在 LaTeX 中,分段命令有一个可选参数,该参数接受将写入目录的标题。如果未指定,则强制参数中给出的标题将写入目录。(这就是 @AndrewSwann 在他的评论中试图向您解释的内容。)

虽然我不清楚您如何从定义宏中获益\mychapter,但您可以通过以下方式添加上面描述的功能:

\newcommand{\mychapter}[3][]{%
\setcounter{chapter}{#3}
\setcounter{section}{0}
\chapter*{#2}
\if\relax\detokenize{#1}\relax
  \addcontentsline{toc}{chapter}{#2}
\else
  \addcontentsline{toc}{chapter}{#1}
\fi
}

请注意,我稍微改变了你的参数设计。你现在可以像这样使用你的宏\mychapter[CHAPTER ONE INTRODUCTION]{CHAPTER ONE\\INTRODUCTION}{1}——总结一下:一般来说,概要是

\mychapter[<ToC heading>]{<body heading>}{<chapter number>}

如果没有给出可选参数,则<body heading>等于。<ToC heading>

相关内容