我想用不同的方式和我选择的单词对章节标题进行编号。例如,我希望第一章的编号为 AA,第二章的编号为 FR 等等。我该怎么做。我的代码是:
\documentclass[a4paper, 11pt]{book}
\usepackage[english]{babel}
\usepackage{geometry}
\usepackage{pstricks}
\usepackage{graphicx}
\usepackage[doublespacing]{setspace}
\usepackage{romannum}
\usepackage{titlesec}
\renewcommand\thechapter{\Roman{chapter}}
\titleformat{\chapter}
{\normalfont\fontsize{20}{15}\bfseries}
{\chaptertitlename\ \thechapter}{20pt}{\Huge}
\titleformat{\section}
{\normalfont\fontsize{20}{15}\bfseries}
{\thesection}{1em}{}
\begin{document}
\chapter{Apple}
It is for test
\Chapter{Book}
\end{document}
答案1
我定义了一个\seq
变量,其中包含要用作数字的所需数字或“文本”列表。这些数字通过实际章节编号检索\seq_item:Nn
,可以使用添加更多数字\addtonumberpool
(参见下面的代码)。
该解决方案负责目录和参考格式。
\documentclass[a4paper, 11pt]{book}
\usepackage[english]{babel}
\usepackage{geometry}
\usepackage{pstricks}
\usepackage{graphicx}
\usepackage[doublespacing]{setspace}
\usepackage{romannum}
\usepackage{tocloft}
\addtolength{\cftchapnumwidth}{20pt}
\usepackage{xpatch}
\usepackage{xparse}
\ExplSyntaxOn
\seq_new:N \g_raihaneh_numberpool_seq
\NewDocumentCommand{\addtonumberpool}{+m}{%
\group_begin:
\seq_set_from_clist:Nn \l_tmpa_seq {#1}%
\seq_map_inline:Nn \l_tmpa_seq {
\seq_gput_right:Nn \g_raihaneh_numberpool_seq {##1}
}
\group_end:
}
\NewDocumentCommand{\populatenumberpool}{+m}{%
\addtonumberpool{#1}
}
\makeatletter
\cs_new:Npn \mychapternumberexpression {%
\cs_set:Npx \thechapter {\seq_item:Nn \g_raihaneh_numberpool_seq {\int_eval:n {\value{chapter}+1}}}
}
\xpretocmd{\@chapter}{%
\mychapternumberexpression
}{}{}
\makeatother
\ExplSyntaxOff
\populatenumberpool{AA,FR}
\addtonumberpool{BAD,TYPOGRAPHY}
\begin{document}
\tableofcontents
See \ref{apple} or \ref{book} or \ref{stuff}
\chapter{Apple} \label{apple}
It is for test
\chapter{Book} \label{book}
\chapter{Stuff} \label{stuff}
\end{document}
答案2
受到您的打字错误的启发\Chapter
,我定义了一个\Chapter
接受两个参数的命令,即章节的“编号”及其标题。
然后我将其更改\titleformat
为使用您给出的章节“编号”。
如果您使用普通的\chapter
,则使用实际的章节编号。
注意!正如@ChristianHupfer 指出的那样,即使您\Chapter{FR}{Book}
在目录中使用,它仍然是Chapter II Book
。他的回答也负责目录编号 :)
\documentclass[a4paper, 11pt]{book}
\usepackage[english]{babel}
\usepackage{geometry}
\usepackage{pstricks}
\usepackage{graphicx}
\usepackage[doublespacing]{setspace}
\usepackage{romannum}
\usepackage{titlesec}
\renewcommand\thechapter{\Roman{chapter}}
\edef\chaptersymbol{}%
\newcommand{\Chapter}[2]{%
\edef\chaptersymbol{#1}%
\chapter{#2}%
\edef\chaptersymbol{}%
}
\titleformat{\chapter}
{\normalfont\fontsize{20}{15}\bfseries}
{\chaptertitlename\ \ifx\chaptersymbol\empty\thechapter\else\chaptersymbol\fi}{20pt}{\Huge}
\titleformat{\section}
{\normalfont\fontsize{20}{15}\bfseries}
{\thesection}{1em}{}
\begin{document}
\chapter{Apple}
It is for test
\Chapter{FR}{Book}
\end{document}
答案3
您可以简单地定义章节编号的顺序并相应地重新定义\thechapter
:
\documentclass{book}
\usepackage{xparse}
\usepackage{etoolbox}
\ExplSyntaxOn
\NewDocumentCommand{\definechapternumbers}{m}
{
\clist_gset:Nn \g_raihaneh_chapters_clist { #1 }
}
\RenewExpandableDocumentCommand{\thechapter}{}
{
\clist_item:Nn \g_raihaneh_chapters_clist { \value{chapter} }
}
\ExplSyntaxOff
\definechapternumbers{AA,FR}
% make a bit more room for the chapter numbers in the TOC
\makeatletter
\patchcmd{\l@chapter}{1.5em}{2.5em}{}{}
\makeatother
\begin{document}
\let\cleardoublepage\relax % just not to have page breaks
\tableofcontents
\chapter{Apple}\label{chap:apple}
This is chapter~\ref{chap:apple}
\chapter{Book}\label{chap:book}
This is chapter~\ref{chap:book}
\end{document}