Le code ci-après bloque sur le input, avec une erreur

Ouvrir dans l'éditeur Overleaf
! Incomplete \iffalse; all text was ignored after line 23.

En lisant pas mal de documentation sur le sujet (je ne connais pas grand chose en programmation TeX), je crois comprendre que le problème est un problème d'expansion : il faudrait que la macro à l'intérieur de input soit exécutée avant le input et ce n'est pas le mode de fonctionnement naturel de TeX.

J'ai essayé des \expandafter, du \edef et plusieurs autres choses, mais sans succès.

Quelqu'un a-t-il une idée ?

Ouvrir dans l'éditeur Overleaf
%ECM
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{lmodern}
\usepackage{ifthen}
\begin{document}
\newcounter{exo}
%on fait un numéro d'exercice sur deux chiffres
\setcounter{exo}{2}
\def\numeroex {\ifthenelse{\value{exo}<10}{0\theexo}{\theexo}}
%on tente de réutiliser le numéro de l'exercice dans une autre macro
%il y a un fichier exo02.tex dans le répertoire de travail
\input{exo\numeroex} %:( ça veut pas
\end{document}

Posée 01 Sep '19, 16:14

izb's gravatar image

izb
5325
Taux d'acceptation : 0%

Modifiée 01 Sep '19, 23:32

Pathe's gravatar image

Pathe ♦♦
7.5k42204251


Une possibilité sans \ifthenelse :

Ouvrir dans l'éditeur Overleaf
%ECM
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{lmodern}
\usepackage{ifthen}
\begin{document}
\newcounter{exo}
%on fait un numéro d'exercice sur deux chiffres
\setcounter{exo}{2}
%\def\numeroex{\ifthenelse{\value{exo}<10}{0\theexo}{\theexo}}
\def\numeroex{\ifnum\value{exo}<10 0\fi\arabic{exo}}
%on tente de réutiliser le numéro de l'exercice dans une autre macro
%il y a un fichier exo02.tex dans le répertoire de travail
\input{exo\numeroex} %:) ça veut

\numeroex

\end{document}
Lien permanent

Publiée 01 Sep '19, 17:30

samcarter's gravatar image

samcarter
8.4k2817
Taux d'acceptation : 56%

Modifiée 01 Sep '19, 17:40

Merci beaucoup samcarter, cela fonctionne... et sans besoin de \expandafter. Le problème est bien contourné puisqu'il n'y a plus de « sinon ». Il n'y a également pas besoin de l'extension ifthen.

(01 Sep '19, 20:37) izb izb's gravatar image
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.