Profitez des offres Memoirevive.ch!
Des­si­ner avec LaTeX (deuxième par­tie)

Après pré­sen­ta­tion par l'ar­ticle pré­cé­dent de deux so­lu­tions de des­sin liées à LaTeX, mfpic et Me­ta­Post, l'ar­ticle d'au­jourd'­hui prend le re­lais pour pré­sen­ter deux autres so­lu­tions, lar­ge­ment uti­li­sées : PS­Tricks et Tikz.

J'avais ini­tia­le­ment prévu de pré­sen­ter éga­le­ment une troi­sième so­lu­tion de des­sin au­jour­d'hui, ap­pe­lée Asymp­tote, mais l'ar­ticle étant déjà d'une grande lon­gueur avec les seuls PS­Tricks et Tikz, j'ai fi­na­le­ment dé­cidé de re­por­ter la pré­sen­ta­tion d'Asymp­tote à un pro­chain (et der­nier) épi­sode de la série.

Je ré­pète l'aver­tis­se­ment d'usage : cette série d'ar­ticles sup­pose de la part du lec­teur une connais­sance mi­ni­male de LaTeX, qu'on peut ac­qué­rir en li­sant par exemple les deux pre­miers cha­pitres du cours d'in­tro­duc­tion à LaTeX pu­blié sur cuk.​ch par Fa­bien Conus et moi-même. Bien sûr, si ce n'est pas votre cas vous pou­vez tou­jours pour­suivre la lec­ture par simple cu­rio­sité — très bien pla­cée en l'oc­cur­rence — mais si vous êtes vrai­ment al­ler­gique à tout ce qui n'est pas wy­siwyg, il vaut mieux sa­voir que vous ris­quez alors le choc ana­phy­lac­tique ! ;)

Comme pour mfpic et Me­ta­Post dans l'ar­ticle pré­cé­dent, je me fo­ca­li­se­rai moins ici sur la syn­taxe de PS­tricks et de Tikz que sur la façon de les uti­li­ser sur Mac OS X, plus pré­ci­sé­ment avec l'in­ter­face gra­phique TeX­Shop et la dis­tri­bu­tion Mac­TeX.

La rai­son ? Il existe déjà une flop­pée de do­cu­men­ta­tions, exemples et tu­to­riels pour ces so­lu­tions gra­phiques, d'aussi bonne qua­lité qu'on peut sou­hai­ter, presque tous li­bre­ment dis­po­nibles sur le web. Il existe même quelques livres sur le sujet, que je ci­te­rai à la fin de cette série d'ar­ticles. Mais il y a en re­vanche peu de sources d'in­for­ma­tion qui nous in­diquent com­ment faire tour­ner tout cela sur notre pla­te­forme fa­vo­rite. Concer­nant LaTeX, Mac OS X a hélas tou­jours été un peu dé­laissé par les do­cu­men­ta­tions et ma­nuels, les­quels pré­fèrent en gé­né­ral consi­dé­rer les ou­tils LaTeX de Win­dows ou Linux. Cette série d'ar­ticles sou­haite donc contri­buer à com­bler cette la­cune.

PS­Tricks

De toutes les so­lu­tions LaTeX de des­sin hors l'en­vi­ron­ne­ment pic­ture, PS­Tricks est la plus an­cienne avec mfpic qui à l'époque (1992) ne tour­nait qu'avec Me­ta­Font. Elle a été créée par l'Amé­ri­cain Ti­mo­thy van Zandt et est au­jour­d'hui main­te­nue par l'Al­le­mand Her­bert Voß.

Comme Me­ta­Post, PS­Tricks se base sur le lan­gage Post­Script pour pro­duire ses des­sins. Mais contrai­re­ment à Me­ta­Post, qui est un pro­gramme ex­terne à LaTeX com­pre­nant son propre lan­gage, PS­Tricks est un « pa­quet » de com­mandes LaTeX, cha­cune d'entre elles pro­dui­sant un code Post­Script.

Les com­mandes Post­Script uti­li­sées par PS­Tricks fai­sant, contrai­re­ment à celles de Me­ta­Post, in­ter­ve­nir des cal­culs, PS­Tricks est in­com­pa­tible avec pd­fLa­TeX et Lua­La­TeX. Il fonc­tionne le plus di­rec­te­ment avec le che­min de com­po­si­tion tra­di­tion­nel TeX+ dvips, qui pro­duit d'abord un fi­chier DVI puis un fi­chier Post­Script avec l'ex­ten­sion .ps conte­nant entre autres les ins­truc­tions de des­sins de PS­Tricks tra­duites en Post­Script. En­suite on ap­plique ps2pdf de GhostS­cript (ou le Dis­til­ler d'Apple) pour ob­te­nir une sor­tie fi­nale en PDF conte­nant éga­le­ment les des­sins vou­lus. Ce che­min de com­po­si­tion est ap­pelé en abrégé « TeX et DVI » dans le menu « Com­po­si­tion » de TeX­Shop.

image

PS­Tricks fonc­tionne éga­le­ment di­rec­te­ment avec Xe­La­TeX et son dri­ver as­so­cié xd­vipdfmx, et on verra plus loin qu'il y a moyen de l'uti­li­ser, in­di­rec­te­ment, avec pd­fLa­TeX et (sous cer­taines res­tric­tions) avec Lua­La­TeX.

PS­Tricks est d'as­sez loin la so­lu­tion de des­sin pour LaTeX la plus com­plète et la plus riche en ex­ten­sions ac­tuel­le­ment. Il y a le « cœur » de PS­Tricks, le pa­quet ps­tricks pro­pre­ment dit, qu'il faut tou­jours char­ger en pre­mier et sur le­quel tous les autres pa­quets de la fa­mille PS­Tricks sont basés ; il y a en­suite les ex­ten­sions dites « de base » :

  • pst-plot pour les courbes de fonc­tions à une va­riable,
  • pst-tree pour les arbres et dia­grammes,
  • pst-3d pour les des­sins ba­siques en 3D,
  • pst-coil pour les connec­tions de nœuds de graphes avec zig­zags et res­sorts,
  • pst-text pour écrire des textes le long de courbes et rem­plir des ca­rac­tères selon la fan­tai­sie de l'au­teur,
  • pst-eps pour créer des fi­chiers EPS cor­res­pon­dant à chaque des­sin,
  • pst-fill per­met­tant des ins­truc­tions de rem­plis­sage so­phis­ti­quées,
  • mul­tido qui four­nit une com­mande per­met­tant d'exé­cu­ter des ins­truc­tions en boucle ;

et une mul­ti­tude d'autres pa­quets af­fec­tés à des tâches plus ou moins spé­ci­fiques : pst-eucl pour la géo­mé­trie eu­cli­dienne, pst-circ pour les des­sins de cir­cuits élec­triques, pst-op­tic pour l'op­tique, pst-3d­plot pour les courbes et sur­faces en 3D, etc.

Nous al­lons ce­pen­dant nous li­mi­ter au tracé de la simple pa­ra­bole y = x2 que nous avions déjà ef­fec­tué avec mfpic et Me­ta­Post, et nous ne fe­rons appel pour cela qu'à deux pa­quets de cette col­lec­tion outre ps­tricks : pst-plot, le­quel traite des courbes de fonc­tions mais éga­le­ment des axes de re­pères, des courbes de don­nées, des courbes pa­ra­mé­trées, etc.) et mul­tido car nous uti­li­se­rons une boucle. Voici ce que donne notre code de des­sin de pa­ra­bole en PS­Tricks :

% !TEX en­co­ding = UTF-8 Uni­code
% !TEX TS-pro­gram = LaTeX

\do­cu­ment­class[12pt]{ar­ticle}
%
\use­pa­ckage[utf8]{in­pu­tenc}
%
\use­pa­ckage{ps­tricks, pst-plot, mul­tido}
%
\begin{do­cu­ment}
%
\begin{ps­pic­ture}(-2.75,-0.5)(2.75, 5)
    % Ins­truc­tions de confi­gu­ra­tion gé­né­rale
    \psset{unit = 1.25cm, la­bel­sep = 3pt}
    % Tracé des axes
    \psaxes[la­bels = none, ticks = none]%
        {->}(0,0)(-2.75,-0.5)(2.75, 5)
    % Tracé de la courbe
    \ps­plot[plot­style = curve, li­ne­co­lor = red]%
        {-2.2}{2.2}{x 2 exp}
    % Lignes ti­re­tées
    \ps­line[li­ne­style = da­shed](2, 0)(2, 4)(-2, 4)(-2, 0)
    % Marques sur les axes
    \ps­line(1, -3pt)(1, 3pt)
    \ps­line(-1, -3pt)(-1, 3pt)
         % Marques tra­cées en boucle
    \mul­tido{\i=1+1}{3}{\ps­line(-3pt, \i)(3pt, \i)}
    % La­bels
    \uput[dl](0, 0){$O$}
    \uput[d](2.75, 0){$x$}
    \uput[l](0, 5){$y$}
    \uput[ul](0, 4){$4$}
    \uput[d](2, 0){$2$}
    \uput[d](-2, 0){$-2$}
    %
\end{ps­pic­ture}
%
\end{do­cu­ment}

Tout d'abord, quelques mots sur la syn­taxe. En je­tant un œil sur le fi­chier LaTeX, quelque chose vous aura sauté aux yeux : du ps de par­tout ! Et pas celui du Parti so­cia­liste, mais celui de Post­Script bien sûr, celui qui fi­gure dans le mot PS­Tricks lui-même.

Pour chaque schéma, les ins­truc­tions de des­sins de PS­Tricks doivent être in­cluses dans un en­vi­ron­ne­ment ps­pic­ture, comme celui de notre pro­gramme :

\begin{ps­pic­ture}(-2.75,-1)(2.75, 5)

\end{ps­pic­ture}

Les deux paires de co­or­don­nées qui suivent l'ap­pel de cet en­vi­ron­ne­ment pré­cisent res­pec­ti­ve­ment le point in­fé­rieur gauche et le point su­pé­rieur droit du des­sin, ce qui per­met­tra à LaTeX de dé­li­mi­ter une boîte rec­tan­gu­laire qui lui sera ré­ser­vée comme place dans le fi­chier de sor­tie. Bien faire at­ten­tion à ce que le des­sin ne sorte pas du rec­tangle, sinon il risque de « mordre » dans le texte qui l'en­vi­ronne (à moins que l'en­vi­ron­ne­ment ps­pic­ture soit placé en de­hors du cours du texte, par exemple dans un en­vi­ron­ne­ment cen­ter).

Vous aurez sû­re­ment noté que cer­taines com­mandes ont des op­tions pré­ci­sant cer­tains pa­ra­mètres du des­sin selon une syn­taxe du genre pa­ra­mètre = va­leur. Cette syn­taxe est per­mise par le pa­quet xkey­val, chargé au­to­ma­ti­que­ment par ps­tricks. Elle est un des points forts de PS­Tricks, car elle rend ses com­mandes par­ti­cu­liè­re­ment flexibles d'em­ploi.

Si on sou­haite ef­fec­tuer des pa­ra­mé­tri­sa­tions va­lables pour plu­sieurs ins­truc­tions de des­sin, il faut les in­clure en ar­gu­ment d'une com­mande \psset. Cette com­mande concerne les ins­truc­tions PS­Tricks qui la suivent et son effet se li­mite au groupe LaTeX qui la contient. Dans le cas de notre pro­gramme, c'est l'en­vi­ron­ne­ment ps­pic­ture qui consti­tue ce groupe, puisque \psset est placé juste au début de cet en­vi­ron­ne­ment. Mais elle au­rait pu se trou­ver en de­hors : par exemple, s'il y a plu­sieurs sché­mas, on peut si on le sou­haite faire en sorte que l'ins­truc­tion \psset les af­fecte tous en la pla­çant juste après le début de l'en­vi­ron­ne­ment do­cu­ment.

Dans l'ins­truc­tion

\ps­plot[plot­style = curve, li­ne­co­lor = red]%
        {-2.2}{2.2}{x 2 exp}

qui tra­cera notre fonc­tion, re­mar­quez la no­ta­tion dite po­lo­naise in­verse de l'ex­pres­sion de la fonc­tion car­rée : x 2 exp. Les opé­randes d'abord, l'opé­ra­teur en­suite ! C'est en fait avec cette syn­taxe que se font toutes les opé­ra­tions dans le lan­gage Post­Script. Les uti­li­sa­teurs de bonnes vieilles cal­cu­la­trices TI ou HP ne se­ront pas dé­pay­sés ! Pour ceux qui pré­fèrent la syn­taxe ha­bi­tuelle, alias « no­ta­tion in­fixe », il existe heu­reu­se­ment le pa­quet pst-in­fix­plot qui leur per­met­tra de l'uti­li­ser dans PS­Tricks.

Je n'entre pas dans le dé­tail des autres com­mandes, dont le rôle est pré­cisé dans les com­men­taires du fi­chier LaTeX.

Il est temps de pas­ser à l'exé­cu­tion de notre pro­gramme. Sau­ve­gar­dez-le, par exemple sous le nom de pstricks-parabole.​tex, et com­po­sez-le :

  • soit avec l'op­tion « LaTeX » du menu de com­po­si­tion, en ayant coché au­pa­ra­vant l'op­tion « TeX + DVI » du même menu,
  • soit tout sim­ple­ment par le rac­courci « com­mande-T » qui dé­clen­chera au­to­ma­ti­que­ment ici le même type de com­po­si­tion, puisque nous avons pris la pré­cau­tion d'in­di­quer dans notre pro­gramme l'op­tion LaTeX dans le com­men­taire spé­cial en deuxième ligne.

Voilà alors le ré­sul­tat :

image

De fa­çons gé­né­rale, re­mar­quez que le trait de des­sin est par dé­faut plus épais que pour mfpic et Me­ta­Post. C'est un choix dé­li­béré des concep­teurs de PS­Tricks, mais il est fa­cile de chan­ger ce style par dé­faut, pour tout le des­sin ou un élé­ment de ce­lui-ci. Pré­ci­sé­ment, il suf­fit d'in­clure le pa­ra­mètre li­ne­width en ar­gu­ment de \psset ou en op­tion d'une ins­truc­tion de tracé et de lui af­fec­ter l'épais­seur vou­lue.

Consi­dé­rons main­te­nant un des prin­ci­paux sou­cis liés à l'uti­li­sa­tion de PS­Tricks : son in­com­pa­ti­bi­lité avec pd­fLa­TeX.

Comme je l'ai dit plus haut, il est ce­pen­dant pos­sible d'uti­li­ser PS­Tricks avec pd­fLa­TeX, mais in­di­rec­te­ment. Il existe plu­sieurs fa­çons de le faire, et mon ex­pé­rience per­son­nelle m'a mon­tré que la moins mau­vaise meilleure est d'uti­li­ser le pa­quet auto-pst-pdf, en l'in­cluant en pré­am­bule de notre do­cu­ment, après le char­ge­ment des mo­dules de PS­Tricks :

\use­pa­ckage{auto-pst-pdf}

Une fois ceci ef­fec­tué, vous pou­vez com­po­ser votre fi­chier avec pd­fLa­TeX. auto-pst-pdf en­clenche alors au­to­ma­ti­que­ment (comme son nom l'in­dique) une suc­ces­sion d'étapes : tout d'abord la com­po­si­tion par la route tra­di­tion­nelle TeX + dvips, mais seuls les en­vi­ron­ne­ments pro­dui­sant du code Post­Script (ici ps­pic­ture) sont alors pris en compte. On ob­tient un fi­chier conte­nant le code Post­Script de la ou les fi­gures, le­quel fi­chier est alors converti en PDF par le pro­gramme ps2pdf. La ou les fi­gures sont alors in­di­vi­duel­le­ment ex­traites du fi­chier PDF ré­sul­tant grâce à un pro­gramme ap­pelé pdf­crop, et fi­na­le­ment in­cluses dans le fi­chier PDF final après com­po­si­tion fi­nale avec pd­fLa­TeX. Le tout en un seul clic de sou­ris. Ouf !

La seule contrainte im­po­sée par l'uti­li­sa­tion du pa­quet auto-pst-pdf sur le code PS­Tricks est que chaque com­mande \psset doit im­pé­ra­ti­ve­ment être conte­nue dans un en­vi­ron­ne­ment ps­pic­ture (ce qui est le cas dans notre exemple), sinon elle ne sera pas prise en compte. Ainsi, si on veut spé­ci­fier un pa­ra­mé­trage com­mun à toutes nos fi­gures Post­Script via une ins­truc­tion \psset, il fau­dra ré­pé­ter cette ins­truc­tion au­tant de fois qu'il y a d'en­vi­ron­ne­ment ps­pic­ture, c'est-à-dire de des­sins.

Le pa­quet auto-pst-pdf per­met éga­le­ment à Lua­La­TeX de fonc­tion­ner des des­sins issus de PS­Tricks, mais il y a alors une res­tric­tion ma­jeure : le pa­quet fonts­pec, qui per­met l'in­cor­po­ra­tion de po­lices du sys­tème d'ex­ploi­ta­tion, ne doit pas être chargé. Voyez ici pour pou­voir contour­ner ce nou­veau « stûûût » comme on dit ici en Bel­gique.

Ceci pré­cisé, il y a éga­le­ment un autre obs­tacle à lever, posé cette fois-ci par TeX­Shop : pour pou­voir en­clen­cher l'exé­cu­tion de tous les pro­grammes an­nexes dont il a be­soin, le pa­quet auto-pst-pdf né­ces­site que pd­fLa­TeX et Lua­La­TeX soient lan­cés avec l'op­tion shell-es­cape. Sous TeX­Shop, c'est par dé­faut le cas de pd­fLa­TeX mais pas de Lua­La­TeX. Il faut mo­di­fier en consé­quence le script « LuaLaTeX.​engine » fi­gu­rant dans le dos­sier ~/Li­brary/TeX­Shop/En­gines :

image

Pour y re­mé­diez, ou­vrez ce script dans votre édi­teur de texte fa­vori, et ajou­ter l'op­tion shell-es­cape à la ligne d'ap­pel de lua­la­tex qui s'y trouve. Comme ceci :

lua­la­tex -file-line-er­ror --shell-es­cape -sync­tex=1 "$1"

Et le tour est joué.

Pour plus de pré­ci­sion sur le fonc­tion­ne­ment du pa­quet auto-pst-pdf, vous pou­vez jeter un œil sur son mode d'em­ploi (en an­glais).

Notez pour finir que cer­taines ru­meurs font état d'une pos­sible in­cor­po­ra­tion d'un in­ter­pré­teur Post­Script dans Lua­TeX, ce qui ren­drait Lua­La­TeX di­rec­te­ment com­pa­tible avec PS­Tricks. Mais on n'en est pas en­core là…

Pour ceux qui sou­haitent en sa­voir plus sur PS­Tricks, outre les ou­vrages de ré­fé­rence cités en fin d'ar­ticle il y a sur le web trois adresses in­con­tour­nables : le site of­fi­ciel de PS­Tricks qui liste tous ses pa­quets et qui en montre bien toute la puis­sance et la ri­chesse, et la sec­tion du site Sy­ra­cuse consa­crée à PS­Tricks, avec une ma­gni­fique ga­le­rie de des­sins. Enfin, le pro­jet Sa­ro­var pro­pose un ex­cellent tu­to­riel d'ap­pren­tis­sage de PS­Tricks par l'exemple, en plu­sieurs par­ties à té­lé­char­ger ici.

Tikz

Tikz est un pa­quet LaTeX créé par l'Al­le­mand Till Tan­tau, par ailleurs au­teur de Bea­mer, en 2006. De toutes les so­lu­tions gra­phiques pré­sen­tées ici, c'est la plus ré­cente. Elle a néan­moins connu très vite un cer­tain suc­cès dans la com­mu­nauté TeX, et est déjà très riche en fonc­tion­na­li­tés de toutes sortes, même si elle est en­core assez loin de PS­Tricks à ce ni­veau (pri­vi­lège de l'âge).

Le nom de ce pa­quet peut vous sem­bler par­ti­cu­lier : en fait, « Tikz » est un acro­nyme ré­cur­sif si­gni­fiant Tikz ist kein Zei­chen­pro­gramm, al­le­mand pour « Tikz n'est pas un pro­gramme de des­sin ». C'est un clin d'œil ap­puyé à l'acro­nyme éga­le­ment ré­cur­sif du fa­meux pro­jet Gnu, qui si­gni­fie « Gnu is Not Unix » et dont Tikz re­prend la li­cence Gnu GPL (en plus de la li­cence LPPL propre à LaTeX). Dans le cas de Tikz, Till Tan­tau veut si­gni­fier avec ce jeux de mots que son pro­gramme est des­tiné à faire des sché­mas de type scien­ti­fique plu­tôt que l'équi­valent de des­sins ar­tis­tiques « à la main ».

Tikz est après l'en­vi­ron­ne­ment pic­ture la so­lu­tion gra­phique la mieux in­té­grée à LaTeX, la plus por­table. Elle fonc­tionne en effet avec tous les mo­teurs TeX et tous leurs dé­ri­vés LaTeX. Elle n'est (ac­tuel­le­ment) in­com­pa­tible qu'avec ConTeXt-mkIV, la der­nière ver­sion de ConTeXt, mais cette in­com­pa­ti­bi­lité est en fait va­lable pour toutes les so­lu­tions gra­phiques pré­sen­tées dans cette série d'ar­ticles, Me­ta­Post et Asymp­tote ex­cep­tés (Me­ta­Post étant même car­ré­ment in­té­gré à ConTeXt).

La grande por­ta­bi­lité de Tikz vient de sa concep­tion en trois couches dis­tinctes : l'in­ter­face uti­li­sa­teur (Tikz pro­pre­ment dit), le pa­quet d'ins­truc­tions gra­phiques PGF (Por­table Gra­phic For­mat) dont Tikz est un en­semble de ma­cros plus ac­ces­sibles à l'uti­li­sa­teur, et enfin la « couche sys­tème » sur la­quelle PGF lui-même est basé, un en­semble mi­ni­mal d'ins­truc­tions gra­phiques fa­ci­le­ment tra­dui­sibles en les dif­fé­rents lan­gages spé­ci­fiques à chaque « pi­lote » (dri­ver) TeX, qu'il s'agisse de dvips, pdf­Tex et Lua­TeX (qui ont tous les deux leur propre pi­lote), xd­vipdfmx (pi­lote de XeTeX), etc.

Notez qu'il est par­fai­te­ment pos­sible de construire sur PGF d'autres in­ter­faces uti­li­sa­teur que Tikz : en fait, il en existe déjà une autre, PGF­pict2e, qui re­prend exac­te­ment les com­mandes de l'en­vi­ron­ne­ment pic­ture et lui donne les mêmes fonc­tion­na­li­tés que celles que lui oc­troie le pa­quet pict2e, dont j'ai briè­ve­ment parlé dans l'ar­ticle pré­cé­dent. Mais il s'agit plus d'un exer­cice de style que quelque chose de vrai­ment utile par rap­port à pict2e. Till Tan­tau rêve de construire éga­le­ment une in­ter­face uti­li­sa­teur à PGF re­pre­nant, au moins en par­tie, les ins­truc­tions de PS­tricks, mais cela reste un vœu pieux à ce jour.

Après cette courte pré­sen­ta­tion, pas­sons à notre exemple gra­phique. Voici ce que donne le code de notre re­pré­sen­ta­tion de la fonc­tion y = x2 en Tikz :

% !TEX en­co­ding = UTF-8 Uni­code
\do­cu­ment­class[12pt]{ar­ticle}
%
\use­pa­ckage{tikz}
%
\begin{do­cu­ment}
%
\begin{tikz­pic­ture}[scale = 1.25]
    % Tracé de la pa­ra­bole
    \draw[red, do­main = -2.2:2.2, smooth] plot (\x, {(\x)^2});
    % Al­ter­na­tive par Gnu­plot
    %\draw[red, do­main = -2.2:2.2, smooth] plot func­tion{x**2};

    % Lignes ti­re­tées
    \draw[da­shed] (2, 0) -- (2, 4) -- (-2, 4) -- (-2, 0);
    % Axes et leurs la­bels
    \draw[->] (-2.75, 0) -- (2.75, 0) node[below]{$x$};
    \draw[->] (0, -0.5) -- (0, 5) node[left]{$y$};
    % Marques sur les axes et la­bels cor­res­pon­dants
    \draw (2, 2pt) -- (2, -2pt) node[below]{$2$};
    \draw (1, 2pt) -- (1, -2pt);
    \draw (-1,2pt) -- (-1, -2pt);
    \draw (-2, 2pt) -- (-2, -2pt) node[below]{$-2$};
         % Marques tra­cées en boucle
    \fo­reach \y in {1, 2, 3}
        \draw (2pt, \y) -- (-2pt, \y);
    % Autres la­bels
    \draw (0, 0) node[below left]{$O$};
    \draw (0, 4) node[above left]{$4$};
    %
\end{tikz­pic­ture}
%
\end{do­cu­ment}

Notez la syn­taxe vrai­ment par­ti­cu­lière des ins­truc­tions Tikz. Le connais­seur y re­père ai­sé­ment des élé­ments em­prun­tés à Me­ta­Post, comme dans l'usage du point-vir­gule pour in­di­quer la fin de chaque ins­truc­tion. Et une com­mande comme

\draw (-1, 2pt) -- (-1, -2pt);

se­rait une pure ins­truc­tion Me­ta­Post s'il n'y avait pas la contre-oblique « \ » si ca­rac­té­ris­tique du monde de TeX.

On de­vine que PS­Tricks a éga­le­ment ins­piré l'au­teur, comme dans l'usage per­mis d'ar­gu­ments op­tion­nels du style pa­ra­mètre = va­leur. Quant au nom même de l'en­vi­ron­ne­ment tikz­pic­ture, il fait clai­re­ment ré­fé­rence au ps­pic­ture de PS­Tricks. Le code d'un des­sin Tikz se trouve en effet ty­pi­que­ment dans un en­vi­ron­ne­ment tikz­pic­ture, comme pour son ana­logue de PS­Tricks :

\begin{tikz­pic­ture}[scale = 1.25]

\end{tikz­pic­ture}

Contrai­re­ment à PS­Tricks et sa com­mande \psset, ce sont les op­tions de cet en­vi­ron­ne­ment qui servent de pa­ra­mé­trage glo­bal au des­sin. Ici l'op­tion scale=1.25 in­dique que le graphe est à agran­dir selon un fac­teur de 1,25, l'unité par dé­faut d'un graphe Tikz étant le cen­ti­mètre. Mais chaque com­mande de Tikz peut dis­po­ser d'ar­gu­ments op­tion­nels qui ou­tre­passent si né­ces­saire ce pa­ra­mé­trage gé­né­ral.

Comme d'ha­bi­tude, pour le reste des ex­pli­ca­tions sur ce que fait chaque com­mande, voyez les com­men­taires du pro­gramme lui-même. Main­te­nant, sau­ve­gar­dez ce pro­gramme si ce n'est pas déjà fait, par exemple sous le nom de tikz-parabole.​tex, et exé­cu­tez-le. Quel que soit le type de LaTeX que vous uti­li­siez (LaTeX clas­sique, pd­fLa­TeX, Xe­La­TeX, Lua­La­TeX…), le ré­sul­tat de­vrait être le sui­vant :

image

Notez la fi­nesse du trait par dé­faut, par rap­port à PS­Tricks. En fait il est car­ré­ment deux fois moins épais, 0,4 pt d'épais­seur contre 0,8 pt.

Cela peut d'ailleurs re­pré­sen­ter un pro­blème si on ne dis­pose que d'un écran ou d'une im­pri­mante à ré­so­lu­tion basse : cer­taines par­ties du des­sin peuvent alors ne pas ap­pa­raître du tout, par­ti­cu­liè­re­ment à l'écran. Mais avec les pé­ri­phé­riques dont on dis­pose ac­tuel­le­ment, c'est très peu pro­bable, et de toutes fa­çons on peut fa­ci­le­ment chan­ger l'épais­seur du trait par dé­faut si vrai­ment cela est né­ces­saire. Il suf­fit de chan­ger la va­leur du pa­ra­mètre line width en op­tion de de l'en­vi­ron­ne­ment tikz­pic­ture (on peut aussi l'uti­li­ser en op­tion d'une com­mande de des­sin par­ti­cu­lière si on ne sou­haite mo­di­fier que l'épais­seur du trait que cette com­mande pro­duit).

Le prin­ci­pal in­con­vé­nient de Tikz est ailleurs : il s'agit de ses ca­pa­ci­tés de cal­cul assez li­mi­tées. En effet, il dé­pend de TeX pour ses cal­culs, et TeX n'a pas été ini­tia­le­ment prévu pour cela : c'est un for­ma­teur de texte et non une cal­cu­la­trice so­phis­ti­quée !

Pre­nons un exemple concret met­tant en évi­dence ce pro­blème : la ges­tion par Tikz des courbes de Bé­zier, sou­vent uti­li­sées pour la créa­tion de courbes d'in­ter­po­la­tion (courbes plus ou moins ré­gu­lières de­vant pas­ser par plu­sieurs points don­nés). Pour construire une courbe d'in­ter­po­la­tion avec la tech­nique des courbes de Bé­zier, on a na­tu­rel­le­ment be­soin de connaître les co­or­don­nées des points d'in­ter­po­la­tion (les points par les­quels cette courbe d'in­ter­po­la­tion doit pas­ser), mais on a éga­le­ment be­soin de connaître les co­or­don­nées d'autres points, qui a priori ne se trouvent pas sur la courbe et qu'on ap­pelle « points de contrôle ».

Or il y a deux points de contrôle à pré­ci­ser par point d'in­ter­po­la­tion (sauf pour chaque ex­tré­mité de la courbe où il n'en faut qu'un). Et tan­dis que Me­ta­Post et Asymp­tote (et sans doute PS­Tricks, je n'ai pas vé­ri­fié) cal­culent eux-mêmes les co­or­don­nées adé­quates pour ces points de contrôle, Tikz en est in­ca­pable et il re­vient donc à l'uti­li­sa­teur de lui four­nir ces co­or­don­nées.

Certes, c'est un dé­tail tech­nique, qui n'est pas rédhi­bi­toire et qui est loin de concer­ner tous les uti­li­sa­teurs po­ten­tiels de Tikz. Si j'en parle, c'est que je fais moi-même un usage in­ten­sif des fa­ci­li­tés qu'offre Me­ta­Post pour construire des courbes de Bé­zier, et que l'ab­sence de ces fa­ci­li­tés dans Tikz est de loin la prin­ci­pale rai­son pour la­quelle je n'ai pas adopté ce pa­quet gra­phique et suis resté fi­dèle à mfpic/Me­ta­Post.

Un autre in­con­vé­nient po­ten­tiel de Tikz concerne les courbes de fonc­tions et les courbes pa­ra­mé­trées. La gamme ac­tuelle de fonc­tions qu'on peut tra­cer est déjà re­la­ti­ve­ment éten­due (cf. ré­fé­rences ci­tées plus bas), mais si la fonc­tion est un tant soit peu « tor­due », le ma­nuel de Tikz re­com­mande de pas­ser par un outil ex­terne ap­pelé Gnu­plot, le­quel est une sorte de cal­cu­la­trice gra­phique en ligne de com­mande très per­fec­tion­née. C'est Gnu­plot qui cal­cu­lera alors les co­or­don­nées des points du graphe de la fonc­tion, et qui les trans­met­tra à Tikz pour tra­cer le graphe pro­pre­ment dit.

Or l'ins­tal­la­tion de Gnu­plot sur OS X n'est pas for­cé­ment évi­dente. On peut pas­ser par le site de Gnu­plot in­di­qué plus haut (mais alors il faut com­pi­ler les sources) par Fink (ne marche pas chez moi) ou par Mac­Ports (pas es­sayé). Ce que j'ai en­core trouvé de plus simple, c'est d'uti­li­ser la ver­sion de Gnu­plot spé­cia­le­ment com­pi­lée pour Mac OS X qui est four­nie en même temps que l'ap­pli­ca­tion de cal­cul for­mel (ex­cel­lente, libre et gra­tuite) wx­Maxima.

Té­lé­char­gez donc la ver­sion Mac OS X de wx­Maxima ici. Un fi­chier « Maxima 5.​25.​0.​dmg » de­vrait ar­ri­ver dans votre dos­sier « Té­lé­char­ge­ments » ou sur votre bu­reau. Après l'avoir dé­com­pressé, vous ver­rez qu'il contient six élé­ments, dont notre Gnu­plot :

image

Je sup­pose que vous n'avez pas be­soin d'un lo­gi­ciel de cal­cul for­mel comme Maxima ni de son in­ter­face wx­Maxima, donc conten­tez-vous d'ins­tal­ler seule­ment Gnu­plot dans le dos­sier « Ap­pli­ca­tions ». Le voilà prêt à être uti­lisé ! Pour ceux qui veulent se ser­vir de cette cal­cu­lette gra­phique en de­hors de Tikz, il suf­fit de double-cli­quer sur l'icône de Gnu­plot pour en ou­vrir une ses­sion… en ligne de com­mande, je le rap­pelle.

Mais dans notre cas, c'est l'uti­li­sa­tion par Tikz qui nous in­té­resse, via TeX­Shop. Et il faut donc faire en sorte que Tikz, par le biais de TeX­Shop, puisse uti­li­ser notre Gnu­plot. Mais pour cela, il faut que le che­min d'ac­cès de l'exé­cu­table de Gnu­plot, ici

/Ap­pli­ca­tions/Gnuplot.​app/​Contents/​Resources/​bin

soit in­clus dans le « PATH » in­terne de re­cherche d'exé­cu­tables de TeX­Shop, ce qui n'est pas le cas. Le seul moyen de ré­soudre le pro­blème est de pas­ser par la créa­tion d'un en­gine TeX­Shop spé­ci­fique. Ou­vrez votre édi­teur de texte fa­vori, et en­trez-y le code sui­vant :

#!/bin/tcsh
set path = (/Ap­pli­ca­tions/Gnuplot.​app/​Contents/​Resources/​bin $path)
pd­fla­tex --shell-es­cape -sync­tex=1 "$1"

(j'ai sup­posé dans ce fi­chier que vous uti­li­sez pd­fLa­TeX pour com­pi­ler votre gra­phique). Sau­ve­gar­dez votre fi­chier sous un nom avec l'ex­ten­sion .en­gine, par exemple pdfLaTeX-Gnuplot.​engine et pla­cez-le dans le dos­sier « En­gines » du dos­sier « TeX­Shop » de votre Bi­blio­thèque per­son­nelle (là où se trouve le script « LuaLaTeX.​engine » qu'on a mo­di­fié plus haut).

Main­te­nant, ou­vrez le Ter­mi­nal et char­gez le ré­per­toire des en­gines de TeX­Shop en en­trant l'ins­truc­tion

cd ~/Li­brary/TeX­Shop/En­gines

En­suite, en­trez la com­mande

chmod u+x pdfLaTeX-Gnuplot.​engine

pour ac­ti­ver le « bit d'exé­cu­tion » de ce nou­vel en­gine de l'uti­li­sa­teur cou­rant. Concrè­te­ment, cela si­gni­fie que Mac OS X vous au­to­ri­sera à l'exé­cu­ter, di­rec­te­ment ou via TeX­Shop.

Une fois ceci ef­fec­tué, quit­tez TeX­Shop et re­dé­mar­rez-le. Vous aurez alors accès à cet en­gine et à son exé­cu­tion en uti­li­sant le menu dé­rou­lant de com­po­si­tion de votre fe­nêtre d'édi­tion.

image

Vé­ri­fiez que cela marche dans notre pro­gramme LaTeX en dé­com­men­tant l'ins­truc­tion de tracé de la fonc­tion par Gnu­plot,

%\draw[red, do­main = -2.2:2.2, smooth] plot func­tion{x**2};

(oui Guillôme, c'est bien x**2 et pas x^2 parce qu'ici c'est la syn­taxe de Gnu­plot qui doit être em­ployée et pas celle de LaTeX !) puis en com­men­tant l'ins­truc­tion sem­blable qui n'uti­lise pas Gnu­plot, si­tuée deux lignes au-des­sus,

\draw[red, do­main = -2.2:2.2, smooth] plot (\x, {(\x)^2});

et enfin en exé­cu­tant à nou­veau le pro­gramme avec l'en­gine pd­fLa­TeX-Gnu­plot. Nor­ma­le­ment, la pa­ra­bole de­vrait à nou­veau ap­pa­raître, mais cette fois-ci les points par les­quels passent cette courbe au­ront été cal­cu­lés par Gnu­plot, et non par TeX. En­core une fois, pour une fonc­tion simple comme celle-ci, ça n'était pas vrai­ment né­ces­saire, mais cela au­rait pu l'être si la fonc­tion avait été d'ex­pres­sion com­pli­quée.

Ces in­con­vé­nients pour­raient être levés dans le cas de l'uti­li­sa­tion de Tikz dans Lua­La­TeX : on pour­rait en effet (théo­ri­que­ment) faire ef­fec­tuer les cal­culs né­ces­saires par le lan­gage de script Lua qui lui est in­cor­poré. Mal­heu­reu­se­ment, à l'heure où je ré­dige cet ar­ticle cette fonc­tion­na­lité n'a pas en­core été im­plé­men­tée.

Si vous avez été al­lé­ché par cette pré­sen­ta­tion de Tikz, vous pou­vez allez plus loin en li­sant l'ex­cellent livre au for­mat PDF Tikz pour l'im­pa­tient de Gé­rard Tis­seau et Jacques Duma, li­bre­ment dis­tri­bué. Vous pou­vez éga­le­ment (c'est même vi­ve­ment re­com­mandé) consul­ter la do­cu­men­ta­tion of­fi­cielle de Tikz, par Till Tan­tau lui-même. Celle-ci ne se contente pas d'être un ma­nuel de ré­fé­rence très com­plet, elle com­prend éga­le­ment un ex­cellent tu­to­riel pour s'ini­tier aux prin­ci­pales com­mandes et un pré­cieux Gui­de­line pour la créa­tion de des­sins scien­ti­fiques qui peut éga­le­ment être utile à ceux qui n'uti­lisent pas Tikz. Enfin, n'hé­si­tez pas à fouiller dans l'im­mense ga­le­rie d'exemples de des­sins Tikz du site TeXample.​net, dont les sources sont té­lé­char­geables.

Voilà pour cette pré­sen­ta­tion longue, mais ce­pen­dant suc­cincte au vu de leurs pos­si­bi­li­tés, des pa­quets LaTeX de des­sin PS­Tricks et Tikz. Le mois pro­chain, je ter­mi­ne­rai donc cette série d'ar­ticles par la pré­sen­ta­tion d'Asymp­tote, qui est elle, comme Me­ta­Post, une ap­pli­ca­tion ex­terne à LaTeX mais spé­cia­le­ment conçue pour fonc­tion­ner de conserve avec lui. Je fe­rais enfin dans cet ar­ticle un bilan com­pa­ra­tif des so­lu­tions gra­phiques que je vous aurai pré­sen­tées.

32 com­men­taires
1)
Ca­plan
, le 29.12.2011 à 00:41

Ah ouais! PS­tricks et Tikz! Je connais la BD!

2)
flup
, le 29.12.2011 à 09:04

Très in­té­res­sant, comme tou­jours :)

Mes be­soins gra­phiques étant li­mi­tés, j’uti­lise Tikz qui me semble le plus simple à abor­der (exemple : des­si­ner le “cycle des quintes” pour des élèves de for­ma­tion mu­si­cale). Ce que j’ap­pré­cie (mais j’ima­gine que les autres sys­tèmes le font aussi), c’est la pos­si­bi­lité d’in­clu­sion de fi­chiers (pdf ou autres) dans le des­sin lui-même.

J’ai donc en gé­né­ral la construc­tion sui­vante : code LaTeX conte­nant du code Tikz conte­nant lui-même du code Li­ly­Pond (par­ti­tions mu­si­cales).

In code we trust :p

3)
Franck Pas­tor
, le 29.12.2011 à 09:34

Ca­plan, tu veux bien illus­trer mon pro­chain ar­ticle ? :-)

Mes be­soins gra­phiques étant li­mi­tés, j’uti­lise Tikz qui me semble le plus simple à abor­der (exemple : des­si­ner le “cycle des quintes” pour des élèves de for­ma­tion mu­si­cale). Ce que j’ap­pré­cie (mais j’ima­gine que les autres sys­tèmes le font aussi), c’est la pos­si­bi­lité d’in­clu­sion de fi­chiers (pdf ou autres) dans le des­sin lui-même.

PS­tricks ne le fait pas aussi bien, il n’in­clut que des des­sins ex­ternes Post­Script. Asymp­tote aussi ap­pa­rem­ment, d’après mes pre­mièrs in­ves­ti­ga­tions. Me­ta­Post non, mais il per­met l’in­clu­sion de des­sins ex­ternes PDF, PNG et JPEG si on fait appel à son ex­ten­sion Me­ta­Fun, dont j’ai parlé dans l’ar­ticle pré­cé­dent.

4)
JPO1
, le 29.12.2011 à 10:07

Comme flup j’uti­lise Tikz pour com­men­ter des images en for­mat pdf.

J’uti­lise aussi les deux pa­ckages pgf­plots et pgf­plots­table basée sur Tikz afin d’au­to­ma­ti­ser par des ma­cros simples la pro­duc­tion de ta­bleaux et de graphes en par­tant de fi­chiers de don­nées txt, avec une grande sou­plesse. Dans un rap­port an­nuel une ving­taine de graphes et le double de ta­bleaux sont des nombres vite at­teints. Des don­nées sur les 365 jours de l’an­née sont cou­rantes dans mon mé­tier, et pour­tant tout cela est com­pilé avec ra­pi­dité. Avec ces ou­tils à ma dis­po­si­tion j’ai aban­donné Gnu­plot, je n’ai à pro­duire que des gra­phiques simples.

Il est vrai que j’ai tou­jours un faible pour post­script sans doute parce que j’ai ap­pris à m’en ser­vir très tôt, je trouve ce lan­gage très « in­tel­li­gent ». Mais pdf a pris le des­sus et je ne sais pas pro­gram­mer en pdf, aussi suis-je content que des pro­gram­meurs mettent gra­cieu­se­ment à ma dis­po­si­tion ces ou­tils qui me fa­ci­litent le tra­vail. Merci à tous.

J’at­tends avec im­pa­tience l’ar­ticle sur Asymp­tote.

5)
Fran­çois Cuneo
, le 29.12.2011 à 14:05

Alors il est beau ce­lui-là!

Merci Franck.

Noé, NOOOEEEE, t’as vu re­voilà un long test!

6)
jpg
, le 30.12.2011 à 01:12

Sur or­di­na­teur, il est tou­jours dif­fi­cile d’ajou­ter de pe­tites illus­tra­tions, de faire de cro­quis. Bien da­van­tage avec LaTex. PS­tricks et Tikz offrent des so­lu­tions simples au moins pour des fi­gures élé­men­taires. Merci pour cet ar­ticle très clair. Je suis im­pa­tient de lire l’ar­ticle sur Asymp­tote.

7)
dj­trance
, le 30.12.2011 à 07:48

Dé­ci­dem­ment, Franck n’ar­ri­vera ja­mais à me faire pas­ser à LaTeX, mal­gré la puis­sance de la bête! :)

Merci pour ce loooooooonnnng test très ins­truc­tif :)

8)
ReReX
, le 30.12.2011 à 09:06

Ça marche aussi pour les masques de films d’hor­reur? Pous­sez pas je sors…

9)
Franck Pas­tor
, le 31.12.2011 à 17:39

Merci pour vos com­men­taires (même sar­cas­tiques :-)). Dé­solé pour le re­tard à ré­agir, je suis en­core dans les car­tons de dé­mé­na­ge­ments et n’ai pas en­core de connexion in­ter­net dans mon nou­veau chez-moi. J’écris de­puis un café-in­ter­net… sur Win­dows
:-(

L’ar­ticle pour Asymp­tote est pour le mois pro­chain, il est déjà bien avancé d’ailleurs.

Il est vrai que j’ai tou­jours un faible pour post­script sans doute parce que j’ai ap­pris à m’en ser­vir très tôt, je trouve ce lan­gage très « in­tel­li­gent ». Mais pdf a pris le des­sus et je ne sais pas pro­gram­mer en pdf, aussi suis-je content que des pro­gram­meurs mettent gra­cieu­se­ment à ma dis­po­si­tion ces ou­tils qui me fa­ci­litent le tra­vail. Merci à tous.

D’après ce que j’ai ouï dire, PDF contrai­re­ment à Post­Script ne se­rait pas un vrai lan­gage de pro­gram­ma­tion puis­qu’il n’au­rait pas de cal­cu­la­teur in­té­gré. Ca n’au­rait donc guère d’in­té­rêt de pro­gram­mer di­rec­te­ment en PDF.

10)
veyne
, le 07.01.2012 à 17:22

Bon­jour et d’abord un grand merci pour tous ces ar­ticles pas­sion­nant sur LaTeX qui m’ont bien aidés de­puis pas mal de temps déjà…. jus­qu’au bon­heur en­trevu enfin de réus­sir à uti­li­ser gnu­plot dont la dif­fi­culté d’ins­tal­la­tion m’avait tou­jours re­buté jus­qu’alors. Je suis to­ta­le­ment sa­tis­fait par tikz et il ne me man­quait que ça pour tes­ter des hor­reurs du style (sin(1/x))/x et autre…. Je crois avoir suivi à la lettre la pro­cé­dure d’ins­tal­la­tion, j’ai bien accès au nou­vel en­gine mais quand je com­pose, j’ai droit à ce mes­sage : ”/Users/veyne/Li­brary/TeX­Shop/En­gines/pdfLaTeX-Gnuplot.​engine ne pos­sède pas le bit d’exé­cu­tion ac­tivé.” Mes­sage qui me laisse per­plexe. Quel est ce bit d’exé­cu­tion ?

11)
Franck Pas­tor
, le 07.01.2012 à 17:40

Ah zut, zut et zut, j’avais ou­blié de par­ler de ça !

Je ne vais pas en­trer dans les dé­tails du pour­quoi du com­ment, c’est en fait une pro­blé­ma­tique concer­nant les tré­fonds unixiens du sys­tème : celle des « per­mis­sions et au­to­ri­sa­tions » ré­gis­sant l’uti­li­sa­tion d’un fi­chier.

