Я новичок в 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}