« LaTeX/Dessiner avec LaTeX/Dessiner en LaTeX pur » : différence entre les versions

Contenu supprimé Contenu ajouté
→‎Exercice 1 : syntaxe
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
 
Ligne 13 :
Le programme suivant affiche un trait barrant le texte.
 
<sourcesyntaxhighlight lang="latex">
\documentclass[10pt]{article}
 
Ligne 26 :
 
\end{document}
</syntaxhighlight>
</source>
 
Le trait est tracé avec la commande <code>\line</code>. Le paramètre <code>{5}</code> indique que la longueur est 5 fois la longueur unité, définie par la commande <code>\setlength</code>, donc {{unité|5|mm}}. Le paramètre <code>(5,1)</code> indique que le trait est incliné dans des proportions 5/1.
Ligne 34 :
On peut améliorer cet exemple :
 
<sourcesyntaxhighlight lang="latex">
\documentclass[10pt]{article}
 
Ligne 52 :
 
\end{document}
</syntaxhighlight>
</source>
 
La première partie de l'entête est classique : elle permet d'utiliser les accents dans le code source (on peut écrire <code>barré</code> au lieu de <code>barr\'e</code>) et d'utiliser les règles de typographie française (voir ''[[LaTeX/Premier exemple#Améliorations du code source|Premier exemple &gt; Améliorations du code source]]'').
Ligne 66 :
 
Par exemple
<sourcesyntaxhighlight lang="latex">
\setlength{\unitlength}{1mm}
</syntaxhighlight>
</source>
 
On peut choisir d'avoir des lignes épaisses avec <code>\thicklines</code>, des lignes fines avec <code>\thinlines</code> (option par défaut), ou bien régler l'épaisseur avec
Ligne 96 :
\put(''x'',''y''){''objet''}
où ''x'' et ''y'' sont en unité par défaut. Le paramètre ''objet'' peut être du texte ou un dessin produit par une commande. Par exemple, le code suivant dessine un carré noir de {{unité|10|mm}} de côté avec marqué « carré » à {{unité|1|mm}} à droite :
<sourcesyntaxhighlight lang="latex">
\setlength{\unitlength}{1mm}
\begin{picture}(20,20)
Ligne 102 :
\put(11,0){carré}
\end{picture}
</syntaxhighlight>
</source>
 
Ici, la fonction <code>\rule</code> n'est pas une fonction de l'environnement <code>picture</code>, raison pour laquelle on doit lui indiquer les unités.
Ligne 113 :
* ''nombre_de_fois'' est le nombre d'objets ainsi placés.
Par exemple, pour placer trois fois la lettre « a » sur une ligne :
<sourcesyntaxhighlight lang="latex">
\setlength{\unitlength}{1em}
\begin{picture}(4,2)
\multiput(0,0)(1,0){3}{a}
\end{picture}
</syntaxhighlight>
</source>
Et pour faire un carré de 3×3 :
<sourcesyntaxhighlight lang="latex">
\setlength{\unitlength}{1em}
\begin{picture}(4,2)
Ligne 127 :
}
\end{picture}
</syntaxhighlight>
</source>
 
== Objets graphiques ==
Ligne 134 :
 
Le texte peut simplement s'écrire tel quel. Toutefois, le texte est alors toujours sur une même ligne. Si l'on veut pouvoir utiliser le retour de ligne <code>\\</code>, il faut utiliser la commande <code>\shortstack</code> :
<sourcesyntaxhighlight lang="latex">
\setlength{\unitlength}{1mm}
\begin{picture}(40,20)
Ligne 142 :
}
\end{picture}
</syntaxhighlight>
</source>
Le texte est alors centré. On peut passer l'alignement en paramètre : <code>l</code> pour aligner à gauche, et <code>r</code> pour aligner à droite, par exemple
<sourcesyntaxhighlight lang="latex">
\shortstack[l]{texte sur\\
plusieurs lignes}
</syntaxhighlight>
</source>
On peut encadrer le texte en utilisant la fonction <code>\framebox</code>. Par rapport à la fonction <code>\fbox</code>, elle utilise les unités par défaut et ne laisse pas de blanc autour. La syntaxe est
\framebox(''largeur'',''hauteur''){''texte''}
Ligne 153 :
\framebox(''largeur'',''hauteur'')[''options'']{''texte''}
où ''options'' indique l'alignement : <code>l</code> ou <code>r</code> pour aligner à gauche ou à droite, et <code>t</code> ou <code>b</code> pour aligner en haut ou en bas. On peut combiner deux alignements, par exemple
<sourcesyntaxhighlight lang="latex">
\framebox(10,10)[lt]{bla}
</syntaxhighlight>
</source>
pour aligner en haut à gauche.
 
Ligne 192 :
 
Par exemple
<sourcesyntaxhighlight lang="latex">
\setlength{\unitlength}{1mm}
\thicklines
Ligne 200 :
}
\end{picture}
</syntaxhighlight>
</source>
 
=== Cercles, disques ===
Ligne 220 :
\oval(''longueur'',''hauteur'')[''option'']
ou ''option'' vaut <code>l</code> ou <code>r</code> pour la moitié gauche ou droite, <code>t</code> ou <code>b</code> pour la moitié haute ou basse. On peut n'afficher qu'un quart de la boîte en combinant deux options, par exemple
<sourcesyntaxhighlight lang="latex">
\oval(30,10)[lt]
</syntaxhighlight>
</source>
pour le quart en haut à gauche. Les dimensions sont bien celles du rectangle complet.
 
Ligne 260 :
 
Par exemple, pour avoir une ellipse avec un rapport axe vertical sur horizontal de 1:2, on peut déformer un cercle :
<sourcesyntaxhighlight lang="latex">
\usepackage{graphicx}
Ligne 271 :
}
\end{picture}
</syntaxhighlight>
</source>
cependant, le trait est plus large dans la dimension qui a été étirée.
 
L'extension <code>xcolor</code> permet de changer la couleur des objets dessinés. On utilise pour cela <code>\textcolor</code> (puisque les dessins sont à base de caractères). La commande peut être à l'intérieur de l'environnement <code>picture</code>, définissant ainsi la couleur de tel ou tel objet, ou bien peut contenir l'environnement <code>picture</code> et s'appliquer à tous les objets.
<sourcesyntaxhighlight lang="latex">
\usepackage{xcolor}
Ligne 294 :
\end{picture}
}
</syntaxhighlight>
</source>
 
L'extension <code>graphpap</code> permet d'obtenir du papier millimétré avec la commande <code>\graphpaper</code> :
Ligne 316 :
 
{{boîte déroulante|titre=Solution|contenu=
<sourcesyntaxhighlight lang="latex">
\documentclass{article}
 
Ligne 335 :
\end{picture}
\end{document}
</syntaxhighlight>
</source>
}}
 
Ligne 355 :
 
{{boîte déroulante|titre=Solution|contenu=
<sourcesyntaxhighlight lang="latex">
\documentclass{article}
\usepackage{pict2e}
Ligne 379 :
 
\end{document}
</syntaxhighlight>
</source>
}}
 
Ligne 395 :
 
{{boîte déroulante|titre=Solution|contenu=
<sourcesyntaxhighlight lang="latex">
\documentclass{article}
 
Ligne 429 :
 
\end{document}
</syntaxhighlight>
</source>
}}
 
Ligne 440 :
{{boîte déroulante|titre=Solution|contenu=
; Fichier <code>exercice.tex</code>
<sourcesyntaxhighlight lang="latex">
\documentclass{article}
Ligne 459 :
\end{figure}
\end{document}
</syntaxhighlight>
</source>
 
; Fichier <code>image1.tex</code>
<sourcesyntaxhighlight lang="latex">
\setlength{\unitlength}{1cm}
\begin{picture}(6,6)(-1,-1)
Ligne 489 :
\put(0,0){\line(1,1){5}}
\end{picture}
</syntaxhighlight>
</source>
 
On peut faire un code un peu plus compact en ajoutant
<sourcesyntaxhighlight lang="latex">
\usepackage{multido}
</syntaxhighlight>
</source>
dans l'en-tête du fichier <code>exercice.tex</code>, puis dans le fichier <code>image1.tex</code> :
<sourcesyntaxhighlight lang="latex">
% axe x
Ligne 509 :
\multido{\i=1+1}{4}{\put(-0.5,\i){\put(0,-0.1){\i}}}
</syntaxhighlight>
</source>
L'imbrication <code>\put(\i,-0.6){\put(-0.1,0){\i<nowiki>}}</nowiki></code> sert à avoir l'équivalent de <code>\i-0.1</code> pour le placement en ''x'' (l'extension <code>calc</code> pose problème avec l'unité par défaut).
}}