Soy nuevo en LaTeX. Me gustaría crear un estilo de numeración de secciones usando una lista personalizada de cadenas de caracteres (primo, secundo, tertio…). Tengo entendido que debería hacer algo como esto:
\renewcommand\thesection{\fnsymbol{section}}
Sólo que no con, \fnsymbol
por supuesto, sino con otro comando inspirado en él, generando mi lista personalizada en lugar de *, †, ‡… El único problema es que no tengo idea de cómo hacerlo. Ni siquiera sé dónde encontrar el \fnsymbol
código fuente del comando. ¿Podría alguien ayudarme con esto, por favor?
Respuesta1
Para escribir números ordinales parece haberdos paquetesadecuado para eso:
Tienen una interfaz ligeramente diferente en la que numspell
solo funciona con números reales listos para usar y fmtcount
también tiene una interfaz para contadores LaTeX.
El fmtcount
paquete parece tener soporte implícito para géneros (masculino, femenino, neutral), mientras que numspell
solo lo tiene para algunos lenguajes explícitos.
El idioma latino es apoyado por numspell
pero no por fmtcount
. (Su ejemplo parece estar en latín).
Aquí hay un comienzo para el italiano. (¿Suficientemente cerca?)
Tenga en cuenta que dado que se utiliza el mismo esquema de numeración para la tabla de contenidos y para las referencias
- el espaciado se ha ajustado con el
tocloft
paquete y - los casos de referencias podrían no ser correctos.
Si realmente desea crear su propia tabla de búsqueda, querrá tener un comando de nivel superior (para contadores) y un comando de bajo nivel que haga el trabajo real.
Para ello, puede utilizar la \NewNumberingScheme{<scheme>}{<look up>}
macro que configura
\<scheme>
y\@<scheme>
,
similar en cuanto a cómo funcionan todos los demás ( arabic
, alph
, roman
, fnsymbol
) donde \@<scheme>
toma un argumento #1
(el valor del contador) que debe usarse en <look up>
.
Agregué un pequeño ejemplo \weird
que luego puedes usar como lo harías \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}
Producción
Respuesta2
Defina su secuencia de cadenas.
\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}