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 \fnsymbol
claro, 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 \fnsymbol
có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 numspell
só funciona com números reais prontos para uso, onde fmtcount
também possui uma interface para contadores LaTeX.
O fmtcount
pacote parece ter apoio implícito para géneros (masculino, feminino, neutro), ao passo que numspell
apenas o tem para algumas línguas explícitas.
A língua latina é suportada, numspell
mas 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
tocloft
embalagem 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 \weird
que 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
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}