[Retour]
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 . Put it where your TeX could find it. Just
write
in the beginning of your
document. You are ready to insert images.\input
image.tex
The typical use is
\imagebox{src=my-image.suffix
size=328x217}
where
is
the picture, my-image.suffix
is suffix
or
jpg
or
jpeg
or
JPG
or
JPEG
or
gif
, the size is the
true size measured in pixels: GIF
.size=
width x height
In order to magnify images, there is
one single control sequence
which set up the scale (xxx is any reasonable number).
Resolution is tied to the program and is 600 dpi.\imagescale{xxx}
This program find what is the suffix of the image. For
instance
has
suffix photo.0.1.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.jpg
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
and
giftopnm
. Remember,
all of this is about Unix-like system!
pnmtops
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.
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.
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)
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.
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
; par count
.
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.
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.
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
sont inutiles, c'est une finesse TeX
intéressante lorsque le document est agrandi par un
certain facteur...
true
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...
(to be completed)
(sommaire)