创建自定义章节编号

创建自定义章节编号

我是 LaTeX 新手。我想使用自定义字符串列表(primo、secundo、tertio……)创建章节编号样式。我的理解是我应该这样做:

\renewcommand\thesection{\fnsymbol{section}}

当然不是\fnsymbol,而是用另一个受其启发的命令,生成我的自定义列表而不是 *、†、‡… 唯一的问题是,我不知道该怎么做。我甚至不知道在哪里可以找到该\fnsymbol命令的源代码。有人能帮我吗?

答案1

为了写出序数,似乎有两个包裹适合于:

它们的界面略有不同,numspell只适用于开箱即用的实际数字,同时fmtcount也具有 LaTeX 计数器的界面。

fmtcount软件包似乎隐含地支持性别(男性、女性、中性),但实际上numspell只支持某些明确的语言。

拉丁语受 支持,numspell但 不受 支持fmtcount。(您的示例似乎是拉丁语。)

这是意大利语的开始。(够接近吗?)

请注意,由于目录和参考文献使用相同的编号方案

  • 间距已随tocloft包装调整,
  • 所引用的例子可能不正确。

如果您真的想创建自己的查找表,您将需要一个顶级命令(用于计数器)和一个执行实际工作的低级命令。

为此,您可以使用\NewNumberingScheme{<scheme>}{<look up>}设置

  • \<scheme>
  • \@<scheme>

其他所有函数的工作方式类似(arabic,,,)alph,其中接受一个需要在中使用的参数(计数器的值)。romanfnsymbol\@<scheme>#1<look up>

我添加了一个小示例\weird,您可以随意使用它\fnsymbol

\NewNumberingScheme{weird}{%
  \ifcase #1\relax zero\or eins\or second\or tertio\or viertes\or
     fifth\or another one\else more than six\fi}

\renewcommand*\thesubsection{\weird{subsection}}

代码

\documentclass[italian]{article}
\usepackage{babel}
\usepackage{fmtcount}

% Adusting Table of Contents spacing
\usepackage{tocloft}
\setlength\cftsecnumwidth{5em}
\setlength\cftsubsecnumwidth{5em}
\setlength\cftsubsubsecnumwidth{6em}

\renewcommand*{\thesection}{\Ordinalstring{section}}

\usepackage{cleveref}

% custom numbering scheme
\makeatletter
\newcommand*\NewNumberingScheme[2]{%
  \edef\@tempa{\noexpand\newcommand*\expandafter\noexpand\csname #1\endcsname[1]{%
  \noexpand\expandafter\expandafter\noexpand\csname @#1\endcsname\noexpand\csname c@####1\endcsname}%
    \noexpand\newcommand*\expandafter\noexpand\csname @#1\endcsname}%
  \@tempa[1]{#2}}
\makeatother

\NewNumberingScheme{weird}{%
  \ifcase #1\relax zero\or eins\or second\or tertio\or viertes\or
     fifth\or another one\else more than six\fi}
\renewcommand*\thesubsection{\weird{subsection}}

%%% only for blindtext
\usepackage{blindtext}% ignore warning about italian not defined:
\makeatletter\renewcommand\blind@checklanguage{}\makeatother
%%%
\begin{document}
\tableofcontents
\blinddocument
\blinddocument
\section{test}
\label{test}
This is \cref{test}.
\end{document}

输出

在此处输入图片描述

在此处输入图片描述

答案2

定义字符串序列。

\documentclass{article}

\makeatletter
\NewExpandableDocumentCommand{\mynumbering}{m}{%
  \ExpandArgs{c}\@mynumbering{c@#1}%
}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\@mynumbering}{m}
 {
  \int_case:nn { #1 }
   {
    {1}{primo}
    {2}{secundo}
    {3}{tertio}
    %...
   }
 }
\ExplSyntaxOff

\renewcommand{\thesection}{\mynumbering{section}}

\begin{document}

\section{First}
\section{Second}
\section{Third}

\end{document}

在此处输入图片描述

相关内容