Constantin VERNICOS

Mes astuces sous Latex

Vous trouverez ci-dessous quelques petites choses que j'ai apprise sur Latex.

La preuve pour les non puristes !

Je suis un adepte de l'anglicisme "Preuve" en lieu et place de "Démonstration". N'en déplaise aux puristes, voici comment faire pour remplacer le "Démonstration" quand vous utilisez le pacquage "french".

\makeatletter
\renewenvironment{proof}[1][{\bf \ifanglais Proof\else Preuve\fi}]{\par
\normalfont
\topsep6\p@\@plus6\p@ \trivlist
\item[\hskip\labelsep\itshape
#1\@addpunct{.}]\ignorespaces
}{%
\qed\endtrivlist
}
\makeatother

Et oui, "proof" est un environnement qui n'utilise pas la commande \proofname avec le package "french". Je trouve l'utilisation de trivlist un peu lourde mais bon...

Latex et Pdflatex

Le format pdf est désormais largement utiliser. Il se trouve qu'en compilant avec pdflatex on obtient directement un fichier pdf, en lieu et place d'un fichier .dvi. Seulement quelques précautions sont nécessaires. Je suis également un peu flemmard, et j'aime bien ne pas avoir à modifier mon fichier chaque fois que je veux compiler avec latex et ensuite avec pdflatex. Voici les solutions que j'ai trouvées.

  1. Le problème des fichiers d'image .jpg

    Les fichiers jpg sont merveilleusement bien gérer par pdflatex, mais pas par latex ! Tout d'abord il faut que vous vous procuriez le programme "jpeg2ps" (un p'tit apt-get...) Ensuite il faut créer un petit fichier "jpg_bb" qui contient les lignes suivantes

    #!/bin/sh
    jpeg2ps $* | grep "^%%"

    Pour chaque image .jpg que vous voulez inclure il va falloir créer une "bounding box" avec jpg_bb, comme suit:

    jpg_bb mabelleimage.jpg > mabelleimage.jpg.bb

    attention à la fin le fichier doit avoir le même nom, mais avec un .bb en plus. Il faut maintenant dire à latex où trouver les informations pour inclure les fichiers .jpg. Les prochaines lignes sont donc faite pour cela, et doivent donc être dans votre fichier latex, avant le "\begin{document}".

    \usepackage[dvips]{graphicx}
    \DeclareGraphicsExtensions{.jpg,.eps}
    \DeclareGraphicsRule{.jpg}{eps}{.jpg.bb}{`jpeg2ps -h #1}

    Voila, il reste à faire un "\includegraphics{mabelleimage}" à l'endroit où l'on veut inclure l'image !

    Il reste un petit problème, ces commandes vont engendrer des erreurs si on compile avec pdflatex. Voici la solution, pour pouvoir indifféremment compiler avec pdflatex ou latex

    \ifx\pdftexversion\undefined
    \usepackage[dvips]{graphicx}
    \DeclareGraphicsExtensions{.jpg,.eps}
    \DeclareGraphicsRule{.jpg}{eps}{.jpg.bb}{`jpeg2ps -h #1}
    \else
    \usepackage[pdftex]{graphicx}
    \fi

  2. Le problème des fichiers d'image .gif

    Les fichiers .gif sont un autre problème. J'ai essayé de les transformer en .jpg, mais le résultat était épouvantable. Alors je propose de faire la chose suivante. Imaginons qu'on ait une "jolieimage.gif". On commence par la transformer en .pnm en utilisant la commande suivante

    giftopnm jolieimage.gif > jolieimage.pnm

    Ensuite il faut créer une bounding box comme pour les images jpeg. Vous Pouvez créer un fichier "pnm_bb" qui contient les lignes suivantes:

    #!/bin/sh
    pnmtops $* | grep "^%%"

    Ainsi vous pouvez créer la "bouding box" en l'utilsant, comme pour les fichiers jpg.

    pnm_bb jolieimage.pnm > jolieimage.m.bb

    Attention à la fin le fichier doit avoir le même nom, mais avec un .bb en plus. Il faut maintenant dire à latex où trouver les informations pour inclure les fichiers .pnm. Les prochaines lignes sont donc faite pour cela, et doivent donc être dans votre fichier latex, avant le "\begin{document}".

    \DeclareGraphicsExtensions{.eps,.pnm}
    \DeclareGraphicsRule{.pnm}{eps}{.pnm.bb}{`pnmtops #1}

    Bien sûr cela ne fonctionne qu'avec latex. Pour pdflatex, essayez un "pnmtops jolieimage.pnm > jolieimage.ps" et ensuite un "epstopdf joliemage.ps" pour créer une image .pdf.

  3. Inclusion des fichiers de sortie de Metapost

    Metapost est en fait issue de Metafont, mais à le bon goût de créer des images postscript. Cependant si on a un fichier metapost "mesimages.mp", en sortie on obtient "mesimages.1, mesimages.2..." et ni latex, ni pdflatex ne savent quoi en faire. Alors expliquons leur. Pour latex voici ce qu'il faut ajouter

    \usepackage[dvips]{graphicx}
    \DeclareGraphicsRule{*}{eps}{*}{}

    Quant à pdflatex on lui expliquera un peu différemment:

    \usepackage[pdftex]{graphicx}
    \DeclareGraphicsRule{*}{mps}{*}{}

    Mais on peut également l'expliquer simultanément aux deux.

    \ifx\pdftexversion\undefined
    \usepackage[dvips]{graphicx}
    \DeclareGraphicsRule{*}{eps}{*}{}
    \else
    \usepackage[pdftex]{graphicx}
    \DeclareGraphicsRule{*}{mps}{*}{}
    \fi

Des théorème barrés

Je fais partie de ces maniaques qui encadrent tout. Je vous propose donc le pacquage suivant qui fournie deux commandes pour créer des environnements théorèmes encadrés, et éventuellement coloriés ! C'est pour cela qu'il nécessite le pacquage "color". Le pacquage se nomme theobar.sty. La première commande crée des théorèmes encadrés, coloriés et numérotés (exemple)

\definecolor{myyellow}{cmyk}{0,.4,1,0} %% pour definir ses couleurs
\newtheobarnum{theo}{Théorème}{myyellow}

Pour l'utiliser on fera un "\begin{theo} \end{theo}". Il existe une seconde commande pour les théorèmes non numérotés.

\definecolor{myred}{rgb}{.8,0,0}%% autre exemple de couleur
\newtheobar{conc}{Conclusion}{myred}

Attention, ma commande fonctionne mal avec certaines macros du pacquage amstex qui permettent d'écrire plusieurs lignes dans un environnement mathématique, notamment se méfier de son comportement avec "split", "align" etc...

Des paragraphes indépendants

C'est toujours en voulant être flemmard qu'on crée des macros. La suivante vient d'une requête de Nicolas R. Il voulait créer une commande pour numéroter certains paragraphes, sans qu'ils aient nécessairement un titre. On veut bien sur pouvoir y faire référence si cela s'avère nécessaire. On voulait aussi qu'elle sache elle même à quelle niveau elle se situe : est un paragraphe d'une section, d'une sous-section ou bien d'une sous-sous-section ? Voici le résultat (à modifier selon vos caprices)

%Commande \paragraphe
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcounter{paragrafsubsub}[subsubsection]
\renewcommand{\theparagrafsubsub}{%
\thesubsubsection.\roman{paragrafsubsub}}
\newcommand{\paragrafsubsub}{%
\refstepcounter{paragrafsubsub}
{\bf \theparagrafsubsub}\hspace{0.2em}--- }

\newcounter{paragrafsub}[subsection]
\renewcommand{\theparagrafsub}{\thesubsection.\alph{paragrafsub}}
\newcommand{\paragrafsub}{%
\refstepcounter{paragrafsub}
{\bf \theparagrafsub}\hspace{0.2em}--- }

\newcounter{paragraf}[section]
\renewcommand{\theparagraf}{\thesection.\alph{paragraf}}
\newcommand{\paragraf}{%
\refstepcounter{paragraf}
{\bf \theparagraf}\hspace{0.2em}--- }

\newcommand\paragraphe{%
\par \indent
\ifcase\value{subsection} %
\paragraf
\else
\ifcase\value{subsubsection}\paragrafsub %
\else\paragrafsu

Pour modifier la numérotation il faut modifier les trois commandes "\theparagraf", "\theparagrafsub" et "\theparagrafsubsub".