Depuis le temps que j’avais envie de le faire, voici mon article sur LaTeX. À chaque fois que je me replonge dedans, je me retrouve à surfer à droite à gauche pour savoir quelles commandes utiliser, et comme je ne suis pas le seul, je vais mettre tout ça ici, dans un bel article :
Installation
Tout d’abord, comment installer LaTeX sous MacOSX, pour Windows et Linux, voir plus bas.
J’utilise Tex Live comme distribution LaTeX, TexShop comme éditeur et BibTex comme logiciel de gestion de bibliographie. Le tout peut se télécharger très simplement depuis http://www.uoregon.edu/~koch/texshop/obtaining.html. Référez-vous à Obtaining TeXShop and TeX Live pour obtenir le tout. L’installation se fait très simplement et la configuration est automatique. Pour commencer, lancez TexShop depuis /Applications/TeX/. À noter que cette distro comprend aussi un gestionnaire de bibliographie.
Pour Windows, je me souviens que j’utilisais MikTeX comme distribution et Texmaker comme éditeur.
Pour Linux un tour dans votre gestionnaire de packages devrait faire l’affaire. Apparemment vous pouvez utiliser
href=”http://www.tug.org/tetex/” target=”_blank”>TeTeX, aussi disponible pour MacOSX comme distro et Texmaker ou Kile si vous utilisez KDE.
Header et packages
Un fichier LaTeX (extension .tex) est constitué d’un header qui correspond à des définitions, paramètres et inclusions de packages pour plus de fonctionnalités et du document à proprement parler, placé entre
\begin{document}
\end{document}
Je joins à l’article une copie du code source d’un de mes papiers et sa version pdf pour que vous puissiez voir ce que ça donne. Les explications ci-dessous sont basées sur ce papier.
Voilà à quoi ressemble un header typique de mes fichiers LaTeX, il inclut beaucoup de packages qui ne seront pas forcément utiles tout le temps, mais je vais les détailler quand même.
\documentclass[
10pt,a4paper,onecolumn]{
article}
\usepackage[
latin1]{
inputenc}
\usepackage[
english]{
babel}
\author{
Max Weltz}
\title{
Peer-to-Peer audio conferencing using SIP : P2P Architecture}
\usepackage{graphics}
\usepackage{graphicx}
\usepackage{footmisc}
\usepackage{verbatim}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{array}
\usepackage{xy}
\usepackage{url}
\usepackage[nottoc, notlof, notlot]{tocbibind}
\newcommand{\footnoteremember}[2]
{\footnote{#2}\newcounter{#1}
\setcounter{#1}{\value{footnote}}}
\newcommand{\footnoterecall}[1]
{\footnotemark[\value{#1}]}
\topmargin 0in
\headheight 0in
\headsep 0in
\textheight 7.7in
\textwidth 6.5in
\oddsidemargin 0in
\evensidemargin 0in
\headheight 77pt
\headsep 0.25in
\hyphenpenalty=5000
\tolerance=1000
\usepackage{hyperref}
\pdfcompresslevel=9
\hypersetup{
colorlinks=true,
breaklinks=true,
urlcolor= blue,
linkcolor= blue,
anchorcolor = blue,
citecolor = blue,
filecolor = blue,
pagecolor = blue,
pdftitle={Peer-to-Peer audio conferencing using SIP : P2P Architecture},
pdfauthor={Max Weltz}
}
Houla, ça fait beaucoup mais je vais expliquer ce que cela signifie.
\documentclass[10pt,a4paper,onecolumn]{article}
10pt correspond à la taille de la police comme sous Word, pas de surprise.
Vous pouvez configurer la taille du papier utilisé en second paramètre, a4paper correspond au format habituel utilisé en France.
onecolumn signifie juste que chaque page contiendra une colonne. Pour avoir deux colonnes, remplacez onecolumn par twocolumn (sans s).
{article} correspond au type de votre document. Vous pouvez choisir parmi article, report, book, letter etc. Essayez et choisissez le plus adapté ! Pour plus d’infos, allez ici.
\usepackage[english]{babel}
Cela signifie que les informations automatiquement générées par LaTeX, telles que la date, la table des matières, seront en anglais. Choisissez french pour du français.
\author{Max Weltz}
\title{Peer-to-Peer audio conferencing using SIP : P2P Architecture}
Assez évidemment, ces deux valeurs correspondent à l’auteur et au titre du document final.
\usepackage{graphics}
\usepackage{graphicx}
Voilà comment inclure des packages. Ces deux-là concernent l’intégration d’images et de schémas à votre document. La plupart des sites mentionnent uniquement l’intégration de fichiers eps mais cela marche aussi avec des pdf et des jpg plus classiques.
\usepackage{
footmisc}
\usepackage{
verbatim}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{array}
\usepackage{xy}
\usepackage{url}
Voilà plus de packages. url permet d’afficher joliment une url en tapant \url{http://www.baroquew.net}. array permet de gérer les tableaux. xy permet de gérer les dimensions d’un document et les autres sont là pour faciliter la saisie dans l’environnement mathématique entre autres.
\usepackage[nottoc, notlof, notlot]{tocbibind}
Voilà de quoi ajouter la liste des références à la table des matières (table of contents, toc). Avec les arguments nottoc, notlof et notlot, la table des matières ne contiendra pas de référence à la table des matières, la liste des figures (list of figures, lof) ni à la liste des tables (lot).
\newcommand{\footnoteremember}[2]
{\footnote{#2}\newcounter{#1}
\setcounter{#1}{\value{footnote}}}
\newcommand{\footnoterecall}[1]
{\footnotemark[\value{#1}]}
Et oui, taper du LaTeX, c’est un peu comme coder, on peut même faire ses propres fonctions. Celle-ci (copier-collez tout sur la même ligne pour que ça marche sans accroc) sert à faire de multiples références à la même note de bas de page. Cf plus bas pour son utilisation.
\topmargin 0in
\headheight 0in
\headsep 0in
\textheight 7.7in
\textwidth 6.5in
\oddsidemargin 0in
\evensidemargin 0in
\headheight 77pt
\headsep 0.25in
\hyphenpenalty=5000
\tolerance=1000
À l’exception des deux dernières lignes qui servent à l’accentuation des caractères, tout ce bloc sert à gérer les marges et la taille du texte. Là encore, changez les valeurs à votre convenance.
\usepackage{hyperref}
\pdfcompresslevel=9
\hypersetup{
colorlinks=true,
breaklinks=true,
urlcolor= blue,
linkcolor= blue,
anchorcolor = blue,
citecolor = blue,
filecolor = blue,
pagecolor = blue,
pdftitle={Peer-to-Peer audio conferencing using SIP : P2P Architecture},
pdfauthor={Max Weltz}
}
hyperref, voilà le package qui va donner du cachet à votre document. Avec ce package vous allez pouvoir mettre des liens dans votre pdf (compatibles Acrobat Reader et Aperçu (MacOSX)) sur vos notes, références et table des matières. Enfin vous pouvez inclure des méta commentaires pour Acrobat Reader (titre et auteur).
Comme ça fait beaucoup, je vous propose de télécharger les Sources en LaTeX du document pour vous y retrouver.
Corps du document
C’est bien beau tout ça, mais maintenant qu’on a tout ce bloc de texte en haut de notre fenêtre, il va bien falloir commencer par écrire quelque chose !
\begin{
document}
\title{Peer-to-Peer audio conferencing using SIP: \linebreak P2P Architecture}
\begin{titlepage}
\maketitle
\thispagestyle{empty}
\begin{abstract}
This report is part of a collection of three reports
\end{abstract}
\end{titlepage}
\clearpage
\tableofcontents
%%%%%%%%%%%%%%%%%%%%%%
\section{Introduction}\label{section:intro}
%%%%%%%%%%%%%%%%%%%%%%
\paragraph{}
Peer-to-Peer (P2P) is one of the current trends on the Internet with up to 90\%~\cite{Sandvine:P2P} of the traffic share. In section \ref{section:p2p} we will see what attempts were made to adapt the SIP protocol to be fully functional in a P2P audio conferencing context and what is left to be done in that area.
%%%%%%%%%%%%%%%%%%%%%%
\section{Peer-to-Peer Architecture}\label{section:p2p}
%%%%%%%%%%%%%%%%%%%%%%
\subsection{Introduction}
\paragraph{}
This whole part is devoted to the integration of P2P in SIP solutions.
LaTeX va vous permettre d’avoir un document d’aspect professionnel assez facilement une fois que vous aurez le coup de main. Le peu de temps qu’on perd à trouver comment faire la mise en page se regagne dès lors qu’on commence à éditer le texte, déplacer des sections etc. En effet on ne perdra ni les références, ni les renvois, ni même le style du texte.
\begin{
document}
\title{Peer-to-Peer audio conferencing using SIP: \linebreak P2P Architecture}
Voilà le début de votre document, enfin ! \linebreak force un retour à la ligne comme on s’en doute. On remet \title ici car la déclaration avant le \begin ne compte pas vraiment dans l’esprit de LaTeX dans le cas du titre. Étrangement l’auteur lui est bien pris en compte…
\begin{titlepage}
\maketitle
\thispagestyle{empty}
\begin{abstract}
This report is part of a collection of three reports
\end{abstract}
\end{titlepage}
Encore un \begin, mais pour la page de garde cette fois-ci. Le \maketitle affiche le titre, le style empty signifie qu’il n’y aura pas de header/footer sur la page et qu’elle ne sera pas numérotée ni comptabilisée dans la numérotation. L’abstract est le petit résumé de votre papier, vous devriez déjà être familier du fait si vous avez lus des publications avant d’écrire votre propre article.
Et on n’oubliera pas de fermer tout ce qu’on ouvre avec \end.
\clearpage
\tableofcontents
%%%%%%%%%%%%%%%%%%%%%%
\section{Introduction}\label{section:intro}
%%%%%%%%%%%%%%%%%%%%%%
\paragraph{}
Peer-to-Peer (P2P) is one of the current trends on the Internet with up to 90\%~\cite{Sandvine:P2P} of the traffic share. In section \ref{section:p2p} we will see what attempts were made to adapt the SIP protocol to be fully functional in a P2P audio conferencing context and what is left to be done in that area.
Plusieurs choses ici : d’abord \clearpage sert à clôre la page en cours et à commencer une nouvelle page.
\tableofcontents génére automatiquement la table des matières, avec des liens hypertextes vers les sections grâce au package hyperref invoqué plus haut. La table des matières indique les sections, sous-sections et sous-sous-sections (cf plus loin). En outre on a ajouté une entrée pour les références (cf le header).
Ensuite on attaque le vif du sujet. D’abord une \section nommé introduction. Le style utilisé pour mettre en relief le titre du chapitre dépend du style (ici article) sélectionné dans le header.
Notez avec \label qu’on peut faire un lien vers cette section depuis notre texte avec \ref{section:intro}. Ce renvoi s’affichera comme le numéro du chapitre et un clic dessus vous renverra à l’emplacement du label. Notez que ce \label n’est pas lié à la table des matières. Vous n’êtes pas non plus obligés de préfixer le nom par “section”, c’est juste plus clair. Enfin, vous pouvez insérer un \label en plein milieu d’un paragraphe si vous en avez envie.
Pour créer un paragraphe, et oui, on utilise \paragraph{}. Notez les accolades vides. Si vous voulez nommer votre paragraphe, mettez quelque chose entre les accolades.
Quelques bizarreries : comme % est le symbole des commentaires dans LaTeX (ie tout ce qui est après un % jusqu’à la fin de la ligne ne sera pas traité par le processeur LaTeX), il faut l’échapper par un \ pour afficher un pourcent. Je résume : “90\%” affichera “90%”.
Le ~ lui sert à générer un espace insécable dans LaTeX, parfois utile.
Enfin voilà un élément clé de LaTeX, la citation. Vous aurez souvent besoin de citer vos sources, et cela se fait avec \cite{source}. Le terme “source” est à remplacer par la cite-key que vous avez choisie pour la source en question dans votre bibliographie (cf plus bas). Le résultat à l’affichage sera souvent quelquechose du genre [Vio07], correspondant au début du nom de l’auteur et l’année du papier.
\subsection{
Existing works on P2P/SIP solutions}
\subsubsection{Objectives}
\paragraph{}
From the works of Bryan, Lowekamp and Jennings in~\cite{bryanAAA} and Kundan Singh and Henning Schulzrinne in~\cite{cucs044}, we came with a precise list of objectives to meet for a good P2P/SIP solution:\footnote{We do not list here previously acknowledged advantages of P2P systems.}
\begin{enumerate}
\item \textbf{Simple lookup:} one issue with P2P systems is the problem of bootstrapping, or more clearly, how to join a P2P network without any a priori knowledge about its members, and namely, their addresses?
\item \textbf{Privacy:} often true when in the communication world, users might want their privacy, maybe by connecting only to a subnetwork only made up of trusted users.
\end{enumerate}
\subsubsection{Characteristics of a P2P/SIP solution}
\paragraph{Compatible characteristics}
\subparagraph{}
SIP in itself is not causing many problems for integrating it into a P2P solution. Namely, intermediate servers are optional and the SIP protocol allows user agents (UA) to communicate with each other with no other party involved. This means that the messages inherent at a P2P protocol can be transported in SIP messages (cf. \ref{DHT:join}).
Ici vous voyez qu’on peut descendre jusqu’aux sous-sections et aux sous-paragraphes, chacun pouvant être nommé ou non, selon votre bon vouloir.
Deux trois choses en passant : \footnote génére une note de page à la manière de Word, la numérotation étant générée toute seule (cf plus bas pour un cas particulier). De plus un clic sur le numéro de la note la renvoi directement à l’affichage.
\begin{enumerate} permet de commencer une liste numérotée, chaque élément étant appelé par un \item.
Enfin, \textbf permet de mettre le texte entre accolades en gras (bold face).
\begin{itemize}
\item \textbf{alg:}\footnoteremember{fieldSIP}{Used inside a To, From or Contact header} to convey information on the hash algorithm used by the DHT
\item \textbf{user:}\footnoterecall{fieldSIP} to specify if the message is relative to a user-to-user SIP exchange or to a P2P message over SIP
\end{itemize}
Ci-dessus, un exemple de création de liste non numérotée (itemize), toujours en utilisant des \item.
Vous vous souvenez sans doute de la fonction mystérieuse dans le header, et bien on l’utilise ici. Elle sert à faire des références multiples (deux en tout) à une même note de bas de page. On la créée avec un \footnoterember{nom de la note}{corps de la note} et on la rappelle avec un \footnoterecall{nom de la note}. À noter que la seconde note ne bénéficiera pas du lien automatique permettant de l’afficher.
\subsubsection{
Performances}\label{perf}
\paragraph{}
Singh and Schulzrinne in \cite{p63singh} provide "performance predictions" using the Chord DHT system based on the work of Stoica et al.\ in~\cite{chord:stats} and claims the following:
\begin{itemize}
\item with weak assumptions on the network and the nodes and strong assumptions on the use of the network\footnote{10 requests per second per node, one call per minute per node}, the maximum number of nodes on the network is of $2^{300}$,
\item considering a network of 10,000 nodes using chord, six hops is the mean lookup path length, taking approximately 200\,ms.
\end{itemize}
Ici, d’autres exemples de \label et de \cite.
À noter le .\ qui signifie qu’on tape un point qui ne clôt pas une phrase (il ne sera donc pas traité de la même manière par le processeur LaTeX).
Le \, correspond à un demi espace insécable, obligatoire (pour les puristes de la typographie) entre une valeur et son unité.
Enfin, vous noterez le recours au mode mathématique (appelé par le $) au milieu d’un paragraphe pour obtenir un exposant, ici 2 à la puissance 300. Là encore on ferme le tout par un $.
\begin{
enumerate}
\item \emph{Node registration:}\footnote{We will only discuss the registration of the node on the P2P network here.} suppose Alice wants to join the network. She will send:
\hspace{1in}\texttt{REGISTER sip:123.234.1.1:5060 SIP/2.0}
\hspace{1in}\texttt{To: alice@atlanta.com}
\hspace{1in}\texttt{From: alice@atlanta.com}
\noindent where \texttt{sip:123.234.1.1:5060} is the address.
\indent
More…
\end{enumerate}
Notez que les espaces et les sauts de ligne ne dérangent pas LaTeX et ne sont pas pris en compte, un nouveau paragraphe commence forcément par un \paragraph{}.
Si vous voulez forcer (ou empêcher) l’indentation d’un morceau de texte, \indent (ou \noindent pour ne pas l’indenter) est votre ami. Utilisez-les sans accolades.
\hspace force un espacement horizontal plus grand qu’une indentation, en argument, précisez en inches la valeur de cet espacement.
\texttt met le texte qui suit en police de type terminal/machine à écrire.
Enfin \emph met le texte en argument en italique. D’ailleurs rien ne vous empêche de mettre en italique un texte dans une note de bas de page, par exemple.
\begin{figure}[htb!]
\centering%
\scalebox{0.6}{\includegraphics{P2POverlay}}
\caption{Difference between physical and overlay networks}
\label{fig:P2POverlay}
\end{figure}
Et voilà le clou du spectacle, comment insérer une figure dans LaTeX, à partir du format JPG ou PDF. Pour le format EPS, regardez sur le net, beaucoup de sites en parlent mais ce format est bien moins courant, il faut bien l’avouer.
\caption indique le titre de la figure.
\label créée une référence à la figure (pas obligatoire).
\centering% centrera la figure horizontalement.
\scalebox peut être utilisé dans d’autres contextes mais avec le même usage : \scalebox{0.9}{quelque chose} réduira ce “quelque chose” à 90% de sa taille, pas besoin de se soucier de la taille de votre figure lors de sa création donc.
Enfin \includegraphics cherchera une figure du nom de P2POverlay dans le dossier où se trouve le .tex. Il parcourera toutes les extensions possibles et s’arrêtera au premier fichier correspondant trouvé.
Bibliographie
Deux solutions s’offrent à vous pour la bibliographie : BibTeX avec une bibliographie séparée ou bien une bibliographie intégrée au .tex.
Pour la bibliographie intégrée, rien de plus simple :
%%%%%%%%%%%%%%
%debut de la bibliographie%
%%%%%%%%%%%%%%
\clearpage
\begin{thebibliography}{breitestes Label}
\bibliographystyle{plain}
\label{biblio}
\bibitem{Cao:04}
Guohong Cao,
\newblock “Power-Aware Cache Management in Mobile Environments”, Department of Computer Science \& Engineering The Pennsylvania State University, 2004.
\bibitem{Har:01}
Takahiro Hara,
\newblock “Effective Replica Allocation in Ad Hoc Networks for Improving Data Accessibility”, Osaka University, 2001.
\end{thebibliography}
\clearpage
Insérez le code ci-dessus à la fin de votre article, avant le \end{document}. Vous pouvez changer de style en remplaçant breitestes Label et plain, ainsi qu’en modifiant le corps du texte de la bibliographie.
L’attribut de \bibitem correspond à la clé de citation de l’article, du livre etc. Cela correspond aussi à ce qui sera affiché dans le corps du texte lorsque vous citerez cette source, donc choisissez bien !
Pour la bibliographie avec BibTeX, utilisez un gestionnaire pour éviter de tout gérer à la main, sous MacOSX j’utilise BibDesk qui est livré avec la distro mentionnée au début. Sous Windows ou Linux une rapide recherche avec Google donne JabRef, jetez-y un coup d’œil ou bien proposez-moi s’il y a mieux.
Remplissez votre bibliographie depuis le manager et sauvegardez-la. Remplissez bien les champs “cite-key” pour pouvoir la réutiliser dans votre document LaTeX. Ensuite insérez :
%%%%%%%%%%%%%%
%debut de la bibliographie%
%%%%%%%%%%%%%%\bibliographystyle{alpha}
\bibliography{/Users/Votrenom/Documents/MyBib}
juste avant le \end{document}. Modifiez évidemment le chemin pour refléter votre configuration. Le processeur LaTeX cherchera alors le fichier MyBib.bib. Pour avoir un résultat joli sans [?], faites la manipulation suivante : compilez votre document LaTeX deux fois (deux fois Pomme+Maj+L avec Texshop) pour chercher les références puis la bibliographie (Pomme+Maj+B) et le document LaTeX encore une fois pour finir. Et voilà ! À noter que dans ce cas vous pouvez paramétrer depuis BibDesk comment vont s’afficher les citations dans le texte (nom de l’auteur, initiales etc.).
Conclusion
Voilà, j’espère avoir été précis et clair sur comment créer un document LaTeX. J’ai essayé de lister pour vous tous les problèmes qu’on rencontre fréquemment lorsqu’on tape du LaTeX. Je joins les Sources en LaTeX du document à l’article, ça peut servir . Cet article n’a pas vocation à être exhaustif, juste à éviter de sortir Google toutes les cinq minutes lors de votre rédaction. Bon courage à tous !
Liens utiles
Si jamais des questions restent encore sans réponse, voici une liste de liens utiles :
- http://web.mit.edu/rsi/www/2000/help/faq/latex/ (essayez aussi les années suivantes), petite FAQ sur les problèmes courants dans LaTeX. Comment faire certains signes spéciaux, des références, etc.
- http://www.artofproblemsolving.com/LaTeX/AoPS_L_GuideLay.php, un autre site utile donnant des explications sur la mise en page, les styles etc. Si jamais le lien est mort, il y a une copie de ces pages en pdf sur mon site (LaTeX layout).
- pour finir, un site listant les erreurs communes dans les rapports techniques (en anglais), très utile pour les perfectionnistes : http://www.ece.ucdavis.edu/~jowens/commonerrors.html. Là encore, si jamais le lien ne répond pas, je joins une copie en pdf de la page à l’article (Common errors in technical writings). Un point qui n’est pas répertorié sur cette page mais qui l’est ici, il faut mettre une virgule avant tous and ou or sauf si ils ne joignent que deux groupes nominaux. Si ils joignent deux propositions ou plus de deux GN, la virgule s’impose : salt and pepper mais salt, pepper, and garlic…
P.S. : Pas vraiment en rapport avec LaTeX mais voilà un site qui peut être utile pour étoffer votre rapport : ITfacts. Ce site fournit des informations chiffrées et détaillées sur de nombreux points relatifs aux nouvelles technologies (téléphonie mobile, Internet etc.)
Sources en LaTeX
May 13th, 2007 | Posted by BaroqueW |
Tags: LaTeX |
Category:
Articles en français,
Tech >> Computer |
Comments (3)