Criando uma numeração de seção personalizada

Criando uma numeração de seção personalizada

Eu sou novo no LaTeX. Gostaria de criar um estilo de numeração de seção usando uma lista personalizada de cadeias de caracteres (primo, secundo, tertio…). Meu entendimento é que devo fazer algo assim:

\renewcommand\thesection{\fnsymbol{section}}

Só que não com \fnsymbolclaro, mas com outro comando inspirado nele, gerando minha lista customizada em vez de *, †, ‡… O único problema é que não tenho ideia de como fazer isso. Nem sei onde encontrar o \fnsymbolcódigo-fonte do comando. Alguém por favor poderia me ajudar com isso?

Responder1

Para obter números ordinais escritos, parece haverdois pacotesadequado para isso:

Eles têm uma interface um pouco diferente, pois numspellsó funciona com números reais prontos para uso, onde fmtcounttambém possui uma interface para contadores LaTeX.

O fmtcountpacote parece ter apoio implícito para géneros (masculino, feminino, neutro), ao passo que numspellapenas o tem para algumas línguas explícitas.

A língua latina é suportada, numspellmas não por fmtcount. (Seu exemplo parece estar em latim.)

Aqui está um começo para o italiano. (Perto o suficiente?)

Observe que, como o mesmo esquema de numeração é usado para o índice e para as referências

  • o espaçamento foi ajustado com a tocloftembalagem e
  • os casos de referências podem não estar corretos.

Se você realmente deseja criar sua própria tabela de consulta, você desejará ter um comando de nível superior (para contadores) e um comando de baixo nível que faça o trabalho real.

Para isso, você pode usar a \NewNumberingScheme{<scheme>}{<look up>}macro que configura

  • \<scheme>e
  • \@<scheme>,

semelhante em como todos os outros funcionam ( arabic, alph, roman, fnsymbol) onde \@<scheme>leva um argumento #1(o valor do contador) que precisa ser usado em <look up>.

Adicionei um pequeno exemplo \weirdque você pode usar como faria \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}}

Código

\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}

Saída

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Responder2

Defina sua sequência de strings.

\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}

insira a descrição da imagem aqui

informação relacionada