Comment mettre des éléments à une position donnée sur une page ?#

Le paradigme du monde est (en gros) que l’auteur écrit un texte, puis que et ses commandes décident de la façon dont tout ça est mis en page. Ce choix est parfois malheureux pour l’auteur qui, pour une raison ou une autre, doit parfois s’assurer que certaines choses apparaissent exactement là où il veut sur la page. Quelques extensions permettent cependant de positionner de répondre à ce besoin.

1.  Avec l’extension TikZ#

L’extension la plus polyvalente est TikZ :

\documentclass{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{tikz}

\begin{document}
\begin{tikzpicture}[overlay,remember picture]
  \path (current page.north east) node[anchor=north east] {Coin 
    supérieur droit} ;
\end{tikzpicture}
Observez bien, là-haut, dans l'angle !
\end{document}

Notez que les deux options overlay et remember picture sont indispensables pour placer des points de façon absolue sur la page :

  • overlay permet que des points soient placés en-dehors de l’image sans agrandir sa bounding box (autrement dit la boîte qui la délimite),

  • remember picture stocke des références aux nœuds dans le fichier .aux, pour qu’elles puissent être utilisées par à la compilation suivante. Vous aurez besoin de deux compilations successives de votre document pour que les nœuds apparaissent, car TikZ utilise le fichier .aux pour les placer aux bons endroits sur la page.

2.  Avec l’extension textpos#

L’extension textpos permet de construire des pages à partir de « blobs » (de n’importe quoi, en fait), répartis sur toute la page, comme sur une affiche. Vous devez utiliser pour cela l’environnement textblock auquel vous donnez les coordonnées (x,y) (par rapport au coin supérieur gauche d’une page) ainsi que le contenu de ce « blob ».

Vous pouvez utiliser un repère absolu à l’aide de l’argument optionnel absolute dont l’origine est donnée à l’aide de \textblockorigin. Les abscisses et les ordonnées sont spécifiées avec \TPHorizModule et \TPVertModule. En voici un exemple :

\documentclass{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage[absolute]{textpos}

  % Unités en abscisses et en ordonnées
  \setlength{\TPHorizModule}{100pt}
  \setlength{\TPVertModule}{\TPHorizModule}

  % Point de référence
  \textblockorigin{10mm}{10mm}

\begin{document}
  \begin{textblock}{2}(1,1)
    Du texte de largeur 2 dont le coin
    haut/gauche est en (1,1).
  \end{textblock}

  \begin{textblock}{2}[0.5,0.5](3,2)
    Un autre texte de largeur 2 dont le
    centre est en (3,2).
  \end{textblock}
\end{document}

3.  Avec l’extension eso-pic#

L’extension eso-pic définit une « image de sortie » qui couvre la page. Vous pouvez ajouter des commandes « en mode image », qui peuvent bien sûr inclure des placements de boîtes ou autres. Cette extension appelle everyshi, qui doit donc être aussi disponible.

\documentclass{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage[texcoord]{eso-pic}

  \AddToShipoutPictureBG{
    \AtPageLowerLeft{%
       Nous sommes au coin bas gauche.
    }
  }

\begin{document}
Regardez en bas de la page.
\end{document}