Page 1 sur 1

Asymptote et etoolbox

MessagePosté: Lundi 06 Novembre 2017, 03:06
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

Re: Asymptote et etoolbox

MessagePosté: Lundi 06 Novembre 2017, 23:09
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

Re: Asymptote et etoolbox

MessagePosté: Mercredi 08 Novembre 2017, 14:04
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.