% \copyleft Connan le Barbare (aka Guillaume Connan) \copyright % This work may be distributed and/or mofified under the conditions % or the LaTeX Project Public Licence, either v1.3 or (at your option) % any later version. The latest version is in % http://www.latex-project.org/lppl/ % This work consists of the files tablor.sty, tablor-xetex.sty, tablor.cfg, tablor.tex, % tablor.pdf and tablor.html \documentclass[11pt]{article} \usepackage{etex} \usepackage[height=250mm,width=183mm]{geometry} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage[french]{babel} \usepackage[upright]{kpfonts} \usepackage{bold-extra} \usepackage[scaled=0.85]{luximono} \usepackage[xcas]{tablor} \usepackage{listings,keystroke} \usepackage{graphicx,bclogo,amssymb,amsbsy,amsfonts,amstext,amscd,amsopn,amsxtra} % bclogo est téléchargeable ici : http://melusine.eu.org/syracuse/wiki/doku.php/mc/bclogo \usepackage{tocloft} %ajoute de l'espace entre le %numero de chapitre (chap) et le titre %dans la table des matieres \addtolength{\cftsecnumwidth}{2em} \addtolength{\cftsubsecnumwidth}{1em} % pour une TdM hyperactive... \usepackage[dvips,colorlinks=true,linkcolor=blue]{hyperref} % quelques gris \usepackage{color} \definecolor{0.9white}{rgb}{.9,.9,.9} \definecolor{0.8white}{rgb}{.8,.8,.8} \definecolor{0.2white}{rgb}{.2,.2,.2} \definecolor{0.4white}{rgb}{.4,.4,.4} \definecolor{0.6white}{rgb}{.6,.6,.6} \definecolor{0.1white}{rgb}{.1,.1,.1} \definecolor{bleu}{rgb}{0.4,0.2,1} \newrgbcolor{bleu}{0.4 0.2 1} \definecolor{orange}{rgb}{0.589999,0.269997,0.080004} \definecolor{rouge}{rgb}{1,0,0} \newrgbcolor{rouge}{1 0 0} % style des listings \newcommand\lat{\lstset{numbers=none,language=[LaTeX]{TeX},xleftmargin=10pt,% keywordstyle =\color{bleu}\bfseries,basicstyle=\ttfamily\color{0.1white},commentstyle=\normalfont\scriptsize\slshape,breaklines=true,backgroundcolor=\color{green!20},frame=trBL,framerule=1pt,framesep=4pt,rulesep=1pt,showstringspaces=false,stringstyle=\slshape,captionpos=b} } \newcommand\xcas{\lstset{numbers=none,language=XCAS,xleftmargin=10pt,% keywordstyle =\color{rouge!70!black}\bfseries,basicstyle=\ttfamily\color{0.1white},commentstyle=\normalfont\scriptsize\slshape,breaklines=true,backgroundcolor=\color{orange!20},frame=trBL,framerule=1pt,framesep=4pt,rulesep=1pt,showstringspaces=false,stringstyle=\slshape,captionpos=b} } % petits environnements bclogo \newenvironment{DANGER}[1]{% \begin{bclogo}[logo=\bctakecare,arrondi=0.1,couleur=0.9white]{#1}} {\end{bclogo}} \newenvironment{Idee}[1]{% \begin{bclogo}[logo=\bclampe,arrondi=0.1,couleur=0.9white]{#1}} {\end{bclogo}} % style des sections \usepackage{sectsty} \sectionfont{\LARGE \color{0.2white}} \subsectionfont{\color{0.4white}} \renewcommand\thesection{\Roman{section} -} \renewcommand\thesubsection{\alph{subsection}. } \subsubsectionfont{\color{0.6white}} \renewcommand\thesubsubsection{\roman{subsection}. } \graphicspath{{./figures/}} % titre \title{\texttt{tablor.sty} \\La machine à créer des tableaux de signes et de variations } \author{Guillaume \textsc{Connan} \\ \href{http://tehessin.tuxfamily.org/}{http://tehessin.tuxfamily.org/}\\ avec l'efficace participation de Jean-Michel \textsc{Boucart}\\ Forum d'aide ~:~\href{http://gconnan.free.fr/punbb/upload/index.php}{http://gconnan.free.fr/punbb/upload/index.php}} \date{9 mai 2010 - Version 4.07} %% % % Début du document % %% \begin{document} \setlength{\parindent}{0mm} \maketitle \vspace{1cm} \initablor \section{Ça sert à quoi~?} Il s'agit d'obtenir rapidement un tableau de signe ou un tableau de variation en entrant un minimum de commandes. \section{Nouveautés} \subsection{Changements depuis la version 3.00} \begin{figure}[!h] \begin{DANGER}{Attention~!} À partir de la version 4.03 de \texttt{tablor}, il est nécessaire d'avoir la nouvelle version de tableauVariation.mp (la 2.1 datant de décembre 2008) mais pour l'instant elle n'est pas présente sur CTAN~! Récupérez plutôt le fichier à l'adresse \href{http://download.tuxfamily.org/tehessinmath/les\_sources/tableauVariation.mp}{http://download.tuxfamily.org/tehessinmath/les\_sources/tableauVariation.mp}. Cela ne posera de problèmes que si vous utilisez l'environnement TVZ. \end{DANGER} \end{figure} La version 4.01 n'est malheureusement plus compatible avec les versions antérieures car une option supplémentaire a été ajoutée pour traiter les fonctions trigonométriques. Une possibilité a de plus été ajoutée pour réduire la taille des tableaux. Les tableaux de signes courts (TSc) ont un argument de plus pour traiter les valeurs interdites (version 4.01). Une extension pour une compilation via Xe\TeX{} a été créé~:~\verb+tablor-xetex.sty+ (version 4.01) ne fonctionnant que sous unix. Un environnement TVPC a été créé pour traiter les fonctions prolongeables par continuité (version 4.02). Une possibilité a été ajoutée pour donner un nom à une fonction nécessitant l'emploi d'une macro \LaTeX{} (version 4.02b). Les frontières des zones interdites sont assorties de doubles barres si nécessaire. (version 4.03) Un nouvel environnement TVIex est créé pour avoir les racines des valeurs intermédiaires sous forme exacte quand c'est possible.(version 4.04) Un bug dans tous les TVI est corrigé.(Version 4.04). Un bug dû à une mise à jour de XCAS (version 4.04-b compatible avec les précédentes). Des bugs dans TVapp et TVIapp corrigés (version 4.04-c... puis 4.04-d). Bug dans TVc (version 4.04-h) Nouvel environnement TVS pour des tableaux de variations de fonctions dont on ne connait qu'une liste d'images (version 4.05). Petites modifs dans le code pour s'adapter aux nouvelles versions de MetaPOST et pour contrer certains bugs dus à certaines configurations personnelles de xcas (4.05-b). Création de l'option windows : on peu maintenant déclarer l'utilisation de l'OS windows en option sans aller modifier le fichier tablor.cfg (version 4.06). Nouveau \verb+tablor.cfg+ : on peut régler l'epsilon de XCAS qui fixe le seuil du zéro des flottants. Il est réglé à $10^{-100}$ par défaut. Il faut une version récente de XCAS, postérieure au 20 novembre 2009. (version tablor : 4.06-c) Tableaux en couleurs ! Merci à \texttt{fp} du forum \href{http://forum.mathematex.net/latex-f6/tableau-de-variations-redige-en-bleu-t10826.html}{\texttt{mathematex}} (version tablor : 4.07) \xcas \begin{lstlisting}[caption={}] //reglage de epsilon : seuil du zero de giac epsilon:=1e-100; \end{lstlisting} \subsection{Professor.sty} \texttt{tablor.sty} a fait des petits... Grâce à une efficace collaboration avec Denis \textsc{LE FUR}, vous disposez à présent de toute une panoplie d'outils similaires pour tracer des courbes, des histogrammes, des arbres de probabilités, des graphes probabilistes, des lissages par moyennes mobiles et j'en passe et des meilleures... Allez découvrir ces trésors sur \href{http://mathsp.tuxfamily.org/spip.php?rubrique46}{http://mathsp.tuxfamily.org/spip.php?rubrique46}. \subsection{Plugin TeXmacs} Emmanuël Corcelle a écrit un plugin pour que les utilisateurs de TeXmacs puissent eux aussi profiter de \texttt{tablor} et \texttt{professor}. Pour cela visitez le site \href{http://corcelle.wordpress.com/}{http://corcelle.wordpress.com/} \section{Comment ça marche~?} \subsection{Principe général} On entre une instruction qu'on envoie via \LaTeX{} à \texttt{XCAS} qui effectue un certain nombre de calculs (résolution d'équations, calcul de limites). \texttt{XCAS} renvoie un résultat sous la forme d'un script \texttt{MetaPOST} qui est compilé. Un tableau est créé et ensuite inséré dans le document \texttt{tex}. \subsection{Rentrons dans les détails} En utilisant un environnement \texttt{tablor}, de nombreux fichiers sont créés dans le répertoire courant puis effacés par la commande \texttt{nettoyer} si vous le souhaitez~: \begin{itemize} \item des fichiers d'extension \texttt{.cxx}~:~il s'agit du fichier le plus important. C'est le programme \texttt{XCAS} qui «~fabrique~» le tableau. Vous pouvez l'utilisez tel quel dans une session \texttt{XCAS} ou \texttt{giac}. \item des fichiers d'extension \texttt{.giac} qui regroupent des instructions lues et exécutées par \texttt{giac}. Il est très court~: \xcas \begin{lstlisting} maple_mode(0); // au cas où certains travailleraient en mode maple, mupad ou ti read("config.cxx"); // pour configurer la 1ère colonne (signe de ou sign of etc.) read("XcasTV.cxx"); // giac charge le programme read("XCasTV.user"); // giac lit les paramètres rentrés dans le source tex et fabrique à la volée le source MetaPOST. \end{lstlisting} \item des fichiers d'extension \texttt{.user} qui sont créés par \LaTeX{} grâce à l'environnement \texttt{VerbatimOut} de l'extension \texttt{fancyvrb} : il s'agit en fait de la commande qui se trouve par exemple entre \verb+\begin{TV}+ et \verb+\end{TV}+. \end{itemize} \subsection{Code XCAS} Toutes les procédures suivent le même principe~: \begin{itemize} \item la plus grande partie s'occupe de créer les lignes du tableaux à l'aide de nombreux tests et boucles; \item ensuite, on regroupe ces lignes dans une variable \texttt{MetaLfc}; \item on exporte le tableau à l'aide des trois dernières lignes~: \xcas \begin{lstlisting} sortie:=fopen("XCasmpfc.mp"); // on crée un fichier XCasmpfc.mp fprint(sortie,Unquoted,MetaLfc); // on y met MetaLfc fclose(sortie); // on ferme XCasmpfc.mp \end{lstlisting} \lat \end{itemize} \begin{figure}[!h] \begin{Idee}{Autres collaborations XCAS/\LaTeX{}} On peut suivre ce même principe pour créer d'autres associations de vos outils préférés. Voir par exemple~: \href{http://gconnan.free.fr/?page=53}{http://gconnan.free.fr/?page=53} et \href{http://melusine.eu.org/syracuse/giac/}{http://melusine.eu.org/syracuse/giac/} \end{Idee} \end{figure} \section{De quoi a-t-on besoin~?} \begin{figure}[!h] \begin{Idee}{Conseils en lignes} N'hésitez pas à explorer la page suivante : \href{http://mathsp.tuxfamily.org/spip.php?article186}{http://mathsp.tuxfamily.org/spip.php?article186} surtout si vous êtes sur XP :-) De nombreux problèmes ont été réglés sur le forum~: \href{http://gconnan.free.fr/punbb/upload/index.php}{http://gconnan.free.fr/punbb/upload/index.php} \end{Idee} \end{figure} \begin{figure}[!h] \begin{Idee}{MikTeX et TeXLive} \texttt{tablor} est présent sur MikTeX et TeXLive. \texttt{tableauVariation.mp} est sur MikTeX mais la version n'est pas à jour (à la date du 7 février 2009). \end{Idee} \end{figure} \begin{itemize} \item Il faut avoir installé \texttt{XCAS}, logiciel multi-plateforme de calcul et de programmation~: \href{http://www-fourier.ujf-grenoble.fr/\%7Eparisse/giac\_fr.html}{http://www-fourier.ujf-grenoble.fr/\%7Eparisse/giac\_fr.html}~; \item il faut avoir le fichier de macros \texttt{MetaPOST} \texttt{tableauVariation.mp} de Frédéric Mazoit~: \href{http://download.tuxfamily.org/tehessinmath/les\_sources/tableauVariation.mp}{http://download.tuxfamily.org/tehessinmath/les\_sources/tableauVariation.mp}~; Pour ceux qui sont guère habitués à \texttt{MetaPOST}, cela ne pose aucun problème car les scripts et compilations \texttt{MetaPOST} se font automatiquement. Il suffit de créer dans son \texttt{texmf} personnel une arborescence du style~: \texttt{./texmfperso/metapost/tablor/} et d'y placer \texttt{tableauVariation.mp} puis un \texttt{rehash}. C'est exactement la même démarche que pour installer une nouvelle extension \LaTeX{}. \item il faut être en mode \texttt{shell-escape} pour autoriser les sorties de la compilation \texttt{tex}. Pour \texttt{emacs}, on rajoute en fin de fichier \verb+%%% LaTeX-command: "latex --shell-escape" ***+; pour les autres éditeurs, il faut modifier la commande de compilation. Sinon, on peut modifier le fichier \texttt{texmf.cnf} pour que le mode soit automatisé en modifiant la ligne suivante~:~\texttt{shell-escape t} mais ce n'est pas recommandé car il faut activer le shell-escape le moins possible et toujours sous contrôle~; \begin{figure}[!h] \begin{Idee}{shell-escape sur KILE} On peut créer une compilation en allant dans les menus de configuration, l'associer à un raccourci clavier et hop, quand on veut une compil rapide c'est facile. On va dans \texttt{configuration>kile>outils>nouvel outil} On l'appelle par exemple shellEscape et on le base sur LateX Ensuite en commande on met \texttt{latex} (ou \texttt{pdflatex}) et en option \verb+-shell-escape -interaction=nonstopmode '%source'+ et on clique sur OK. Ensuite on va dans \texttt{configuration>raccourci clavier > rechercher sh}. On tombe sur shellEscape. On clique sur personnaliser et on choisi un raccourci, par exemple la touche windows et s (S-s en langage emacs...) Et voilà : quand on veut compiler un document appelant tablor, on appuie sur windows+s. \end{Idee} \end{figure} \begin{figure}[!h] \begin{Idee}{shell-escape sur TeXnicCenter} Pour les utilisateurs de TeXnicCenter, observez cette \href{http://img221.imageshack.us/img221/27/capture20080114215233hu7.png}{explication} du paramétrage du \texttt{shell-escape}. On peut par exemple mettre~: \texttt{-enable-write18 --shell-escape --src -interaction=nonstopmode "\%Wm"}. Sur TeXmaker, c'est \texttt{latex -enable-write18 --shell-escape -interaction=nonstopmode \%.tex}. Pour faire comprendre à \texttt{Microsoft Windows XP} où trouver \texttt{giac}, vous pouvez modifier le \texttt{path} en suivant ces instructions~: Demarrer->Panneau de configuration->Système onglet Avancé->Variable d'environnement. Il faut cliquer sur la ligne PATH puis sur le bouton modifier et là il faut ajouter \begin{center} \verb+;C:\repertoire_d'installation_de_xcas+ \end{center} (Merci à Gaëtan et à Daniel). \end{Idee} \end{figure} \item il faut avoir à disposition les extensions \texttt{fancyvrb}, \texttt{filecontents}, \texttt{ifthen} et \texttt{ifpdf}; \item pour ceux qui compilent avec \texttt{pdf\LaTeX{}}, il n'y a aucun problème et rien à faire car \texttt{tablor} contient déjà ce qu'il faut pour s'adapter~: \verb+\ifpdf \DeclareGraphicsRule{*}{mps}{*}{} \fi+ \item il faut installer le fichier \texttt{tablor.sty} dans son \texttt{texmf} personnel. Pour ceux qui ont une version récente de \texttt{MiKTeX} ou \texttt{TeXLive}, \texttt{tablor} est déjà installé. Pour les utilisateurs de \texttt{Unix}, vous devez savoir comment faire... Par commodité, vous pouvez en profiter pour installer la version \texttt{Unix} de \emph{MiKTeX package manager}. J'ai fait un petit script pour vous y aider ici : \href{http://gconnan.free.fr/?page=52}{http://gconnan.free.fr/?page=52} \item il faut installer le fichier de configuration \texttt{tablor.cfg} dans le même répertoire de \texttt{tablor.sty} ce qui est fait automatiquement soit par décompression d'une archive \texttt{tablor.zip} soit par l'intermédiaire des distributions \texttt{MikTeX} et \texttt{TeXLive}. \end{itemize} \begin{figure}[!h] \begin{DANGER}{Conflit d'extensions} L'extension \verb+fancybox+ rentre en conflit avec \verb+fancyvrb+ qu'utilise \verb+tablor+ car elles définissent toutes deux différemment l'environnement \verb+VerbatimOut+. \end{DANGER} \end{figure} \begin{DANGER}{Commandes créées} Huit nouvelles commandes sont crées~:~\verb+\tv, \tvbis, \nettoyer, \initablor,+ \verb+ \dresse, \dressetoile, \executGiacmp+. Attention aux conflits si de tels noms existent quelque part dans vos fichiers personnels. \end{DANGER} \section{Comment l'utiliser~?} \begin{figure}[!h] \begin{Idee}{Faut-il savoir utiliser MetaPOST et XCAS~?} Non~! Tous les appels à ces logiciels se font sans aucune intervention de l'utilisateur. \end{Idee} \end{figure} \subsection{Préambule} Les ECM donnés en exemple ne dépendent pas du moteur de compilation~:~\texttt{\LaTeX{}+dvi+dvips} ou \texttt{pdf\LaTeX{}} conviennent. Le préambule sera toujours sous Linux ou Mac~: \lat \begin{lstlisting} \documentclass{article} \usepackage{graphicx} \usepackage[french]{babel} % or eunozer langouage \usepackage[xcas]{tablor} % xcas en option : cf plus loin \end{lstlisting} Le préambule sera toujours sous Windows~: \lat \begin{lstlisting} \documentclass{article} \usepackage{graphicx} \usepackage[french]{babel} % or eunozer langouage \usepackage[xcas,windows]{tablor} % xcas et windows en option : cf plus loin \end{lstlisting} % \begin{figure}[!h] % \begin{Idee} % Les fontes utilisées dans les tableaux sont \verb+[upright]{fourier}+. Il est tout à % fait possible d'utiliser d'autres fontes. Il suffit de modifier le fichier % \texttt{tablor.sty} en remplaçant partout où il apparaît \verb+[upright]{fourier}+ par \verb+lmodern+ ou ce % que vous voulez. Ce n'est pas très pratique, mais cela évite de le mettre en option à % chaque utilisation et on utilise souvent la même fonte dans ses documents. % \end{Idee} % \end{figure} \subsection{L'option xcas}\label{option} On met \texttt{xcas} si l'on a installé \texttt{giac/XCAS} sur son ordinateur et on ne met rien si \texttt{giac/XCAS} n'est pas installé ou (et) que l'on a récupéré un fichier \texttt{tex} avec les fichiers sources \texttt{MetaPOST}; Ainsi, \texttt{tablor} ne fera pas appel à \texttt{giac/XCAS} et se contentera de compiler les fichiers \texttt{MetaPOST}. \subsection{L'option windows} Si vous utilisez encore Windows\textregistered, déclarez-le en option~:~ \begin{lstlisting} \usepackage[xcas,windows]{tablor} \end{lstlisting} Pour les utilisateurs de Linux et Mac, il n'y a rien à déclarer... \subsection{Fichier de configuration \texttt{tablor.cfg}} \subsubsection*{Contenu} {\small \begin{lstlisting} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Fichier de configuration de tablor.sty % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % La mise à jour de ce fichier permet d'adapter certains paramètres du package tablor.sty % au poste de travail et aux habitudes des utilisateurs. %======================================== % I - Configuration du préambule MetaPOST %======================================== \begin{filecontents*}{enteteMP.cfg} input tableauVariation; verbatimtex %&latex \documentclass{article} \usepackage[upright]{fourier} % ou mathpazo, lmodern, etc. ou rien ! \usepackage{amsmath} \renewcommand\mbox[1]{ #1 } % pour les mbox intempestifs de xcas \renewcommand\cdot{ } % idem pour les cdot \begin{document} \catcode`\@=0 % pour utiliser le @ etex \end{filecontents*} %================================= % II - Déclaration de l'éditeur utilisé % ================================ % % Remplacez "emacsclient -c" par la commande qui lance un autre editeur que % votre éditeur favori pour afficher les tableaux a modifier. % Laissez une espace avant de fermer l'accolade. \newcommand{\editeur}{emacsclient -c } %================================= %III - 1ere colonne %================================= % %permet de configurer les termes dans la premiere colonne des %tableaux : "signe de" ou "sign of" ou "" etc. % \begin{VerbatimOut}{config.cxx} //reglage de epsilon : seuil du zero de giac epsilon:=1e-100; // POUR LES TV, TVI,TVZ,TVapp,TSq,TSa // pour la ligne signe lsic:=" newLigneSignes(btex $\\hbox{ Signe de }\\atop{\\displaystyle "; // POUR LES TV, TVI,TVZ,TVapp // pour la ligne variation lvic:=" newLigneVariations(btex $\\hbox{ Variations de }\\atop{\\displaystyle "; \end{VerbatimOut} %% you may prefer % \begin{VerbatimOut}{config.cxx} % // FOR TV, TVI,TVZ,TVapp,TSq,TSa % // for the signs % lsic:=" % newLigneSignes(btex $\\hbox{ Sign of }\\atop{\\displaystyle "; % // POUR LES TV, TVI,TVZ,TVapp % // for the variations % lvic:=" % newLigneVariations(btex $\\hbox{ Variations of }\\atop{\\displaystyle "; %\end{VerbatimOut} %% ou si vous préférez que ni signe ni variation n'apparaissent % \begin{VerbatimOut}{config.cxx} % // POUR LES TV, TVI,TVZ,TVapp,TSq,TSa % // pour la ligne signe % lsic:=" % newLigneSignes(btex ${\\displaystyle "; % // POUR LES TV, TVI,TVZ,TVapp % // pour la ligne variation % lvic:=" % newLigneVariations(btex ${\\displaystyle "; % \end{VerbatimOut} \end{lstlisting} } Vous le placerez dans la même arborescence que \texttt{tablor.sty} et le modifierez si besoin est. \subsubsection*{Rôle} \begin{itemize} \item La première partie permet de configurer le préambule \texttt{tex} qui sera utilisé par \texttt{MetaPOST} pour créer les tableaux. La ligne contenant l'extension des fontes est en particulier optionnelle~:~vous pouvez la modifier, voire la supprimer selon vos choix de fontes; \item si vous utilisez \texttt{ Microsoft-Windows}, il faudra décommenter la ligne spécifiée afin que les commandes \texttt{unix} soient remplacées automatiquement par des commandes \texttt{dos}; \item l'éditeur sera appelé dans certains cas pour modifier l'aspect des tableaux dans les fichiers sources \texttt{MetaPOST}. Il faudra choisir un éditeur comme par exemple \texttt{emacs, xemacs, texmaker, vi, winshell, notepad, vim, kate, gedit, textmate,texshop}, \texttt{kile}, etc. Pour éviter certains problèmes, choisissez un autre éditeur que celui que vous utilisez pour \LaTeX{} afin que la fenêtre s'ouvre sans problème. Voir aussi le paragraphe~\ref{modif}; \item par défaut, on voit apparaître dans la première colonne des tableaux «~signe de ~» ou «~variations de ~». Vous pouvez modifier ces réglages ici comme indiqué; deux exemples sont donnés~:~en anglais ou en n'écrivant que les expressions. \item on peut régler l'epsilon de XCAS qui fixe le seuil du zéro des flottants. Il est réglé à $10^{-100}$ par défaut. \end{itemize} \subsection{Initialisation de \texttt{tablor} et préfixe des tableaux}\label{prefix} Les fichiers \texttt{MetaPOST} des tableaux sont regroupés dans un fichier de suffixe \texttt{\_Tab.mp}. Le préfixe est par défaut celui du fichier \texttt{tex} appelant \texttt{tablor}. Il est possible, pour des raisons de classement personnel, de modifier ce préfixe à la suite du \verb+\begin{document}+ en entrant~: \begin{lstlisting} \initablor \end{lstlisting} si l'on veut avoir comme préfixe le préfixe courant (obtenu par \verb+\jobname+) ou bien~: \begin{lstlisting} \initablor[Waouh] \end{lstlisting} si l'on veut que le fichier \texttt{MetaPOST} des tableaux s'appelle \verb+Waouh\_Tab.mp+ \medskip Si tout s'est bien passé, on doit supprimer les fichiers \texttt{log} de \texttt{MetaPOST} et clore le fichier \texttt{\_Tab.mp} en entrant juste avant \verb+\end{document}+ la commande~: \begin{lstlisting} \nettoyer \end{lstlisting} ou bien, selon les cas~: \begin{lstlisting} \nettoyer[Waouh] \end{lstlisting} \medskip \textbf{En résumé}, notre fichier \texttt{tex} aura cette ossature~: \begin{lstlisting} \documentclass{article} \usepackage{graphicx} \usepackage[french]{babel} % or eunozer langouage \usepackage[xcas]{tablor} % options modifiables \begin{document} \initablor ... \nettoyer \end{document} \end{lstlisting} \section{Facteur de réduction} Si vous trouvez le tableau trop grand, vous pouvez utilisez la commande \verb+\ech{nombre}+ où \texttt{nombre} représente le coefficienr de réduction ou d'agrandissement du tableau. Par exemple, comparez~: \begin{lstlisting} \begin{TV} TV([-10,+infinity],[-1,1],"g","t",x^2/(x^2-1),1,n,\tv) \end{TV} \end{lstlisting} \begin{center} \begin{TV} TV([-10,+infinity],[-1,1],"g","t",x^2/(x^2-1),1,n,\tv) \end{TV} \end{center} et \begin{lstlisting} \ech{0.7} \begin{TV} TV([-10,+infinity],[-1,1],"g","t",x^2/(x^2-1),1,n,\tv) \end{TV} \ech{1} \end{lstlisting} \begin{center} \ech{0.7} \begin{TV} TV([-10,+infinity],[-1,1],"g","t",x^2/(x^2-1),1,n,\tv) \end{TV} \ech{1} \end{center} \begin{figure}[!h] \begin{DANGER}{Remise à l'échelle 1} N'oubliez pas de remettre à l'échelle 1 en entrant à la suite de l'environnement \verb+\ech{1}+ \end{DANGER} \end{figure} \section{Tableaux en couleur} Grâce à la très efficace intervention de \texttt{fp} du forum \href{http://forum.mathematex.net/latex-f6/tableau-de-variations-redige-en-bleu-t10826.html}{\texttt{mathematex}}, on peut à présent avoir des tableaux en couleur. Cette couleur est noire par défaut. Si on veut égayer sa présentation, on utilise la commande \verb+\coultab{couleur}+ où \verb+couleur+ est le nom de la couleur désirée selon les standards \textbf{MetaPOST}~: \begin{itemize} \item \verb+blue+, \verb+red+, \verb+green+, etc. \item pour les gris : \verb+0.1white+, \verb+0.2white+, etc. \item un code RGB : \verb+(0.4,0.2,1)+, etc. \end{itemize} \begin{lstlisting}[caption={}] \coultab{blue} \begin{TV} TV([0,2],[],"f","x",x^2,1,n,\tv) \end{TV} \end{lstlisting} \coultab{blue} \begin{center} \begin{TV} TV([0,2],[],"f","x",x^2,1,n,\tv) \end{TV} \end{center} \coultab{black} \section{Nom des fonctions et commandes \LaTeX{}} Si vous voulez donner un nom de fonction nécessitant l'emploi d'une commande \LaTeX{}, il faudra utiliser le caractère \verb+@+ au lieu de \verb+\+. Par exemple, pour nommer une fonction $\varphi$, il faudra entrer \verb+@varphi+~: \begin{lstlisting} \begin{TSq} TSq("@varphi",[-45*x-27],[2-x],[-infinity,+infinity],n,\tv) \end{TSq} \end{lstlisting} \begin{center} \begin{TSq} TSq("@varphi",[-45*x-27],[2-x],[-infinity,+infinity],n,\tv) \end{TSq} \end{center} \section{Utilisation du moteur Xe\LaTeX} On peut à présent compiler via Xe\LaTeX{} en utilisant l'extension dédiée \verb+tablor-xetex.sty+ qui ne fonctionnera que dans un environnement UNIX puisqu'elle utilise un script \texttt{shell} pour convertir les sorties MetaPOST en \texttt{pdf} : \begin{lstlisting} \ifxetex \begin{filecontents*}{convert-mp-pdf.sh} #!/bin/sh mpost -interaction nonstopmode $1 ; cat>$1.tex<> \immediate\write18{chmod 775 ./convert-mp-pdf.sh} \fi \end{lstlisting} Il n'y a rien à faire. Cette version peut même être utilisée avec pdf\LaTeX{} ou pdf\TeX{}~! \section{Tableaux des variations} \subsection{Tableau standard} L'environnement s'appelle \texttt{TV}. On utilise une commande au format \texttt{XCAS}~: \xcas \begin{lstlisting} TV([borne inf,borne sup],[valeurs interdites],"nom fonction","nom variable",expression en fonction de x,lignes,trigo,\tv) \end{lstlisting} \begin{itemize} \item \texttt{[borne inf,borne sup]} désigne les bornes de l'ensemble de définition. On note $+\infty$~:~\texttt{+infinity} et $-\infty$~:~\texttt{-infinity}. N'oubliez pas les crochets~! \item \texttt{[valeurs interdites]} désigne la liste des valeurs interdites~; \item \texttt{"nom fonction"} désigne la lettre représentant la fonction telle que vous voulez qu'elle apparaisse : $f$, $g$, $\varphi$, etc. \item \texttt{"nom variable"}~:~même chose pour la variable, selon que vous voulez la désigner par $x$, $t$, etc. N'oubliez pas les guillemets~! \item \texttt{expression en fonction de x} désigne l'expression de la fonction. Attention~! Utilisez ici toujours $x$ pour désigner la variable~; \item le paramètre \texttt{lignes} est à remplacer par 1 si vous voulez voir apparaître une ligne avec le signe de la dérivée, par 0 si vous ne voulez pas de cette ligne et par 2 si vous ne voulez que le signe de la dérivée~; \item le paramètre \texttt{trigo} est à remplacer par \texttt{t} si la fonction étudiée est trigonométrique et par tout autre symbole sinon~; \item on termine par \verb+\tv+, une commande permettant de numéroter les tableaux en interne. \end{itemize} \lat Voyons à présent quelques exemples. \begin{enumerate} \item Le tableau de variation sans signe de la dérivée de la fonction $f~:~x\mapsto x^2$ sur $[-5;7]$. On obtient~: \begin{TV} TV([-5,7],[],"f","x",x^2,0,n,\tv); \end{TV} après avoir entré~: \begin{lstlisting} \begin{TV} TV([-5,7],[],"f","x",x^2,0,n,\tv) \end{TV} \end{lstlisting} \item Si on veut la même fonction sur \textbf{R} avec le signe de la dérivée~: \begin{lstlisting} \begin{TV} TV([-infinity,+infinity],[],"f","x",x^2,1,n,\tv) \end{TV} \end{lstlisting} \begin{TV} TV([-infinity,+infinity],[],"f","x",x^2,1,n,\tv) \end{TV} \item Avec la même fonction sur \textbf{R} avec uniquement le signe de la dérivée~: \begin{lstlisting} \begin{TV} TV([-infinity,+infinity],[],"f","x",x^2,2,n,\tv) \end{TV} \end{lstlisting} \begin{TV} TV([-infinity,+infinity],[],"f","x",x^2,2,n,\tv) \end{TV} \item Voici ce que cela donne pour $g~:~t\mapsto \frac{t^2}{t^2-1}$ sur $[-10; +\infty[$~: \begin{lstlisting} \begin{TV} TV([-10,+infinity],[-1,1],"g","t",x^2/(x^2-1),1,n,\tv) \end{TV} \end{lstlisting} \begin{center} \begin{TV} TV([-10,+infinity],[-1,1],"g","t",x^2/(x^2-1),1,n,\tv) \end{TV} \end{center} \item Pour la fonction $x\mapsto \sin(x)+\frac{1}{2}$ on n'oublie pas le paramètre \texttt{t}~: \begin{lstlisting} \begin{TV} TV([-pi,pi],[],"g","t",sin(x)+1/2,1,t,\tv) \end{TV} \end{lstlisting} \begin{center} \begin{TV} TV([-pi,pi],[],"g","t",sin(x)+1/2,1,t,\tv) \end{TV} \end{center} \item Il y aura des problèmes pour des équations $f'(x)=0$ que \texttt{XCAS} ne saurait pas résoudre de manière formelle. Il faudrait alors utiliser une résolution numérique et remplacer \texttt{resoudre} par \texttt{fsolve}. Mais dans les études demandées au Bac, l'étude des signes de la dérivée est possible formellement. Dans les cas plus exotiques, on peut faire le tableau «~à la main~». \end{enumerate} \subsection{Tableaux dont on ne connaît qu'une liste d'images} Au début du cours de Seconde, il peut être utile de créer des tableaux à partir de liste d'images. On rentre la liste des abscisses, la liste des ordonnées avec éventuellement les limites à gauche et à droite des valeurs interdites, les valeurs interdites éventuelles, le nom de la fonction et le nom de la variable. \subsubsection{Sans valeur interdite} \begin{lstlisting} \begin{TVS} TVS([1,2,3,4],[-1,5,2,9],[],"f","x",\tv) \end{TVS} \end{lstlisting} \begin{TVS} TVS([1,2,3,4],[-1,5,2,9],[],"f","x",\tv) \end{TVS} \subsubsection{Avec valeurs interdites} \begin{lstlisting} \begin{TVS} TVS([1,2,3,4],[-1,-infinity,+infinity,2,9],[2],"f","x",\tv) \end{TVS} \end{lstlisting} \begin{TVS} TVS([1,2,3,4],[-1,-infinity,+infinity,2,9],[2],"f","x",\tv) \end{TVS} \begin{lstlisting} \begin{TVS} TVS([1,2,3,4],[-1,-infinity,+infinity,2,+infinity],[1,2,4],"f","x",\tv) \end{TVS} \end{lstlisting} \begin{TVS} TVS([1,2,3,4],[-1,-infinity,+infinity,2,+infinity],[1,2,4],"f","x",\tv) \end{TVS} \subsection{Tableau de variation avec «~zone(s) interdite(s)~»} Pour certaines fonctions, tout un (ou plusieurs) intervalle(s) est(sont) exclu(s) de l'ensemble de définition. Par exemple, la fonction $x\mapsto \sqrt{x^2-1}$ est définie sur $]-\infty; -1]\cup[1; +\infty[$. On utilise alors l'environnement \texttt{TVZ} (Z comme zone...). \begin{lstlisting} \begin{TVZ} TVZ([-infinity,+infinity],[],[[-1,1]],"@varphi","x",sqrt(x^2-1),1,n,\tv) \end{TVZ} \end{lstlisting} \begin{center} \begin{TVZ} TVZ([-infinity,+infinity],[],[[-1,1]],"@varphi","x",sqrt(x^2-1),1,n,\tv) \end{TVZ} \end{center} \begin{figure}[!h] \begin{DANGER}{Listes des intervalles interdits} Le troisième argument est une liste d'intervalles : la liste des «~zones interdites~» qui peut éventuellemnt se réduire à un seul intervalle comme dans l'exemple précédent. \end{DANGER} \end{figure} Voici un exemple comportant plusieurs zones interdites~:~$x\mapsto \ln\big((x-5)^2-1\big)+\ln\big(x^2-1\big)$ \begin{lstlisting} \begin{TVZ} TVZ([-infinity,+infinity],[-1,1,4,6],[[-1,1],[4,6]],"f","x",ln((x-5)^2-1)+ln(x^2-1),1,n,\tv) \end{TVZ} \end{lstlisting} \begin{center} \begin{TVZ} TVZ([-infinity,+infinity],[-1,1,4,6],[[-1,1],[4,6]],"f","x",ln((x-5)^2-1)+ln(x^2-1),1,n,\tv) \end{TVZ} \end{center} \subsection{Tableau des variations avec théorème des valeurs intermédiaires} Si l'on veut mettre en évidence les solutions de l'équation $f(x)=a$, on utilise l'environnement \texttt{TVI}. La syntaxe est~: \begin{lstlisting} TVI([borne inf,borne sup],[valeurs interdites],"nom fonction","nom variable",expression en fonction de x,t,a,trigo,\tv) \end{lstlisting} Les paramètres sont les mêmes que pour \texttt{TV} mais on ajoute la valeur \texttt{a} bien sûr. Par exemple, pour $f~:~x\mapsto \frac{x^2}{x^2-1}$ et l'équation $f(x)=10$ on entre~: \begin{lstlisting} \begin{TVI} TVI([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,10,n,\tv) \end{TVI} \end{lstlisting} et on obtient~: \ech{0.9} \begin{TVI} TVI([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,10,n,\tv) \end{TVI} \ech{1} Les solutions sont notées $\alpha_1$, $\alpha_2$, etc. Si l'équation est plutôt $f(x)=-1$~: \begin{lstlisting} \begin{TVI} TVI([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,-1,n,\tv) \end{TVI} \end{lstlisting} et on obtient~: \begin{TVI} TVI([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,-1,n,\tv) \end{TVI} \subsection{Tableau des variations avec théorème des valeurs intermédiaires et racines sous forme exacte} Si l'on veut mettre en évidence les solutions de l'équation $f(x)=a$ et qu'on veut faire apparaître les racines sous forme exacte et pas seulement sous forme d'$\alpha_i$, on utilise l'environnement \texttt{TVIex}. La syntaxe est la même que \texttt{TVI}~: \begin{lstlisting} TVIex([borne inf,borne sup],[valeurs interdites],"nom fonction","nom variable",expression en fonction de x,t,a,trigo,\tv) \end{lstlisting} Les paramètres sont les mêmes que pour \texttt{TV} mais on ajoute la valeur \texttt{a} bien sûr. Par exemple, pour $f~:~x\mapsto \frac{x^2}{x^2-1}$ et l'équation $f(x)=10$ on entre~: \begin{lstlisting} \begin{TVIex} TVIex([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,10,n,\tv) \end{TVIex} \end{lstlisting} et on obtient~: \ech{0.9} \begin{TVIex} TVIex([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,10,n,\tv) \end{TVIex} \ech{1} Si l'équation est plutôt $f(x)=-1$~: \begin{lstlisting} \begin{TVIex} TVIex([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,-1,n,\tv) \end{TVIex} \end{lstlisting} et on obtient~: \begin{TVIex} TVIex([-10,+infinity],[-1,1],"f","x",x^2/(x^2-1),1,-1,n,\tv) \end{TVIex} Avec une équation trigonométrique~: \begin{lstlisting} \begin{TVIex} TVIex([-pi,pi],[],"@cos","x",cos(x),1,1/2,t,\tv) \end{TVIex} \end{lstlisting} \begin{TVIex} TVIex([-pi,pi],[],"@cos","x",cos(x),1,1/2,t,\tv) \end{TVIex} \begin{figure}[!h] \begin{DANGER}{Racines formelles non calculables} XCAS peut ne pas pouvoir trouver une expression exacte des racines et affichera un message barbare du style~: \texttt{Unable to isolate x in ...} Le tableau ne sera alors pas construit et vous aurez un message d'erreur. \end{DANGER} \end{figure} \subsection{Tableaux de variations avec approximation des zéros de la dérivée} Il n'est parfois pas possible d'obtenir une valeur formelle des zéros de la dérivée. On est donc amené à rechercher une approximation numérique de ces zéros. Cela est possible grâce à la commande \texttt{fsolve} de \texttt{XCAS} utilisée à bon escient. On appelera les environnements \texttt{TVapp} et \texttt{TVIapp} ainsi que leurs associés étoilés. Voyons sur un exemple. \subsubsection*{Exemple} On veut résoudre l'équation $\ln(x)=\mathrm{e}^{-x}$ sur $]0,+\infty[$. Soit $g$ la fonction $x\mapsto x\ln(x)-e^{-x} $. \begin{lstlisting} \begin{TVapp} TVapp([0,+infinity],[0],"g","x",x*ln(x)-exp(-x),1,\tv) \end{TVapp} \end{lstlisting} \begin{center} \begin{TVapp} TVapp([0,+infinity],[0],"g","x",x*ln(x)-exp(-x),1,\tv) \end{TVapp} \end{center} \begin{figure}[!h] \begin{DANGER} {TVapp et TVIapp ne sont pas infaillibles~!~!} Chercher \emph{toutes} les approximations des racines de la dérivées c'est se lancer dans la théorie du tout c'est-à-dire concilier la recherche de solutions approchées pouvant être extrêmement proches sur des intervalles pouvant être extrêmement étendus. Un concepteur de logiciel de calcul formel s'y refuse. Je devais m'y coller par souci d'efficacité. Normalement, le code devrait fonctionner pour \emph{la plupart} des cas étudiés par des profs pas trop sadiques. Ça ralentit légèrement la compilation. Le balayage se fait avec une précision de 0,1. C'est sûr qu'on peut trouver de nombreux exemples qui ne fonctionneront pas mais plus on veut resserrer les mailles du filet, plus on passe de temps à les tricoter sauf dans le cas des fonctions polynomiales grâce à XCAS. Se pose aussi le problème des images et des tests de signes et de leurs approximations. Par exemple \begin{lstlisting} \begin{TVapp} TVapp([0,+infinity],[0],"g","x",1/3*x^3-0.0015*x^2+2e-06*x,1,\tv) \end{TVapp} \end{lstlisting} renvoie un tableau curieux car les images des racines de la dérivées sont de l'ordre de $10^{-10}$. % \begin{TVapp} % TVapp([0,+infinity],[0],"g","x",1/3*x^3-0.0015*x^2+2e-06*x,1,\tv) % \end{TVapp} Ça peut s'arranger en donnant en argument supplémentaire le nombre de chiffres affichés. Cela rendrait les différentes versions incompatibles et le jeu n'en vaut pas forcément la chandelle. \end{DANGER} \end{figure} \subsection{Tableaux de variations de fonctions prolongeables par continuité} On peut avoir prolongée une fonction par continuité et donc ne plus avoir de double barre sur la ligne des variations mais toujours une sur la ligne du signe de la dérivée. On entre trois listes~: \begin{enumerate} \item les bornes de l'intervalle d'étude, comme toujours~; \item les valeurs où la fonction sera prolongée par continuité~; \item les valeurs où la fonction n'est pas dérivable. \end{enumerate} Cela donne pour $x\mapsto {\rm e}^{-1/x^2}$~: \begin{lstlisting} \begin{TVPC} TVPC([-infinity,+infinity],[0],[0],"g","t",e^(-1/x^2),1,n,\tv); \end{TVPC} \end{lstlisting} \begin{TVPC} TVPC([-infinity,+infinity],[0],[0],"g","t",e^(-1/x^2),1,n,\tv); \end{TVPC} \subsection{Tableaux de variations et courbes paramétrées} On peut obtenir le tableau de variations correspondant à des courbes paramétrées définies par un système du type~: \[\begin{cases} x=f(t) \\ y=g(t) \end{cases}\] La syntaxe est la suivante~: \begin{lstlisting} \begin{TVP} TVP(IE,VI,["x","y"],"t",[x(t),y(t)],a,trigo,n,\tv) \end{TVP} \end{lstlisting} avec \texttt{IE} l'intervalle d'étude, \texttt{VI} la liste des listes de valeurs interdites respectives pour les deux fonctions, \texttt{a} pour avoir un tableau complet ou partiel comme dans les autres "TV", enfin \texttt{trigo} qui vaut \texttt{t} si interviennent des fonctions trigonométrqiues, autre chose sinon. \begin{figure}[!h] \begin{DANGER}{Version de XCAS} L'utilisation de TVP implique l'utilisation d'une version de XCAS d'une date postérieure au 14 juin 2008 ! \end{DANGER} \end{figure} \subsubsection{Cas des fonctions trigonométriques} Étudions par exemple sur $\left[0\ ;\ \frac{\pi}{2}\right]$ \[ \begin{cases} x(t)=\cos(3t) \\ y(t)=\sin(4t) \end{cases}\] \begin{lstlisting} \begin{TVP} TVP([0,pi/2],[[],[]],["x","y"],"t",[cos(3*t),sin(4*t)],1,t,\tv) \end{TVP} \end{lstlisting} \begin{TVP} TVP([0,pi/2],[[],[]],["x","y"],"t",[cos(3*t),sin(4*t)],1,t,\tv) \end{TVP} \subsubsection{Les autres cas} Étudions par exemple sur $]-\infty\ ;\ +\infty[$ \[ \begin{cases} x(t)=\frac{t^2}{(t+1)(t-2)} \\ y(t)=\frac{t^2(t+2)}{t+1} \end{cases} \] \begin{lstlisting} \begin{TVP} TVP([-infinity,+infinity],[[-1,2],[-1]],["x","y"],"t",[t^2/((t+1)*(t-2)),t^2*(t+2)/(t+1)],1,n,\tv) \end{TVP} \end{lstlisting} \begin{TVP} TVP([-infinity,+infinity],[[-1,2],[-1]],["x","y"],"t",[t^2/((t+1)*(t-2)),t^2*(t+2)/(t+1)],1,n,\tv) \end{TVP} \section{Tableaux de signes} \subsection{Cas du produit de deux facteurs affines} Pour étudier le signe de $(-2x+3)(-x+5)$ sur \textbf{R}, on entre~: \begin{lstlisting} \begin{TSa} TSa(-2,3,-1,5,\tv); \end{TSa} \end{lstlisting} On obtient~: \begin{TSa} TSa(-2,3,-1,5,\tv); \end{TSa} \subsection{Cas du produit d'un nombre quelconque de facteurs quelconques sur un intervalle quelconque} \begin{figure}[!h] \begin{DANGER}{Nouveauté à partir de la version 2.08} Par souci de cohérence avec l'environnement TSq, on doit rajouter maintenant en premier argument le nom de la fonction produit dans l'environnement TS. \end{DANGER} \end{figure} Certains cas pathologiques ne vont pas fonctionner, mais sinon, pour étudier le signe de \[(-2x+3)(x^2-1)(x^2+1)(x-1)(x^2-2)\] on entre cette fois les expressions sous cette forme en précisant l'intervalle d'étude~: \begin{lstlisting} \begin{TS} TS("P",[-2*x+3,x^2-1,x^2+1,x-1,x^2-2],[-infinity,+infinity],n,\tv); \end{TS} \end{lstlisting} On obtient~: \begin{TS} TS("P",[-2*x+3,x^2-1,x^2+1,x-1,x^2-2],[-infinity,+infinity],n,\tv); \end{TS} Ou bien, sur un intervalle borné~: \begin{lstlisting} \begin{TS} TS("f",[x-10,x+10],[-15,10],n,\tv) \end{TS} \end{lstlisting} \begin{TS} TS("f",[x-10,x+10],[-15,10],n,\tv) \end{TS} \subsection{Signe d'un quotient} On entre dans deux listes différentes les facteurs du numérateur et du dénominateur~: \begin{lstlisting} \begin{TSq} TSq("nom du quotient",[liste des facteurs du numérateur],[liste des facteurs du dénominateur],[inf,sup],trigo,\tv) \end{TSq} \end{lstlisting} Par exemple, pour étudier le signe de $\frac{(-2x+3)(-4x+5)}{(x^2-16)(x-2)}$ sur \textbf{R}~: \begin{lstlisting} \begin{TSq} TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],[-infinity,+infinity],n,\tv) \end{TSq} \end{lstlisting} \begin{TSq} TSq("Q",[-2*x+3,-4*x+5],[x^2-16,x-2],[-infinity,+infinity],n,\tv) \end{TSq} Sur un intervalle borné~: \begin{lstlisting} \begin{TSq} TSq("Q",[x-10,x-5],[x+10,x+3],[-10,10],n,\tv) \end{TSq} \end{lstlisting} \begin{TSq} TSq("Q",[x-10,x-5],[x+10,x+3],[-10,10],n,\tv) \end{TSq} \subsection{Signe d'une seule expression} On utilise l'environnement \texttt{TSc} comme \emph{Tableau de Signe court} en précisant l'expression étudiée, l'intervalle considéré et les valeurs interdites~: \begin{lstlisting} \begin{TSc} TSc((x-10)*(x+5),[-10,10],[],n,\tv) \end{TSc} \end{lstlisting} \begin{TSc} TSc((x-10)*(x+5),[-10,10],[],n,\tv) \end{TSc} avec valeurs interdites~: \begin{lstlisting} \begin{TSc} TSc((x+10)/((x-5)*(x-2)),[-10,5],[2,5],n,\tv) \end{TSc} \end{lstlisting} \begin{TSc} TSc((x+10)/((x-5)*(x-2)),[-10,5],[2,5],n,\tv) \end{TSc} valeurs interdites et fonction trigonométrique~: \begin{lstlisting} \begin{TSc} TSc(tan(x),[0,2*pi],[pi/2,3*pi/2],t,\tv) \end{TSc} \end{lstlisting} \begin{TSc} TSc(tan(x),[0,2*pi],[pi/2,3*pi/2],t,\tv) \end{TSc} \section{Comment modifier les tableaux à partir des fichiers MetaPOST~?}\label{modif} \subsection{Tableau par tableau} Il est impossible de prévoir toutes les requêtes des différents utilisateurs. Le style du tableau produit peut néanmoins vous déplaire. Vous pouvez le modifier en intervenant directement sur le fichier \texttt{MetaPOST} créé pour chaque tableau. Pour cela, il suffit d'ajouter une étoile au nom de l'environnement utilisé et de donner un numéro à votre nouvelle figure pour qu'elle ne soit pas écrasée par les compilations suivantes. Numérotez à partir de 100 par exemple. Si vous tapez~: \begin{lstlisting} \begin{TV*}{100} TV([-1,+infinity],[],"f","x",x-ln(x+1),1,n,\tv) \end{TV*} \end{lstlisting} l'éditeur que vous avez mis en option (voir le paragraphe~\ref{option}) est directement lancé et le fichier \texttt{MetaPOST} correspondant à votre tableau qui portera le numéro 100 est affiché. Vous pouvez alors le modifier, taper sur \Ctrl + \keystroke{S} pour l'enregistrer et \Ctrl + \keystroke{Q} pour fermer l'éditeur\footnote{Ces combinaisons de touches correspondent à la plupart des éditeurs mais ne sont pas universelles : vérifiez pour celui que vous avez choisi.}. La compilation s'achève alors automatiquement comme pour un environnement non étoilé. \begin{figure}[!h] \begin{DANGER}{Choix de l'éditeur} Évitez de choisir votre éditeur habituel~:~sur \texttt{Linux} prenez par exemple \texttt{gedit} ou \texttt{kate}, sur \texttt{Windows} prenez \texttt{wordpad}, etc. \end{DANGER} \end{figure} Par exemple, je tape~: \begin{lstlisting} \begin{TS*}{100} TS("F",[3*x+2,5*x^2-1],[-50,50],n,\tv) \end{TS*} \end{lstlisting} et apparaît une fenêtre de l'éditeur (ici \TeX maker) avec le fichier correspondant au tableau. Je le modifie à volonté~: \begin{center} \includegraphics[height=9cm]{capture.eps} \end{center} Je tape sur \Ctrl + \keystroke{S} puis \Ctrl + \keystroke{Q} et la compilation reprend automatiquement pour m'afficher le tableau voulu~: \begin{center} \begin{TS*}{105} TS("F",[3*x+2,5*x^2-1],[-50,50],n,\tv) \end{TS*} \end{center} Une fois la modification faite, on ne vous redemandera pas d'effectuer de modifications, sauf si vous changez le numéro de la figure. \subsection{Traitement global dans un unique fichier MetaPOST}\label{global} Un fichier \texttt{préfixe\_Tab.mp} est créé où sont copiés les sources de chaque tableau. Vous pouvez ainsi retravailler globalement sur les tableaux si besoin ou les transmettre à une personne n'ayant pas installé \texttt{XCAS}. Voir le paragraphe~\ref{prefix} pour plus de détails. \section{Merci...} \begin{itemize} \item à \href{http://frederic.mazoit.free.fr/LaTeX\_metapost/tableauVariations/}{Frédéric \textsc{Mazoit}} pour son fichier \texttt{tableauVariation.mp}; \item à \href{http://www.yvesdelhaye.be/?Generateur-d-interrogations-le}{Yves \textsc{Delhaye}} pour ses idées sur le \texttt{shell-escape} \item à \href{http://www-fourier.ujf-grenoble.fr/\%7Eparisse/giac\_fr.html}{Bernard \textsc{Parisse}} pour \texttt{XCAS}; \item à Jean-Michel \textsc{Boucart} pour ses précieuses et efficaces améliorations de la partie \LaTeX{} du code. \end{itemize} \section{Erreurs habituelles} Avez-vous rendu possible le \texttt{shell-escape}~? Avez-vous installé toutes les extensions listées en début de ce document~? Est-ce que \texttt{XCAS} est dans votre \texttt{PATH}~? La première chose est d'analyser le fichier \texttt{log}. En cas de problème, n'hésitez pas à me contacter à l'adresse indiquée sur mon site en joignant le fichier \texttt{log}. \section{\texttt{Tablor} et Emacs} Pour les heureux utilisateurs de tempo, voici quelques lignes pour faciliter votre vie à rajouter dans un fichier \texttt{latex-tempo}: \begin{lstlisting} ;; ;; TABLOR ;;; ;cas tableau de variation ("TV" (& > "\\begin{center}"n> "\\begin{TV}" n> "TV(["(p "debut de l'intervalle:")","(p "fin de l'intervalle:")"]," "["(p "liste de valeurs interdites (,) :")"]," "\""(p "nom de la fonction :")"\"," "\""(p "nom de la variable :")"\"," ""(p "expression de la fonction (utiliser x) :")"," ""(p "type de tableau (1:complet, 0:sans signe, 2:que le signe) :")"," ""(p "trigo ? (t:oui, n:non) :")"," "\\tv)" n> "\\end{TV}" n> "\\end{center}" > % )) ;cas TVI ("TVI" (& > "\\begin{center}"n> "\\begin{TVI}" n> "TVI(["(p "debut de l'intervalle:")","(p "fin de l'intervalle:")"]," "["(p "liste de valeurs interdites (,) :")"]," "\""(p "nom de la fonction :")"\"," "\""(p "nom de la variable :")"\"," ""(p "expression de la fonction (utiliser x) :")"," ""(p "type de tableau (1:complet, 0:sans signe, 2:que le signe) :")"," ""(p "trigo ? (t:oui, n:non) :")"," ""(p "f(x)=l pour la valeur l :")"," "\\tv)" n> "\\end{TVI}" n> "\\end{center}" > % )) ;cas signe produit ("TS" (& > "\\begin{center}"n> "\\begin{TS}" n> "TS(\""(p "nom du produit :")"\"," "["(p "liste des facteurs (,) :")"]," "["(p "debut de l'intervalle:")","(p "fin de l'intervalle:")"]," ""(p "trigo ? (t:oui, n:non) :")"," "\\tv)" n> "\\end{TS}" n> "\\end{center}" > % )) ;cas signe quotient ("TSq" (& > "\\begin{center}"n> "\\begin{TSq}" n> "TSq(\""(p "nom du quotient :")"\"," "["(p "liste des facteurs du numerateur (,) :")"]," "["(p "liste des facteurs du denominateur (,) :")"]," "["(p "debut de l'intervalle:")","(p "fin de l'intervalle:")"]," ""(p "trigo ? (t:oui, n:non) :")"," "\\tv)" n> "\\end{TSq}" n> "\\end{center}" > % )) ; Tableau signe court ("TSc" (& > "\\begin{center}"n> "\\begin{TSc}" n> "TSc("(p "expression :")",""[" (p "debut de l'intervalle:")"," (p "fin de l'intervalle:")"],""[" (p "liste de valeurs interdites (,) :")"],""" (p "trigo ? (t:oui, n:non) :")"," "\\tv)" n> "\\end{TSc}" n> "\\end{center}" > % )) ;cas tableau de variation avec zone interdite ("TVZ" (& > "\\begin{center}"n> "\\begin{TV}" n> "TVZ(["(p "debut de l'intervalle:")","(p "fin de l'intervalle:")"]," "["(p "liste de valeurs interdites (,) :")"]," "["(p "liste des zones interdites ([,],[,]) :")"]," "\""(p "nom de la fonction :")"\"," "\""(p "nom de la variable :")"\"," ""(p "expression de la fonction (utiliser x) :")"," ""(p "type de tableau (1:complet, 0:sans signe, 2:que le signe) :")"," ""(p "trigo ? (t:oui, n:non) :")"," "\\tv)" n> "\\end{TV}" n> "\\end{center}" > % )) ;cas TVP ("TVP" (& > "\\begin{center}"n> "\\begin{TVI}" n> "TVP(["(p "debut de l'intervalle:")","(p "fin de l'intervalle:")"]," "[["(p "liste de valeurs interdites de x(t)(,) :")"]," "["(p "liste de valeurs interdites de y(t)(,) :")"]]," "[\""(p "nom de la fonction x :")"\"," "\""(p "nom de la fonction y :")"\"]," "\""(p "nom de la variable :")"\"," "["(p "expression de la fonction x (utiliser t) :")"," ""(p "expression de la fonction y (utiliser t) :")"]," ""(p "type de tableau (1:complet, 0:sans signe, 2:que le signe) :")"," ""(p "t si fonctions trigo, n sinon :")"," "\\tv)" n> "\\end{TVP}" n> "\\end{center}" > % )) \end{lstlisting} Merci à \href{http://phil.pham.free.fr/}{Phil Pham}. \section{Galerie} Voici quelques exemples de tableaux~: \begin{lstlisting} \begin{TVI} TVI([-1,+infinity],[-1],"f","x",x^2/sqrt(x+1)-1,1,2,n,\tv) \end{TVI} \end{lstlisting} \begin{TVI} TVI([-1,+infinity],[-1],"f","x",x^2/sqrt(x+1)-1,1,2,n,\tv) \end{TVI} \begin{lstlisting} \begin{TVI} TVI([-1/2,+infinity],[],"f","x",x^2,1,2,n,\tv) \end{TVI} \end{lstlisting} \begin{TVI} TVI([-1/2,+infinity],[],"f","x",x^2,1,2,n,\tv) \end{TVI} \begin{lstlisting} \begin{TVI} TVI([0,+infinity],[0],"@ln","x",ln(x),1,2,n,\tv) \end{TVI} \end{lstlisting} \begin{TVI} TVI([0,+infinity],[0],"@ln","x",ln(x),1,2,n,\tv) \end{TVI} \stepcounter{TVn} \begin{lstlisting} \begin{TV} TV([1,+infinity],[],"-@ln","x",-ln(x),1,n,\tv) \end{TV} \end{lstlisting} \begin{TV} TV([1,+infinity],[],"-@ln","x",-ln(x),1,n,\tv) \end{TV} \begin{lstlisting} \begin{TVI} TVI([-pi,pi],[],"@cos","x",cos(x),1,1/2,t,\tv) \end{TVI} \end{lstlisting} \begin{TVI} TVI([-pi,pi],[],"@cos","x",cos(x),1,1/2,t,\tv) \end{TVI} \begin{lstlisting} \begin{TV} TV([0,2*pi],[],"@cos","x",cos(x),1,t,\tv) \end{TV} \end{lstlisting} \begin{TV} TV([0,2*Pi],[],"@cos","x",cos(x),1,t,\tv) \end{TV} \begin{lstlisting} \begin{TVI} TVI([0,pi],[pi/2],"@tan","t",tan(x),1,7,t,\tv) \end{TVI} \end{lstlisting} \begin{TVI} TVI([0,pi],[pi/2],"@tan","t",tan(x),1,7,t,\tv) \end{TVI} \begin{lstlisting} \begin{TVIex} TVIex([0,pi],[pi/2],"@tan","t",tan(x),1,7,t,\tv) \end{TVIex} \end{lstlisting} \begin{TVIex} TVIex([0,pi],[pi/2],"@tan","t",tan(x),1,7,t,\tv) \end{TVIex} \begin{lstlisting} \begin{TVI} TVI([-1,1],[],"f","x",(1-x)*sqrt(1-x^2),1,1,n,\tv) \end{TVI} \end{lstlisting} \begin{TVI} TVI([-1,1],[],"f","x",(1-x)*sqrt(1-x^2),1,1,n,\tv) \end{TVI} \begin{lstlisting} \begin{TVIex} TVIex([-1,1],[],"f","x",(1-x)*sqrt(1-x^2),1,1,n,\tv) \end{TVIex} \end{lstlisting} \begin{TVIex} TVIex([-1,1],[],"f","x",(1-x)*sqrt(1-x^2),1,1,n,\tv) \end{TVIex} \begin{lstlisting} \begin{TV} TV([-1,+infinity],[-1],"f","x",ln(1+x)-(x-x^2/2+x^3/3),1,n,\tv) \end{TV} \end{lstlisting} \begin{TV} TV([-1,+infinity],[-1],"f","x",ln(1+x)-(x-x^2/2+x^3/3),1,n,\tv) \end{TV} \begin{lstlisting} \begin{TS} TS("G",[-2*x+3,x-1,x+1,x^2+3*x+1],[-10,+infinity],n,\tv); \end{TS} \end{lstlisting} \begin{TS} TS("G",[-2*x+3,x-1,x+1,x^2+3*x+1],[-10,+infinity],n,\tv); \end{TS} \begin{lstlisting} \begin{TVI} TVI([-infinity,+infinity],[],"f","x",(x+2)*exp(x-1)-1,1,0,n,\tv) \end{TVI} \end{lstlisting} \begin{TVI} TVI([-infinity,+infinity],[],"f","x",(x+2)*exp(x-1)-1,1,0,n,\tv) \end{TVI} \begin{lstlisting} \begin{TVI} TVI([-infinity,+infinity],[],"f","x",1+(-2*x+1)*exp(2*x),1,0,n,\tv) \end{TVI} \end{lstlisting} \begin{TVI} TVI([-infinity,+infinity],[],"f","x",1+(-2*x+1)*exp(2*x),1,0,n,\tv) \end{TVI} \stepcounter{TVn} \begin{lstlisting} \begin{TV} TV([0,+infinity],[],"f","x",ln(exp(x)+x)-x,1,n,\tv) \end{TV} \end{lstlisting} \begin{TV} TV([0,+infinity],[],"f","x",ln(exp(x)+x)-x,1,n,\tv) \end{TV} \begin{lstlisting} \begin{TVI} TVI([0,pi],[],"f","x",cos(x)-x,1,0,n,\tv) \end{TVI} \end{lstlisting} \begin{TVI} TVI([0,pi],[],"f","x",cos(x)-x,1,0,n,\tv) \end{TVI} \begin{lstlisting} \begin{TVI} TVI([0,+infinity],[0],"f","x",ln(x)-(ln(x))^2,1,-1,n,\tv) \end{TVI} \end{lstlisting} \begin{TVI} TVI([0,+infinity],[0],"f","x",ln(x)-(ln(x))^2,1,-1,n,\tv) \end{TVI} \begin{lstlisting} \begin{TVIex} TVIex([0,+infinity],[0],"f","x",ln(x)-(ln(x))^2,1,-1,n,\tv) \end{TVIex} \end{lstlisting} \begin{TVIex} TVIex([0,+infinity],[0],"f","x",ln(x)-(ln(x))^2,1,-1,n,\tv) \end{TVIex} \begin{lstlisting} \begin{TSc} TSc((x-10)*(x+10),[-10,10],[],n,\tv) \end{TSc} \end{lstlisting} \begin{TSc} TSc((x-10)*(x+10),[-10,10],[],n,\tv) \end{TSc} \begin{lstlisting} \begin{TVZ} TVZ([-infinity,+infinity],[],[[-1,1]],"f","x",(sqrt(x^2-1))*(x^2-4),1,n,\tv) \end{TVZ} \end{lstlisting} \begin{TVZ} TVZ([-infinity,+infinity],[],[[-1,1]],"f","x",(sqrt(x^2-1))*(x^2-4),1,n,\tv) \end{TVZ} \begin{lstlisting} \begin{TVZ} TVZ([-infinity,+infinity],[-1,1],[[-1,1]],"f","x",ln(x^2-1),1,n,\tv) \end{TVZ} \end{lstlisting} \begin{TVZ} TVZ([-infinity,+infinity],[-1,1],[[-1,1]],"f","x",ln(x^2-1),1,n,\tv) \end{TVZ} \begin{lstlisting} \begin{TVP} TVP([0,pi/2],[[],[]],["x","y"],"t",[cos(3*t),sin(4*t)],1,t,\tv) \end{TVP} \end{lstlisting} \begin{TVP} TVP([0,pi/2],[[],[]],["x","y"],"t",[cos(3*t),sin(4*t)],1,t,\tv) \end{TVP} \begin{lstlisting} \begin{TVP} TVP([0,2*pi],[[],[]],["x","y"],"t",[t-2*sin(t),-1+2*cos(t)],1,t,\tv) \end{TVP} \end{lstlisting} \begin{TVP} TVP([0,2*pi],[[],[]],["x","y"],"t",[t-2*sin(t),-1+2*cos(t)],1,t,\tv) \end{TVP} % \begin{lstlisting} % \begin{TVZ} % TVZ([-infinity,+infinity],[],[[-1,1],[4,6]],"f","x",sqrt((x-5)^2-1)+sqrt(x^2-1),1,n,\tv) % \end{TVZ} % \end{lstlisting} % \begin{center} % \begin{TVZ} % TVZ([-infinity,+infinity],[],[[-1,1],[4,6]],"f","x",sqrt((x-5)^2-1)+sqrt(x^2-1),1,n,\tv) % \end{TVZ} % \end{center} \begin{lstlisting} \begin{TVP} TVP([0,pi/2],[[],[]],["f","g"],"t",[(sin(3*t)),(sin(4*t))],1,t,\tv) \end{TVP} \end{lstlisting} \begin{center} \begin{TVP} TVP([0,pi/2],[[],[]],["f","g"],"t",[(sin(3*t)),(sin(4*t))],1,t,\tv) \end{TVP} \end{center} \begin{lstlisting} \begin{TS} TS(" f ",[cos(x)-1/2,sin(x)+1/2],[0,2*pi],t,\tv) \end{TS} \end{lstlisting} \begin{center} \begin{TS} TS(" f ",[cos(x)-1/2,sin(x)+1/2],[0,2*pi],t,\tv) \end{TS} \end{center} % \begin{lstlisting} % \begin{TVIapp} % TVIapp([-1,+infinity],[-1,0],"g'","x",diff(ln(x+1)/x^2,x),1,0,\tv) % \end{TVIapp} % \end{lstlisting} % \begin{center} % \begin{TVIapp} % TVIapp([-1,+infinity],[-1,0],"g'","x",diff(ln(x+1)/x^2,x),1,0,\tv) % \end{TVIapp} % \end{center} % \lat % \begin{lstlisting} % \begin{enumerate} % \item % Selon le tableau de variation de la fonction $f$ % ci-dessous, on peut affirmer que \ldots % \begin{TV} % TV([-5,10],[],"f","x",(5/2)*x^2-2*x+12,0,n,\tv) % \end{TV} % \VF % \begin{itemize} % \item[\ldots] 5 n'a pas d'antécédent \Rep % \item[\ldots] 5 n'a pas d'image \Rep % \item[\ldots] 5 a deux antécédents \Rep % \item[\ldots] 5 a une image supérieure à celle de $\sqrt{2}$\Rep % \end{itemize} % \item Soit $f$ la fonction définie par $f~:~x\mapsto 3x^3-5x^2+2x-7$. Les tableaux suivants peuvent % correspondre à $f$~: % \VF % \begin{enumerate} % \item Tableau 1 \Rep % \begin{TV} % TV([-20,20],[],"f","x",3*x^3-5*x^2+2*x-7,0,n,\tv) % \end{TV} % \item Tableau 2 \Rep % \begin{TV} % TV([-20,20],[],"f","x",-3*x^3+5*x^2-2*x+7,0,n,\tv) % \end{TV} % \item Tableau 3 \Rep % \begin{TSc} % TSc(-3*x^3+5*x^2-2*x+7,[-20,20],n,\tv) % \end{TSc} % \item Tableau 4 \Rep % \begin{TSc} % TSc(3*x^3-5*x^2+2*x-7,[-20,20],n,\tv) % \end{TSc} % \end{enumerate} % \end{enumerate} % \end{lstlisting} % \begin{enumerate} % \item % Selon le tableau de variation de la fonction $f$ % ci-dessous, on peut affirmer que \ldots % \begin{TV} % TV([-5,10],[],"f","x",(5/2)*x^2-2*x+12,0,n,\tv) % \end{TV} % \VF % \begin{itemize} % \item[\ldots] 5 n'a pas d'antécédent \Rep % \item[\ldots] 5 n'a pas d'image \Rep % \item[\ldots] 5 a deux antécédents \Rep % \item[\ldots] 5 a une image supérieure à celle de $\sqrt{2}$\Rep % \end{itemize} % \item Soit $f$ la fonction définie par $f~:~x\mapsto 3x^3-5x^2+2x-7$. Les tableaux suivants peuvent-ils % correspondre à la fonction $f$~: % \VF % \begin{enumerate} % \item Tableau 1 \Rep % \begin{TV} % TV([-20,20],[],"f","x",3*x^3-5*x^2+2*x-7,0,n,\tv) % \end{TV} % \item Tableau 2 \Rep % \begin{TV} % TV([-20,20],[],"f","x",-3*x^3+5*x^2-2*x+7,0,n,\tv) % \end{TV} % \item Tableau 3 \Rep % \begin{TSc} % TSc(-3*x^3+5*x^2-2*x+7,[-20,20],n,\tv) % \end{TSc} % \item Tableau 4 \Rep % \begin{TSc} % TSc(3*x^3-5*x^2+2*x-7,[-20,20],n,\tv) % \end{TSc} % \end{enumerate} % \end{enumerate} % \begin{lstlisting} % On considère la fonction $f$ définie sur \textbf{R} par $f(x)=\frac{1}{2}\bigl(x+(1-x){\rm e}^{2x}\bigr)$ % Étudions sa dérivée~: % \begin{TVIapp} % TVIapp([-infinity,+infinity],[],"f'","x",diff(1/2*(x+(1-x)*exp(2*x)),x),1,0,\tv) % \end{TVIapp} % On en déduit le tableau de variation de $f$ % \begin{TVapp} % TVapp([-infinity,+infinity],[],"f","x",1/2*(x+(1-x)*exp(2*x)),1,\tv) % \end{TVapp} % \end{lstlisting} % On considère la fonction $f$ définie sur \textbf{R} par $f(x)=\frac{1}{2}\bigl(x+(1-x){\rm e}^{2x}\bigr)$ % Étudions sa dérivée~: % \begin{TVIapp} % TVIapp([-infinity,+infinity],[],"f'","x",diff(1/2*(x+(1-x)*exp(2*x)),x),1,0,\tv) % \end{TVIapp} % On en déduit le tableau de variation de $f$ % \begin{TVapp} % TVapp([-infinity,+infinity],[],"f","x",1/2*(x+(1-x)*exp(2*x)),1,\tv) % \end{TVapp} \pagebreak \tableofcontents \nettoyer %\bouger{/home/moi/Desktop/} \end{document} %%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End: