Package tikz, comment débuter et compiler

Bonjour, cela fait un petit moment que j'essaye de me mettre à pstricks, mais l'échec complet. J'ai beau lire les tutos, prendre les codes tous prêt, la compilation ne fonctionne pas. L'année dernière j'ai réussi à dessiner un pauvre axe gradué, je reprends aujourd'hui le ficher : rien ne fonctionne. Je me souviens qu'il ne fallait pas compiler avec pdflatex, mais avec quoi ? J'ai trouvé sur wiki, qu'on peut compiler avec pdflatex si on ajoute certaines extension. Ok, cela tourne... et donne un bandeau noir au lieu de l'axe.

Voilà mon code d'il y a un an.
\documentclass[12pt,a4paper]{article}

%******************************* Paquetages ******************************
\usepackage{pst-all}
\usepackage{pst-node}
\usepackage{fp}
\usepackage{pst-eps}

\begin{document}
\pagestyle{empty}
\begin{TeXtoEPS}
\begin{pspicture}(5,0)(16,1)
\psaxes[arrowscale=2,yAxis=false]{->}(5,0)(16,1)
\psdot[linewidth=2pt,linecolor=red](6,0)
\uput{0.3}[90](6,0){$A$}
\psdot[linewidth=2pt,linecolor=red](11,0)
\uput{0.3}[90](11,0){$B$}
\end{pspicture}
\end{TeXtoEPS}
\end{document}
Cela donnait l'axe qui est ci-joint.

Et le code avec \usepackage{pdftricks}
\documentclass[12pt,a4paper]{article}

\usepackage{pdftricks}
\begin{psinputs}
   \usepackage{pstricks}
   \usepackage{multido}
   \usepackage{pst-all}
	\usepackage{pst-node}
	\usepackage{fp}
	\usepackage{pst-eps}
	\usepackage{pstricks-add}
\end{psinputs}

\begin{document}
\pagestyle{empty}
\begin{pdfpic}
\psset{unit=\linewidth}
\begin{pspicture}(-1,-1)(5,5)
\psaxes[comma,Dx=0.5,Dy=0.5]{->}(0,0)(3,3)
\end{pspicture}
\end{pdfpic}

\end{document}
Pourriez-vous dire pourquoi cela ne fonctionne pas. Et comment faire, y compris comment compiler ? Merci beaucoup à l'avance.105076

