Manipulation de chaines de caractères

Bonjour,

J'ai des fichiers qui s'appellent "Planche 0.tex", "Planche 1.tex", .... je cherche à extraire le "0", le "1" depuis le contenu de \jobname . Est-ce possible sous LaTeX (pas lua) ?

Merci,
Vincent

Réponses

  • Bonjour, on peut faire ça avec le module l3regex de expl3 :
    \documentclass{article}
    \usepackage{xparse}
    
    \ExplSyntaxOn
    \regex_const:Nn \c_vince_numplanche_regex { \A \cO(\"[^\"]*) \ (\d+) \cO\" \Z }
    
    \NewDocumentCommand \vinceStockeNumPlanche { m }
      {
        \tl_set:No #1 { \jobname }
        \regex_replace_once:NnNF \c_vince_numplanche_regex { \2 } #1
          { \errmessage{ Impossible~de~trouver~le~numero~de~planche } }
      }
    \ExplSyntaxOff
    
    \begin{document}
    
    \vinceStockeNumPlanche{\numPlanche}%
    Le numéro de planche est~\numPlanche.
    
    \end{document}
    
    Ça marche même avec un nom de fichier tel que 'essai très vilain 12.tex'.108688
  • Super ! C'est beau et ça fonctionne très bien !

    Merci et bonne soirée,

    Vincent
  • Ravi de l'entendre. Avec la version à venir du format LaTeX, le \usepackage{xparse} ne sera plus nécessaire dans ce cas (il ne sera nécessaire que pour des choses jugées obsolètes, afin de préserver la compatibilité). On peut déjà tester ça en compilant par exemple avec pdflatex-dev sur TeX Live 2020.
Connectez-vous ou Inscrivez-vous pour répondre.