Создание пользовательской нумерации разделов

Создание пользовательской нумерации разделов

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

введите описание изображения здесь

Связанный контент