Asymptote et etoolbox

Tout ce qui concerne le langage Asymptote. Ce langage est supporté sur le forum via les balises asy.

Modérateur : gdm_asy

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
soleil1
Utilisateur débutant
Utilisateur débutant
Messages : 1
Inscription : samedi 04 octobre 2014, 06:08

Asymptote et etoolbox

Message par soleil1 »

Bonjour je voudrais insérer un graphique à l'intérieur d'un ifbool.
Lorsque je compile ce code j'ai un message d'erreur par contre lorsque j' enlève la partie asymptote du ifbool il se compile.

Voila mon code :

Code : Tout sélectionner

\documentclass[a4paper,11pt]{article}%
\usepackage{multicol}
\usepackage{enumerate}
\usepackage{multirow}
\usepackage{fancybox}
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{fancyhdr} % Mise en page
\usepackage{vmargin}% mise en page
\usepackage{pst-eucl}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{tabularx}

\usepackage{asymptote}%


\usepackage{numprint}

\usepackage[utf8x]{inputenc} %latin1 est possible
\usepackage{etoolbox}
\usepackage[T1]{fontenc}
 \begin{document}%

\pagestyle{fancy}%

 \newbool{sujet} %
\booltrue{sujet}%
%\boolfalse{sujet}%
 \newbool{correction} %
%\boolfalse{correction}%
\booltrue{correction}%

\ifbool{correction}{
\begin{asy}
import graph; 
unitsize(1mm ,0.025mm);
real ymin=-100,ymax=750;
xaxis(Label("$x$",position=EndPoint,align=NE),
xmin=-1,xmax=55,
Ticks(scale(.7)
*
Label(),NoZero,
begin=true,beginlabel=true,
end=true,endlabel=true,
Step=10,step=5,Size=1mm,size=.5mm),
Arrow);
yaxis(ymin=-1,ymax=750,
Ticks(NoZero,begin=true,beginlabel=true,
end=true,endlabel=true,
 Step=400,Size=1mm),
Arrow);
 real f(real x) {return 1.6*x^2+16*x+64;}
 path p=graph(f,0,50);
draw(p,red);
 ylimits(ymin,ymax,Crop); // on coupe ce qui dépasse
\end{asy}}{}
\end{document}%

Comment faire pour qu'il n'y ait plus de message d'erreur ?
Merci beaucoup par avance
Dernière modification par guiguiche le lundi 06 novembre 2017, 21:23, modifié 1 fois.
Raison : Balises code

rebouxo
Modérateur global
Modérateur global
Messages : 6962
Inscription : mercredi 15 février 2006, 13:18
Localisation : le havre

Re: Asymptote et etoolbox

Message par rebouxo »

Je pense que cela ne fonctionne pas car le texte entre les balises asy est envoyé en verbatim dans un fichier. Or le verbatim ne peut pas être dans une commande.
Maintenant si le but est de faire des corrections, je te suggère l'extension exercice qui fait cela très bien.

Olivier
A line is a point that went for a walk. Paul Klee.
Par solidarité, pas de MP.

OG
Modérateur
Modérateur
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: Asymptote et etoolbox

Message par OG »

Bonjour

L'extension asymptote.sty est basée sur comments.sty et a donc certains limitations, faire une macro qui ouvre un environnement asy, le test booléen, etc. ne donnent que des erreurs.

Il y a déjà quelques années (presque 10 ans) j'avais traduit un document en ajoutant quelques bricoles comme l'insertion conditionnelle.
Voici les deux solutions et une 3ème qui reprend la 2ème avec etoolbox. L'insertion est conditionnelle/globale.

Code : Tout sélectionner

\documentclass{article}
\usepackage{asymptote,verbatim}
\usepackage{etoolbox}

\begin{document}

Test

\newif\ifsubject
\subjecttrue
%\subjectfalse
\ifsubject
\begin{asy}
size(2cm,2cm);
pair A, B, C;
A=(0,0); B=(1,0); C=(0,1);
draw(A--B--C--cycle);
draw (midpoint(A--B) -- C);
draw (B+0.5*(C-B) -- A);
draw (interp(A,C,0.5) -- B);
\end{asy}
\fi


%%% Booléens %%%%
\newif\ifsujeta
\sujetatrue
\newenvironment{vsujet}{}{}
\ifsujeta\relax\else\renewenvironment{vsujet}{\comment}{\endcomment}\fi
\newenvironment{vcorr}{}{}
\ifsujeta\renewenvironment{vcorr}{\comment}{\endcomment}\fi



\begin{vsujet}
Construire....
\end{vsujet}

\begin{vcorr}
\begin{asy}
size(2cm,2cm);
pair A, B, C;
A=(0,0); B=(1,0); C=(0,1);
draw(A--B--C--cycle);
draw (midpoint(A--B) -- C);
draw (B+0.5*(C-B) -- A);
draw (interp(A,C,0.5) -- B);
\end{asy}
\end{vcorr}

\newbool{test}
\boolfalse{test}
\newenvironment{vsujet1}{}{}
\ifbool{test}{\relax}{\renewenvironment{vsujet1}{\comment}{\endcomment}}
\newenvironment{vcorr1}{}{}
\ifbool{test}{\renewenvironment{vcorr1}{\comment}{\endcomment}}{}



\begin{vsujet1}
Construire....
\end{vsujet1}

\begin{vcorr1}
\begin{asy}
size(2cm,2cm);
pair A, B, C;
A=(0,0); B=(1,0); C=(0,1);
draw(A--B--C--cycle);
draw (midpoint(A--B) -- C);
draw (B+0.5*(C-B) -- A);
draw (interp(A,C,0.5) -- B);
\end{asy}
\end{vcorr1}

\end{document}

Il faudrait aussi regarder du côté de asypictureb 
https://ctan.org/tex-archive/graphics/asypictureb
qui propose une alternative avec asymptote.sty

O.G.