章节标题的特殊格式

章节标题的特殊格式

我想格式化我的章节标题,例如:

“第一章:简介”

我有一个新命令定义如下:

\documentclass[a4paper,12pt] {report}
\usepackage{thesis_packages}

\newcommand{\ch}[2]{ 
\setcounter{chapter}{#1}
\setcounter{section}{0}
\chapter*{#2}}

\begin{document}

\include{introduction}
\end{document}


% introduction.tex
\ch{1}{Chapter One: Introduction}   \label{ch:intro}

为此,我需要在introduction.tex文件中写入\ch{1}{Chapter One:intro}。但是,我收到一条错误消息,提示“未定义控制序列\ch{1}{Chapter One:intro}”。新命令在主文本文件中定义。我使用报告文档类。

答案1

\documentclass[a4paper,12pt]{report}

\makeatletter
\newcommand{\inletters}[1]{\ifcase \csname c@#1\endcsname
  zero\or one\or two\or three\or four\or five\or six\or seven\or
  eight\or nine\or ten %complete here if you have more than 10 chapters 
  \else ??\fi} 

\renewcommand{\@makechapterhead}[1]{\vspace*{50\p@}%
  {\parindent\z@ \raggedright \normalfont\Huge\bfseries
    \ifnum \c@secnumdepth>\m@ne \@chapapp~\inletters{chapter}: \fi
     #1\par\nobreak\vskip 40\p@}}

\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
    \refstepcounter{chapter}%
    \typeout{\@chapapp\space\thechapter.}%
    \addcontentsline{toc}{chapter}%
    {\@chapapp~\inletters{chapter}: #1}% <-- modification
  \else
    \addcontentsline{toc}{chapter}{#1}%
  \fi
  \chaptermark{#1}%
  \addtocontents{lof}{\protect\addvspace{10\p@}}%
  \addtocontents{lot}{\protect\addvspace{10\p@}}%
  \if@twocolumn
    \@topnewpage[\@makechapterhead{#2}]%
  \else
    \@makechapterhead{#2}%
    \@afterheading
  \fi}
\makeatother


\begin{document}

\chapter{Introduction}

In this chapter, ...

\section{First section}

\end{document}

在此处输入图片描述

在此处输入图片描述

答案2

新的命令\ch似乎没有必要。要自动执行您想要的操作,您需要做两件事。

首先,您需要用文字而不是通常的数字来打印章节号。为此,请加载包fmtcount。这将为您提供\numberstring\Numberstring命令(分别用于小写和大写),以用文字打印计数器的当前值。

\usepackage{fmtcount}

其次,您需要稍微更改章节标题的格式,使其全部放在一行上。我期望有一个用于此目的的软件包,但通过重新定义\@makechapterhead自己,可以很容易地做到这一点:

\makeatletter
\renewcommand{\@makechapterhead}[1]{\vspace *{50\p@ }{\parindent \z@ 
\raggedright \normalfont \ifnum \c@secnumdepth >\m@ne \Huge \bfseries 
\@chapapp \space \Numberstring{chapter} : \fi #1\par \nobreak \vskip 40\p@ }}
\makeatother

然后在文档正文中就可以\chapter正常使用命令了:

\chapter{First Chapter}

This is Chapter One.

第一章:第一章[垂直空间]这是第一章。

答案3

您只需使用其中的工具即可titlesec轻松格式化章节标题。您想要的是样式block

\documentclass[a4paper,12pt]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage{geometry} 
\usepackage[letterspace=30]{microtype}
\usepackage{fmtcount}
\usepackage{titlesec}
\titleformat{\chapter}[block]{\Huge\bfseries\lsstyle}{\chaptername~\Numberstring{chapter}:}{0.333em}{}

\begin{document}

\chapter{Introduction}

In this chapter, ...

\end{document} 

在此处输入图片描述

要在目录中使用相同的(几乎 ;o)),您可以使用 \titletoc。因为它允许访问细绳 \thecontentslabel,您必须先将此字符串转换为数字,然后才能使用这些命令。这可以通过以( 、、 &c. )fmtcount结尾的命令之一来完成:num\Numberstringnum\numberstringnum

\documentclass[a4paper,12pt]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage{geometry}
\usepackage[letterspace=30]{microtype}
\usepackage{fmtcount}
\usepackage{titlesec, titletoc}
\titleformat{\chapter}[block]{\Huge\bfseries\lsstyle}{\chaptername~\Numberstring{chapter}:}{0.333em}{}

\titlecontents{chapter} [0em]{\bfseries} {\chaptername~the~Ordinalstringnum{\thecontentslabel}:\quad} 
{}{\hfill\contentspage} 

\begin{document}

\tableofcontents
\chapter{Introduction}

In this chapter, ...

\end{document} 

在此处输入图片描述

答案4

作为参考/只是为了好玩,这里是如何在 ConTeXt 中实现这一点的。

\setuphead
  [chapter]
  [conversion=Word,
   numbercommand=\NUMBERCOMMAND,
   style=\bfd]
\define[1] \NUMBERCOMMAND
  {Chapter #1:}

\starttext
  \chapter{Introduction}
  In this chapter, \periods
\stoptext

相关内容