在类文件 latex 中打印章节编号作为名称

在类文件 latex 中打印章节编号作为名称

我正在使用杜克大学的 LaTeX 模板撰写硕士论文,该模板打印章节标题如下:

第1章

章节名称

但我想按如下方式打印

第一章:章节名称

我使用旧样式打印“章节”一词,欢迎提出任何建议

 %-------------------------------------------------------------------------
 % Chapter format:
 %-------------------------------------------------------------------------
 \def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
                     \refstepcounter{chapter}%
                             % Done with frontmatter?
                             \if@frontmatter
                                 \@frontmatterfalse
                                  \pagenumbering{arabic}
                                  \setcounter{page}{1}
                             \fi
                     \typeout{\@chapapp\space\thechapter.}%
                     \addcontentsline{toc}{chapter}%
                               {\protect\numberline{\thechapter}#1}%
                \else
                  \addcontentsline{toc}{chapter}{#1}%
                \fi
                \chaptermark{#1}%
                \addtocontents{lof}{\protect\addvspace{10\p@}}%
                \addtocontents{lot}{\protect\addvspace{10\p@}}%
                \@makechapterhead{#2}%
                \@afterheading
                      \normalbaselines
                      \@textspace  % double-spaced chapter text
 }
 % Format for normal chapters (and appendicies)
 \ifthenelse{\boolean{oldstyle}}{ }
 {%
 \def\@makechapterhead#1{%
 \vspace*{1in} % Leave space at top of page
   { 
   \parindent \z@ \raggedright \normalfont
      \if@inappendix
      % Include the word 'Appendix'
      \makebox[\textwidth][r]{\Huge\bfseries \@chapapp\space\thechapter} 
      \else
      % Don't include the word 'Chapter'
      \makebox[\textwidth][r]{\Huge\bfseries \thechapter} 
      \fi
    \par\nobreak
    \vskip 10\p@
\interlinepenalty\@M
 % Title format
 \parbox{\textwidth}{ \flushright{%
  \normalbaselines \LARGE  #1  \par\nobreak }}
\vskip 40\p@
   }%
   \vspace*{50\p@}%
   }

 }

答案1

在下面oldstyle文档类别选项下,杜克研究生院 LaTeX 模板使用默认report班级章节设置。这是什么样子的?好吧,让我们看看\@makechapterhead,负责设置章节标题的宏:

\def\@makechapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright \normalfont
    \ifnum \c@secnumdepth >\m@ne
        \huge\bfseries \@chapapp\space \thechapter
        \par\nobreak
        \vskip 20\p@
    \fi
    \interlinepenalty\@M
    \Huge \bfseries #1\par\nobreak
    \vskip 40\p@
  }}

标题包括\huge\bfseriesCHAPTER ( \@chapapp),然后是章节号,接着是垂直间隙,然后是\Huge\bfseries章节标题。我们可以将其调整为以下内容:

\usepackage{fmtcount}
\makeatletter
\def\@makechapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright \normalfont
    \ifnum \c@secnumdepth >\m@ne
        \huge\bfseries \@chapapp\space \NUMBERstring{chapter}: %\huge\bfseries \@chapapp\space \thechapter
        %\par\nobreak
        %\vskip 20\p@
    \fi
    \interlinepenalty\@M
    \huge \bfseries #1\par\nobreak%\Huge \bfseries #1\par\nobreak
    \vskip 40\p@
  }}
\makeatother

添加fmtcount允许我们将章节计数器表示格式化为\NUMBERstring- 输出代表计数器数字的字符串。

需要类似的东西\@makeschapterhead- 负责设置带星号的章节标题的宏 - 以便在章节标题中具有相同的字体大小:

\makeatletter
\def\@makeschapterhead#1{%
  \vspace*{50\p@}%
  {\parindent \z@ \raggedright
    \normalfont
    \interlinepenalty\@M
    \huge \bfseries #1\par\nobreak%\Huge \bfseries  #1\par\nobreak
    \vskip 40\p@
  }}
\makeatother

将上述两个代码段添加到序言中,代表对带星号章节和普通章节的修改。输出现在应该类似于

在此处输入图片描述

如果使用\numberstring而不是\NUMBERstring,则输出类似于

在此处输入图片描述

查看fmtcount文档以获得更多选项。

相关内容