lstlisting et macros

Bonjour,

J'ai avec le package lstlisting définit un environnement xcas pour taper du code XCas
\begin{center}
	\begin{tabular}{|c|}
		\hline

		\begin{minipage}{3cm}
		{\begin{xcas}
int(2x)
		\end{xcas}}
		\end{minipage} \\
	
		\hline

		\textcolor{blue}{\emph{$x^2$}} \\

		\hline
	\end{tabular}
\end{center}

Jusque là tout va bien... j'ai voulu ensuite passer à une macro (en passant à terme l'entrée et la sortie en argument)
\newcommand{\XCas}{
\begin{center}
	\begin{tabular}{|c|}
		\hline

		\begin{minipage}{3cm}
		{\begin{xcas}
int(2x)
		\end{xcas}}
		\end{minipage} \\
	
		\hline

		\textcolor{blue}{\emph{$x^2$}} \\

		\hline
	\end{tabular}
\end{center}
}

\XCas

Et là il me dit : ! Argument of \lst@next has an extra }. savez-vous pourquoi et comment y remédier ?

Merci d'avance,
Vincent

Réponses

  • Bonjour,

    Il est bien connu que le verbatim ne peut être utilisé dans de vrais arguments de macros, à cause des catcodes qui dans ce cas sont assignés aux caractères du flux d'entrée trop tôt—dès que ta commande est développée et attrape ses arguments.

    Pour pouvoir répondre, il faut savoir très précisément comment va être utilisé le truc. Et pour ça, rien de mieux qu'un exemple complet minimal.

    En particulier, il est important de savoir si le code verbatim (ici, « int(2x) ») sera toujours le même pour la macro que tu veux écrire ou s'il doit être fourni en argument (ou être le contenu d'un environnement, c'est souvent plus facile sous forme d'environnement avec verbatim).
Connectez-vous ou Inscrivez-vous pour répondre.