Chapter 29 Divers
Toutes les questions qui n'ont pas pu être classées
dans les chapitres précédents sont regroupées ici. Il s'agit le plus
souvent de petits trucs très utiles que tout bon LATEX nicien devrait
connaître.
29.1 A quoi sert la commande \par ?
Elle permet de marquer explicitement la fin d'un paragraphe pour permettre
à LATEX de le mettre en page. L'utilité de cette commande se justifie
par le fait que LATEX met en page un texte par paragraphe. Elle
est, le plus souvent, utilisée dans la définition de macros.
29.2 Comment commenter une partie d'un source LATEX ?
-
Sous LATEX2.09, il suffit d'utiliser l'environnement comment du
package 'version'.
-
Exemple:
-
-
Un paragraphe qui intéresse tout le monde et qui est donc
visible par tout le monde.
\begin{comment}
Un paragraphe qui n'intéresse que moi et qui n'est visible
que dans le source de mon document.
\end{comment}
Un autre paragraphe qui intéresse tout le monde.
%%%% fin exemple %%%%
-
Un environnement comment est également défini dans le package 'verbatim'
compatible LATEX2.09 et LATEX 2e.
- Il est également possible de mettre des parties d'un document source
en commentaire grâce à l'environnement comment défini dans le package
'comment' de V. Eijkhout. Ce package est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/.
- Sous emacs, il y a une commande `comment-region' qui fait ça très
bien. Avec un argument, elle décommente.
- Classique et de bon goût, l'évaluation conditionnelle permet de mettre
en commentaire sans se soucier de l'imbrication des accolades, moins
puissant cependant que les packages qui créent un environnement comment:
-
Exemple:
- \iffalse
Ce passage est en commentaire.
\fi
%%%% fin exemple %%%%
29.3 Comment utiliser LATEX sur des petites machines ?
La capacité de TeX est limitée de manière interne. Cela signifie
que ce sont des variables de TeX qui fixent le nombre de variables
(et la taille mémoire) maximal que TeX s'autorisera à utiliser.
Si vous utilisez plus de variables que prévu, TeX s'arrêtera sur
le message d'erreur :
-
sorry, TeX capacity exceeded.
Tout ceci est destiné à < < préserver > >
votre machine, c'est à dire à empêcher TeX d'utiliser la totalité
de la mémoire de la machine, ce qui conduit la plupart du temps à
un plantage.
Sur une station, aucun problème, mais sur un micro-ordinateur, les
configurations peuvent-être nombreuses. C'est pourquoi le TeX fournit
en < < standard > > sur les macs,
par exemple, des variables fixées assez bas (on suppose que le Mac
a une toute petite mémoire comparée à une station). Mais il existe
également un BigTeX, dont la seule différence avec le TeX normal
est qu'il est autorisé à utiliser plus de mémoire (les variables en
questions ont des valeurs plus importantes).
Du coup, si votre micro a une configuration plutôt musclée, vous pouvez
compiler des documents plus gros, plus complexes, etc...
Heureusement Kiffe a changé de stratégie et dans les futures versions
des outils les paramètres internes seront configurables (en passant
par ResEdit) et donc on décidera soi-même la < <
bigness > > de son TeX (cf. distributions emTeX
et AsTeX). Pour changer les paramètres de compilation (pool size,
stack, font mem, main mem etc.) cf. fichier emtex/doc/english/tex.doc,
chapitre ??.
La version 7.0 de web2c est configurable par le fichier texmf.cnf.
Remarque : pour un gros document, il peut être utile de le découper
en chapitres à inclure par la commande \include (cf.
paragraphe ??).
29.4 Comment visualiser des paramètres ?
-
Pour visualiser des paramètres spécifiques, il existe : \showt\baselinestretch
(n'importe où ou presque, donc affichage des éventuelles modifs, locales
ou globales). Ou pour avoir le résultat à la volée :
-
\message{Valeur de /baselinestretch = \the\baselinestretch}
-
Il existe aussi la commande \showthe. Celle-ci affiche
les paramètres demandés dans le log. En outre, pendant la compilation,
elle affiche la valeur demandée puis met LATEX en attente. Il faut
alors taper s ou <RC> pour continuer.
-
Exemple :
-
-
\documentclass{report}
\usepackage{french}
\pagestyle{empty}
\begin{document}
Texte.
\showthe\baselineskip
Texte.
\end{document}
%%%% fin exemple %%%%
-
Pour afficher une valeur à l'écran lors de la compilation, il faut
utiliser : \message{** Textwidth = \the\textwidth
**}. Le message s'insère alors au milieu des milliers d'autres
choses que LATEX affiche : bien surveiller !
- Il existe également le package 'showkeys' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/package/tools/.
Il modifie les commandes \label, \ref,
\pageref, \cite et \bibitem
de manière à visualiser les paramètres internes utilisés.
- Pour visualiser les paramètres d'une page, il faut utiliser la commande
\layout du package 'layout'. Ce dernier est disponible
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/tools/.
- Pour visualiser des labels, il existe le package 'showlabels' disponible
sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/showlabels/.
Les noms des labels utilisés par \label ou par la numérotation
automatique des équations apparaîtront dans la marge du document.
Ce package ne définit pas de commande particulière, il suffit d'appeler
\usepackage{showlabels} dans le préambule du document.
Dans le cas où des packages AMS sont utilisés, showlabels doit être
appelé après. Les options [inner] ou [outer] ou [twocolumn]
permettent de définir dans quelle marge vont apparaître les labels.
-
Remarque :
- ce package n'est pas compatible avec les styles multicolonnes
ni avec l'option leqno.
29.5 Comment visualiser des compteurs ?
Pour visualiser la valeur d'un compteur, il suffit de demander
-
\immediate\write{16}{\the\nomducompteur}
ou
-
\message{\the\nomducompteur}
29.6 A quoi servent \makeatletter et \makeatother
?
Le caractère ``@'' est spécial pour LATEX, et ne peut pas être
utilisé directement comme partie d'un nom de macro dans un document
LATEX. Pour utiliser certaines macros internes de LATEX (celles
qui contiennent un ``@''), directement dans un document (au lieu
d'utiliser un fichier .sty), il faut les encapsuler dans une macro
dont le nom ne contient pas de ``@''. En outre, cette macro doit
impérativement être déclarée dans le préambule du document, et être
encadrée par les commandes \makeatletter et \makeatother.
En fait ces commandes permettent d'indiquer à LATEX que l'on veut
effectivement travailler sur ses commandes internes en le forçant
à considérer le ``@'' (at) comme une lettre (makeatletter).
-
ATTENTION :
- les commandes internes de LATEX sont à manipuler
avec précaution.
29.7 Comment numéroter les lignes d'un document ?
Le package 'lineno' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/lineno/
permet de numéroter les lignes d'un document.
Il existe également le package 'numline' de M. Jaegermann et J. Fortune,
pour du texte essentiellement. Ce package est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/numline/.
Pour numéroter les lignes d'un document inclu en mode verbatim, il
faut utiliser la commande \listinginput du package
'moreverb' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/moreverb/.
Le package 'vruler' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/vrsion/
permet également de numéroter les lignes d'un document.
29.8 A quoi sert la commande \special ?
La commande \special permet à TeX d'envoyer des
instructions particulières (non TeX) à un driver sans les interpréter.
Les instructions ainsi passées sont généralement dépendantes du driver
qui lui, saura les interpréter. L'utilisateur n'a en général pas à
se soucier de cette commande (\special), elle est gérée
par des packages tels que 'psfig' pour LATEX2.09 ou 'graphics'
et 'graphicx' pour LATEX 2e.
-
Remarque :
- \includegraphics est standard dans LATEX 2e
et indépendant de la plateforme alors que le format de \special
est dramatiquement dépendant de la plateforme de travail. Seul, le
\includegraphics préserve l'aspect universel d'un document
source et donc l'esprit universel de TeX.
29.9 Comment réaliser des calculs avec les variables LATEX ?
Pour pouvoir utiliser des expressions du type \truc
* \machin dans une macro, il faut charger le package
'calc' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/calc/.
-
Exemple :
-
-
\setcounter{x}{3*\real{1.3}}
%%%% fin exemple %%%%
Une autre solution consiste à utiliser les commandes \addtolength\dim\dim,
\divide \dim by \dim,
etc.
Le package 'realcalc' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/generic/realcalc/
permet de faire des calculs sur des réels.
Plus difficile à utiliser, il y a aussi le package 'trig'.
29.10 Où trouver une fonte 9pt ?
La classe de document 'amsart' disponible sur CTAN offre l'option
9pt.
De même les classes 'extarticle' et 'extreport' sont disponibles à
http://www.informatik.uni-freiburg.de/ may/extsizes.html.
size9.clo de H. Steffani est disponible à http://www.tu-chemnitz.de/ hfst/size9.clo.
29.11 Comment automatiser les compilations LATEX ?
-
latexmk est un script perl, disponible sur ftp://ftp.fdn.org/pub/CTAN/support/latexmk/,
qui automatise la compilation d'un document LATEX. Il tourne en
démon et relance une compilation à chaque fois qu'un fichier source
(.tex, .bib, \input, etc) est sauvegardé. ``latexmk
fichier'' lance latex/makeindex/bibtex autant de fois qu'il le faut
pour que le dvi soit à jour.
- latexn disponible sur ftp://ftp.fdn.org/pub/CTAN/support/latexn
est un script csh qui permet également d'automatiser les compilations
latex.
- Le package AUC-TeX sous emacs conseille l'utilisateur sur la prochaine
opération à effectuer (LATEX, bibtex, makeindex, xdvi, etc.), en
fonction des dépendances entre les différents fichiers.
29.12 Comment obtenir des cadres gris ?
Le package 'shade' disponible sur ftp://ftp.fdn.org/pub/CTAN/macro/generic/
permet de tracer des cadres gris.
Le package 'psboxit', disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex2.09/contrib/misc/,
permet d'obtenir du gris ou de la couleur.
29.13 Comment obtenir certaines abréviations ?
Pour obtenir des abréviations dont certaines lettres doivent être
rehaussées et de taille réduite, on peut utiliser les indices mathématiques.
Mais, ce n'est pas une technique recommandable.
-
Exemple :
-
-
M${\mathrm{lle}}$
%%%% fin exemple %%%%
Le package 'babel' propose la commande \ieme pour les
quantièmes.
Le package 'french' de B. Gaulle, définit la commande \fup
pour écrire une chaîne de caractères en exposant, ainsi que les commandes
\ier \iers \iere \iere
\ieme \iemes pour les quantièmes.
-
Exemple :
-
-
M\fup{lle}
%%%% fin exemple %%%%
-
Remarque :
- pour que la commande \fup suive les changements
de taille de fonte, il faut utiliser l'une des extensions prévues
à cet effet, à savoir les extensions ``smaller'' et ``relsize''
(\usepackage{smaller,french} par exemple). Une copie
de l'extension smaller est distribuée depuis 94 avec la distribution
des fichiers du style french (sous le nom mysmall.sty). En revanche,
la surélévation ne tient pas compte de l'inclinaison de la police.
Le package 'smaller' de D. Taupin est disponible par ftp sur ftp://ftp.lps.u-psud.fr/pub/latex/contrib/smaller.sty.
Il propose également une commande \fup qui définit
smaller et l@rger pour être compris par french.sty. Cette commande
gère l'inclinaison des \sl et des \it.
-
ATTENTION :
- le fup de B. Gaulle étant installé au \begin{document},
pour utiliser mon \fup modifié avec french.sty, il
faut après le \begin{document} écrire:
-
\makeatletter
\let\fup\f@up
\makeatother
On peut également définir une nouvelle commande \abbr
dans le préambule du document :
-
\newcommand{\abbr}[1]{\raisebox{1ex}{\footnotesize #1}}
Cette solution a l'avantage d'éviter d'utiliser le mode mathématique
improprement.
Il existe aussi la commande \textsuperscript qui permet
d'obtenir un exposant sans passer en mode mathématique.
29.14 Comment gérer les espaces après une macro ?
Pour forcer LATEX à introduire un espace après une macro, il suffit
de faire suivre son appel d'un backslash (\).
-
Exemple :
-
-
texte \oe\ texte \oe, texte
texte \oe texte \oe, texte
%%%% fin exemple %%%%
ce qui donne :
texte oe texte oe, texte
texte oetexte oe, texte
Pour que LATEX gère lui même les espaces, il suffit d'utiliser
systématiquement les caractères {}.
-
Exemple :
-
-
texte \oe{} texte \oe{}, texte \oe{}uf
%%%% fin exemple %%%%
ce qui donne :
texte oe texte oe, texte oeuf
On peut également définir une macro TeX \keepspace
:
-
%%%% debut macro %%%%
\def\keepspace{\ifnum\catcode`\ =10
\let\next\keepspacebis \else \let\next\relax \fi
\next}
\def \keepspacebis{\obeyspaces
\afterassignment\keepspaceaux\let\next= }
{\obeyspaces%
\gdef\keepspaceaux{%
\ifx \next\space\let\next\ignorespaces\fi%
\catcode`\ =10\relax\next}}
%%%%
%%%% fin macro %%%%
puis l'utiliser dans une autre définition de macro.
-
Exemple :
-
-
\newcommand{\macro}{\textit{blablabla}\keepspace}
%%%% fin exemple %%%%
Le package 'xspace' intègre ces définitions qui lui permette de gérer
automatiquement l'espace après une macro suivant le contexte.
-
Exemple :
-
-
\documentclass{report}
\usepackage{french,xspace}
\pagestyle{empty}
\newcommand{\macro}{aaaaa\xspace}
\begin{document}
\macro bbbb \macro, bbbb
\end{document}
%%%% fin exemple %%%%
-
Remarque :
- à noter que le package xspace est conforme aux règles
de typographie anglo-saxones donc la gestion des caractères de ponctuation
composés tels que : où ; ne sera pas correcte en français. La solution
consiste alors à utiliser le blanc insécable qui de toutes façons
est recommandé dans ce cas : \macro:
blabla. On peut également se créer son propre package 'fxspace'.
29.15 Où trouver les notices d'utilisation des packages ?
Généralement la notice d'utilisation d'un package est incluse dans
le package lui même (fichier .dtx). Il suffit alors de compiler ce
fichier. Il existe également le fichier doc disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/base/
qui décrit comment exploiter ces notices.
Si on lance ``latex package.dtx'' il sera produit le fichier package.sty
ou package.cls correspondant et le fichier package.dvi de documentation
de l'extension.
29.16 Comment obtenir des listes d'objets flottants ?
Certaines sont disponibles par défaut, il s'agit des listes de figures
et de tables, il suffit alors d'appeler les commandes \listoffigures
et \listoftables. D'autres sont liées à certains packages.
Par exemple, le package 'algorithm' de P. Williams offre la commande
\listofalgorithms.
-
Remarque :
- la mise à jour de ces listes nécessite généralement plusieurs
compilations LATEX.
- Exemple :
-
-
\documentclass{report}
\usepackage{algorithm,algorithmic}
\begin{document}
\listofalgorithms
\chapter{toto}
\begin{algorithm}[h!tp]
\begin{algorithmic}[2]
\REQUIRE $T_1$ et $T_2$ doivent \etre des tableaux de
valeurs additionnables, et doivent \etre de la m\eme
longueur $n$. \ENSURE $\forall 0\leq k< n \;\;
Result[k]=T_1[k]+T_2[k]$.
\FOR{$i\rightarrow 0$ to $n$}
\STATE $Result[i]\rightarrow T_1[i]+T_2[i]$
\ENDFOR
\end{algorithmic}
\caption{Somme terme \`a terme de deux tableaux3}
\label{algo-ex-3}
\end{algorithm}
[recopie en trois exemplaires]
\end{document}
%%%% fin exemple %%%%
29.17 Comment connaître les versions des fichiers utilisés lors d'une compilation
?
Il suffit d'utiliser la commande \listfiles.
-
Exemple :
-
-
\documentclass{report}
\listfiles
\usepackage{french}
\usepackage{graphics}
\begin{document}
texte ...
\end{document}
%%%% fin exemple %%%%
29.18 Pourquoi certaines commandes sont elles indépendantes ?
Les commandes LATEX de type verbatim sont particulières du fait
qu'elles changent les codes de catégorie de leurs arguments. De ce
fait, elles ne sont plus compatibles avec d'autres commandes et ne
doivent pas être appelées par ces dernières. Certains caractères spéciaux
doivent alors être obtenus par \texttt.
-
Exemple :
-
-
\texttt{\char`\\}
%%%% fin exemple %%%%
On peut également utiliser l'environement lrbox de LATEX 2e pour
sauver le texte qui doit apparaître en verbatim dans une boîte et
ensuite utiliser cette boîte.
29.19 Comment installer un package ?
Lorsqu'il s'agit d'un package conçu pour LATEX 2e et utilisant les
procédures et outils définis dans ce cadre, c'est simple : un package
est fourni avec deux (ou plus, pour les packages plus complexes) fichiers,
package.ins et package.dtx
Il faut commencer par exécuter ``latex package.ins'' pour créer
le(s) fichier(s) de commandes lui(eux)-même(s) (typiquement package.sty)
puis ``latex package.dtx'' pour générer la documentation, avec
si besoin construction d'un index :
-
makeindex -s gind.ist -o package.ind package.idx
et d'un glossaire :
-
makeindex -s gglo.ist -o package.gls package.glo.
Ces fichiers doivent ensuite être déclarés dans une variable d'environnement
afin d'être rendus visibles.
-
Exemple (UNIX) :
-
-
TEXINPUTS=.:/usr/local/TEX/texmf/tex:/users/ADMIN/NG/LATEX:
/users/home/kluth/Section-equit/Modele
%%%% fin exemple %%%%
-
Remarques :
-
-
on ne peut évidemment générer la documentation en premier, parce qu'elle
aura toujours besoin du fichiers des commandes ;
- si l'on ne veut obtenir que la documentation < <utilisateur> >,
il faut ajouter la ligne ``\OnlyDescription'' dans
le fichier package.dtx, avant la ligne ``\DocInput{package.dtx}''.
Sinon on obtient aussi le listage commenté du code, ce dont on peut
ne pas vouloir se soucier et qui peut être volumineux pour les packages
importants.
Néanmoins, il est clair que ce mode d'organisation et de distribution
n'est que le mode encouragé par l'équipe de développement de LATEX
et n'est en rien une obligation. Un bon nombre de packages disponibles
ne le suit d'ailleurs pas (!), pour diverses raisons (packages qui
se veulent utilisables aussi bien avec Plain TeX qu'avec LATEX,
< < vieux > > packages écrits
pour LATEX209, packages écrits par des personnes qui veulent faire
< < comme ça leur plait > >, etc.)...
Dans ces différents cas, il faut < < aller y voir
de plus près > > pour comprendre l'organisation
choisie.
C'est justement le cas pour slashbox (!) : un seul fichier .sty est
fourni. Il faut l'éditer pour extraire le fichier de documentation
qui se trouve après la ligne 80 ``\endinput''.
-
Pour WINDOWS :
-
-
copier le fichier package.ins dans un répertoire temporaire et le
compiler avec LATEX ;
- déplacer le fichier package.sty dans un répertoire visible par LATEX,
soit commun à tous les utilisateurs, soit local, soit personnel :
-- pour fpTeX, ce sont respectivement les répertoires (déclarés
à l'installation de fpTeX) ./texmf/tex/latex/lerepertoiredemonpackage
(à créer si besoin), ./texmf.local/tex/latex/lerepertoiredemonpackage
(à créer si besoin), HOME/texmf/tex/latex/lerepertoiredemonpackage
(à créer si besoin) ; -- pour MikTeX, ce sont les mêmes répertoires
mais le répertoire local est ./localtexmf/ et que le HOME
ne semble pas être prévu : [FMF : je ne suis pas sûre de ce dernier
point]
- reconstruire la base de données des packages (rebuild ls-R
filenames databases pour fpTeX, refresh filename database
pour MikTeX).
29.20 Comment générer des codes barres ?
29.21 Comment gérer des abbréviations ?
Le package 'abbrevs' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/monster/
permet automatiquement de remplacer des abbréviations par leur formule
développée notamment lors d'un premier appel.
Le package 'acronym' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/acronym/
permet de s'assurer que tous les acronymes utilisés dans un document
apparaissent au moins une fois sous une forme développée.
29.22 Comment imprimer un fichier postscript sur une imprimante non postscript
?
alladin est un excellent programme qui permet d'imprimer du postscript
sur à peu près n'importe quelle imprimante. Cet outil est disponible
par ftp sur ftp://ftp.lip6.fr/pub/ghost/aladdin/.
-
Remarque :
- on ne peut pas dire que ce soit d'une très grande facilité
d'installation, mais une fois que ce mauvais moment est passé, on
ne peut plus s'en passer :-)
29.23 Comment surcharger une commande déjà existante ?
Pour pouvoir ajouter des définitions sur une commande prédéfinie sans
la réécrire complètement, il faut utiliser la commande \let.
-
Exemple :
-
-
\let\standardsection=\section
\def\section{\newpage\standardsection}
%%%% fin exemple %%%%
Il existe aussi la commande expandafter.
-
Exemples :
-
-
\toks0 \expandafter{\section}
\edef\section{\noexpand\newpage\the\toks0 }
\expandafter\def\expandafter\section\expandafter{\expandafter%
\newpage\section}
%%%% fin exemple %%%%
Le package 'babel' propose également la commande \addto.
29.24 Comment reporter l'exécution d'une commande à la fin d'une page ?
Il existe pour cela le package 'afterpage' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/required/tools/.
-
Exemple :
-
-
\afterpage{\clearpage}
%%%% fin exemple %%%%
29.25 Comment définir des scripts interactifs ?
Le package 'dialogl' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/dialogl/
permet de définir des scripts LATEX interactifs.
29.26 Comment identifier une version provisoire ?
Le package 'draftcopy' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/draftcopy/
permet par exemple d'écrire le mot DRAFT en grisé en diagonale sur
toutes ou certaines pages d'un document. Il permet également de faire
moins voyant.
-
Exemple :
-
-
\documentclass{report}
\usepackage{french}
\usepackage{draftcopy}
\begin{document}
Voici une version provisoire de mon texte. Pourriez-vous la
relire et me faire part de vos commentaires avant la fin de
la semaine?
Merci d'avance.
\paragraph{Proposition.}
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire --
Texte provisoire -- Texte provisoire -- Texte provisoire
\end{document}
%%%% fin exemple %%%%
Le package 'drafthead' également disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/
permet lui de n'agir que sur les en-têtes des documents.
On peut également utiliser la macro :
-
%%%% debut macro %%%%
\special{
! userdict begin /bop-hook{
stroke
gsave 240 100 translate
65 rotate /Times-Roman findfont 220 scalefont setfont
0 0 moveto 0.9 setgray (DRAFT) show grestore
}def end}
dans le préambule de son document.
%%%% fin macro %%%%
Le package 'prelim2e' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/prelim2e/
offre également un marquage des versions préliminaires d'un document.
29.27 Comment obtenir des caractères barrés ?
Le package 'ulem' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/
permet de barrer des caractères.
-
Exemple :
-
-
\sout{je barre tout}
%%%% fin exemple %%%%
29.28 A quoi sert la commande \ensuremath ?
La commande \ensuremath assure que son argument sera
imprimé en mode mathématique quel que soit le mode courant.
-
Exemple :
-
-
\documentclass{report}
\usepackage{french}
\pagestyle{empty}
\newcommand{\mc}{\ensuremath{(\alpha, \beta)}}
\begin{document}
Le couple \mc\ définit par $\mc = x+y, x-y$, ...
\end{document}
%%%% fin exemple %%%%
29.29 A quoi servent les commandes \(re)newcommand ?
La commande \newcommand permet à l'utilisateur de définir
ces propres commandes. La commande \renewcommand permet
de redéfinir des commandes LATEX déjà existantes. Elle s'utilise
dans le préambule du document :
-
\newcommand{nom_commande}[nb_arguments]{définition}
nb_arguments définit le nombre d'arguments de la nouvelle commande
LATEX. Il est compris entre 0 et 9. Ils sont référencés par #no_argument
dans la définition.
-
Exemple :
-
-
\documentclass{report}
\usepackage{french}
\pagestyle{empty}
\newcommand{\be}{\begin{enumerate}}
\newcommand{\ee}{\end{enumerate}}
\newcommand{\bold}[1]{\textbf{#1}}
\begin{document}
\bold{Faites votre choix:}
\be
\item premier choix: A
\item deuxième choix: B
\item troisième choix: C
\ee
\end{document}
%%%% fin exemple %%%%
-
Remarques :
- La commande \providecommand permet de
ne prendre en compte la nouvelle commande que si elle n'existe pas
déjà.
Pour définir un argument optionnel, on utilise la syntaxe :
-
\newcommand{nom}[nb_arg][defaut]{definition}
defaut permet de préciser une valeur par défaut de la variable qui
sera utilisée en l'absence d'argument. L'argument optionnel ne peut
être que #1.
29.30 Où trouver des hirondelles ?
On peut trouver la package 'cropmark' sur ftp://ftp.fdn.org/pub/CTAN/macros/generic/.
29.31 Comment tracer des lignes ?
On peut mettre la définition suivante dans le préambule du document
:
-
\def\ligne#1{\leaders\hrule height #1\linethickness \hfill}
puis utiliser :
dans le texte.
Il existe également la commande \rule qui prend en
premier argument, la longueur horizontale du trait et, en deuxième,
son épaisseur. Elle possède également un argument optionnel qui permet
de positionner la ligne traçée par rapport à la ligne d'écriture.
-
Exemple :
-
-
\rule[0.5ex]{\textwidth}{0.1mm}
%%%% fin exemple %%%%
On peut aussi utiliser les commandes \hrule pour des
lignes horizontales et \vrule pour des lignes verticales.
29.32 Comment imprimer le caractère ?
LATEX 2e fournit la commande \textasciitilde sous
fonte T1. Sous OT1, il faut définir :
-
\ProvideTextCommand{\textasciitilde}{OT1}{\{}}
Il est possible de passer par le mode verbatim via la commande :
On peut aussi définir sa propre commande :
-
\def\mytilde{\raisebox{-.8ex}{\}\hspace{-0.15em}}
\{} permet également d'obtenir un
tilde.
Une autre solution consiste à utiliser $\sim$.
Autre solution, utiliser : \char`\
-
Remarque :
- la première solution est de loin la meilleure.
29.33 Comment visualiser tous les caractères d'une fonte ?
Le plus simple consiste à utiliser :
nfssfont.tex est un fichier disponible sur CTAN.
Il faut ensuite donner le nom de la fonte à examiner par exemple cmr10
puis construire la table des caractères en utilisant la commande \table.
Cela permet de construire un fichier .dvi contenant les codes de tous
les caractères.
L'appel d'un symbole se fait alors via la commande \symbol{x}
où x est le code associé au caractère voulu (c'est un entier compris
entre 0 et 255).
On peut également utiliser \char''<octal> ou \char<hexa>
ou encore \char<decimal> mais ses commandes sont moins
robustes.
29.34 A quoi sert % dans les macros ?
Le % en fin de ligne d'une macro permet d'indiquer à LATEX que
la définition qu'il est en train de lire continue à la ligne suivante.
De manière générale, les espaces après une macro sont ignorés, mais
pas après les accolades. Ce caractère permet de s'assurer que des
espaces non voulus ne seront pas pris en compte. Ainsi, il est prudent
de mettre un % après chaque accolade qui se trouve en fin de ligne.
29.35 Comment inclure l'heure dans un document ?
La macro décrite ci-dessous, à inclure dans le préambule de votre
document, définit la commande \timenow :
-
%%%% debut macro %%%%
\makeatletter
\def\timenow{\@tempcnta\time
\@tempcntb\@tempcnta
\divide\@tempcntb60
\ifnum10>\@tempcntb0\fi\number\@tempcntb
\multiply\@tempcntb60
\advance\@tempcnta-\@tempcntb
:\ifnum10>\@tempcnta0\fi\number\@tempcnta}
\makeatother
%%%% fin macro %%%%
Le package 'time' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/generic/time.sty
permet d'inclure l'heure courante dans un document.
En ajoutant la macro suivante de H. Hanche-Olsen dans le préambule
de son document, on peut via la commande
-
%%%% debut macro %%%%
%\isodayandtime obtenir la date et l'heure courante :
\begingroup
\count0=\time \divide\count0by60 % Hour
\count2=\count0 \multiply\count2by-60 \advance\count2by\time
% Min
\def\2#1{\ifnum#1<10 0\fi\the#1}
\xdef\isodayandtime{\the\year-\2\month-\2\day\space\2{\count0}:%
\2{\count2}}
\endgroup
%%%% fin macro %%%%
Autre exemple d'utilisation (qui nécessite dvips) :
-
%%%% debut macro %%%%
\special{!userdict begin /bop-hook
{gsave -90 rotate -780 560 moveto 1.0 0.7 0.7 setrgbcolor
% 0.8 setgray
106 45 {dup mul exch dup mul add 1.0 exch sub} setscreen
/Times-Roman findfont 25 scalefont setfont (DRAFT
\isodayandtime) show grestore} def}
%%%% fin macro %%%%
On peut également utiliser la macro \time qui donne
l'heure en minutes. Pour afficher l'heure en heures et minutes, il
faut les calculer puis les afficher avec la macro \the.
-
Exemple 1 :
-
-
\documentclass{article}
\usepackage{french}
\pagestyle{empty}
\begin{document}
Cette compilation a démarré à \the\time\ minutes après minuit
le \today.
\end{document}
%%%% fin exemple %%%%
-
Exemple 2 :
-
-
\usepackage{calc}
\newcounter{hours}\newcounter{minutes}
\newcommand{\printtime}{%
\setcounter{hours}{\time/60}%
\setcounter{minutes}{\time-\value{hours}*60}%
\thehours :\theminutes}
%%%% fin exemple %%%%
Il existe également le package 'heure' de T. Bouche donné ci-dessous
:
-
%%%% debut macro %%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{heure}
[1996/6/11v0.1 affiche le jour et l'heure de production d'un
document]
\newif\if@heure@fin\@heure@finfalse
\newif\if@heure@final\@heure@finalfalse
\DeclareOption{fin}{\@heure@fintrue}
\DeclareOption{final}{\@heure@finaltrue}
\DeclareOption{draft}{}
\ProcessOptions
%%% définition de hours prise dans testfont
\newcount\m \newcount\n
\def\hours{\n=\time \divide\n 60
\m=-\n \multiply\m 60 \advance\m \time
\twodigits\n\ :\ \twodigits\m}
\def\twodigits#1{\ifnum #1<10 0\fi \number#1}
%%%%%%% Tant que ça n'est pas définitif.
\if@heure@final\else
\AtBeginDocument{\begin{center}%
{\bfseries\itshape\large Version du \today\ à \hours }%
\end{center}}
\fi
\if@heure@fin
\AtEndDocument{%
\begin{flushright}%
\small \itshape (Le \today\ à \hours )\hspace*{3em}%
\end{flushright}}
\fi
\endinput
%%%% fin macro %%%%
Utilisation : Il suffit de passer fin, final ou draft en option de
classe.
-
Exemple 1 :
-
-
\documentclass[11pt,draft]{article}
\usepackage{heure}
\begin{document}
Voici le résumé de notre expérience avec le Brome:
Bla bla bla.
\end{document}
%%%% fin exemple %%%%
-
Exemple 2 :
-
-
\documentclass[11pt,fin]{article}
\usepackage{heure}
\begin{document}
Voici le résumé de notre expérience avec le Brome:
Bla bla bla.
\end{document}
%%%% fin exemple %%%%
-
Exemple 3 :
-
-
\documentclass[11pt,final]{article}
\usepackage{heure}
\begin{document}
Voici le résumé de notre expérience avec le Brome:
Bla bla bla.
\end{document}
%%%% fin exemple %%%%
29.36 Comment compter le nombre de mots d'un fichier ?
A priori, il n'y a pas de solution simple à ce problème :
-
A partir du fichier source .tex, il faut enlever toutes les commandes
LATEX avec un utilitaire tel que detex (disponible sur ftp://ftp.fdn.org/pub/CTAN/support/detex/)
puis utiliser un autre utilitaire tel que wc sous UNIX.
- On peut également travailler à partir du fichier .dvi en appliquant
dvitty (ou dvi2tty).
-
ATTENTION :
- aucune de ces méthodes n'est idéale comme l'indique
l'essai comparatif de T. Bouche :
-
detex -i grfguide.tex | wc -w donne 4420
dvitty grfguide.dvi |wc -w donne 4524
wc -w grfguide.tex donne 4539
ps2ascii grfguide.ps |wc -w donne 5066
29.37 Comment rendre inactif un caractère ?
La commande \string permet de désactiver un caractère
rendu actif par une macro.
-
Exemple :
-
-
En français le : est rendu actif pour que LaTeX gère lui-même l'espace à mettre avant.
En revanche, dans une URL ou une adresse mail cet espace est superflu. On utilise donc :
mailto\string:moi.meme@chez.mon.site
%%%% fin exemple %%%%
29.38 Comment utiliser le mode verbatim dans une commande ?
LATEX 2e fournit l'environnement lrbox.
-
Exemple :
-
-
\documentclass{article}
\usepackage{alltt}
\pagestyle{empty}
% ---------------
\newsavebox{\inverbatim}
\begin{lrbox}{\inverbatim}%
\noindent\begin{minipage}{\linewidth}
\begin{alltt}
1
-8 + 7 Sqrt[2] ArcTanh[-------]
Sqrt[2]
\end{alltt}
\end{minipage}%
\end{lrbox}% box
% ------------------------------------
\begin{document}
\noindent
L'expression : \usebox{\inverbatim} démontrée au paragraphe
précédent prend ici tout son sens.
En effet l'expression \usebox{\inverbatim} permet\ldots
\end{document}
%%%% fin exemple %%%%
29.39 Comment redéfinir la commande \year ?
Pour ne faire apparaître que deux chiffres au lieu de quatre, il faut
utiliser :
-
\newcommand{\ignoretwo}[2]{}
\newcommand{\shortyear}{\expandafter\ignoretwo\the\year}
dans le préambule du document.
29.40 Qu'est ce que la magnification ?
La commande magnification permet de faire un zoom d'un document.
-
Exemple :
-
-
\mag=1440
\documentclass{...}
%%%% fin exemple %%%%
On peut également travailler sur le fichier postscript via dvips avec
l'option -x nombre où nombre vaut par exemple 1200 pour un agrandissement
de 20%.
De la même manière, le package 'scale' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/scale/
permet de modifier l'échelle d'un document avant impression.
29.41 Comment sont gérés les postscripts dans LATEX ?
P. Perichon :
TeX/LATEX + DVIPS procèdent en 2 temps :
-
Lorsque l'on a une figure PostScript (EPS : Encapsulated PostScrit),
on met les commandes nécessaires dans son source (fichier .tex) pour
dire à TeX/LATEX que l'on veut cette figure à telle place dans
son document avec telles dimensions (en incluant la bonne extension
: graphicx, psfig, epsfig) . Lors de la phase d'interprétation du
code TeX/LATEX, l'interprète TeX/LATEX va seulement consulter
dans le fichier externe contenant la figure les dimensions/proportions
de l'image (les fameuses bounding box chères au PostScript Encapsulé).
En fin de course, dans le fichier DVI on aura le nom et les dimensions
de l'image mais PAS CELLE-CI (qui est toujours externe). Donc si on
visualise juste le fichier DVI, on voit l'emplacement de l'image mais
pas cette dernière (en particulier la commande \psdraft
génère un cadre genre \fbox{...} aux dimensions de
l'image à l'emplacement de celle-ci).
- Dans un deuxième temps, la commande DVIPS, transformera le fichier
DVI en PostScript et incluera à ce moment les fichiers images EPS.
Donc si on visualise/imprime le fichier PostScript, on voit le texte
et les images.
Toutefois, certains visualiseurs DVI, par exemple XDVI sous UNIX pour
ne pas le citer, détectent quelque chose du genre :
-
PSfile="toto.eps" llx=0 lly=-1 urx=57 ury=29 rwi=4252
dans le fichier DVI, et appellent gentiment GostScript/GhostView qui
vont préparer une image bitmap que le visualiseur DVI s'empressera
de montrer (quand ça marche : avec psfig.sty pas de problème, mais
avec l'extension graphicx...). Mais d'autres visualiseurs, comme DVIWIN,
ne savent pas que faire d'un fichier PS.
DVI signifie DeVice Independent : ceci est un format de document indépendant
du système d'impression. Donc non lié à un langage de description
de page utilisé en interne par une quelconque imprimante (PostScript,
PCL, HPGL, Windows GDI, ...). Il suffit après d'utiliser un convertisseur
qui transforme le DVI en quelque chose que comprend votre imprimante
(PostScript, HPGL, PCL, ...). Cette méthode permet d'imprimer sur
n'importe quel type d'imprimante (il suffit d'avoir le bon convertisseur).
Mais hélas en DVI, il n'a point été prévu d'y mettre une image (le
problème n'est en effet pas simple). D'où l'utilisation de fichier
EPS.
29.42 Pourquoi LATEX n'accepte-t'il pas tous les formats d'image ?
P. Perichon :
Le problème est le suivant : un fichier DVI + image TIFF, GIF, TGA,...
comment faire digérer tout ça par votre imprimante ???? Le fichier
DVI peut se faire convertir en un langage d'impression compréhensible
par votre imprimante... mais vos formats d'images... faudrait-il en
plus prévoir un système de conversion de TIFF, GIF, TGA, ... vers
le langage d'impression de votre imprimante (Alladin avec GhostScript/GhostView
propose quelques filtres, mais bon). A part quelques langages de description
de pages comme PostScript et un ou deux autres qui pratiquent une
compatibilité ascendante quant aux versions du langage qu'ils utilisent,
les autres fabricants d'imprimantes changent de langage quasiment
à chaque modèle ou série d'imprimante (impossible de tenir à jour
autant de convertisseurs).
Pour tout cela le langage PostScript (PS et EPS) nous rend grandement
service en nous simplifiant la vie (et pour d'autres raisons aussi).
C'est peut-être un peu plus lourd à manipuler, mais plus simple pour
tout le monde de convertir vos images en EPS. De plus, si vous ne
disposez pas d'imprimante PostScript, GhostScript/GhostView se chargera
d'interpréter le fichier PS (texte + images), fabriquera une bitmap
à la bonne résolution et pourra l'envoyer à votre imprimante via votre
pilote d'impression. Tout cela automatisé dans une bonne distribution
est transparent à l'utilisateur.
Pour plus de détails, consulter le grfguide disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/graphics/
et le document epslatex disponible sur ftp://ftp.fdn.org/pub/CTAN/info/.
29.43 A quoi sert la commande \(re)newenvironment ?
Les commandes \newenvironment et \renewenvironment
permettent de définir des actions qui seront appliquées entre les
commandes \begin{mon_environnement} et \end{mon_environnement}.
Ces commandes doivent être appelées dans le préambule du document
suivant la syntaxe :
-
\newenvironment{nom}[nb_arg]{avant}{après}
avant et après sont les actions qui auront lieu à l'entrée et à la
sortie du nouvel environnement.
-
Exemple :
-
-
\documentclass{report}
\usepackage{french}
\newenvironment{Relief}[1]
{\mbox{\Large{\uppercase{#1}}}}
\begin{document}
\begin{Relief}
{Il}était une fois\ldots
\end{Relief}
\begin{Relief}
{U}n jour peut être\ldots
\end{Relief}
%%%% fin exemple %%%%
29.44 Comment récupérer le nom du fichier compilé ?
Pour récupérer le nom du fichier compilé et l'afficher lors d'une
compilation, il faut utiliser la commande \jobname.
-
Exemple :
-
-
Le fichier source est \texttt{\jobname.tex}.
%%%% fin exemple %%%%
29.45 Comment gérer des conditions de traitement dans un style ?
Le package 'ifthen' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/base/
permet d'implémenter des traitements conditionnels tels que \ifthenelse
et \whiledo.
29.46 A quoi servent les commandes \setlength et \addtolength
?
Ces deux commandes permettent de modifier la longueur de certains
paramètres.
-
Exemples :
-
-
\setlength{nom_parametre}{longueur}
\addtolength{nom_parametre}{longueur}
%%%% fin exemple %%%%
29.47 Quelles sont les unités de mesure de TeX ?
TeX comprend six unités de mesure :
-
pt point = 0,35 mm
- mm millimètre
- ex correspond à la hauteur d'un x dans la fonte courante
- em correspond à la largeur d'un m dans la fonte courante
- cm centimètre
- in pouce = 2,54 cm
29.48 A quoi sert la commande \mbox ?
La commande \mbox permet à LATEX de considérer son
argument comme une seule entité. Elle peut ainsi empêcher la coupure
d'un mot ou d'un groupe de mots.
-
Exemple :
-
-
Mon numéro de téléphone est le\mbox{01 69 63 12 68}.
%%%% fin exemple %%%%
ce qui donne :
Mon numéro de téléphone est le 01 69 63 12 68.
29.49 Comment obtenir des points de suspension ?
La commande \ldots permet d'obtenir trois points de
suspension espacés correctement.
29.50 Comment désactiver une ligature ?
Pour désactiver une ligature, il faut introduire {} ou une \mbox{}
entre les lettres ligaturées.
-
Exemple :
-
-
comparez effacer, ef{}facer et ef\mbox{}facer
%%%% fin exemple %%%%
ce qui donne :
comparez effacer, effacer et effacer
29.51 Comment gérer les versions d'un document ?
Pour les versions provisoires, voir la question ??.
Il existe le package 'vrsion' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/vrsion/
qui permet via la commande \version d'inclure un numéro
de version dans un document LATEX. Ce numéro est incrémenté à chaque
compilation.
On peut également se reporter à la question ?? pour inclure
le jour et l'heure de compilation dans un document.
29.52 Comment changer certains titres ?
Il suffit de renommer les variables suivantes :
-
\def\refname{R\'ef\'erences}%
\def\abstractname{R\'esum\'e}%
\def\bibname{Bibliographie}%
\def\prefacename{Pr\'eface}%
\def\chaptername{Chapitre}%
\def\appendixname{Annexe}%
\def\contentsname{Table des mati\`eres}%
\def\listfigurename{Table des figures}%
\def\listtablename{Liste des tableaux}%
\def\indexname{Index}%
\def\figurename{{\scshape Fig.}}%
\def\tablename{{\scshape Tab.}}%
\def\partname{\protect\@Fpt partie}%
\def\@Fpt{{\ifcase\value{part}\or Premi\`ere\or Deuxi\`eme\or
Troisi\`eme\or Quatri\`eme\or Cinqui\`eme\or Sixi\`eme\or
Septi\`eme\or Huiti\`eme\or Neuvi\`eme\or Dixi\`eme\or
Onzi\`eme\or Douzi\`eme\or Treizi\`eme\or Quatorzi\`eme\or
Quinzi\`eme\or Seizi\`eme\or Dix-septi\`eme\or
Dix-huiti\`eme\or Dix-neuvi\`eme\or Vingti\`eme\fi}}%
\space\def\thepart{}}%
\def\pagename{page}%
\def\seename{{\emph{voir}}}%
\def\alsoname{{\emph{voir aussi}}}%
\def\enclname{P.J. }%
\def\ccname{Copie \`a }%
\def\headtoname{}%
\def\proofname{D\'emonstration}% for AMS-LaTeX
Remarque : lorsque certains changements de noms sont déjà gérés par
un package (french par exemple) il faut placer les définitions ci-dessus
après le \begin{document}.
29.53 Comment insérer un code source dans un document ?
-
Le package 'listings' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/listings/
permet de gérer la mise en page de code source avec notamment la mise
en relief de mots clés.
- La distribution GUTenberg contient un package du nom de 'lgrind' (executable+lgrind.sty)
qui, entre autres (C, C++, Pascal, BASIC, Modula-2, Fortran, RATFOR,
Yacc, PostScript, Prolog, MLisp, Icon, LATEX, Perl, CSH, Bourne
Shell, assembler, 68000 assembler, asm68, VMS assembler, ISP, LDL,
Linda, MODEL, MatLab, Russell), formatte du code C++ en LATEX.
Ce programme disponible sur CTAN permet à partir de code source C
de générer du code LATEX respectant l'indentation. Ce package est
également disponible sur ftp://ftp.fdn.org/pub/CTAN/support/lgrind/.
- wflman disponible par ftp sur ftp://ftp.keck.hawaii.edu/pub/wlupton/wflman-2.2.2.tar.gz
peut aussi être utile.
- Il existe également DOC++ qui peut créer une documentation HTML ou
LATEX à partir des infos ajoutées dans les commentaires du code
C++. Pour plus de détails, voir : http://www.ZIB-Berlin.DE/VisPar/doc++/doc++.html
- Le package 'tgrind', qui vient avec un .sty et une moulinette permet
de transformer un .c en .tex
- Le package 'c++2latex' sous license GNU est capable de convertir des
fichiers C, C++ et JAVA en LATEX 2e. Les lignes peuvent être numérotées.
- Le package 'cprog' disponible sur CTAN permet de formater des programmes
C en TeX.
- Le package 'c2ltx', de M. Plugge (plugge@biv7.sr.fh-mannheim.de),
appartient à la famille de convertisseurs cvt2ltx. Il numérote les
lignes, traduit != en $\neq$ , gère les commentaires,
les en-têtes de procédures, etc. Il supporte plusieurs fichiers d'entrée
et gère automatiquement les changements de section et la génération
d'index. Une documentation est disponible par ftp sur ftp://axp3.sr.fh-mannheim.de/cvt2latex/cvt2ltx.zip.
29.54 Comment tracer une ligne horizontale ?
Pour obtenir une ligne centrée par rapport à la mi-hauteur au dessus
de la ligne d'écriture, on peut utiliser ceci :
-
\hbox{\raisebox{0.4em}{\vrule depth 0pt height 0.4pt width 1cm}Toto}
de qui donne :
0.4emdepth 0pt height 0.4pt width 1cmToto
29.55 Comment générer un espace invisible de taille donnée ?
Il existe pour cela la commande \phantom. Celle-ci
génère un espace invisible de la même longueur que son argument.
-
Exemple :
-
-
Complète les mots qui manquent dans le texte suivant:
Le petit chaperon \phantom{rouge} se promène\ldots.
%%%% fin exemple %%%%
ce qui donne :
Complète les mots qui manquent dans le texte suivant :
Le petit chaperon rouge se promène ....
29.56 Qu'est ce qu'une correction italique ?
Pour que LATEX puisse gérer correctement le passage d'une fonte
italique à une fonte droite, il peut être utile d'utiliser la commande
\/. Cela permet d'augmenter légèrement l'espace qui
sépare la dernière lettre en italique, de la première lettre droite.
-
Exemple :
-
-
Un \textit{cheval}\/ file au galop.
%%%% fin exemple %%%%
ce qui donne :
Un cheval file au galop.
29.57 Quels sont les accents accessibles sous LATEX ?
Les accents accessibles sous LATEX sont les suivants :
-
\`{a} ou \`a accent grave soit à
ou à
- \'{e} ou \'e accent aigu soit é
ou é
- \{i} ou \i
accent circonflexe soit î ou î
- \"{o} ou \"o trema
soit ö ou ö
- \{u} ou \u
tilde soit u ou u
- \={o} ou \=o surligné soit o ou
o
- \.{o} ou \.o point soit o ou o
- \u{o} soit o
- \v{o} soit o
- \H{o} trema hongrois soit o
- \t{oo} soir oo
- \c{c} cédille soit ç
- \d{o} point en dessous soit o
- \b{o} sousligné soit o
29.58 Comment écrire dans un fichier pendant une compilation ?
On dispose pour cela des commandes \write et \newwrite.
-
Exemple :
-
-
\newwrite\test
\openout\test=toto
\write\test{Je m'appelle Paul}
\write\test{\noexpand\thesection}
\closeout\test
\bye
%%%% fin exemple %%%%
-
Remarque :
- \noexpand permet d'inclure des commandes
LATEX sans qu'elles soient interprêtées.
Le package 'french' propose la commande \originaloutput[fichier]{texte}
pour écrire le ``texte'', tel qu'il est fourni, dans le ``fichier''.
Dans ce cas, les caracteres actifs de french sont automatiquement
desactivés. C'est donc l'equivalent de \immediate\write\fichier{texte}.
Le package 'sverb' disponible sur CTAN propose l'environnement verbwrite.
-
Exemple :
-
-
\begin{verbwrite}{fichier.tmp}
Ce texte va être sauvé dans le fichier fichier.tmp.
\end{verbwrite}
%%%% fin exemple %%%%
29.59 Comment gérer des compteurs ?
Un certain nombre de compteurs sont prédéfinis dans LATEX, il s'agit
:
-
des compteurs de structuration du document : part, chapter, section,
subsection, subsubsection, paragraph, subparagraph,
- du compteur de page,
- du compteur d'équation,
- du compteur de figure,
- du compteur de tables,
- des compteur de notes : footnote et mpfootnote,
- et des compteurs de liste : enumi, enumii, enumiii et enumiv.
Pour définir son propre compteur, il faut utiliser la commande
-
\newcounter{nv_cptr}[ref_cptr].
Lorsque qu'un compteur déjà existant est passé en argument (ref_cptr),
le nouveau compteur nv_cptr sera réinitialisé à chaque incrément
via
ou
du compteur ref_cptr.
Par défaut, la valeur d'un nouveau compteur est 0. La commande
permet de lui donner une autre valeur. On peut également incrémenter
la valeur d'un compteur via la commande
La valeur d'un compteur peut être récupérée, dans un calcul par exemple,
grâce à la commande
\stepcounter{cptr} permet d'incrémenter le compteur
cptr et de réinitialiser tous les compteurs liés par référence (argument
ref_cptr de la commande \newcounter). La commande
\refstepcounter{cptr} permet en outre de mettre à
jour la valeur courante du compteur qui pourrait être appelé par un
\ref.
\thecptr, où cptr est le nom d'un compteur permet d'afficher
sa valeur.
-
Exemple :
-
-
\newcounter{section}
\newcounter{subsection}[section]
%%%% fin exemple %%%%
29.60 Quels sont les différents styles de compteurs ?
Il en existe six prédéfinis :
-
\arabic{cptr} pour un nombre arabe,
- \roman{cptr} pour un nombre romain minuscule,
- \Roman{cptr} pour un nombre romain majuscule,
- \alph{cptr} pour une lettre minuscule,
- \Alph{cptr} pour une lettre majuscule,
- \fnsymbol{cptr} pour un symbole.
-
Exemple :
-
-
\renewcommand{\thesection}{\Roman{section}}
\renewcommand{\thesubsection}{\thesection.\roman{subsection}}
%%%% fin exemple %%%%
29.61 Comment programmer un traitement itératif ?
Le package 'multido' propose une commande \multido
qui est une boucle TeX. Sa syntaxe est la suivante :
-
\multido{variables}{nbiteration}{code}
Le code sera ainsi répété nbiteration fois. Les déclarations de variables
sont séparées par des virgules. Un déclaration prend la forme :
-
variable = valeurinitiale + increment
Elle est utile notamment pour le dessin de figures.
-
Exemple (doc package) :
-
-
\setlength{\unitlength}{1cm}
\small
\begin{picture}(8,1)(0,-.5)
\put(0,0){\vector(1,0){8}}
\multido{\i=0+1, \n=0+0.25}{8}{%
\put(\i,-.1){\line(0,1){.2}}
\put(\i,-.2){\makebox(0,0)[t]{\n}}}
\end{picture}
%%%% fin exemple %%%%
29.62 A quoi servent les commandes savebox ?
Il existe les commandes :
-
\newsavebox{ma_boîte} pour déclarer une boite
- \sbox{ma_boîte}{contenu} pour remplir ma_boite
- \savebox{ma_boîte}[lagr][pos]{contenu}
pour remplir une boite de largeur lagr et de position pos
- \usebox{ma_boîte} pour appeler le contenu de ma_boite
- lrbox est l'environnement équivalent à sbox
-
Exemple :
-
-
\newsavebox{\maboite}
\sbox{\maboite}{\textbf{Alcatel Alsthom Recherche}}
\usebox{\maboite} se situe à Marcoussis. Je travaille à
\usebox{\maboite} depuis\ldots...
%%%% fin exemple %%%%
ce qui donne :
Alcatel Alsthom Recherche se situe à Marcoussis. Je travaille à Alcatel Alsthom Recherche depuis ldots
29.63 Comment résoudre certaines incompatibilités de packages ?
Il arrive parfois lorsque plusieurs packages sont utilisés simultanément
que des macros différentes portent le même nom, ou que certaines macros
perturbent le fonctionnement d'autres macros. Dans certains cas le
problème peut se résoudre en changeant l'ordre d'appel des packages.
-
Exemple (J.P. Drucbert) :
-
Le paquetage psboxit définit des commandes \psboxit
qui engendrent \special{ps: ...}. Le problème vient
de ce deux-points. Si vous chargez psboxit.sty AVANT babel (option
french), pas de problème, le deux-points est un caractère ordinaire
(other) lors de la déclaration de la macro \psboxit
et donc le \special écrira bien un ``:``.
Par contre si psboxit.sty est chargé APRES babel (option french),
le deux-points est alors un caractère actif au moment de la déclaration
de la macro \psboxit, et le \special
n'écrira pas un deux-points, mais un espace insécable (en fait une
macro interne de babel) et un :, d'où les erreurs. C'est un cas classique
de catcodes pas très bien gérés (en fait psboxit.sty devrait sauver
le catcode de : , donner la catégorie other au caractère :, définir
\psboxit, puis restaurer le catcode). %%%% fin
exemple %%%%
29.64 Qu'est ce que Lollipop ?
C'est un jeu de macro de V. Eijkhout, destiné à faciliter l'écriture
de macros TeX. Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/lollipop/.
29.65 J'ai un problème avec babel !
En tentant d'utiliser babel, j'obtiens l'erreur suivante:
-
! Undefined control sequence.
\add@accent ...l \mathchardef \accent@spacefactor
\spacefactor }\accent #1 #...
l.3 \begin{document}
Le problème est connu et a été corrigé par babel le 19 août 1999.
Si vous ne pouvez pas mettre à jour votre paquetage de babel, utilisez
le cache-bogue suivant, à mettre dans le préambule (donation de Javier
Bezos):
-
\makeatletter
\let\accent@spacefactor\relax
\makeatother
Vous pouvez également ajouter la ligne suivante dans vos entêtes:
\usepackage{t1enc}
En effet, le problème ne se manifeste pas en codage T1.
29.66 Qu'est ce que cette FAQ ?
-
quelques 660 url, dont:
-
plus de 390 url sur ctan;
- et quelques 270 url externes;
- quelques litres de café;
- beaucoup de sueur;
- de nombreux CDs usés.