Une commande pour écrire les siècles

Pendant que l’on y est on parlera des rois

Fleuron

En typographie française ont écrit les siècles en chiffres romains petites capitales suivi de er pour le premier et de e pour tous les autres.

Le but de ma commande est d’écrire \siecle{19} et d’obtenir XIXe siècle et évidemment \siecle{1} pour avoir Ier siècle

Il va donc falloir mettre une condition dans la commande, un truc du genre si 1 alors écrire er sinon e et transformer les chiffres arabes en chiffres romains.

La commande pour définir une commande c'est \define. Le nom de notre commande c'est \siecle et elle a 1 seul argument la valeur du siècle. Le nombre d’arguments utilisés dans la commande s’écrit entre [] après le \define.

\define[1]\siecle{ }

La commande pour transformer un chiffre arabe en chiffre romain c'est \romannumeral

\romannumeral 19

donne xix.

La commande pour les transformer en petites capitales c'est \cap

\cap\romannumeral 19

donne XIX.

La commande pour mettre en exposant c'est \high{ }

\cap\romannumeral 19\high{e}

donne XIXe

C'est pas ce que l'on veut il faut contraindre \cap

{\cap\romannumeral 19}\high{e}

donne XIXe

C'est toujours pas exactement ce que l'on veut le e est trop gros et il crée un espace au-dessus de la ligne : il faut qu'il rentre dans le rang.

{\cap\romannumeral 19}{\tfx\high{e}}

donne XIXe

Il ne reste plus qu'a ajouter siècle mais il faut faire attention si on met une espace normale, si ton siècle ce trouve en fin de ligne il peut être coupé en deux, avec le chiffre en fin de ligne et le siècle repoussé au début de la ligne suivante, ce qui n'est pas très élégant. Pour éviter cela on va mettre une espace insécable qui se note ~.

{\cap\romannumeral 19}{\tfx\high{e}}~siècle

La boucle de test ce fait avec

\ifnum
\else
\fi

L’argument se note avec un # suivit d’un numéro qui va de 1 à n en fonction du nombre d’arguments utilisés. Voila il n'y a plus qu'à finaliser notre commande ce qui donne :

\define[1]\siecle{
\ifnum #1=1 {\cap\romannumeral #1}{\tfx\high{er}}~siècle
\else {\cap\romannumeral #1}{\tfx\high{e}}~siècle
\fi }

Et les rois ?

Et bien en typographie française le numéro du roi et aussi en chiffres romains mais en grandes capitales !

Je me suis donc crée une commande à deux entrée, une pour le prénom du roi, l'autre pour son numéro.

\define[2]\roi{\Word#1~\WORD\romannumeral #2}

J'ai ajouté le ~ pour éviter la coupure entre le nom et le numéro et \Word au nom du roi comme ça même si j'oublie de mettre une majuscule, il sera bien écrit.

\roi{Louis}{14} et \roi{louis}{14}

donneront

Louis XIV