Page 1 sur 1

Les conditions

MessagePosté: Jeudi 15 Mai 2008, 15:05
par Coyote
Bonjour à tous,

toujours à la découverte de ce magnifique langage ... j'expose mon problème :

j'ai deux macros : \vsujet{#1} et \vcorr{#1}, qui me permettent de rentrer le sujet de l'exo puis la correction de celui-ci !
Une fois ceci fait, un petit \input combiné avec des booléens, dans un deuxième fichier, me donne un joli sujet suivi d'un joli corrigé.
Le soucis, est : lorsque je mets du code asymptote dans l'une ou dans l'autre de mes macros, j'ai une erreur ! Il ne vois visiblement pas la fin de l'environnement asy !

J'ai suivi quelques pistes (guide d'intégration d'asymptote et Latex) mais je vois pas ... ! Si quelqu'un peu m'aider ?
Merci d'avance.

Re: [Asymptote] les conditions !

MessagePosté: Jeudi 15 Mai 2008, 15:42
par Ph. Ivaldi
Coyote a écrit:J'ai suivi quelques pistes (guide d'intégration d'asymptote et Latex) mais je vois pas...

As-tu testé les deux propositions de la section 2.4. Insertion conditionnelle page 5 ?
Si oui, il faudrait donner un ECM (vraiment C et vraiment M :) )

Re: [Asymptote] les conditions !

MessagePosté: Jeudi 15 Mai 2008, 15:56
par Coyote
Oui, oui pour les tests des deux exemples mais sans succés ... notamment un plantage au niveau de l'instruction : \comment .... \endcomment

Je vais essayer de faire court (c'est pas mon fort ... :oops: ).

Voilà le doc principal (minimal :D ):
Code: Tout sélectionner
\documentclass[a4paper,10pt]{article}
\usepackage{bipcours}
\begin{document} \inputdev{tgest-bb-01} \end{document}


puis le doc exo :

Code: Tout sélectionner
\vsujet{blablal code asymptote}

\vcorr{ reblabla}


Les définitons de la macro \inputdev :

Code: Tout sélectionner
\newcommand*{\inputdev}[1]{\setcounter{exo}{0}
\ifthenelse{\not\boolean{livre}}
   {\ifthenelse{\equal{\pageref{exercice}}{1}}
      {\sujet \input{#1}
      \newpage \setcounter{numb}{0} \setcounter{page}{1} \setcounter{qcm}{0} \setcounter{section}{0} \setcounter{exo}{0}
      \sujet \input{#1}
      \newpage \setcounter{numb}{0} \setcounter{page}{1} \setcounter{qcm}{0} \setcounter{section}{0} \setcounter{exo}{0}
      \corr  \small \input{#1}
      }
       {\ifthenelse{\isodd{\pageref{exercice}}}%{impair}{pair}
         {\sujet \input{#1}
         \newpage \ev \vfill \begin{center} {\Huge Saut de page déstinée à faire commencer la correction sur une page paire} \end{center} \vfill
          \newpage \setcounter{numb}{0} \setcounter{page}{1} \setcounter{qcm}{0} \setcounter{section}{0} \setcounter{exo}{0}
          \corr  \small \input{#1}
         }
         {\sujet \input{#1}
          \newpage \setcounter{numb}{0} \setcounter{page}{1} \setcounter{qcm}{0} \setcounter{section}{0} \setcounter{exo}{0}
          \corr  \small \input{#1}
         }
      }
   }
   {\sujet \input{#1}
   \newpage \calend \setcounter{numb}{0} \setcounter{page}{1} \setcounter{qcm}{0} \setcounter{section}{0} \setcounter{exo}{0}
   \begin{center} \etad{Résumé des adresses des exercices}{Dossier : #1} \end{center}
   \bcol   \input{#1}   \ecol
   }
}


et de sujet (la même pour correction) :
Code: Tout sélectionner
\newcommand{\vsujet}[1]{\ifthenelse{\boolean{sujet}}{#1}{}}
\newcommand{\vcorr}[1]{\ifthenelse{\boolean{corr}}{#1}{}}


En espérant que ce soit soit minimal .... :roll: .

Re: [Asymptote] les conditions !

MessagePosté: Jeudi 15 Mai 2008, 21:11
par Ph. Ivaldi
Coyote a écrit:En espérant que ce soit soit minimal .... :roll: .

Pas vraiment...
Surtout ce n'est pas compilable :|

Voici ce que je te propose de compilable et minimal qui devrait, si j'ai bien compris le problème, te permettre de faire ce que tu veux:

maitre.tex contient:
Code: Tout sélectionner
\documentclass[a4paper,10pt]{article}
\usepackage{asymptote}
\usepackage{verbatim}

\newif\ifsujet
%\sujettrue
\newenvironment{sujet}{}{}
\ifsujet\relax\else\renewenvironment{sujet}{\comment}{\endcomment}\fi

\begin{document}
\input{exo.tex}
\end{document}


exo.tex contient:
Code: Tout sélectionner
\section{le sujet}
\begin{sujet}
  Balabla
  \begin{center}
\begin{asy}
size(2cm,2cm);
draw(unitcircle);
\end{asy}
  \end{center}
  Blabla
\end{sujet}


En compilant ((pdf)latex->asy->(pdf)latex) tel quel maitre.tex tu n'obtiens que le titre de la section.
En décommentant %\sujettrue tu obtiendras la section et le contenu de l'environnement sujet (avec la figure).
Attention à ne pas indenter \begin{asy} et \end{asy}

Re: [Asymptote] Les conditions !

MessagePosté: Vendredi 16 Mai 2008, 08:20
par Coyote
Bonjour,

c'est exactement le problème et cela résout le soucis si sujet est un environnement. Or \vsujet est une commande, donc le code rentré dans l'exo est du type :

Code: Tout sélectionner
\vsujet{

blabla

}


J'ai essayé de transposer ta solution sur ma commande mais c'est sans succès, pour le coup je te donne la définition de \vsujet (une booléenne sujet a été définie auparavant) :

Code: Tout sélectionner
\newcommand{\vsujet}[1]{\ifthenelse{\boolean{sujet}}{#1}{}}


Merci en tout cas.

Re: [Asymptote] Les conditions !

MessagePosté: Vendredi 16 Mai 2008, 10:11
par Ph. Ivaldi
Coyote a écrit:J'ai essayé de transposer ta solution sur ma commande mais c'est sans succès.

L'environnement asy dérive de l'environnement verbatim (plus exactement de comment); il hérite donc de ses limitations et dans la documentation de verbatim il est dit:
« However, there are still a number of restrictions:
...
2. You cannot use the verbatim environment inside user defined commands;
... »


Ceci dit, je pense qu'un environnement sujet est plus dans l'esprit LaTeX qu'une commande sujet.

Re: [Asymptote] Les conditions !

MessagePosté: Vendredi 16 Mai 2008, 17:23
par Coyote
Argh !!! Donc pas de commande possible ... et bien soit, les environnements seront de la partie !!

Merci en tout cas pour les réponses et ton site sur asymptote ...

une mine d'exemples et d'informations !

Le bonjour à la belle cité médiévale !

Cordialement.