Modification des marges, mise en page spéciale
17 Sep. 2006
- Auteur : tonton nestor
- Responsable : TrustRobot
- Score ( voter ) :



- Connexes : Même auteur | Même responsable | Historique
1. Modification des marges :
Nous arrivons ici sur un sujet polémique... Vous avez remarqué que par défaut, LaTeX laissait des marges importantes, que la marge extérieure était plus importante que celle intérieure... Par rapport à un WYSIMYG tel qu'Open Office, cela est surprenant au départ, voire choquant. Pourtant à y regarder de plus près, les pages n'y sont-elles pas plus agréable à la lecture ? Si vous n'avez aucun courage pour la modification manuelle des marges, vous pouvez toujours utiliser le package fullpage avec la ligne suivante dans le préambule du document :
\usepackage{fullpage}
1.1 La base des modifications :
Vouloir modifier est une chose, encore faut-il savoir quoi modifier... Pour cela il est essentiel de rentrer le document source suivant :
\documentclass[a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage[francais]{layout}
\begin{document}
\layout
\end{document}
puis de le compiler, et de le visionner (remplacez article par la classe de document souhaitée).
Comme vous le remarquez, \layout permet de connaître et le nom des variables définissant les différentes marges, et leur valeur par défaut.
Pour jouer avec ces valeurs, nous pouvons utiliser quatre types de syntaxe :
- \variable = mesure
- \renewcommand{\variable}{mesure}
- \setlength{variable}{mesure}
- \addtolength{variable}{mesure ajoutée}
1.2 Document oneside (simple recto) :
Nous pouvons nous baser sur le code donner précdemment (classe article). Imaginons que nous voulions agrandir un peu la largeur du texte de 2cm. Le paramètre à modifier va donc être \textwidth. Nous allons utiliser la ligne :
\addtolength{\textwidth}{2cm}
Pour information, 1 cm équivaut approximativement à 28 pt.
Si vous recompilez la source précédente avec la modification du paramètre \textwidth, vous allez vous rendre compte que l'ajout a été effectué à droite, décallant ainsi la marge réservée aux notes. Pour y remédier, il va falloir modifier le paramètre \oddsidemargin. En effet, en lui ajoutant la valeur négative -1cm, ceci décallera le texte vers la gauche de 1 cm, autrement dit la même quantité sera ajoutée sur chacune des marges. La ligne correspondante :
\addtolength{\oddsidemargin}{-1cm}
Malheuresement nous aimerions mettre des notes en marge (en plus de celles en bas de page), et nous nous rendons compte que celle-ci est relativement petite. Nous décidons de lui rajouter 22pt :
\addtolength{\marginparwidth}{22pt}
À nouveau un décallage vers la gauche étant souhaitable, je convertie le 1 cm en pt auquel je rajoute 11 pt :
\addtolength{\oddsidemargin}{-39pt}
Pour des modifications sur les marges horizontales, nous utiliserons la variable \textheight pour agrandir la hauteur de notre texte. L'ajout se faisant vers le bas, nous pourrons remonter celui-ci à l'aide de \topmargin par exemple avec une valeur plus petite que 17 pt, voire négative.
Remarque : vous pouvez remarquer que la feuille est définie par les paramètres \paperwidth et \paperheight, autrement dit une feuille de format A4 fait 597 pt sur 846 pt. Attention de ne pas dépasser ces dimensions en jouant sur les marges. De plus, il est normalement possible de jouer avec les paramètres \voffset et \hoffset, mais les modifications apportées à ceux-ci avec une classe article n'ont jamais été pris en compte chez moi.
1.3 Document twoside (recto-verso) :
Le principe est exactement le même que précédemment. Pour vous donner une idée, vous pouvez utiliser ce code :
\documentclass[a4paper]{book}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage[francais]{layout}
\begin{document}
\layout
\end{document}
La difficulté nouvelle est de devoir traiter deux types de page : paire et impaire. Cela se fera respectivement à l'aides des deux paramètres \evensidemargin et \oddsoidemargin. Nous aurons donc quelque chose comme cela :
\addtolength{\oddsidemargin}{Val1}
\addtolength{\evensidemargin}{Val2}
\addtolength{\textwidth}{Val3}
La règle d'or correspondante sera alors :
Val1 + Val2 = - Val3
pour conserver des marges extérieures et intérieures égales sur les pages paires et impaires. Le signe - traduit que si nous agrandissont la largeur du texte, il nous faut rétrécir les marges, et inversement si nous la réduisons, il nous faut les agrandir.
Pour vous donner un exemple, les marges du trustbook sont définies ainsi avec une classe book :
\addtolength{\topmargin}{-30pt}
\addtolength{\evensidemargin}{-27pt}
\addtolength{\oddsidemargin}{-13pt}
\addtolength{\textwidth}{40pt}
\addtolength{\textheight}{50pt}
\addtolength{\footskip}{12pt}
\renewcommand{\headsep}{25pt} 2. Mises en page spéciales :
2.1 Disposition Paysage :
Pour réaliser une partie d'un document en paysage, par exemple pour un tableau, il existe l'extension lscape (/usr/share/texmf/tex/latex/graphics/) à introduire dans le préambule avec :
\usepackage{lscape}
Il suffit alors dans la source du document d'utiliser l'environnement landscape selon la procédure :
\begin{landscape}
notre texte
\end{landscape}
à l'endroit où on désire une page en paysage.
Si on souhaite avoir un document entièrement en mode paysage, on peut utiliser la commande \landscape juste après la commande \begin{document}. Cela dit, j'ai rencontré un problème de taille dont la solution m'est inconnue : les en-têtes et pieds de page, même ceux par défaut de LaTeX, ne sont pas réorientés. Il faudra donc obligatoirement utiliser le style \pagestyle{empty}. Si vous regardez le fichier lscape.sty, ce problème se comprend facilement : \textwidth et \textheight sont inversés à l'aide de \vsize et \hsize, et le texte subit une rotation, en conséquence les en-têtes et pieds de page n'en sont pas affectés.
Attention : il n'est apparamment pas possible de visionner .dvi classiquement avec xdvi, kdvi et autres. Ceci oblige la conversion en .pdf ou .ps. N'oubliez pas alors de demander le mode paysage dans le visionneur (affichage --> orientation --> paysage pour kghostview).
2.2 Réaliser du multi-colonnes :
Pour un document deux colonnes, vous pouvez utiliser l'option twocolumn au moment de la déclaration de la classe du document. Il est ici question d'un document à plus de deux colonnes, ou encore deux colonnes (ou plus) localement. Ceci peut se faire très facilement à l'aide de l'environnement multicols. Pour pouvoir utiliser celui-ci, il faut charger le package multicol dans le préambule de la source par :
\usepackage{multicol}
Le multi-colonnes s'obtient alors à l'aide de la syntaxe :
\begin{multicols}{nombre de colonnes}
notre texte
\end{multicols}
Attention toutefois : le nombre de colonnes ne peut pas être supérieur à dix. De plus, étant donné qu'il s'agit d'un environnement, le multicolonne peut être aussi bien local que global (pour ce dernier cas, il suffit simplement de mettre le \begin{multicols} à la suite du \begin{document}).
De plus, vous pouvez agrandir l'espace entre les colonnes par la commande :
\setlength{\columnsep}{16pt}
Ainsi qu'introduire une ligne séparatrice par :
\setlength{\columnseprule}{0.3pt}
Ici encore, le même problème que précédemment apparait : les en-têtes et pieds de page n'en sont pas affectés, aussi il est conseillé d'utiliser le style empty.
Vous pouvez aussi faire apparître un titre sur toute la longueur sans fermer l'environnement multi-colonnes en utilisant la syntaxe :
[\section{le titre}]
À noter que vous pouvez utiliser l'environnement landscape spécifié précédemment avec le multi-colonnes.