2
1

J'en suis au colophon : je désire composer « ... a été imprimé en mars 2016. »

Mais comme l'impression risque de se dérouler le mois prochain, je recherche les commandes ad hoc en tapant la commande texdoc latex2e.

J'y découvre en page 68 les commandes \month et \year que jamais je n'ai utilisées jusqu'alors : je ne connaissais que leur consœur \today.

Je les place dans mon document :

Ouvrir dans l'éditeur
\documentclass[12pt, a4paper, french]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[light, largesmallcaps, oldstyle]{kpfonts}
\usepackage{babel}
\begin{document}
Colophon\\[30pt]
Cet exemplaire\\a été composé à l'aide de logiciels libres,\\
et notamment de l'éditeur de texte \texttt{vim},\\
du système de composition \LaTeX{}\\et des polices du projet Johannes Kepler\\
de Christophe Caignaert.\\[10pt]
Il a été imprimé en \month \year.
\end{document}

Je compile avec latex, visualise avec xdvi... et constate que le mois et l'année n'apparaissent pas ! Pourquoi ?

Posée 17 Mar '16, 13:44

Pathe's gravatar image

Pathe ♦♦
7.4k29197245
Taux d'acceptation : 55%

Modifiée 15 Avr '16, 15:47


Les commandes \day, \month et \year sont des primitives de TeX (des paramètres entiers).

Pour afficher la valeur de \month et \year il faut le préfixe \the ou \number.

Exemple : \the\month--\the\year.

Les classes standard de LaTeX (article, report et book) définirent la commande \today qui affiche la date de compilation, par :

Ouvrir dans l'éditeur
\def\today{\ifcase\month\or
  January\or February\or March\or April\or May\or June\or
  July\or August\or September\or October\or November\or December\fi
  \space\number\day, \number\year}

On peut utiliser cet idée pour définir une commande qui affiche le mois en lettres ou une commande qui affiche le mois et l'année :

Ouvrir dans l'éditeur
\documentclass{article}
\begin{document}
\def\monthname{\ifcase\month\or
  January\or February\or March\or April\or May\or June\or
  July\or August\or September\or October\or November\or December\fi}

\def\monthyear{\ifcase\month\or
  January\or February\or March\or April\or May\or June\or
  July\or August\or September\or October\or November\or December\fi
  \space\number\year}

\monthname

\monthyear
\end{document}

Pour texnique.fr :

Ouvrir dans l'éditeur
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[frenchb]{babel}
\begin{document}
\def\monthname{\ifcase\month\or
  janvier\or février\or mars\or avril\or mai\or juin\or
  juillet\or août\or septembre\or octobre\or novembre\or décembre\fi}

\def\monthyear{\ifcase\month\or
  janvier\or février\or mars\or avril\or mai\or juin\or
  juillet\or août\or septembre\or octobre\or novembre\or décembre\fi
  \space\number\year}

\monthname

\monthyear
\end{document}
Lien permanent

Publiée 17 Mar '16, 18:53

touhami's gravatar image

touhami
9.7k410
Taux d'acceptation : 51%

Modifiée 17 Mar '16, 22:15

Pathe's gravatar image

Pathe ♦♦
7.4k29197245

@touhami Attention ! Ce commentaire était une réponse plutôt qu'un commentaire et a été converti comme telle.

(17 Mar '16, 21:09) Pathe ♦♦ Pathe's gravatar image

Je constate que le mois apparaît en chiffres. Y a-t-il un moyen de le faire apparaître en lettres ?

(17 Mar '16, 21:11) Pathe ♦♦ Pathe's gravatar image
2

@Pathe: datetime définit \monthname et collabore avec babel si chargé après. Voir démo dans ma réponse.

(17 Mar '16, 23:10) Bernard Bernard's gravatar image

Voici, avec datetime2 et son module datetime2-french, qui a des commandes \DTMfrenchmonthname et \DTMfrenchmonthname bien pratiques. Je définis un nouveau style d'affichage de la date et des commandes \printdate et printDate (mois avec majuscule initiale) :

Ouvrir dans l'éditeur
\documentclass[12pt, a4paper, french]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{xspace}
\usepackage[light, largesmallcaps, oldstyle]{kpfonts}
\usepackage{babel}

\usepackage{datetime2} 
\DTMnewdatestyle{print}{%
\renewcommand{\DTMdisplaydate}[4]{\DTMfrenchmonthname{##2}~##1\xspace}%
\renewcommand{\DTMDisplaydate}[4]{\DTMfrenchMonthname{##2}~##1\xspace}%
}%
\newcommand\printdate{\DTMsetdatestyle{print}\today}
\newcommand\printDate{\DTMsetdatestyle{print}\Today}

\begin{document}

Colophon\\[30pt]
Cet exemplaire\\a été composé à l'aide de logiciels libres,\\
et notamment de l'éditeur de texte \texttt{vim},\\
du système de composition \LaTeX{}\\et des polices du projet Johannes Kepler\\
de Christophe Caignaert.\\[10pt]
Il a été imprimé en \printdate. \end{document}

alt text

Lien permanent

Publiée 17 Mar '16, 14:46

Bernard's gravatar image

Bernard
4.6k15
Taux d'acceptation : 35%

Modifiée 18 Mar '16, 15:38

Votre solution fonctionne, mais fait appel à une extension supplémentaire.

Mais quid des commandes \month et \year, qui figurent dans la doc de LaTeX ? Pourquoi ne fonctionnent-elles pas alors que la commande \today fonctionne ?

(17 Mar '16, 14:58) Pathe ♦♦ Pathe's gravatar image
2

L'affichage de l'année ou du mois se fait avec \the\year ou \the\month. Pour l'affichage du mois en tant que nom, j'ai préféré utiliser une extension qui le permet, plutôt que de réinventer la roue.

(17 Mar '16, 23:33) Bernard Bernard's gravatar image

Je comprends votre point de vue.

Mais je pense à l'internaute qui tombera sur le présent fil car il se pose la question qui était la mienne ce matin. Il y trouvera une solution rapide (la vôtre) et une explication qui détaille un peu plus l'invention de la roue, à savoir celle de @touhami. Et je pense qu'il se satisfera de cette variété de réponses.

Par ailleurs, lire les deux explications permet au néophyte d'entrevoir le fonctionnement de l'extension datetime, qui doit employer moult \the\month, et de babel, qui doit avoir des registres avec le nom des mois.

(18 Mar '16, 01:52) Pathe ♦♦ Pathe's gravatar image

Entièrement d'accord. D'ailleurs, je ne comprends pas tout du fonctionnement de datetime. Initialement, je pensais définir un nouveau format de date pour \today, puisque l'extension le permet. C'était conceptuellement le plus simple. Mais mes quelques tentatives n'ont pas fonctionné…

(18 Mar '16, 02:30) Bernard Bernard's gravatar image
1

Remarque : datetime est obsolète et remplacé par datetime2.

(18 Mar '16, 10:10) touhami touhami's gravatar image

@Touhami : je n'avais jamais regardé. Je viens donc d'adapter, avec un nouveau style de date. Merci de m'avoir signalé l'obsolescence du programme.

(18 Mar '16, 15:39) Bernard Bernard's gravatar image
Affichage de 5 parmi 6 Afficher 1 commentaire(s) en plus
Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.