Je suis en train d'écrire une classe qui étend la classe article.

Je souhaite que la langue par défaut des documents soit le français, mais qu'il soit possible de passer une option à l'initialisation de la classe pour que la langue devienne l'anglais (par exemple).

J'ai donc écrit le début de code suivant :

\NeedsTeXFormat{LaTeX2e}[1996/12/01]
\newcommand{\classname}{xxx}

\ProvidesClass{\classname}[xxxxxx]
\providecommand{\baseclass}{article}
\RequirePackage{etoolbox}
\RequirePackage{xparse}

\newbool{english}
\DeclareOption{english}{\booltrue{english}}

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\baseclass}}

\ifbool{english}{% Required to change language for document elements
    \immediate\typeout{English mode selected}
    \PassOptionsToClass{english}{\baseclass}
  }{
    \immediate\typeout{No language given}
    \PassOptionsToClass{french}{\baseclass}
  }

\ProcessOptions*

\LoadClassWithOptions{\baseclass}

\RequirePackage{lmodern}
\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}

\RequirePackage{babel}

\endinput

Un exemple de document à compiler pourrait être :

\documentclass{xxx}

\usepackage{csquotes}

\title{Ceci est un test}
\author{A. Nonymous}

\begin{document}

\maketitle

\section{Bonjour}

Ceci est un test de section avec des guillemets pour voir si tout compile
bien avec les langues \enquote{Test dans les guillemets}

\end{document}

Le problème est qu'actuellement, si je passe english en option de classe dans l'ECM, ça marche, la date est en anglais et les guillemets aussi. Par contre, si je ne mets pas d'option (comme dans l'ECM), la langue reconnue par babel est nil, ce qui me fait penser que l'option que je passe n'est en fait pas passée.

J'ai (à mon sens) besoin d'avoir le drapeau booléen english, qui me permettra de changer facilement des légendes où des titres dans ma classes (dans les cas qui ne sont pas couverts par babel).

Comment puis-je faire pour passer correctement ces options à ma sous-classe ?

Posée 17 Nov '23, 14:20

olirwin's gravatar image

olirwin
433
Taux d'acceptation : 100%

Soyez le premier à répondre à cette question !
(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.