Vous connaissez certainement LaTeX... Si ce n'est pas le cas, tout ce que l'on peut dire, c'est que c'est un langage servant a produire des articles scientifiques, des rapports ou des documents imprimés en tout genre. Une courte introduction en 88 minutes vous est proposé a la fin de cet article.
Cet article vise à vous présenter la puissance de LaTeX. LaTeX permet d'écrire des documents, mais sa puissance vient du fait qu'il s'appuie sur un langage de programmation : TeX et est par conséquent entièrement programmable.
Les compteurs et les dimensions
LaTeX permet de définir des dimensions et des compteurs. Cela vous permet d'imaginer des usages divers : des figures qui peuvent changer d'échelle automatiquement, des listes numerotées un peu particulières, ... La syntaxe est la suivante (les compteurs manipulent des entiers):
[latex]
\newcounter{nom} % Pour creer un compteur "nom"
\setcounter{nom}{valeur} % Défini la valeur du compteur a valeur
\addtocounter{nom}{valeur} % Ajoute valeur a la valeur du compteur
\value{nom} % Lit la valeur du compteur nommé "nom"
La syntaxe pour les dimensions est la suivante.
[latex]
\newlength{nom} %Défini une nouvelle longueur
\setlength{nom}{valeur} %Défini la valeur d'une longueur
\addtolength{nom}{valeur} % Ajoute une valeur a une longueur
La valeur d'un compteur nommé nom de la longueur peut alors être utilisé, par exemple:
[latex]
\includegraphics[width=0.5\nomdelalongueur]{image}
Les unités les plus courantes pour les valeurs sont :
- mm - millimètres
- cm - centimètres
- pt - points
- em - la largeur d'un M dans la police courante
- ex - la hauteur d'un x dans la police courante
Vous en saurez plus en consultant la documentation LaTeX sur les compteurs et les dimensions.
Les boites verticales et horizontales
TeX fonctionne en empilant des boites. Il les emboites soit verticalement, soit horizontalement pour former de nouvelles boites... Il y a quelques commandes qui sont ainsi utile pour mettre en page des éléments complexe. On peut utiliser: \vbox{CONTENU} qui crée une boite a l'intérieur de laquelle les éléments seront empilés verticalement \hbox{CONTENU} qui crée une boite a l'intérieur de laquelle les éléments seront empilés horizontalement \vspace{DIMENSION} qui insère un espace vertical de taille DIMENSION \vfill{} qui insère un espace pouvant être étendu pour "justifier" les boites \hspace{DIMENSION} qui insère un espace vertical de taille DIMENSION \hfill{} qui insère un espace pouvant être étendu pour "justifier" les boites
Cela s'utilise de la façon suivante:
[latex]
\vbox{
\vbox{\hbox{
\hbox{A Droite}
\hspace{5cm}
\hbox{Centre}
\hspace{5cm}
\hbox{A gauche}
}}
\vspace{1cm}
\vbox{Image}
\vspace{3cm}
\vbox{Le reste}
}
Effectivement, c'est moche, mais cela permet d'ajuster la présentation... Je vous laisse aussi regarder les commandes environnement mbox, fbox, minipage, ...
Les macros et les environnements
Il y a trois manières de définir des commandes en LaTeX. La première est d'utiliser la commande \def
[latex]
\def\macro{Le code de ma macro}
On l'utilise alors en écrivant \macro
La seconde est d'utiliser la commande \newcommand
[latex]
\newcommand{\commande}[nbArgument]{
Mon code
Mon 1er argument s'écrit: #1
Mon 2nd argument s'écrit: #2
...
}
On l'utilise alors en écrivant \commande{Argument1}{Argument2}.
La troisième est d'utiliser un environnement
[latex]
\newenvironment{environnement}[nbArgument]{
Code de début avec les arguments #1, #2, ...
}{
Code de fin
}
Il s'utilise comme cela:
[latex]
\begin{environnement}
CONTENU
\end{environnement}
Les conditonnelles.
Le package ifthen permet de créer des conditionnels en LaTeX. La syntaxe est la suivante
[latex]
\usepackage{ifthen}
\def\printDebug{true}% or false
\ifthenelse{\equal{\printDebug}{true}}{%
% Code if printDebug is true (create Todo command that display a warning
}{
% Code if printDebug is false (create Todo command that display nothing
}
Quelques packages
- beamer Ce package permet de générer des présentations de type PowerPoint en utilisant un fichier LaTeX. La documentation est excellente.
- algorithmicx Ce package permet de taper des algorithmes, et ce en définissant soit même les mots clés de son pseudo-code.
- textpos Ce package est intéressant puisqu'il permet de placer librement des figures ou du texte sur une page et en particulier sur une diapo (en indiquant les coordonnées souhaitées).
Quelques idées pour programmer en LaTeX
Vous avez envie de faire un environnement affichant du texte si votre nom de fichier est rapport_insa mais n'en affichant si le nom du texte est rapport_tex ?
La réponse se trouve ici : http://groups.google.com/group/comp.text.tex/browse_thread/thread/49a5a8c268cbceb4/38f8a6bfb8ed7a42
[latex]
% La comparaison de Jobname avec autre chose est un poil compliquée...
\def\thisjob#1{..\fi\begingroup
\edef\jobA{\jobname}%
% Convert an arbitrary string to "other" characters:
% do \csname, \string, then \@gobble
\edef\jobB{\expandafter \expandafter \expandafter \@gobble
\expandafter \string \csname #1\endcsname}%
\expandafter \endgroup \ifx\jobA\jobB}
% On défini une commande plus simple
\newcommand{\ifinsa}[2]{
\if\thisjob{rapport_insa}%
#1%
\else%
#2%
\fi%
}
% On peut alors définir des environnement
\usepackage{verbatim}
% Environnement
\ifinsa{
% On affiche le contenu du block tel quel
\newenvironment{blockinsa}
{}
{}
}{
%% Sinon, on considère qu'il est commenté
\let\blockinsa=\comment
\let\endblockinsa=\endcomment
}
Il faudra faire attention si vous utilisez des liens pour avoir deux fichiers pointant vers un même fichier, les éditeurs de texte ont tendance à casser les liens. Ainsi, éditez toujours le fichier original et jamais le lien.
Un Makefile pour LaTeX
Vous en avez assez de vous emeler les doigts a taper les commandes de compilation LaTeX ? Vous souhaiteriez faire tout ce qu'il faut en 1 seule touche... Et ainsi avoir un Makefile qui vous recompile vos figures, vos fichiers pdf en fonctions des .tex et des .sty et qui vous fasse des pdf 2 pages en 1 pour imprimer ou d'autres choses amusantes.
Voici un exemple sur lequel vous appuyer:
STYLE=style/m2ri.sty \
style/myalgorithm.sty \
style/mybeamer.sty \
style/myfigures.sty \
style/myhocl.sty \
style/myschema.sty \
style/mytitlepages.sty \
style/mytodo.sty \
style/myconditionnal.sty \
style/rt-hocl.sty \
style/thesis-hocl.sty
view: all
xpdf document.pdf
viewdiapo: presentation_mars2007.pdf
xpdf presentation_mars2007.pdf
all: document.pdf annexe.pdf
document.dvi: document.tex $(STYLE)
latex document
bibtex document
latex document
latex document
rapport_m2ri.dvi: rapport_m2ri.tex $(STYLE)
latex rapport_m2ri
bibtex rapport_m2ri
latex rapport_m2ri
latex rapport_m2ri
rapport_insa.dvi: rapport_insa.tex $(STYLE)
latex rapport_insa
bibtex rapport_insa
latex rapport_insa
latex rapport_insa
presentation_%.pdf: presentation_%.tex
latex presentation_$*
latex presentation_$*
dvips -Ppdf -G0 presentation_$*.dvi
ps2pdf14 presentation_$*.ps
# ps2pdf presentation_mars2007.ps
#%.dvi: %.tex
# latex $<
%.ps: %.dvi
dvips -G0 -o $@ $<
%.pdf: %.ps
ps2pdf14 -dPDFSETTINGS=/prepress -dEmbedAllFonts=true $<
clean:
rm -f *.aux *.log *.toc *.bbl *.blg *.dvi *.ps
distclean: clean
rm -f *~ *.pdf
Une règle qui recompile automatiquement jusqu'a disparition du message "Rerun to get cross-reference right"
$(BASE).pdf: $(FICHIER) $(PAQUETS) $(FIGURES) $(MODULES) $(BIBLIO)
( \
\pdflatex $< && \bibtex $(<:.tex=) && \pdflatex $< && \
while \grep -q "Rerun to get cross-references right." $(<:.tex=.log); \
do \
\pdflatex $<; \
done \
)
Les outils indispensables pour LaTeX
- la distribution TeTeX pour Linux ou Cygwin
- la distribution TeXLive pour Windows ou Linux (au lieu de TeTeX)
- un éditeur tel Emacs + Auctex
Et le dernier outil indispensable est une bonne documentation
- La Faq francaise : http://faqfctt.fr.eu.org/download.s...
- Une courte introduction a LaTeX en 88 minutes : http://www.laas.fr/~matthieu/cours/...
- Un joli manuel pour LaTeX : http://jmpl.fr.eu.org/
- Une table des symboles disponibles dans LaTeX : http://www.ctan.org/tex-archive/inf...
- Une table des symboles mathématiques http://www.phil.cam.ac.uk/teaching_...
- Tout ce que vous avez toujours voulu savoir sur LaTeX ... : http://cours.enise.fr/info/latex/
- Auto-formation a TeX : http://www.linux-kheops.com/doc/tex...
- La refcard TeX : http://www.jalix.org/ressources/mis...
- La refcard LaTeX : http://www.stdout.org/~winston/late...
- La refcard AMS-LaTeX : http://refcards.com/docs/silvermanj...
- Un aide mémoire LaTeX en francais : http://tex.loria.fr/general/aide-me...