Page d'accueil du laboratoire > Équipe de Probabilités > Page principale > TeXtrix
webfig10

TEXTriX


Sommaire

[Retour]


Image.tex

A few words

The following things use some shell scripts within TeX files that will be processed while interpreting dvi files or translating them into postscript. (You, hackers, know what it means...)

Tired of encapsuled postscript images? You want to easily insert gif or jpg images in your TeX files?

Just make sure that there is a decent version of the Netpmb package on your Unix-like system (that's the case for Gnu-Linux system, but not for local S*l*r*s and Co systems...).

Copy the following input file: image.tex hot!. Put it where your TeX could find it. Just write \input image.tex in the beginning of your document. You are ready to insert images.

The typical use is

\imagebox{src=my-image.suffix size=328x217}

where my-image.suffix is the picture, suffix is jpg or jpeg or JPG or JPEG or gif or GIF, the size is the true size measured in pixels: size= width x height .

In order to magnify images, there is one single control sequence \imagescale{xxx} which set up the scale (xxx is any reasonable number). Resolution is tied to the program and is 600 dpi.

Nice things

This program find what is the suffix of the image. For instance photo.0.1.jpg has suffix jpg. Conditionally to the suffix, proper treatment is made. The resulting box has dimensions given by the arguments. It's almost "one in a file": the most that could be done with TeX is done so.

Bad things

One has to check the dimension of the image. Magnification is not very versatile. The external programs may be absent or obsolete as it happens on my usual workstation. Check the following programs: djpeg, giftopnm and pnmtops. Remember, all of this is about Unix-like system!


Petites choses plainTeX

Insertion de figures

La conception de figures à insérer dans un document TeX est parfois difficile. L'insertion de telles figures peut se révéler extrèmement hardue si on faire des choses presque non standard. Nous renvoyons à la sous-section webfig.mp de notre page consacrée aux exemples de figures MetaPost pour quelques méthodes --- Le fichier webfig.tex contenant des exemples variés.

Bibliographie

Finalement nous renonçons à expliquer le fonctionnement des commandes de typoref.tex. C'est un package plain-TeX ou presque : quelques modifications à la commande \bye sont à faire pour que cela marche :

% THE NEXT MACRO MUST BE INCLUDED
% IN THE \BYE COMMAND. FOR INSTANCE: 
%
% \catcode`@=11
% \outer\def\bye{\@closeaux
% \par\vfill\supereject\end}
% \catcode`@=12

(voir texte source). La syntaxe des commandes suit très approximativement celle de LaTeX (\ref, \label, \cite, \bibitem, \beginthebibliography{18} ... \endthebibliography). Les commandes \cite et \ref admettent des arguments multiples (\cite{trucmuch 1,trucmuch 2,trucmuch 3}), mais il faut faire attention à la saisie des références : elles doivent se correspondre espace par espace (autant ne pas en mettre) et sont séparées par une virgule (donc pas de virgule dans le nom d'une référence). La commande \bibitem n'a pas d'argument optionnel, la numérotation des items bibliographiques est arabe et c'est tout.

vonkoch0.jpg

Goodies : le flocon de von Koch et le tapis de Sierpinski

Dans la série des bêtises que l'on peut faire avec TeX, voici un exercice sur la récursivité et la manœuvre de boîtes (vonkoch.tex). L'image ci-contre est originellement issue de la compilation du fichier TeX ci-dessous. Après conversion en postscript, elle a été retouchée et extraite avec The Gimp. Cliquez dessus pour voir sa grande sœur...

De manière plus linéaire, on peut facilement dessiner des tapis de Sierpinski. La grosse limitation est comme plus haut la limitation de mémoire allouée à TeX.

(sommaire)

Petites choses LaTeX

LaTeX' page

Mise en page d'un document LaTeX

Il est hélas assez classique de manipuler des documents formatés avec LaTeX qui ont été mal positionnés par rapport au format de feuille (A4) utilisé. Ceci provient le plus souvent du fait que de nombreux utilisateurs de LaTeX connaissent mal ou ignorent quelles sont les dimensions qui règlent cette mise en page, et que les dimensions standard de LaTeX sont destinées à d'autres formats de papier.
Nous avons recomposé ci-contre une figure qu'on peut trouver dans l'ouvrage de Leslie Lamport. Celle-ci montre à ceux qui pouvaient en douter que l'ajustement d'une page LaTeX est parfaitement maîtrisable (métrisable).
Si vous ignorez tout de la notion de dimension en TeX ou LaTeX, ça n'est pas très grave car c'est très simple.

Registres et dimensions

TeX --- toujours sous-jacent à LaTeX --- reconnaît plusieurs types de grandeurs numériques qui sont les entiers (count) et les longueurs (dimen) --- on pourrait mentionner aussi les ressorts, longueurs contractables et expansibles (skip).
S'il est possible d'utiliser de telles grandeurs explicitement (par exemple dans une écriture du genre \hbox to 3.5 cm{\hss truc\hss}), des registres (au nombre de 256 pour chacune de ces grandeurs) permettent d'en conserver la valeur et d'être utilisés comme des variables munies d'un petit nom évocateur. Les registres ont un numéro et peuvent être invoqués par celui-ci (par exemple \count35, \dimen127, etc.). Comme ça n'est pas très parlant des procédures sont définies en plainTeX ou en LaTeX pour attribuer un nom à ces registres. En plain, on pourra taper

\newcount\mycounter
\mycounter=312
\countdef18=\specialcounter
\specialcounter=1290987

La définition de \mycounter fait de celui-ci un registre de type count dont le numéro est alloué automatiquement en fonction des registres déjà utilisés (c'est donc très pratique). La définition de \specialcounter associe ce dernier à un registre déterminé (ici, le 18ème). Cette dernière méthode de nomination d'un registre est donc plus délicate (penser que le registre en question a pu être déjà alloué et qu'il peut servir pour le formatage de vos documents). Ce qui précède vaut tout aussi bien pour les dimensions quitte à remplacer count; par dimen.
TeX a des capacités de calcul limitées --- plus que convenable pour ce qu'on peut attendre de lui ---, les entiers que TeX peut manipuler sont compris entre -2 147 483 647 et 2 147 483 647, et les dimensions entre -16383.99998 pt et 16383.99998 pt (5.76 mètres) avec une précision de 1/65536 pt (invisible à l'œil humain). Pour ce qui est des unités de longueur, plain et LaTeX reconnaissent

bp (0.352 68 mm),
cc (4,512 51 mm),
cm,
in (25.4 mm),
pc (4.217 18 mm),
pt (0.351 14 mm),
mm,
sp (0.000 005 362 851 mm),

plus certaines unités contextuelles telles que ex (« hauteur d'un x ») et em (« longueur d'un m ») qui dépendent des fontes utilisées.
La manipulation de ces grandeurs ne se borne pas à l'affectation, des opérations simples comme l'addition, la division et la multiplication par un entier sont permises (\advance\mymachin by \truc, \multiply\mymachin by \truc, et \divide\mymachin by \truc). Pour plus d'informations, voir l'excellent ouvrage de T.  Lachand-Robert, ou n'importe quel manuel usuel.

Exigences élémentaires

Les dimensions indiquées sur la figure règlent la mise en page. Il est possible de les modifier à la main sans avoir recours à un package spécial (a4 ou autre). Il suffit de se donner quelques contraintes (dimensions du corps du texte) et d'en déduire quelles valeurs doivent prendre les autres quantités.
Sauf cas exceptionnels, l'utilisateur voudra conserver les dimensions de la tête, du pied (d'ailleurs variable) et du texte en marge (rarement utilisé). Ainsi, en assignant de nouvelles valeurs à \textheight ou \textwidth, il ne pourra jouer que sur les valeurs de \topmargin, \evensidemargin et \oddsidemargin --- ces deux dernières définissant l'écart à la marge standard suivant que la page est de numéro pair ou impair (c'est important pour un livre car il faut tenir compte de la reliure). Ainsi, après quelques calculs élémentaires mais fastidieux, parfois associés à des mesures fines à la règle, on arrive à ses fins : avoir un corps de texte convenablement centré sur la page. La section suivante donne un exemple d'automatisation de cette tâche.

Un petit script

Il n'y a rien de canonique dans ce qui suit. Ça présente au moins la qualité de donner quelques exemples de manipulations de dimensions en TeX ou plainTeX (compatible LaTeX). Ce petit texte peut (doit) étre placé en préambule, probablement juste avant le \begin{document} (pour espérer que les spécifications qu'il donne s'imposerons sur celles qui auraient été faites antérieurement). La dimension \decalage est juste le petit écart nécessaire pour la prise en compte d'une reliure (ici, on aura estimé que la reliure mange 0.5 cm).

% dimensions choisies par l'utilisateur

\newdimen\decalage

\paperheight=29.7 true cm \paperwidth=21 true cm
\textheight=24.2 true cm \textwidth=15.3 true cm
\decalage=0.25 true cm

% déduction de \topmargin,
% \evensidemargin et \oddsidemargin

\oddsidemargin=\paperwidth
\advance\oddsidemargin by -\textwidth
\divide\oddsidemargin by 2
\advance\oddsidemargin by -1 in
\evensidemargin=\oddsidemargin
\advance\oddsidemargin by \decalage 
\advance\evensidemargin by -\decalage

\topmargin=\paperheight
\advance\topmargin by -\headheight
\advance\topmargin by -\headsep
\advance\topmargin by -\textheight
\advance\topmargin by -\footskip
\divide\topmargin by 2
\advance\topmargin by -1 in

Les true sont inutiles, c'est une finesse TeX intéressante lorsque le document est agrandi par un certain facteur...

Remarques

Le format LaTeX propose une syntaxe différente pour manipuler les quantités numériques. Il n'est pas nécessaire pour l'instant de la connaître pour formater des documents puisque TeX est toujours derrière. Cependant, si le moteur venait à être changé, la syntaxe LaTeX serait alors peut-être obligatoire...

plainTeX                       LaTeX
\newcount\machin        <--->  \newcounter{machin}
\machin=xxx             <--->  \setcounter{machin}{xxx}
\advance\machin by xxx  <--->  \addtocounter{machin}{xxx}
\newdimen\truc          <--->  \newlength{\truc}
\truc=xxx               <--->  \setlength{\truc}{xxx}
\advance\truc by xxx    <--->  \addtolength{\truc}{xxx}

etc. (voir, par exemple, le livre de Lamport). Attention, le compteur TeX défini par \newcounter{machin} ne s'appelle pas \machin mais \c@machin, et n'est pas communément accessible. En revanche, \newlength{\truc} définit bien une longueur \truc qui est en fait un skip...

Quelques bidouilles

(to be completed)

(sommaire)
Copyright: HTML's texts or graphics are free of any copyright, they are copyleft. TeX programs are also copyleft but one can send a postcard. MetaPost programs have just a feel-free-to-send-me-a-postcard licence. MetaFont programs have the standard LaTeX licence.
Valid HTML 4.01!
Anthony Phan,
Département de Mathématiques, SP2MI,
Boulevard Marie et Pierre Curie, Téléport 2,
BP 30179, F-86962 Futuroscope-Chasseneuil cedex