Réponses

  • Bonjour,

    C'est un peu bizarre de se mettre à PSTricks aujourd'hui. Il y a 15 ou 20 ans, pourquoi pas, mais aujourd'hui, TikZ semble être un meilleur choix (il y a certes quelques cas particuliers que PSTricks traite plus facilement que TikZ car PostScript est un langage de programmation, mais je crois qu'ils sont assez rares). Ton premier document compile comme ça :
    latex document
    dvips -o document.ps document.dvi
    
    Pour le deuxième, il y a deux méthodes expliquées ici (faire 'texdoc pdftricks' a de grandes chances de faire apparaître le manuel). La méthode avec shell escape est plus automatique, mais elle donne des droits énormes à tout le code que tu compiles (y compris classes et packages). L'autre est plus sûre mais il faut lancer pst2pdf comme indiqué dans l'exemple :
    pdflatex document
    pst2pdf
    pdflatex document
    
  • Au lieu d'utiliser pdftricks, on peut utiliser le package auto-pst-pdf, à charger après \usepackage{pstricks}. Dans ce cas, il faut mettre l'option --shell-escape à pdflatex pour compiler : pdflatex --shell-escape myfile.tex.
    \documentclass[12pt,a4paper]{article}
    
    \usepackage{pstricks}
    \usepackage{auto-pst-pdf}
    \usepackage{multido}
    \usepackage{pst-all}
    \usepackage{pst-node}
    \usepackage{fp}
    \usepackage{pst-eps}
    \usepackage{pstricks-add}
    
    \begin{document}
    
    \pagestyle{empty}
    
    \psset{unit=\linewidth}
    
    \begin{pspicture}(-1,-1)(5,5)
    \psaxes[comma,Dx=0.5,Dy=0.5]{->}(0,0)(3,3)
    \end{pspicture}
    
    \end{document}
    
  • Merci pour vos réponses, je vais tester.

    @brian , bah... ce sont les tutos que je trouve. Je ne savais pas qu'il y avait TikZ. Aurais tu un lien vers le tuto pour TikZ?
  • Bonjour,
    Pour TikZ, il y a ce tuto que je trouve très bien : "TikZ pour l’impatient".
  • Oui, ce document a souvent été cité ici. Il est effectivement bien pour commencer. Ne pas hésiter à aller voir le manuel de PGF & TikZ dès qu'on sent qu'il manque quelque chose. Il est très gros mais très complet et plein d'exemples. La première partie contient même des tutoriels thématiques. Je mets aussi le lien au-dessus car on y trouve A very minimal introduction to TikZ signé Jacques Crémer de la Toulouse School of Economics. Je ne l'ai pas lu mais ça parle peut-être à vorobichek. ;-)
  • Merci pour les liens, je vais étudié cela de plus près. Mais au moins j'ai eu mon axe gradué! (:D La flèche est petite, mais tant pis.105472
  • Il y a des options pour contrôler le design des flèches : arrowsize, arrowwinset, arrowlength, arrowscale. Voir page 30 de ce document. À utiliser ainsi :
    \psaxes[arrowsize=..., arrowwinset=..., ...]{->}(0,0)(3,3)
    
    où en options globales:
    \psset{arrowsize=..., arrowwinset=..., ...}
    
  • @Saturne, oui pour pstricks. Mais comment agrandir les flèches avec TikZ (mon dernier axe)?
  • Brian a écrit:
    C'est un peu bizarre de se mettre à PSTricks aujourd'hui. Il y a 15 ou 20 ans, pourquoi pas, mais aujourd'hui, TikZ semble être un meilleur choix (il y a certes quelques cas particuliers que PSTricks traite plus facilement que TikZ car PostScript est un langage de programmation, mais je crois qu'ils sont assez rares).

    J'approuve très fortement Brian.

    Et ce n'est pas tant que "Tikz" serait mieux.
    Mais il faut savoir que l'utilisateur de PSTricks se trouve aujourd'hui très souvent en butte à des problèmes d'incompatibilités mystérieuses avec des packages modernes.
    Pour ma part, je n'ai jamais appris PSTricks, en revanche mon épouse l'a fait, d'abord en utilisant des trucs faits par d'autres, puis en produisant du code elle même; ça me vaut régulièrement des séances de débogage pour trouver le bout de code qui pose problème.
  • @vorobickek ah je ne sais pas, je ne maîtrise pas TikZ. Mais ça doit se trouver en googlant.

    Moi j'utilise PSTricks car je fais des figures avec LaTeXdraw qui les exporte en PSTricks. Puis je modifie manuellement le code pour les ajustements. Mais je n'inclus pas le code PSTricks dans mon document, je les compile à part et j'inclus la figure en eps ou pdf dans le document.
  • La bibliothèque TikZ arrows.meta permet de régler l'aspect des flèches. Elle est documentée dans le manuel de TikZ & PGF.
    \documentclass{article}
    \usepackage{tikz}
    \usetikzlibrary{arrows.meta}
    
    \begin{document}
    \begin{tikzpicture}[
      markpoint/.style={
        insert path={circle[radius=1.5pt] node[above] {$\mathcal{#1}$}},
      }]
     \draw[-{>[length=1mm]}] (-0.2,0) -- (10.5,0);
    % \draw[-{Latex[length=1.5mm]}] (-0.2,0) -- (10.5,0);
    % \draw[-{Stealth[length=1.5mm]}] (-0.2,0) -- (10.5,0);
      \foreach \n in {0,...,10} {
        \draw (\n,0) -- ++(0,-0.06) node[below] {$\n$};
      }
      \fill (4,0) [markpoint=A] (8,0) [markpoint=B];
    \end{tikzpicture}
    \end{document}
    
    105498
    105504
    105506
  • Merci pour les flèches.

    J'ai un autre problème : Dimension to large

    J'essaye cette fois de faire un axe avec une unité de longueur 100 et les points $C(500)$ et $D(1100)$. Moi, naive, je pensais qu'il suffisait de changer le pas dans foreach. Le code ci-dessous marche pour les petit coordonnées, mais pas pour les grands :
    \begin{center}
    \begin{tikzpicture}
    \draw[thick, black](0,0)grid(1550,0);
    \draw[black,fill=black] (500,0) circle (.4ex);
    \draw[black,fill=black] (1100,0) circle (.4ex);
    \draw|-(500,0)node[above]{$\boldsymbol{\mathcal{A}}$};
    \draw|-(1100,0)node[above]{$\boldsymbol{\mathcal{B}}$};
    \draw[>=stealth,->]|-(1550,0);
    \foreach \x in {0,...,1500} \draw[thick] (\x,-.100)node[below]{\x} -- (\x,0);
    \end{tikzpicture} 
    \end{center}
    
    J'ai essayé avec [xscale=0.0001] ou en ajoutant $mm$ aux nombres. Quand j'ajoute $mm$ cela semble fonctionnait et le blocage est à la ligne :
    \foreach \x in {0,...,1500mm} \draw[thick] (\x,-.100mm)node[below]{\x} -- (\x,0);
    
    Avec le message : ! Missing = inserted for \ifdim.<to be read again>p ...ck] (\x,-.100mm)node[below]{\x} -- (\x,0);

    Moi pas comprendre! :-(
  • La dimension la plus large que TeX peut mettre dans un registre \dimen est $2^{30}-1 \, \text{sp}$, soit environ 5,75 mètres (voir ici). Les vecteurs $x$ et $y$ par défaut dans TikZ ont pour norme 1cm, donc les points que tu places ont des coordonnées trop grandes (15,5 m...). Le plus simple consiste à redéfinir le vecteur $x$. Pas besoin de changer sa direction ici, donc spécifier une longueur suffit.

    Merci de bien vouloir fournir un exemple complet minimal à l'avenir, comme ci-dessous. Il faudrait aussi aérer autour des opérateurs pour une meilleure lisibilité — comme ci-dessous. Je change le pas dans le \foreach, sinon les 1501 petits traits se chevauchent. J'enlève la grille (qui était censée faire quoi ?), les opérateurs |- utilisés de manière illicite et remplace la syntaxe obsolète de circle par la syntaxe moderne (avec l'option radius) qui évite certains soucis.
    \documentclass[tikz, border=2mm]{standalone}
    \usepackage{amsmath}
    
    \begin{document}
    \begin{tikzpicture}[x=0.01cm]
    \fill  (500,0) circle[radius=.4ex];
    \fill (1100,0) circle[radius=.4ex];
    \draw  (500,0) node[above] {$\boldsymbol{\mathcal{A}}$};
    \draw (1100,0) node[above] {$\boldsymbol{\mathcal{B}}$};
    \draw[>=stealth, ->, thick] (-10,0) -- (1550,0);
    \foreach \x in {0,100,...,1500} {
      \draw[thick] (\x,-.100) node[below] {\x} -- (\x,0);
    }
    \end{tikzpicture}
    \end{document}
    
    105564
  • Je vais devenir folle avec ces packages latex, impossible de trouver une information exhaustive pour comprendre le fonctionnement et tous les options. En comparant à R et Python, c'est une foutue usine à gaz...

    En bricolant j'arrive à faire les deux graphiques ci-jointes (merci les codes complets trouvés sur le net). Le code est le suivant :
    \documentclass[11pt,fleqn]{book}
    \usepackage{tikz} % Required for drawing custom shapes
    \usepackage[francais]{babel} % English language/hyphenation
    \usepackage{frcursive}
    \usepackage{ulem}
    \usepackage{cancel}
    \usepackage{beton, euler} % Use the Adobe Times Roman as the default text font together with math symbols from the Sym­bol, Chancery and Com­puter Modern fonts
    \usepackage{amsmath,amsfonts,amssymb,amsthm} % For math equations, theorems, symbols, etc
    \usepackage[utf8]{inputenc} % Required for including letters with accents
    \usepackage[T1]{fontenc} % Use 8-bit encoding that has 256 glyphs
    
    \usetikzlibrary{arrows.meta}
    \usepackage{pgfplots}
    
    \begin{document}
    \begin{center}
    \begin{tikzpicture}
    % grid
    \draw[     thin,brown!15]   (-1,-2) grid[step= 0.5mm] ++ (6,6);
    \draw[semithick,brown!25]   (-1,-2) grid[step= 2.5mm] ++ (6,6);
    \draw[    thick,brown!50]   (-1,-2) grid[step=5mm] ++ (6,6);
    % axis
    \draw[-Stealth] (0,-2) -- (0,4) node[below right] {$y$};
    \draw[-Stealth] (-1,0) -- (5, 0) node[above  left] {$x$};
    \node[above=0pt] at (0.3,0.1) {$\mathcal{O}$};
    \foreach \i in {1,2,3,4}{\draw (\i,1mm) -- + (0,-2mm) node[below] {\i};}
    \foreach \i in {-1,1,2,3}{\draw (1mm,\i) -- + (-2mm,0) node[ left] {\i};}
    \end{tikzpicture}
    \end{center}
    
    
    \begin{center}
    \begin{tikzpicture}
    \begin{axis}[ 
    axis lines=middle,
    samples=41, thick,
    grid,
    domain=-3:5, xmax=5.5,
    restrict y to domain=-3:10.5,
    x=0.5cm,
    y=0.5cm,
    xtick={-2,...,5},
    ytick={-2,...,10},
    %tick label style={font=\tiny},
    xticklabel style = {font=\tiny,yshift=1ex},
    yticklabel style = {font=\tiny,xshift=1ex},
    xlabel=$x$, 
    ylabel=$y$, 
    ]
    \addplot+[no marks] {2*x};
    \addplot+[no marks] {2*x +4 };
    \addplot [only marks, mark size=0.75] table {
    -1 -2
    -1 2
    1 2
    1 6
    2 4
    2 8
    };
    \end{axis}
    \end{tikzpicture}
    \end{center}
    \end{document}
    
    J'aimerais utiliser le premier quadrillage. Mais je ne comprends pas comment réduire les graduations par défaut (10mm) dans le premier. Dans le deuxième je ne comprends pas comment ajouter le "papier millimétrés". Les approches dans les deux exemples sont complétement différents. J'ai tenté à plusieurs reprise de trouver la documentation comme dans R et Python où on indique toutes les options, que dale! :-X Quant au code, je découvre la signification petit à petit en manipulant le code. C'est chiant... J'ai regardé les liens données ici, je n'ai pas trouvé des réponses à mes questions :-(

    @brian, stp, évite de me faire le morale. Quand je sais comment je le fais. Inutile de me demander ce que je ne sais pas...

    [Contenu du pdf joint. AD]108824
  • Je ne comprends pas trop ce que tu veux faire.
    Si tu veux changer les graduations du papier millimétré, c'est là (resp. taille d'une petite graduation, d'une demi grande graduation et d'une grande graduation) :
    % grid
    \draw[     thin,brown!15]   (-1,-2) grid[step= [b][color=#FF0000]0.5mm[/color][/b]] ++ (6,6);
    \draw[semithick,brown!25]   (-1,-2) grid[step= [b][color=#FF0000]2.5mm[/color][/b]] ++ (6,6);
    \draw[    thick,brown!50]   (-1,-2) grid[step= [b][color=#FF0000]5mm[/color][/b]] ++ (6,6);
    
  • @Calli, dans le premier exemple les graduations 1,2,3,4 sont espacées de 2 carreaux. Moi je veux que ce soit 1 carreau comme dans l’exemple 2. Dans l’exemple deux cela se règle avec
    x=0.5
    y=0.5
    
    Mais je n’arrive pas à mettre le papier millimétré... Je préfère l’exemple 1 parce que je le comprends mieux. L’exemple deux : je comprends pas grande chose. Pourquoi environnement axes? Comme ajouter la grille secondaire et changer la couleur?
  • Remplace dans l'exemple 1
    % grid
    \draw[     thin,brown!15]   (-1,-2) grid[step= 0.5mm] ++ (6,6);
    \draw[semithick,brown!25]   (-1,-2) grid[step= 2.5mm] ++ (6,6);
    \draw[    thick,brown!50]   (-1,-2) grid[step= 5mm] ++ (6,6);
    
    par
    % grid
    \draw[     thin,brown!15]   (-1,-2) grid[step= 1mm] ++ (6,6);
    \draw[semithick,brown!25]   (-1,-2) grid[step= 5mm] ++ (6,6);
    \draw[    thick,brown!50]   (-1,-2) grid[step= 10mm] ++ (6,6);
    
  • Ça, c’était le truc de départ :-D Mais avec l’unité =10mm le graphique est trop grand. Ou il y a un moyen de rendre l’image plus petite?
  • Essaie
    \begin{tikzpicture}[b][color=#FF0000][scale=0.5][/color][/b]
    
  • @vorobichek
    vorobichek a écrit:
    Je vais devenir folle avec ces packages latex, impossible de trouver une information exhaustive pour comprendre le fonctionnement et tous les options. En comparant à R et Python, c'est une foutue usine à gaz...
    Voyons voir ça... manuel de TikZ et PGF : 1318 pages avec table des matières, index, tutoriels et documentation de référence illustrée par de très nombreux exemples. Manuel de pgfplots : idem en 571 pages. Je suis sûr que les responsables de ces très mauvaises documentations doivent être heureux d'avoir passé des (dizaines de) milliers d'heures, très probablement non rémunérées, à écrire le code, le tester, le publier et le documenter sous license libre pour lire ce genre de retour !
    vorobichek a écrit:
    @brian, stp, évite de me faire le morale. Quand je sais comment je le fais. Inutile de me demander ce que je ne sais pas...
    Je ne comprends pas bien le sens des deux dernières phrases, mais la première est très claire. Je prends bonne note de ton appréciation et ne t'embêterai plus. Au plus, j'interviendrai brièvement comme au paragraphe précédent afin d'éviter la désinformation des lecteurs, si tant est que j'ai lu le fil.
Connectez-vous ou Inscrivez-vous pour répondre.