Pour éviter de déclarer toute une série de données imbriquées comme par exemple (sans aucun intérêt, mais simple, donc proposé pour cas d'école):
j'ai essayé de créer une macro de macro:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 \def\NesteRiv{Neste} \def\NesteRivLg{\NesteRiv: 73,2~km} etc. \def\HersRiv{Hers-mort} \def\HersRivLg{\HersRiv: 90~km} etc.
que j'utiliserais comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 \newcommand{\macmdRiviere}[3]{% \def{\#1Riv}{#1 #2} \def{\#1RivLg}{\#1Riv: #3~km} }
Mais latex n'a pas l'air de le faire comme j'ai cru qu'il le ferait quand je l'ai écrit, et je ne vois pas comment faire. Le code génère des erreurs. Voici ce que dit le .log:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 \macmdRiviere{Neste}{Neste}{73,2} \macmdRiviere{Hers}{Hers-mort}{90}
Si je modifie la definition de \macmdRiviere comme ceci:! Missing control sequence inserted.
<inserted text>
\inaccessible
l.1 \macmdRiviere{Neste}{Neste}{73,2}
Please don't say `\def cs{...}', say `\def\cs{...}'.
I've inserted an inaccessible control sequence so that your
definition will be completed without mixing me up too badly.
You can recover graciously from this error, if you're
careful; see exercise 27.2 in The TeXbook.
Là encore, des erreurs, mais différentes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 \newcommand{\macmdRiviere}[3]{% \newcommand{\#1Riv}{#1 #2} \newcommand{\#1RivLg}{\#1Riv: #3~km} }
Que faire pour que ça fonctionne? Est-il possible de le faire?! LaTeX Error: Command \# already defined.
Or name \end... illegal, see p.192 of the manual.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.1 \macmdRiviere{Neste}{Neste}{73,2}
Your command was ignored.
Type I <command> <return> to replace it with another command,
or <return> to continue without it.
! Missing number, treated as zero.
<to be read again>
R
l.1 \macmdRiviere{Neste}{Neste}{73,2}
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)
! You already have nine parameters.
\reserved@a ...\def \expandafter \#\reserved@b #10
R{
l.1 \macmdRiviere{Neste}{Neste}{73,2}
I'm going to ignore the # sign you just used.
Merci d'avance.
Partager