Di­sons en sim­pli­fiant que l’uti­li­sa­teur (vous) doit être « au­to­risé » par le sys­tème à exé­cu­ter ce fi­chier pdfLaTeX-Gnuplot.engine. Pour ce faire, ce n’est pas trop com­pli­qué. Ou­vrez le Ter­mi­nal, pla­cez-vous dans le ré­per­toire des En­gines de TeX­Shop en en­trant l’ins­truc­tion

cd ~/Library/TeXShop/Engines

et en­suite en­trez la com­mande

chmod u+x pdfLaTeX-Gnuplot.engine

En­suite, vous pou­vez quit­ter le Ter­mi­nal. Quit­tez éga­le­ment TeX­Shop et re­dé­mar­rez-le. L’en­gine de­vrait alors fonc­tion­ner nor­ma­le­ment.

Je vais in­sé­rer tout cela dans l’ar­ticle dès que je peux.

12)
veyne
, le 07.01.2012 à 17:55

Quelle ra­pi­dité de ré­ac­tion !

Alors oui je n’ai plus ce mes­sage si­byl­lin (pour moi) mais le fin­der m’in­dique que l’ap­pli­ca­tion gnu­plot ne peut s’ou­vrir car les ap­pli­ca­tions Po­werPC ne sont plus prises en charge.

Pour­tant quand je lance gnu­plot il y a bien un ter­mi­nal qui s’ouvre…

Je ne suis pas sûr de bien com­prendre : il faut d’abord com­po­ser avec la nou­velle en­gine puis avec pd­fLa­tex ? (c’est ce que j’ai fait) car quand je com­pose uni­que­ment avec la nou­velle il ne se passe rien, vi­suel­le­ment dans la console.

13)
Franck Pas­tor
, le 07.01.2012 à 18:08

Je suis sur mon or­di­na­teur en ce mo­ment, ça ex­plique la ra­pi­dité de ré­ac­tion :-)

Alors oui je n’ai plus ce mes­sage si­byl­lin (pour moi) mais le fin­der m’in­dique que l’ap­pli­ca­tion gnu­plot ne peut s’ou­vrir car les ap­pli­ca­tions Po­werPC ne sont plus prises en charge.

??? Cette ver­sion de Gnu­plot n’est pour­tant pas une ap­pli­ca­tion Po­werPC ! Vous l’avez bien té­lé­char­gée à l’en­droit que j’ai in­di­qué dans l’ar­ticle ?

Je ne suis pas sûr de bien com­prendre : il faut d’abord com­po­ser avec la nou­velle en­gine puis avec pd­fLa­tex ? (c’est ce que j’ai fait) car quand je com­pose uni­que­ment avec la nou­velle il ne se passe rien, vi­suel­le­ment dans la console.

Non, non, il suf­fit nor­ma­le­ment de com­po­ser avec le nou­vel En­gine, et une seule fois. Que ça ne marche pas me dé­passe, il me fau­drait plus de ren­sei­gne­ments. Vous uti­li­sez une vieille ver­sion de Gnu­plot ? ou de TeX­Shop ? Quel sys­tème uti­li­sez-vous ?

14)
veyne
, le 07.01.2012 à 18:19

Je l’ai prise avec Maxima oui, ma ver­sion de gnu­plot est la 4.2.6.

Quand je com­pose avec le nou­vel En­gine, il ne se passe rien.

J’uti­lise la dis­tri­bu­tion de 2011 et osx 10.7.2.

15)
Franck Pas­tor
, le 07.01.2012 à 18:29

Je suis en­core sur Snow Leo­pard. Peut-être que cette ver­sion de Gnu­plot ne fonc­tionne pas sur Lion, mais ça me pa­raît bi­zarre quand même…

Avant d’al­ler plus loin, à tout ha­sard quit­tez car­ré­ment votre ses­sion, re­dé­mar­rez-la et es­sayez à nou­veau…

16)
veyne
, le 07.01.2012 à 18:32

Gnu­plot n’au­rait pas un lien avec Ro­setta ? Ca ne tourne plus sur Lion.

J’ai un autre mac en­core sous snow­leo­pard, j’es­saie­rai d’ins­tal­ler tout ça, idem pour la ses­sion que je ne peux pas quit­ter avant quelques heures, je vous tiens au cou­rant, merci pour votre aide en tous cas.

17)
Franck Pas­tor
, le 07.01.2012 à 18:41

Gnu­plot n’au­rait pas un lien avec Ro­setta ? Ca ne tourne plus sur Lion.

Ce por­tage-là de Gnu­plot est un Uni­ver­sal Bi­na­ries et ne de­vrait donc pas uti­li­ser Ro­setta pour tour­ner. S’il y a in­com­pa­ti­bi­lité avec Lion, elle vient sû­re­ment d’ailleurs…

18)
Franck Pas­tor
, le 09.01.2012 à 18:48

Juste pour si­gna­ler que j’ai mo­di­fié l’ar­ticle pour y in­di­quer com­ment ac­ti­ver ce fa­meux bit d’exé­cu­tion !

19)
veyne
, le 21.01.2012 à 23:42

Bon, j’ai enfin pu re­mettre la main sur snow leo­pard et tes­ter… sans suc­cès, même chose qu’avec Lion mais sans le mes­sage sur les ap­plis power pc : je com­pose le code de l’ar­ticle avec la ligne x**2 dé­com­menté, en uti­li­sant pd­fLa­TeX-Gnu­plot comme en­gine et rien ne s’af­fiche dans la console (alors que le fi­chier com­pile nor­ma­le­ment en LaTeX par ailleurs).

Je dois sans doute faire quelque chose de tra­vers mais quoi… ?

