我使用了这里给出的答案将“第 1 章”替换为“第一章”但只有在没有以下表格(lot)或图表(lof)列表的情况下才应如此。当按原样使用时,以下 lot 和 lof 也会用单词替换章节编号,如下所示:
应该做哪些改变来防止这种情况发生?
答案1
你的问题中没有提到你是如何生成字符串而不是数字的。你一定不能重新定义\thechapter
,否则与第一章相关的所有引用都将包含字符串ONE
。
您可以\@makechapterhead
使用以下命令进行修补:
\documentclass{report}
\usepackage{fmtcount} % for textual representation of numbers
% patch \@makechapterhead
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@makechapterhead}
{\thechapter}
{\NUMBERstring{chapter}}
{}{}
\makeatother
\begin{document}
\listoffigures
\chapter{First}
\begin{figure}
A
\caption{A figure}
\end{figure}
\end{document}
如果您希望在目录中的章节标题前面加上“第一章”,那么您还需要修补\@chapter
。
\documentclass{report}
\usepackage{tocloft}
\renewcommand{\cftchappresnum}{CHAPTER\ }
\setlength{\cftchapnumwidth}{10em}
\usepackage{fmtcount} % for textual representation of numbers
% patch \@makechapterhead and \@chapter
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@makechapterhead}
{\thechapter}
{\NUMBERstring{chapter}}
{}{}
\patchcmd{\@chapter}
{\protect\numberline{\thechapter}}
{\protect\numberline{\protect\NUMBERstringnum{\arabic{chapter}}}}
{}{}
\makeatother
\begin{document}
\tableofcontents
\listoffigures
\chapter{First}
\begin{figure}
A
\caption{A figure}
\end{figure}
\end{document}
请注意,如果想在新页面中添加,则需要\cleardoublepage
在之前\listoffigures
添加。为了显示输出,我没有添加它。
答案2
\documentclass[11pt,a4paper]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{titletoc, fmtcount}
\newlength{\len}
\titlecontents{chapter}[1.2em]{\bfseries \bigskip}%
{\contentslabel[Chapter \Numberstringnum{\thecontentslabel}.]{0.6em}\settowidth{\len} {Chapter \Numberstringnum{\thecontentslabel}}\hspace*{\len}}%]
{\hspace*{-1.5em}}%
{\hfill\contentspage}%
[\smallskip]%
\begin{document}
\tableofcontents
\chapter{Down the Rabbit-Hole}
\section{Alice was beginning to get tired}
\section{Drink me. Eat me. }
\setcounter{chapter}{10}
\chapter{Who Stole the Tarts?}
\section{The Queen’s Croquet-Ground}
\section{The Mock-Turtle’s Story}
\end{document}
它不应该使用章节计数器修改任何交叉引用。由于该命令,它对少数语言来说是多语言的\FCloadlang
。