任意章节编号

任意章节编号

我想用不同的方式和我选择的单词对章节标题进行编号。例如,我希望第一章的编号为 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}

在此处输入图片描述

相关内容