20)
Franck Pas­tor
, le 22.01.2012 à 01:27

Je viens de pen­ser à une cause pos­sible, c’est que l’ap­pel de PD­FLa­TeX ne fonc­tion­ne­rait pas en ligne de com­mande sur tes confi­gu­ra­tions. À vé­ri­fier : ouvre le Ter­mi­nal, entres-y sim­ple­ment pdflatex puis ap­puie sur Re­turn, et nor­ma­le­ment un mes­sage de bien­ve­nue de­vrait s’af­fi­cher. C’est le cas ?

21)
veyne
, le 22.01.2012 à 10:28

Voilà ce qu’il me dit sur Snow :

This is pdf­TeX, Ver­sion 3.1415926-1.40.10 (TeX Live 2009) **

et sur Lion :

This is pdf­TeX, Ver­sion 3.1415926-1.40.12 (TeX Live 2011) res­tric­ted \wri­te18 en­abled.

J’ai connu plus cha­leu­reux comme mes­sage de bien­ve­nue mais pour­quoi pas !

22)
Franck Pas­tor
, le 22.01.2012 à 18:10

J’au­rais dû dire « mes­sage d’ac­cueil » plu­tôt que mes­sage de bien­ve­nue, mais jusque-là tout est nor­mal. Donc ce n’est pas un pro­blème d’ac­cès au shell pour LaTeX.

Conti­nuons l’ins­pec­tion : tou­jours dans le Ter­mi­nal, charge le ré­per­toire où tu as placé le fi­chier test pour Tikz (que je sup­pose nommé parabole.tex), avec une com­mande

cd chemin_vers_le_fichier

et entre une à une les trois ins­truc­tions sui­vantes :

/bin/tcsh
set path= (/Applications/Gnuplot.app/Contents/Resources/bin $path)
pdflatex --shell-escape -synctex=1 parabole.tex

Est-ce que cette fois-ci la com­pi­la­tion se dé­roule bien, et sinon, y a-t-il un mes­sage ?

Au cas où ça ne marche pas, même sans mes­sage un fi­chier log de­vrait être pro­duit et il faut re­gar­der ce qu’il dit. En­voie-le moi alors par mes­sage privé (il est pro­ba­ble­ment trop long pour être in­clus dans un com­men­taire).

23)
veyne
, le 22.01.2012 à 18:29

Alors ça marche mais j’ai du mal à suivre parce que ça marche quand je com­pile en Latex et avec la ligne : \draw[red, do­main = -2.2:2.2, smooth] plot func­tion{x**2};

si je com­pile avec pd­fLa­TeX-Gnu­plot, rien comme avant.

24)
Franck Pas­tor
, le 22.01.2012 à 18:39

La seule ex­pli­ca­tion que je vois main­te­nant est que TeX­Shop n’ar­rive tou­jours pas à lan­cer le script pd­fLa­TeX-Gnu­plot.

C’est peut-être en­core un pro­blème d’au­to­ri­sa­tion. Tou­jours dans le Ter­mi­nal, charge le dos­sier “En­gines” du ré­per­toire “TeX­Shop” de ta Bi­blio­thèque per­son­nelle. En­suite entre

ls -l pdfLaTeX-Gnuplot

Peux-tu nous trans­mettre le ré­sul­tat de cette com­mande ? Les per­mis­sions et au­to­ri­sa­tions de lan­ce­ment du script y fi­gurent.

25)
veyne
, le 22.01.2012 à 18:39

Rec­ti­fi­ca­tif, en fait non j’ai cru qu’il tra­çait la pa­ra­bole avec gnu­plot mais si je change la for­mule la pa­ra­bole reste pour­tant seule la ligne gnu­plot est ac­tive ! Comme s’il gar­dait une em­prunte de la pa­ra­bole en tikz nor­mal. Même diag­nos­tique sous Lion avec tou­jours le mes­sage power pc…

26)
Franck Pas­tor
, le 22.01.2012 à 18:46

Rec­ti­fi­ca­tif, en fait non j’ai cru qu’il tra­çait la pa­ra­bole avec gnu­plot mais si je change la for­mule la pa­ra­bole reste pour­tant seule la ligne gnu­plot est ac­tive ! Comme s’il gar­dait une em­prunte de la pa­ra­bole en tikz nor­mal. Même diag­nos­tique sous Lion avec tou­jours le mes­sage power pc…

De plus en plus bi­zarre !!! Bon, sup­prime tous les fi­chiers de ton ré­per­toire (ou dé­place-les) sauf parabole.​tex, re­lance les trois étapes pré­cé­dentes (avec Gnu­plot censé construire la courbe !) et trans­mets-moi les deux fi­chiers log par cour­riel (l’un pour Snow, l’autre pour Lion). J’ana­ly­se­rai ça ce soir.

27)
veyne
, le 22.01.2012 à 18:51

Je vais faire ça ce soir aussi mais juste avant, j’ob­tiens ceci :

MBP:~ vd$ cd /Users/vd/Li­brary/TeX­Shop/En­gines MBP:En­gines vd$ ls -l pd­fLa­TeX-Gnu­plot ls: pd­fLa­TeX-Gnu­plot: No such file or di­rec­tory

pour­tant j’ai bien pdfLaTeX-Gnuplot.​engine à la lettre près dans le dos­sier En­gines… ma si­tua­tion me semble assez déses­pé­rée.

28)
Franck Pas­tor
, le 22.01.2012 à 18:55

Ma faute : il faut en­trer

ls -l pdfLaTeX-Gnuplot.engine

29)
veyne
, le 22.01.2012 à 19:03

ré­ponse :

rwxr-r—@ 1 vd staff 118 21 jan 23:26 pdfLaTeX-Gnuplot.​engine

30)
Franck Pas­tor
, le 22.01.2012 à 19:12

Tiens, ça n’a pas la gueule que ça de­vrait avoir, c’est-à-dire ça :

-rwxr-xr-x@ 1 vd staff 118 21 jan 23:26 pdfLaTeX-Gnuplot.engine

Chez toi il manque des “x” à gauche, si­gni­fiant en gros les droits d’exé­cu­tion par des per­sonnes tierces. Peut-être la rai­son pour la­quelle TeX­Shop ne peut donc pas exé­cu­ter le script dans ta confi­gu­ra­tion.

Tou­jours dans le ré­per­toire “En­gines”, entre la com­mande

chmod 755 pdfLaTeX-Gnuplot.engine

Si tu ré­exé­cutes alors ls -l pdfLaTeX-Gnuplot.engine, ça de­vrait main­te­nant avoir les bons droits d’exé­cu­tion : rwxr-xr-x.

En­suite, re­dé­marre une ses­sion de Ma­cOSX, rouvre le fi­chier parabole.​tex et re­lance une com­pi­la­tion avec pd­fLa­TeX-Gnu­plot. Je croise les doigts…

31)
veyne
, le 22.01.2012 à 19:19

J’ai un doute là : je croyais que je com­pi­lais en pd­fla­tex mais quand je re­garde dans Tex­shop c’est en fait pdf­tex. Je crois que c’est une ver­sion plus ré­cente de pd­fla­tex qui n’ap­pa­raît plus dans Tex­shop, c’est ça ?

32)
Franck Pas­tor
, le 22.01.2012 à 19:23

C’est la pre­mière ligne du fi­chier log ou de la console qui te fait dire ça ? C’est nor­mal que pdf­TeX soit men­tionné : lorsque pd­fLa­TeX est in­vo­qué, il lance pdf­TeX en sous-main, com­plété des ma­cros de (pdf)LaTeX.