我是 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
,其中接受一个需要在中使用的参数(计数器的值)。roman
fnsymbol
\@<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}