diff options
Diffstat (limited to 'Master/texmf-doc/doc/french/FAQ-fr/part2')
-rw-r--r-- | Master/texmf-doc/doc/french/FAQ-fr/part2 | 2956 |
1 files changed, 2956 insertions, 0 deletions
diff --git a/Master/texmf-doc/doc/french/FAQ-fr/part2 b/Master/texmf-doc/doc/french/FAQ-fr/part2 new file mode 100644 index 00000000000..6cec50fa9f2 --- /dev/null +++ b/Master/texmf-doc/doc/french/FAQ-fr/part2 @@ -0,0 +1,2956 @@ +Path: tempo.univ-lyon1.fr!univ-lyon1.fr!howland.erols.net!dispose.news.demon.net!demon!grolier!fr.usenet-edu.net!usenet-edu.net!teaser.fr!fdn.fr!edgard.fdn.fr!not-for-mail +Date: 08 Jun 2001 13:31:17 +0200 +Newsgroups: fr.comp.text.tex,fr.usenet.reponses +Subject: [FAQ] fr.comp.text.tex - partie 6 +Message-ID: <faq-fctt-p220010608133117@edgard.fdn.fr> +X-Posted-By: poste.sh version 1.1 +From: bayartb@edgard.fdn.fr (Nono le robot) +Supersedes: <faq-fctt-p220010501143416@edgard.fdn.fr> +Expires: 08 Jul 2001 13:31:17 +0200 +Followup-To: poster +Organization: French Data Network +Approved: bayartb@edgard.fdn.fr +Lines: 2947 +Xref: tempo.univ-lyon1.fr fr.comp.text.tex:23525 fr.usenet.reponses:20391 + +Archive-name: fr/faq-latex-francaise/part2 + +Author: Marie-Paule Kluth +Posting-Frequency: mensuel (monthly) +Version: 2.27 + +================================================================ + Cette FAQ, rédigée initialement par MP Kluth est maintenant + tenue à jour autant que possible par B. Bayart et + plusieurs volontaires (voir question [30]). +================================================================ + +================================================================ +[6] GESTION DE LA MISE EN PAGE +================================================================ + +# 6.1 # Comment modifier l'interligne d'un document ? +----------------------------------------------------- +* Pour modifier l'espace interligne d'un document on peut +utiliser la commande \linespread (solution non recommandée). +Par exemple, \linespread{1.6} permet de doubler l'intervalle +par défaut. + +* \renewcommand{\baselinestretch}{1.2} placé dans le +préambule permet d'obtenir le même résultat pour tout le +document. + +* Il existe également les packages 'doublespace' (pour +LaTeX2.09) et 'setspace' (pour LaTeX2e) disponibles sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex2.09/contrib/misc/ pour l'un et +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/ ou +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/setspace/ pour l'autre. +setspace.sty définit les environnements singlespace, +onehalfspace et doublespace. L'utilisation de ces styles est +recommandée parce que plus robuste (gestion des tableaux, des +notes de bas de page, ...). + +* Pour réduire l'interligne d'un paragraphe (à celui de small +par exemple) sans modifier la taille de la fonte on peut +utiliser \small{\normalsize texte à interligne réduit}\par ou +encore {\advance\baselineskip -1pt le texte \par}. + +* Localement, on peut également utiliser la commande +\baselineskip de la manière suivante : + +Exemple : +{\setlength{\baselineskip}{1.2\baselineskip} +Texte affecté +\par} %%% <= terminer le paragraphe +%%%% fin exemple %%%% + +# 6.2 # Comment gérer un document recto-verso ? +----------------------------------------------- +* LaTeX2e prévoit directement les options de classe twoside et +openright. + +Exemple : +\documentclass[twoside,openright]{report} +%%%% fin exemple %%%% + +* En LaTeX 2.09 il faut passer twoside comme option de la +commande documentstyle. Ensuite, pour forcer les entêtes de +chapitre à commencer sur une page impaire, il faut inclure la +commande \cleardoublepage avant chaque début de chapitre. + +Exemple : +\documentstyle[twoside]{report} + +\begin{document} +\cleardoublepage +\chapter{Introduction.} + Texte. + +\cleardoublepage +\chapter{Thèse.} + Texte. + +\end{document} +%%%% fin exemple %%%% + +* Il existe également la macro suivante qui redéfinit la +commande \cleardoublepage pour que les pages insérées soient +vides (i.e. sans entête ni bas de page). +%%%% debut macro %%%% +% whitecdp (formerly schulzrinne.sty) --provide for blank pages +% between chapters +% This redefinition of the \cleardoublepage command provides +% for a special pagestyle for the "extra" pages which are generated +% to ensure that the chapter opener is on a recto page. +% The pagestyle is "chapterverso"; for many publishers, this should be +% identical to "empty", so that's the default. +\def\cleardoublepage{\clearpage + \if@twoside + \ifodd\c@page\else + \null\thispagestyle{chapterverso}\newpage + \if@twocolumn\null\newpage\fi + \fi + \fi + }% +\def\ps@chapterverso{\ps@empty}% +%%%% fin macro %%%% + +# 6.3 # Comment modifier le style des titres ? +---------------------------------------------- +* Les définitions de \section, \sub(sub)section, etc, se +trouvent dans les fichiers .cls (report.cls, article.cls, +book.cls). + +ATTENTION : Il est vivement conseillé de ne pas modifier + directement ces classes mais de redéfinir + un fichier.sty avec les nouvelles commandes ou + d'utiliser \makeatletter et \makeatother. + +Exemple : +La syntaxe de définition d'une nouvelle section est : +\renewcommand\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\reset@font\Large\bfseries}} + +Explication : ++ La commande \@startsection permet de gérer : la table des + matières, la numérotation des titres, les références, + les titres des sections dans l'en-tête, etc... ++ {section} indique qu'il s'agit d'une section ++ {1} indique son niveau dans la table des matières ++ {\z@} indique son niveau d'indentation (zéro) ++ {-3.5ex \@plus -1ex \@minus -.2ex} définit l'espace qui sera + ajouté au dessus du titre ++ {2.3ex \@plus.2ex} définit l'espace qui sera ajouté en dessous + du titre. Si ce nombre est négatif alors il s'agit d'un + espacement horizontal, pour avoir des titres "en ligne", + comme ça : + Titre de ma section. Nous allons parler... bla, + bla, bla... ++ \@plus et \@minus permettent de jouer sur l'élasticité de ces + espaces ++ {\reset@font\Large\bfseries} sont les commandes de mises en + forme du titre. +%%%% fin exemple %%%% + +* Pour augmenter l'espace avant une section il suffit, par +exemple, d'écrire, dans le préambule du document : + +%%%% debut macro %%%% +\makeatletter +\renewcommand\section{\@startsection{section}{1}{\z@}% + {2cm \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\reset@font\Large\bfseries}} +\makeatother +%%%% fin macro %%%% + +* Le package 'sfheaders' de M. Loreti, ci dessous met les titres +dans une fonte sans serif quelle que soit la classe de +document utilisée. Pour l'utiliser, il suffit de sauvegarder les +macros suivantes dans un fichier SFheaders.sty et d'appeler +\usepackage{SFheaders}. + +%%%% debut macro %%%% +% Package: SFheaders.sty +% Sans-Serif headers; modified from {book|report|article}.cls +% defaults. +% Last modified: MLO 1997-05-06 +% +% Author: Maurizio Loreti, aka MLO or (HAM) I3NOO +% Work: University of Padova - Department of Physics +% Via F. Marzolo, 8 - 35131 PADOVA - Italy +% EMail: loreti@padova.infn.it +% WWW: http://wwwcdf.pd.infn.it/~loreti/mlo.html + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{sfheaders}[1997/05/06 Sans-Serif headers] + +\@ifclassloaded{article}{ +% Here if \documentclass{article} + \def\@part[#1]#2{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + {\parindent \z@ \raggedright + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >\m@ne + \Large \sffamily \bfseries \partname~\thepart + \par\nobreak + \fi + \huge \sffamily \bfseries #2% + \markboth{}{}\par}% + \nobreak + \vskip 3ex + \@afterheading} + \def\@spart#1{% + {\parindent \z@ \raggedright + \interlinepenalty \@M + \normalfont + \huge \sffamily \bfseries #1\par}% + \nobreak + \vskip 3ex + \@afterheading}} +{\@ifclassloaded{book}{ +% Here if \documentclass{book} + \def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge \sffamily \bfseries \partname~\thepart + \par + \vskip 20\p@ + \fi + \Huge \sffamily \bfseries #2\par}% + \@endpart} + + \def\@spart#1{% + {\centering + \interlinepenalty \@M + \normalfont + \Huge \sffamily \bfseries #1\par}% + \@endpart} + + \def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \huge \sffamily \bfseries \@chapapp\space \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty\@M + \Huge \sffamily\ bfseries #1\par\nobreak + \vskip 40\p@ + }} + + \def\@makeschapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \normalfont + \interlinepenalty\@M + \Huge \sffamily \bfseries #1\par\nobreak + \vskip 40\p@ + }} +}{ +% Here if none of the above (\documentclass{report} ?) + \def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge \sffamily \bfseries \partname~\thepart + \par + \vskip 20\p@ + \fi + \Huge \sffamily \bfseries #2\par}% + \@endpart} + + \def\@spart#1{% + {\centering + \interlinepenalty \@M + \normalfont + \Huge \sffamily \bfseries #1\par}% + \@endpart} + + \def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \huge \sffamily \bfseries \@chapapp\space \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \interlinepenalty\@M + \Huge \sffamily \bfseries #1\par\nobreak + \vskip 40\p@ + }} + + \def\@makeschapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \normalfont + \interlinepenalty\@M + \Huge \sffamily \bfseries #1\par\nobreak + \vskip 40\p@ + }} +}} + +\renewcommand{\section}{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\normalfont\Large\sffamily\bfseries}} + +\renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\large\sffamily\bfseries}} + +\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}% + {\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\normalfont\normalsize\sffamily\bfseries}} + +\renewcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {normalfont\normalsize\sffamily\bfseries}} + +\renewcommand{\subparagraph}{\@startsection{subparagraph}{5}% + {\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\normalfont\normalsize\sffamily\bfseries}} +\endinput + +%% +%% End of `SFheaders.sty'. +%%%% fin macro %%%% + +* Le package 'fncychap' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/fncychap/ propose un +ensemble d'entêtes de chapitre prédéfinies. + +# 6.4 # Comment obtenir un document multicolonnes ? +--------------------------------------------------- +* L'option standard twocolumn permet de présenter un texte sur +deux colonnes verticales. + +Exemple : +\documentclass[twocolumn]{article} +\usepackage{french} + +\begin{document} + +Voici un texte sur deux colonnes que \LaTeX n'équilibre pas +par lui-même (il remplit les colonnes les unes après les +autres). L'espace entre les colonnes peut être modifié comme +indiqué plus loin. Une ligne de séparation des colonnes peut +également être insérée. + +\end{document} +%%%% fin exemple %%%% + +* Pour agir localement, on peut utiliser les commandes : +\twocolumn[texte sur une colonne]{texte sur deux colonnes} +puis \onecolumn{Texte sur une colonne} ou plus généralement +\twocolumn et \onecolumn. + +Pour une meilleure lisibilité du source, on peut également +utiliser les environnements correspondants. + +Exemple : +\documentclass{article} +\usepackage{french} + +\begin{document} + +Dans la classe article, le texte est, par défaut, mis en page +sur une seule colonne. Il est toutefois possible de passer +temporairement sur deux colonnes. + +\twocolumn[Un titre sur une colonne, un peu long pour le +prouver.]{Et voici enfin un texte sur deux colonnes~; comme +promis~! Encore une fois, \LaTeX n'équilibre pas le +remplissage des deux colonnes si bien qu'il est obligé pour +chaque changement de colonnage de changer de page.} + +\onecolumn +Ceci permet de repasser sur une colonne pour la suite du +document. + +\begin{twocolumn} + Encore quelques mots sur deux colonnes. Même si le texte est + trop court pour voir apparaître la deuxième colonne. +\end{twocolumn} +\end{document} +%%%% fin exemple %%%% + +* Le package 'multicol', disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/tools/, définit l'environnement +multicols qui permet de redéfinir localement le nombre de +colonnes désirées (10 maximum). Lorsqu'une page n'est pas +complète, le texte apparaît réparti sur toutes les colonnes. +Ainsi chaque changement de colonnage n'entraîne plus un +changement de page. + +Exemple : +\documentclass{article} +\usepackage{multicol} +\usepackage{french} +\setlength{\columnseprule}{0.5pt} +\begin{document} + +\begin{multicols}{3}[Titre sur une seule colonne.] + 3~colonnes équilibrées, 3~colonnes équilibrées, 3~colonnes + équilibrées, 3~colonnes équilibrées +\end{multicols} + +\begin{multicols}{2}[\section{Titre numéroté.}] + blabla sur deux colonnes, c'est plus sérieux. C'est le + style qui est généralement utilisé pour écrire des + articles. +\end{multicols} +\end{document} +%%%% fin exemple %%%% + +Pour ajouter un titre numéroté qui apparaisse sur toute la +largeur de la page, il faut utiliser l'option [\section{Titre.}] +juste après \begin{multicols}{nb-col}. + +Remarques : ++ Pour qu'une ligne de séparation apparaisse entre les +colonnes, il faut utiliser : \setlength{\columnseprule}{1pt}. + ++ Pour redéfinir la largeur de l'espace inter-colonnes, il faut +utiliser \setlength{\columnsep}{30pt}. + +# 6.5 # Comment composer une brochure ? +--------------------------------------- +* Pour redéfinir un format de page, (par exemple un A4 plié en +trois), il faut utiliser la commande \setlength. Il suffit de +savoir quelles sont les longueurs à préciser, le meilleur moyen +pour ce faire est de les visualiser avec la commande \layout +(définie par le package 'layout' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/tools/). + +%%%% debut macro %%%% +% (Th. Bouche) +\ProvidesPackage{a6size} +% rien a voir avec la taille : ajustement du \baselineskip +\renewcommand\normalsize{% + \@setfontsize\normalsize\@xiipt{13.5}% + \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI} +\renewcommand\small{% + \@setfontsize\small\@xipt{12.4}% + \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 9\p@ \@plus3\p@ \@minus5\p@ + \parsep 4.5\p@ \@plus2\p@ \@minus\p@ + \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip} +\normalsize + +\setlength\paperheight {148mm}% +\setlength\paperwidth {105mm}% +%\voffset-1cm +%\hoffset-2cm +\setlength{\topmargin}{-1.3cm}% +\setlength{\oddsidemargin}{-.5cm}% +\setlength{\evensidemargin}{-1cm}% +\setlength{\marginparsep}{0\p@}% +\setlength{\headsep}{0\p@}% +% calcule la hauteur du texte en fonction du \baselineskip, pour +% que les lignes soient placées au même niveau sur toutes les pages +\setlength{\textheight}{\topskip} +\addtolength{\textheight}{22\baselineskip}% +\setlength{\textwidth}{7cm}% +\setlength{\footskip}{23\p@}% (originellement : 48) +%\setlength{\baselineskip}{13\p@}% +%\setlength{\marginparwidth}{0\p@} % +%\addtolength{\baselineskip}{.2\baselineskip}% +\setlength{\parindent}{0\p@} +%\addtolength{\headsep}{\headsep} +%\setlength{\push@skip}{.2\textwidth} +\newenvironment{page}{\vspace*{\stretch{1}}} +{\vspace*{\stretch{2.5}}\newpage} +\pagestyle{plain} +%%%% fin macro %%%% + +Il faut ensuite opérer ce que les imprimeurs appellent une +imposition : imprimer la page tant à tel endroit de la x-ième +feuille de telle sorte qu'il n'y ait plus qu'à plier la liasse +pour obtenir un livre prêt à être relié. Cette étape est facile +à réaliser soit à l'aide de dvidvi (mais qui n'autorise pas les +rotations, ce qui peut en limiter l'intérêt pour des formats +spéciaux) soit avec pstops : +pstops "2:0L@.7(21cm,0)+1L@.7(21cm,14.85cm)" un.ps deux.ps +disponible sur ftp://ftp.fdn.org/pub/CTAN/support/psutils/. + +* L'option a5paper de LaTeX2e permet également de faire cela. +Il faut ensuite utiliser dvidvi et dvips en -t landscape. dvips +est disponible entre autres par ftp sur +ftp://ftp.gutenberg.eu.org/pub/gut/sources/. + +* Le package 'a5booklet' est disponible sur +ftp://ftp.fdn.org/pub/CTAN/dviware/a5booklet/. + +* Consulter également le package '2up' pour LaTeX2e. + +* Le package 'poligraf' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/TeX-PS/cmyk-hax/ permet d'agir sur la mise en page +d'un document avant impression. + +* psnup et psbook peuvent également permettre de faire de la +composition mais il vaut alors mieux travailler avec des polices +postscript. Ces utilitaires sont accessibles via : +http://www.dcs.ed.ac.uk/home/ajcd/psutils/. + +Exemple (J.A. Ferrez) : +=================SNIP +#!/bin/sh +# +# Turn a (clean) PS file into a booklet +# +# input on stdin or file in arg +# +# psbook -- reorder the pages +# see -s option for _very_ large files +# psnup -- scale and place two pages onto one +# pstops -- reverse the odd pages for duplex printing +# +# outup on stdout +# +psbook $1 | psnup -2 | pstops "2:0,1U(21cm,29.7cm)" +=================SNIP +%%%% fin exemple %%%% + +* Le résultat est possible également en ne travaillant que sur +le postscript : dvips -h twoup -t landscape fichier.dvi. + +* Sur PC on peut utiliser dvidrv. + +* Pour PC twoup fait cela, mais ce n'est pas du domaine public. + +# 6.6 # Comment définir un format de document ? +----------------------------------------------- +La structure d'une page LaTeX permet de nombreux ajustements : ++ \setlength{\textwidth}{??cm} permet de fixer la largeur du +texte ++ \setlength{\textheight}{??cm} permet de fixer la hauteur du +texte ++ \setlength{\oddsidemargin}{(-)??cm} permet de définir la +marge gauche des pages impaires ++ \setlength{\evensidemargin}{(-)??cm} permet de définir la +marge gauche des pages paires ++ \setlength{\topskip}{??cm} laisse un espace en haut de page ++ \setlength{\footskip}{??cm} laisse un espace en bas de page ++ \setlength{\headheight}{??cm} fixe la hauteur de l'entête ++ \addtolength{\topmargin}{(-)??cm} ++ \addtolength{\textheight}{(-)??cm} + +* Il existe également les packages 'a4' et 'a4wide' disponibles +respectivement sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/ntgclass/ et dans +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/ qui permettent de +redéfinir les marges et largeur de texte. + +* Le package 'geometry' est plus flexible que les précédents +pour définir son propre format de page. Il définit de +nouvelles variables de structure de la page. Il propose en +outre un ensemble de formats par défaut (a0paper, b5paper, +legalpaper, ...). + +# 6.7 # Comment redéfinir les marges d'un document ? +---------------------------------------------------- +* Le package 'vmargin', de V. Kuhlmann, est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/. Il permet facilement de +redéfinir globalement (pour tout le document) les marges d'un +document par la commande : +\setmarginsrb{1}{2}{3}{4}{5}{6}{7}{8} +1 est la marge gauche +2 est la marge en haut +3 est la marge droite +4 est la marge en bas +5 fixe la hauteur de l'entête +6 fixe la distance entre l'entête et le texte +7 fixe la hauteur du pied de page +8 fixe la distance entre le texte et le pied de page + +Vous pouvez également utiliser des valeurs par défaut en rapport +avec le papier utilisé, par exemple: +\setpapersize{A4} + +* L'environnement changemargin décrit ci-dessous permet de +modifier localement les marges d'un document. Il prend deux +arguments, la marge gauche et la marge droite (ces arguments +peuvent prendre des valeurs négatives). + +%%%% debut macro %%%% +\newenvironment{changemargin}[2]{\begin{list}{}{% +\setlength{\topsep}{0pt}% +\setlength{\leftmargin}{0pt}% +\setlength{\rightmargin}{0pt}% +\setlength{\listparindent}{\parindent}% +\setlength{\itemindent}{\parindent}% +\setlength{\parsep}{0pt plus 1pt}% +\addtolength{\leftmargin}{#1}% +\addtolength{\rightmargin}{#2}% +}\item }{\end{list}} +%%%% fin macro %%%% + +Exemple : +\begin{changemargin}{2cm}{-1cm} + Ceci permet d'augmenter la marge gauche de 2cm et de diminuer + celle de droite de 1cm. +\end{changemargin} +A comparer avec un texte qui occupe toute la largeur de la page, +comme celui-ci. +%%%% fin exemple %%%% + +* Le package 'geometry' permet de redéfinir les marges d'un +document ou de définir le layout de la page. + +Exemple 1 : +\geometry{margin=5pt} +équivalent à +\geometry{hmargin=5pt, vmargin=5pt} +équivalent à +\geometry{margin={5pt,5pt}} +%%%% fin exemple %%%% + +Exemple 2 : +\documentclass{report} +\usepackage{french} +\usepackage{geometry} +\geometry{scale=1.0, nohead} +\begin{document} +Ainsi, le texte apparaît beaucoup plus haut dans une page. +\end{document} +%%%% fin exemple %%%% + +Exemple 3 : +\documentclass{report} +\usepackage{french} +\begin{document} +Voici une page normale pour comparer. +\end{document} +%%%% fin exemple %%%% + +* Le package 'truncate' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/ permet de fixer la +largeur d'un texte. + +* Il existe également le package 'typearea' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/script/. + +* L'environnement narrow, de K. Reckdahl, ci-dessous permet +d'encapsuler des paragraphes de largeurs différentes. +%%%% debut macro %%%% +%----------------------------------------------------------------- +% \begin{narrow}{1.0in}{0.5in} produces text which is narrowed +% by 1.0 on left margin and 0.5 inches on right margin +% \begin{narrow}{-1.0in}{-0.5in} produces text which is widened +% by 1.0 on left margin and 0.5 inches on right margin +% Narrow environments can be nested and are ended by \end{narrow} +%----------------------------------------------------------------- +\newenvironment{narrow}[2]{% + \begin{list}{}{% + \setlength{\topsep}{0pt}% + \setlength{\leftmargin}{#1}% + \setlength{\rightmargin}{#2}% + \setlength{\listparindent}{\parindent}% + \setlength{\itemindent}{\parindent}% + \setlength{\parsep}{\parskip}% + }% +\item[]}{\end{list}} +%%%% fin macro %%%% + +# 6.8 # Comment changer l'orientation d'un document ? +----------------------------------------------------- +* Globalement, pour passer en orientation paysage, il suffit de +mettre l'option landscape dans \documentclass (LaTeX2e) ou dans +\documentstyle (LaTeX2.09). + +Exemple : +\documentclass[landscape]{report} +\usepackage{french} +\begin{document} +Voici un document écrit dans un sens non conventionnel. +\end{document} +%%%% fin exemple %%%% + +* Le package 'lscape' de D. Carlisle (LaTeX2e), disponible +sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/graphics/, permet de changer +localement d'orientation portrait vers paysage et vice versa. Il +définit l'environnement landscape. + +Exemple : +\documentclass[11pt]{report} +\usepackage{lscape} + +\begin{document} + +\begin{landscape} + Un petit tour à la campagne,~\ldots +\end{landscape} + +et nous voici de retour dans la galerie, après un changement de +page bien évidemment. + +\end{document} +%%%% fin exemple %%%% + +* Il existe également le package 'rotating' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/rotating/. + +Exemple (tiré de la doc) : +\newcount\wang +\newsavebox{\wangtext} +\newdimen\wangspace +\def\wheel#1{\savebox{\wangtext}{#1}% +\wangspace\wd\wangtext +\advance\wangspace by 1cm% +\centerline{% +\rule{0pt}{\wangspace}% +\rule[-\wangspace]{0pt}{\wangspace}% +\wang=-180\loop\ifnum\wang<180 +\rlap{\begin{rotate}{\the\wang}% +\rule{1cm}{0pt}#1\end{rotate}}% +\advance\wang by 10 \repeat}} +\wheel{Save the whale} +%%%% fin exemple %%%% + +* Il existe aussi le programme docstrip disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/unpacked/docstrip.tex. + +* Pour le cas où vous auriez un fichier dvi en landscape, vous +pouvez obtenir un fichier postscript propre en utilisant la +commande: + +Exemple : +dvips -t a4 -t landscape -o tmp.ps toto.dvi +%%%% fin exemple %%%% + +# 6.9 # Comment justifier verticalement un paragraphe ? +------------------------------------------------------- +L'environnement vcenterpage ci-dessous permet de centrer +verticalement un texte sur une page seule. + +%%%% debut macro %%%% +\newenvironment{vcenterpage} +{\newpage\vspace*{\fill}} +{\vspace*{\fill}\par\pagebreak} +%%%% fin macro %%%% + +Exemple : +\begin{vcenterpage} + Texte qui apparait au milieu de la page. +\end{vcenterpage} +%%%% fin exemple %%%% + +# 6.10 # Comment modifier la commande \caption ? +------------------------------------------------ +* Le package 'hangcaption', disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/, dans lequel la commande +\isucaption remplace la commande \caption, permet de modifier la +mise en page de cette dernière. En particulier, il permet de +définir \captionwidth. + +* Il existe également les packages 'caption' et 'caption2' +disponibles sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/caption/ qui permettent de +modifier la commande \caption classique (largeur, style, +fonte, ...). + +Exemples : +\usepackage[small,hang]{caption2} +\renewcommand{\captionfont}{\it \small} +\renewcommand{\captionlabelfont}{\it \bf \small} +\renewcommand{\captionlabeldelim}{ :} +%%%% fin exemple %%%% + +Remarque : il est recommandé d'utiliser 'caption2' plutôt que + 'caption'. + +* Le package 'topcapt' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/misc/ définit la commande \topcaption qui +permet de placer le texte de la commande caption au dessus du +flottant auquel elle est rattachée. + +* Le package 'french' de B. Gaulle propose la commande +\unnumberedcaptions qui permet de supprimer la numérotation des +flottants. + +* Pour avoir une présentation du type : +Figure 1. Voici le texte de la légende d'une figure. Mais + lorsque la légende est longue, elle se présente + comme ceci. + +au lieu de : +Figure 1. Voici le texte de la légende d'une figure. Mais +lorsque la légende est longue, elle se présente comme +ceci. + +on peut utiliser \caption[texte]{\protect\parbox[t]{wd}{texte}} +où wd est la largeur de la boîte (cette largeur peut être adaptée +à la taille de la figure automatiquement si la figure est +elle-même dans une boite dont on récupère la largeur). \protect +est absolument nécessaire pour éviter une erreur. Le texte au +début [texte] est celui qui apparaîtra dans la table des figures +(il peut éventuellement être plus court). + +Plus simplement, le package 'caption2' permet de faire la même +chose avec l'option hang. + +* La variable \figurename permet de redéfinir le nom du titre de +la figure. De même pour \tablename et les tableaux. + +Exemple : +\def\figurename{Croquis} +%%%% fin exemple %%%% + +# 6.11 # Comment modifier un changement de page ? +------------------------------------------------- +* \newpage impose un changement brutal de page. + +* \pagebreak[n] où n représente l'autorité avec laquelle on veut +changer de page (n compris entre 1 et 5). Cette commande garde +la justification, 1 impose une contrainte faible, 5 impose une +contrainte sévère. + +* \nopagebreak[n] idem pour empêcher une coupure de page. + +* \clearpage agit comme un \newpage mais libère le buffer de +flottants. + +* \cleardoublepage fait la même chose et force un redémmarrage +sur une page impaire. + +* \enlargethispage{lgr} impose à LaTeX2e de comprimer (lgr +négatif) ou d'expanser (lgr positif) le contenu d'une page. +Ceci pour éviter que la page suivante contienne trop peu de +texte. + +Exemples : +\enlargethispage{1cm} % ajoute un cm +\enlargethispage{-2\baselineskip} % supprime deux lignes dans la + % page +%%%% fin exemple %%%% + +Remarque : \enlargethispage*{lgr} donne une autorité plus grande + à la commande \enlargethispage en l'obligeant à agir + sur les espacements élastiques verticaux contenus + dans la page courante. + +* J.P. Drucbert donne ci-dessous un petit papier décrivant un +style block.sty bricolé à partir de macro de diverses origines +(dont D. Arseneau, assez connu). Si vous passez LaTeX sur ce +papier, block.sty sera créé. Les macros les plus intéressantes +sont \need{dim} et \lneed{N}, qui provoquent un saut de page +s'il reste moins que la dimension dim (ou N fois \baselinskip) +verticalement sur la page. Ce n'est pas parfait, mais cela m'a +rendu des services. + +%%%% debut macro %%%% +\begin{filecontents}{block.sty} +\ifx\endBlock\undefined +\def\block{\begingroup% +\def\endblock{\egroup\endgroup}% +\vbox\bgroup}% +\long\def\Block{\begingroup% +\def\endBlock{\unskip\egroup\endgroup}% +\pagebreak[2]\vspace*{\parskip}\vbox\bgroup% +\par\noindent\ignorespaces} +\long\def\IBlock{\begingroup% +\def\endIBlock{\unskip\egroup\endgroup}% +\pagebreak[2]\vspace*{\parskip}\vbox\bgroup\par\ignorespaces} +\def\need#1{\ifhmode\unskip\par\fi \penalty-100 \begingroup +% preserve \dimen@, \dimen@i + \ifdim\prevdepth>\maxdepth \dimen@i\maxdepth + \else \dimen@i\prevdepth\fi + \kern-\dimen@i + \dimen@\pagegoal \advance\dimen@-\pagetotal % space left + \ifdim #1>\dimen@ + \vfill\eject\typeout{WARNING- EJECT BY NEED} + \fi + \kern\dimen@i + \endgroup} +\def\lneed#1{\need{#1\baselineskip}} +% \begin{block} ... \end{block} delimite un bloc qui restera, +% si possible, sur une seule page. +\long\def\TBlock{\begingroup% +\def\endTBlock{\unskip\egroup\endgroup}% +\pagebreak[2]\vspace*{\parskip}\vtop\bgroup% +\par\noindent\ignorespaces} +\else +\typeout{block.sty already loaded} +\fi +\endinput + +\def\need#1{\par \penalty-100 \begingroup +% preserve \dimen@, \dimen@i + \ifdim\prevdepth>\maxdepth \dimen@i\maxdepth + \else \dimen@i\prevdepth\fi + \kern-\dimen@i + \dimen@\pagegoal \advance\dimen@-\pagetotal % space left + \ifdim #1>\dimen@ \vfil \eject \fi + \kern\dimen@i + \endgroup} +\end{filecontents} + +\documentclass[12pt,a4paper]{article} +\def\bs{\texttt{\char'134}} +\parskip=12pt plus1pt minus0.5pt +\usepackage[english,francais]{babel} +\usepackage[T1]{fontenc} +\usepackage[isolatin]{inputenc} +\begin{document} +\clearpage +\section{Paquetage \texttt{block}}\label{BLOCK+} +Ce paquetage offre divers outils permettant d'empêcher qu'une +rupture de page se produise à un certain endroit. + +\subsection{Blocs Protégés} + +Vous pouvez protéger une zone contre la rupture de page. Il +suffit pour cela de la placer dans un environnement +\texttt{Block} ou dans un environnement \texttt{IBlock}. Dans le +premier cas (\texttt{Block}), le premier paragraphe se trouvant +dans la zone ne sera pas indenté, mais le sera dans le second +cas (\texttt{IBlock}). Ceci est utile en particulier pour +éviter de séparer un texte et un exemple qui l'accompagne. Les blocs ainsi +protégés doivent, bien entendu, rester assez petits. La syntaxe +est (vous pouvez remplacer \texttt{Block} par \texttt{IBlock}): +\begin{quote}\tt +%\begin{tabular}{l} +\bs begin\{Block\}\\ +\qquad\ldots\\ +zone protégée\\ +\qquad\ldots\\ +\bs end\{Block\} +%\end{tabular} +\end{quote} + +Cette méthode, très simple, a l'inconvénient de ne pas pouvoir +s'appliquer lorsque la zone à protéger doit contenir une +commande de sectionnement (c'est-à-dire du même type que +\verb|\section|), une note en bas de page, une note marginale ou +un corps mobile (figure ou table). Dans ce cas, il faudra +utiliser une des commandes du paragraphe suivant. + +\subsection{Réservations Verticales} +Vous pouvez aussi demander de changer de page (ou de colonne, si votre +document est sur deux colonnes) s'il ne reste pas verticalement assez +de place sur la page. Deux commandes de réservation verticale sont +disponibles: \verb|\need{|{\em dimension\/}\verb|}|, dont le paramètre est une +longueur, et \verb|\lneed{|{\em nombre\/}\verb|}|, dont le paramètre est +le nombre de lignes équivalant à l'espace vertical demandé (avec cette forme +le paramètre est plus facile à estimer). + +\end{document} +%%%% fin macro %%%% + +* Pour éviter les coupures de page (ou les coupures de colonnes +avec multicol.sty) à l'intérieur des \item dans une description +(et d'ailleurs dans toute liste), solution simple sortie du +TeXbook: +\begin{description}\interlinepenalty 10000 + +# 6.12 # Comment obtenir des colonnes parallèles ? +-------------------------------------------------- +Le package 'parallel' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/parallel/ permet d'obtenir +deux colonnes dont l'une peut contenir la traduction de l'autre. + +# 6.13 # Comment définir l'espace de début de paragraphe ? +---------------------------------------------------------- +* Il faut valoriser la variable \parindent. + +Exemple : +\setlength{\parindent}{1cm} +%%%% fin exemple %%%% + +* Pour agir localement, on peut utiliser \hspace*{lgr}. + +* Le package 'indentfirst' permet de forcer LaTeX à indenter le +premier paragraphe après une nouvelle section (indentation +normalement non utilisée en typographie française). + +# 6.14 # Comment supprimer la date sur une page de titre ? +---------------------------------------------------------- +Il faut ajouter la commande \date{} dans le préambule du +document. + +# 6.15 # Comment mettre en valeur la première lettre d'un chapitre ? +-------------------------------------------------------------------- +* Il faut utiliser le package 'dropcaps' de F. Lauwers. +Il est disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/dropcaps/. +Ce package est utilisable avec LaTeX2.09 et LaTeX2e. + +* Les packages 'initial' et 'initials' pour LaTeX2e sont +disponibles sur CTAN. Le second que l'on peut trouver dans +ftp://ftp.fdn.org/pub/CTAN/fonts/gothic/yinit/ fait appel à des fontes yinit particulières. + +* Il existe également un package 'drop' pour LaTeX2.09, mais +compatible LaTeX2e, disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/. + +Exemple : +\documentclass[12pt,a4paper]{article} +\usepackage{drop} +\font\largefont=yinitas % fontes yinit +begin{document} +\drop{D}OES THERE EXIST a field with 4 elements? +\end{document} +%%%% fin exemple %%%% + +* 'bigdrop' accessible sur CTAN dans/CTAN/digests/ttn est une +macro TeX compatible LaTeX. + +* Le package 'bigstart' pour LaTeX2.09 et LaTeX2e permet +également de faire cela. + +* Il existe également le package 'picinpar' pour LaTeX2.09 +disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/picinpar/ et +ftp://ftp.fdn.org/pub/CTAN/systems/msdos/4alltex/disk04/. + +* On peut également définir sa propre macro : +%%%% debut macro %%%% +\font\capfont=cmbx12 at 24.87 pt % or yinit, or...? +\newbox\capbox \newcount\capl \def\a{A} +\def\docappar{\medbreak\noindent\setbox\capbox\hbox{% +\capfont\a\hskip0.15em}\hangindent=\wd\capbox% +\capl=\ht\capbox\divide\capl by\baselineskip\advance\capl by1% +\hangafter=-\capl% +\hbox{\vbox to8pt{\hbox to0pt{\hss\box\capbox}\vss}}} +\def\cappar{\afterassignment\docappar\noexpand\let\a } +%%%% fin macro %%%% + +Exemple : +\cappar Il était une fois un petit chaperon rouge qui avait une +grand-mère qui habitait de l'autre côté de la foret. Un jour, +alors que sa grand-mère était malade, le petit chaperon rouge +décida de lui rendre visite~\ldots +%%%% fin exemple %%%% + +* Un petit dernier, le package 'dropping' qui étend le +package 'dropcaps' est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/dropping/. + +Exemple : +\dropping{3}{\itshape{} Voici} un exemple de ce que permet de +faire le magnifique package dropping de M. Dahlgren. La commande +\texttt{\\dropping} peut prendre en argument un mot comme c'est le cas ici +ou une simple lettre. +%%%% fin exemple %%%% + +* Le package 'french' de B. Gaulle propose également la commande +\lettrine. + +Exemple : +\lettrine{UN jour,} mon prince~\ldots +%%%% fin exemple %%%% + +* Le paquetage 'lettrine' de Daniel Flipo propose lui aussi la commande +\lettrine, mais avec une diversité d'options inconnues à french (nombre de +lignes, forme, etc.) Tiré de la doc: + +Exemple : +\lettrine[lines=4, slope=-0.5em, lhang=0.5, nindent=0pt]{V}{oici} +%%%% fin exemple %%%% + +* Le paquetage 'lettrine' de Daniel Flipo propose lui aussi la commande +\lettrine, mais avec une diversité d'options inconnues à french (nombre de +lignes, forme, etc.) Tiré de la doc: + +Exemple : +\lettrine[lines=4, slope=-0.5em, lhang=0.5, nindent=0pt]{V}{oici} +%%%% fin exemple %%%% + +# 6.16 # Comment préserver les tabulations en mode verbatim ? +------------------------------------------------------------- +* Le package 'moreverb' est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/. Il propose notamment un +environnement verbatimtab qui permet de conserver des +tabulations. + +Exemple : +\begin{verbatimtab} +int pattern(char *p, int n, int m) +{ + int orig = current_position(); + int new_pos; + + goto_line(n); + + if(p && forward_search(p) && (current_line()<m)){ + new_pos = current_position(); + goto_char(orig); + return(new_pos); + } + return(-1); +} +\end{verbatimtab} +%%%% fin exemple %%%% + +* Il existe également le package 'verbasef' (verbatim automatic +segmentation of external files) disponible sur CTAN. Il utilise +l'environnement figure. + +* On peut également inclure les lignes suivantes dans le +préambule du document : +%%%% debut macro %%%% +\makeatletter +{\catcode`\^^I=\active +\gdef\verbatim{\catcode`\^^I=\active\def^^I{\hspace*{4em}}% +\@verbatim \frenchspacing\@vobeyspaces \@xverbatim}} +\makeatother +%%%% fin macro %%%% + +# 6.17 # Comment modifier les entêtes de chapitre ? +--------------------------------------------------- +Il faut modifier la macro makechapterhead. + +Ajouter, par exemple, dans le preambule : +%%%% debut macro %%%% +\makeatletter +\def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright \normalfont + \interlinepenalty\@M + \ifnum \c@secnumdepth >\m@ne + \Huge\bfseries \thechapter\quad + \fi + \Huge \bfseries #1\par\nobreak + \vskip 40\p@ + }} + +\def\@makeschapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \normalfont + \interlinepenalty\@M + \Huge \bfseries #1\par\nobreak + \vskip 40\p@ + }} +\makeatother +%%%% fin macro %%%% + +# 6.18 # Comment définir des tabulations ? +------------------------------------------ +Il faut utiliser l'environnement tabbing qui permet de placer +des marques d'alignement dans un texte. + +Exemple : +\begin{tabbing} + Voici \= des \= marques \= de tabulation \\ + \> la je m'aligne sur la première \\ + \> \> \> la sur la troisième \\ + \hspace{3cm} \= \hspace{2cm} \= \kill + un \> autre \> exemple. +\end{tabbing} +%%%% fin exemple %%%% + +# 6.19 # Comment obtenir des lettres accentuées dans tabbing ? +-------------------------------------------------------------- +* Pour produire un \'{e} dans un environnement tabbing où la +commande \' a été redéfinie, il faut utiliser \a'{e} ou \a'e + +* Le style suivant de J.P. Drucbert permet de remplacer +l'environnement standard tabbing par l'environnement Tabbing +dans lequel les commandes \` \' \> \< \= \+ \- sont remplacées +par \TAB` \TAB' \TAB> \TAB< \TAB= \TAB+ \TAB- ce qui permet de +préserver les commandes d'accent (\' \` ou \=). + +%%%% debut macro %%%% +\ProvidesPackage{Tabbing}[1996/01/16] +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\gdef\Tabbing{\lineskip \z@skip +% \let\>\@rtab +% \let\<\@ltab +% \let\=\@settab +% \let\+\@tabplus +% \let\-\@tabminus +% \let\`\@tabrj +% \let\'\@tablab +\def\TAB##1{\ifx ##1>\@rtab\else + \ifx ##1<\@ltab\else + \ifx ##1=\@settab\else + \ifx ##1+\@tabplus\else + \ifx ##1-\@tabminus\else + \ifx ##1`\@tabrj\else + \ifx ##1'\@tablab\else + \PackageError{Tabbing}% + {Bad argument ##1 for Tabbing + specification} \fi\fi\fi\fi\fi\fi\fi} + \let\\=\@tabcr + \global\@hightab\@firsttab + \global\@nxttabmar\@firsttab + \dimen\@firsttab\@totalleftmargin + \global\@tabpush\z@ \global\@rjfieldfalse + \trivlist \item\relax + \if@minipage\else\vskip\parskip\fi + \setbox\@tabfbox\hbox{\rlap{\indent\hskip\@totalleftmargin + \the\everypar}}\def\@itemfudge{\box\@tabfbox}% + \@startline\ignorespaces} +\gdef\endTabbing{% + \@stopline\ifnum\@tabpush >\z@ \@badpoptabs \fi\endtrivlist} +\endinput +%%%% fin macro %%%% + +# 6.20 # Comment encadrer du texte ? +------------------------------------ +* Une solution consiste à définir un tableau d'une seule +cellule. + +* On peut aussi utiliser : +\fbox{ +\begin{minipage}{0.7\textwidth} + Texte... +\end{minipage} +} + +* On peut également se définir son propre environnement. + +Exemple : +\newsavebox{\fmbox} +\newenvironment{fmpage}[1] + {\begin{lrbox}{\fmbox}\begin{minipage}{#1}} + {\end{minipage}\end{lrbox}\fbox{\usebox{\fmbox}}} + +Utilisation : +\begin{fmpage}{3cm} + Texte à encadrer dans une boîte ne dépassant pas 3 + centimètres de large. +\end{fmpage} +%%%% fin exemple %%%% + +* Il existe également le package 'fancybox', disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/others/seminar/inputs/, qui définit +des fonctions telles que \shadowbox, \doublebox, \ovalbox,... + +Exemple : +\shadowbox{Texte ombré.} +\doublebox{Texte doublement encadré.} +\ovalbox{Texte dans un cadre aux coins arrondis.} +%%%% fin exemple %%%% + +* Le package 'boxedminipage' est un vieux style LaTeX2.09 +disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/misc/. + +* Voir également le package 'hh' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/hh/. + +* Le package 'niceframe' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/niceframe/ permet de +définir des cadres pleine page. + +* Pour encadrer un texte pouvant s'étendre sur plusieurs pages, +il existe le package 'eclbkbox' : +%%%% debut macro %%%% +% eclbkbox.sty by Hideki Isozaki, 1992 +% Date: May 28, 1993 + +\newbox\bk@bxb +\newbox\bk@bxa +\newif\if@bkcont +\newif\ifbkcount +\newcount\bk@lcnt + +\def\breakboxskip{2pt} +\def\breakboxparindent{1.8em} + +\def\breakbox{\vskip\breakboxskip\relax +\setbox\bk@bxb\vbox\bgroup +\advance\linewidth -2\fboxrule +\advance\linewidth -2\fboxsep +\hsize\linewidth\@parboxrestore +\parindent\breakboxparindent\relax} + +% \@tempdimb: amount of vertical skip +% between the first line (\bk@bxa) and the rest (\bk@bxb) +\def\bk@split{% +\@tempdimb\ht\bk@bxb % height of original box +\advance\@tempdimb\dp\bk@bxb +\setbox\bk@bxa\vsplit\bk@bxb to\z@ % split it +\setbox\bk@bxa\vbox{\unvbox\bk@bxa}% recover height & depth of \bk@bxa +\setbox\@tempboxa\vbox{\copy\bk@bxa\copy\bk@bxb}% naive concatenation +\advance\@tempdimb-\ht\@tempboxa +\advance\@tempdimb-\dp\@tempboxa}% gap between two boxes + +% \@tempdima: height of the first line (\bk@bxa) + fboxsep +\def\bk@addfsepht{% + \setbox\bk@bxa\vbox{\vskip\fboxsep\box\bk@bxa}} + +\def\bk@addskipht{% + \setbox\bk@bxa\vbox{\vskip\@tempdimb\box\bk@bxa}} + +% \@tempdima: depth of the first line (\bk@bxa) + fboxsep +\def\bk@addfsepdp{% + \@tempdima\dp\bk@bxa + \advance\@tempdima\fboxsep + \dp\bk@bxa\@tempdima} + +% \@tempdima: depth of the first line (\bk@bxa) + vertical skip +\def\bk@addskipdp{% + \@tempdima\dp\bk@bxa + \advance\@tempdima\@tempdimb + \dp\bk@bxa\@tempdima} + +\def\bk@line{% + \hbox to \linewidth{\ifbkcount\smash{\llap{\the\bk@lcnt\ }}\fi + \vrule \@width\fboxrule\hskip\fboxsep + \box\bk@bxa\hfil + \hskip\fboxsep\vrule \@width\fboxrule}} + +\def\endbreakbox{\egroup +\ifhmode\par\fi{\noindent\bk@lcnt\@ne +\@bkconttrue\baselineskip\z@\lineskiplimit\z@ +\lineskip\z@\vfuzz\maxdimen +\bk@split\bk@addfsepht\bk@addskipdp +\ifvoid\bk@bxb % Only one line +\def\bk@fstln{\bk@addfsepdp +\vbox{\hrule\@height\fboxrule\bk@line\hrule\@height\fboxrule}}% +\else % More than one line +\def\bk@fstln{\vbox{\hrule\@height\fboxrule\bk@line}\hfil +\advance\bk@lcnt\@ne +\loop + \bk@split\bk@addskipdp\leavevmode +\ifvoid\bk@bxb % The last line + \@bkcontfalse\bk@addfsepdp + \vtop{\bk@line\hrule\@height\fboxrule}% +\else % 2,...,(n-1) + \bk@line +\fi + \hfil\advance\bk@lcnt\@ne +\if@bkcont\repeat}% +\fi +\leavevmode\bk@fstln\par}\vskip\breakboxskip\relax} + +\bkcountfalse +%%%% fin macro %%%% + +L'encadrement du texte est obtenu par l'environnement breakbox. + +\bkcounttrue : les lignes sont numérotées. +\bkcountfalse : elles ne le sont pas (défaut). + +On peut emboîter des environnements breakbox. + +# 6.21 # Comment gérer des URL WWW ? +------------------------------------ +* Il existe le package 'url' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/ qui permet de gérer les +coupures des URL WWW un peu longues. Il est également capable de +gérer les adresses e-mail, les liens hypertexte, les noms de +directories. En outre, cet outil est paramètrable. + +Exemple : +\usepackage{url} +\urlstyle{sf} +.. +\url{http://hostname/~username} +%%%% fin exemple %%%% + +* Le package 'path' disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/eplain/ +offre les mêmes possibilités. + +* La macro \discretionary permet également de dire comment +couper une chaîne de caractères : +\discretionary{Avant la coupure}{après}{s'il n'y en a pas} + +Remarque : \- est défini comme \discretionary {-}{}{} + +# 6.22 # Comment mettre en page des exercices dont les solutions sont reportées dans un autre paragraphe ? +---------------------------------------------------------------------------------------------------------- +L'objectif ici est de pouvoir saisir dans le fichier source les +textes des exercices suivis de leurs solutions, alors qu'au +niveau de la mise en page du document, les solutions +apparaîssent groupées dans un autre paragraphe/chapitre. + +* Le package 'answers', de M. Piff, disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/answers/ permet également de +réaliser ce genre d'exercice. Il permet entre autres : ++ d'avoir plusieurs types de solutions (ex: réponse numérique +seule ou détail), ++ d'inclure les solutions (l'une, l'autre ou les deux dans +le cas précité) dans le texte (après une marque spécifique +si désiré), ++ mettre les solutions à la fin, ++ ne pas mettre les solutions. + +Exemple : +%% +%% This is file `ansexam2.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% answers.dtx (with options: `ex2') +%% +\documentclass[12pt,a4paper]{article} +\usepackage{answers}%\usepackage[nosolutionfiles]{answers} +% def d'un environnement Exercise numerote +\newtheorem{Exc}{Exercise} +\newenvironment{Ex}{\begin{Exc}\normalfont}{\end{Exc}} +% Trois types de solutions sont proposes +\Newassociation{solution}{Soln}{test} +\Newassociation{hint}{Hint}{test} +\Newassociation{Solution}{sSol}{testtwo} +\newcommand{\prehint}{~[Hint]} +\newcommand{\presolution}{~[Solution]} +\newcommand{\preSolution}{~[Homework]} +% test +\newcommand{\Opentesthook}[2]% + {\Writetofile{#1}{\protect\section{#1: #2}}} +% introduction de la solution +\renewcommand{\Solnlabel}[1]{\emph{Solution #1}} +\renewcommand{\Hintlabel}[1]{\emph{Hint #1}} +\renewcommand{\sSollabel}[1]{\emph{Solution to #1}} + +\begin{document} +% gestion des fichiers contenant les solutions + \Opensolutionfile{test}[ans2]{Solutions} + \Writetofile{test}{\protect\subsection{Some Solutions}} + \Opensolutionfile{testtwo}[ans2x] + \Writetofile{testtwo}{% + \protect\subsection{Extra Solutions}} + + % Exercices + \section{Exercises} + \begin{Ex} + An exercise with a solution. + \begin{solution} + This is a solution. + \relax{} + \end{solution} + \end{Ex} + \begin{Ex} + An exercise with a hint and a secret solution. + \begin{hint} + This is a hint. + \end{hint} + \begin{Solution} + This is a secret solution. + \end{Solution} + \end{Ex} + \begin{Ex} + An exercise with a hint. + \begin{hint} + This is a hint. + \end{hint} + \end{Ex} + % gestion des fichiers contenant les solutions + \Closesolutionfile{test} + \Readsolutionfile{test} + % \clearpage + \hrule + \Closesolutionfile{testtwo} + \Readsolutionfile{testtwo} +\end{document} +%% +%% End of file `ansexam2.tex'. + +%%%% fin exemple %%%% + +* On peut également trouver le package 'exam' sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/exams/. + +# 6.23 # Comment positionner un objet dans une page ? +----------------------------------------------------- +* Pour pouvoir positionner un objet aux coordonnées x,y par +rapport au coin supérieur gauche d'une page, il suffit d'utiliser +le package 'atxy' disponible par ftp sur +ftp://ftp.univ-orleans.fr/pub/tex/PC/AsTeX/Paq_Base/ dans +le fichier l209misc.zip. + +Exemple : +\atxy(3cm,2.5cm) {toto adresse toto} +\atxy(3cm,4cm) {date} +%%%% fin exemple %%%% + +Remarque : petit défaut, si le document ne contient que des + commandes \atxy il n'y a pas de dvi généré. Il faut + donc ajouter n'importe quoi au début du document, ~ + par exemple, pour que ça marche. + +# 6.24 # Comment lier le placement des flottants aux sections ? +--------------------------------------------------------------- +Pour lier la position des éléments flottants aux limites de +sections, D. Arseneau a développé le package 'placeins' +disponible sur ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/. Ce +package définit la commande \FloatBarrier qui force le placement +des flottants avant son appel. + +# 6.25 # Comment griser le fond (background) d'un paragraphe ? +-------------------------------------------------------------- +* Le package 'psboxit', disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex2.09/contrib/misc/ et en particulier +l'environnement "boxitpara" permet de faire cela. + +* Le package 'shadbox' disponible sur CTAN dans +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/shadbox/ permet de griser toute +boîte, texte, figure, .... + +* Le package 'shading' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/shading/ permet de griser un +paragraphe. + +* De même, le package 'shade', de P. Schmitt, est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/generic/. + +* On peut également utiliser le package 'color'. + +Exemple : +\colorbox[gray]{0.5}{some words} +%%%% fin exemple %%%% + +# 6.26 # Comment modifier l'espace inter-colonnes ? +--------------------------------------------------- +Il faut modifier la variable \columnsep. + +Exemple : +\addtolength{\columnsep}{5mm} +%%%% fin exemple %%%% + +# 6.27 # Comment modifier les environnements de liste ? +------------------------------------------------------- +* L'environnement list permet de définir son propre style de +liste. Sa syntaxe est la suivante : +\begin{list}{label}{mep}\end{list} ++ l'argument label permet de définir le symbole qui sera +associé à chaque élément de la liste. ++ mep permet de définir la mise en page des éléments de la +liste. Les paramètres utilisés pour définir cette mise en page +sont les suivants : +\topsep espace vertical supplémentaire (ajoute à \parskip) + inséré entre le texte précédant la liste et le 1er objet + de la liste +\partosep espace vertical supplémentaire inséré devant la liste + si celle-ci est précédée d'une ligne blanche +\itemsep espace vertical supplémentaire (ajouté à \parsep) + inséré entre les éléments d'une liste. + +Exemple : +\newenvironment{maliste}% +{ \begin{list}% + {$\bullet$}% + {\setlength{\labelwidth}{30pt}% + \setlength{\leftmargin}{35pt}% + \setlength{\itemsep}{\parsep}}}% +{ \end{list} } + +Utilisation : +\begin{maliste} + \item premier élément + \item deuxième élément + \begin{maliste} + \item petit 1 + \item petit 2 + \end{maliste} +\end{maliste} +%%%% fin exemple %%%% + +* Le petit bout de code ci-dessous, de M. Boyer +(mboyer@robot.ireq.ca), définit les commandes : ++ \noitemsep pour supprimer tout espacement vertical entre les +items des environnements \itemize, \enumerate et \description. ++ \doitemsep pour les remettre. +Pour l'utiliser, il suffit de le sauvegarder dans un fichier +.sty et de l'inclure dans son document par une commande +\usepackage. + +%%%% debut macro %%%% +%% ---------------------------------------------------- +%% Copyright (c) 1993 Hydro-Quebec mboyer@robot.ireq.ca +%% ---------------------------------------------------- + +%% Bring items closer together in list environments +% Prevent infinite loops +\let\orig@Itemize =\itemize +\let\orig@Enumerate =\enumerate +\let\orig@Description =\description +% Zero the vertical spacing parameters +\def\Nospacing{\itemsep=0pt\topsep=0pt\partopsep=0pt% +\parskip=0pt\parsep=0pt} +% Redefinition de art12.sty pour commencer a la marge de gauche +%\leftmargini 1.2em % 2.5em + +\def\noitemsep{ +% Redefine the environments in terms of the original values +\renewenvironment{itemize}{\orig@Itemize\Nospacing}{\endlist} +\renewenvironment{enumerate}{\orig@Enumerate\Nospacing}{\endlist} +\renewenvironment{description}{\orig@Description\Nospacing}% +{\endlist} +} + +\def\doitemsep{ +% Redefine the environments to the original values +\renewenvironment{itemize}{\orig@Itemize}{\endlist} +\renewenvironment{enumerate}{\orig@Enumerate}{\endlist} +\renewenvironment{description}{\orig@Description}{\endlist} +} +%%%% fin macro %%%% + +* La macro ci-dessous de T. Murphy permet de remplacer les +numéros de l'environnement enumerate par des caractères grecs : +%%%% debut macro %%%% +\makeatletter +\def\greek#1{\expandafter\@greek\csname c@#1\endcsname} +\def\@greek#1{\ifcase#1\or$\alpha$\or$\beta$\fi}% as many as you +% need +\renewcommand{\theenumi}{\greek{enumi}} +\makeatother +%%%% fin macro %%%% + +* Les définitions suivantes : +\renewcommand{\labelitemi}{\textbullet} +\renewcommand{\labelitemii}{---} +\renewcommand{\labelitemiii}{votre-label-pour-le-niveau-iii} +\renewcommand{\labelitemiv}{votre-label-pour-le-niveau-iv} +permettent de redéfinir les caractères utilisés par +l'environnement itemize pour ces différents niveaux +d'encapsulation. + +Remarque : avec certains packages comme french, il faut placer + ces nouvelles définitions de commande après le + \begin{document}. + +De même, utilisez \descriptionlabel pour changer le style des +étiquettes de l'environment description. + +Exemple : +\renewcommand\descriptionlabel[1]{\hspace\labelsep\normalfont% +\itshape #1:} +produit des étiquettes en italique, avec deux points : +\begin{description} + \item[Carte maîtresse] As + \item[Carte maîtresse à l'atout] Valet +\end{description} +%%%% fin exemple %%%% + +* Pour réduire globalement l'espace entre les items d'une liste +on peut également utiliser le bout de code suivant de M. Wooding +%%%% debut macro %%%% +\makeatletter +\toks@\expandafter{\@listI} +\edef\@listI{\the\toks@\setlength{\parsep}{1pt}} +\makeatother +%%%% fin macro %%%% + +* Le package 'mdwlist', de M. Wooding, disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/mdwtools/ permet de +redéfinir certains paramètres de mise en page des listes qui ne +sont pas faciles d'accès sous LaTeX. + +# 6.28 # Comment souligner plusieurs lignes ? +--------------------------------------------- +Pour souligner un texte qui comprend des retours à la ligne, il +faut utiliser le package 'ulem' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/. Ce package redéfinit en +fait le mode emphasize. Les commandes \normalem et \ULforem +permettent de passer du mode \emph classique au mode \emph +souligné. En mode souligné, la commande devient paramétrable pour +changer le style du souligné ou biffer des mots. + +Exemple : +\documentclass{report} +\usepackage{french} +\usepackage[normalem]{ulem} +\pagestyle{empty} +\begin{document} + +\normalem +Voici le mode "\emph{emphasize}" classique. + +\ULforem +Voici le mode "\emph{emphasize}" souligné. \emph{Il permet +également de gérer les retours à la ligne tout en restant dans +le style emphasize.} + +Les autres possibilités sont les suivantes~: +\begin{itemize} + \item vagues~: \uwave{texte} + \item barré~: \sout{texte} + \item rayé~: \xout{texte} +\end{itemize} + +\end{document} +%%%% fin exemple %%%% + +Remarque : \underline ne permet pas de gérer les retours à la + ligne du fait qu'il encapsule le texte passé en + argument dans une boîte. + +# 6.29 # Comment réaliser des onglets ? +--------------------------------------- +* Pour insérer un carré noir, décalé vers le bas à chaque +nouveau chapitre, le long de la marge des pages de droite d'un +document, on peut utiliser le package 'fancyhdr' ou +'fancyheadings'. Ces packages sont disponibles sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/fancyhdr/ et +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/. + +Remarque : On note toutefois qu'il est peu probable qu'une + imprimante puisse accéder au ras de la marge. La + solution consiste alors à définir un format de + document plus petit et utiliser le massicot. + Attention dans ce cas lors de la définition des + marges. + +* On peut également utiliser le package 'onglet' défini +ci-dessous par B. Bayart. Celui-ci nécessite le package +'everyshi' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/everyshi/. + +%%%% debut macro %%%% +\ProvidesPackage{onglet}[1996/07/25 B. Bayart] +\RequirePackage{everyshi} + +\newcounter{maxchapter} +\newcounter{tmpa} +\newlength{\basehauteur} +\setlength{\basehauteur}{1cm} +\newlength{\ajoutdroite} +\newlength{\htcclv} +\def\concatener{% + \setlength{\ajoutdroite}{\textheight} + \divide\ajoutdroite by \basehauteur + \setcounter{maxchapter}{\number\ajoutdroite} + \setcounter{tmpa}{\value{chapter}} + \addtocounter{tmpa}{-1} + \divide\value{tmpa} by\value{maxchapter} + \multiply\value{tmpa} by\value{maxchapter} + \advance\value{tmpa} by -\value{chapter} + \addtocounter{tmpa}{-1} + \setlength{\ajoutdroite}{\paperwidth} + \setlength{\htcclv}{\ht255} + \addtolength{\ajoutdroite}{-\wd255} + \addtolength{\ajoutdroite}{-1in} + \addtolength{\ajoutdroite}{-1.5cm} + \setbox255=\vbox{\hbox to \wd255{% + \box255%\relax + \rlap{\vbox to \htcclv{% + \vskip-\value{tmpa}\basehauteur + \hbox{% + \hskip\ajoutdroite\relax + \usebox{\laboite}% + }% + \vfill + }}% + \hfill}}% +} +\newsavebox{\laboite} +\def\faireboite{\sbox{\laboite}% +{\hbox to 1.5cm{\let\protect\relax +\huge\thechapter\hfill\vrule height 1em depth 0pt width 5mm}}} + +\AtBeginDocument{\EveryShipout{\faireboite\concatener}} +\endinput +%%%% fin macro %%%% + +# 6.30 # Comment réaliser des QCM ? +----------------------------------- +Il existe le package 'exam' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/exams/. Ce package permet +entre autres de paramétrer les questions de manière à ce que les +propositions apparaîssent dans un ordre aléatoire. + +Exemple : +Combien le cheval possède t'il de pattes ? +\begin{choice}[\random] + \baditem{deux pattes} + \baditem{quatres pattes} + \baditem{zéro patte} +\end{choice} +%%%% fin exemple %%%% + +# 6.31 # Comment modifier l'orientation des flottants ? +------------------------------------------------------- +* Le package 'rotating' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/rotating/ offre deux +environnements sidewaysfigure pour les figures et sidewaystable +pour les tableaux. Les figures ou tableaux sont alors insérés sur +une page séparée. + +Exemple : +\begin{sidewaystable} + \begin{tabular}{|c|c|} + \hline + Un & Deux \\ + Trois & Quatre \\ + \hline + \end{tabular} +\end{sidewaystable} +%%%% fin exemple %%%% + +* On peut également utiliser l'environnement sideways du +package 'rotating'. De la même manière cet environnement génère +une page séparée. + +Exemple : +\begin{figure} + \begin{sideways} + \includegraphics{foobar.ps} + \end{sideways} +\end{figure} +%%%% fin exemple %%%% + +Remarque : il est fréquent que les visualiseurs de fichiers dvi + ne sachent pas gérer les changements d'orientation à + l'intérieur d'un document. Il faut pour voir le + résultat définitif utiliser un visualiseur de + postscript. + +# 6.32 # Comment faire référence plusieurs fois à la même note de bas de page ? +------------------------------------------------------------------------------- +* Il faut utiliser les commandes \footnotemark[] et +\footnotetext[]{}. \footnotemark permet de gérer le compteur de +notes et \footnotetext permet d'insérer le texte correspondant +en bas de page. + +Exemple : +bla blabla\footnotemark[1] bla bla bla blablabla\footnotemark[2] +bla bla bla bla blabla\footnotemark[1] bla. + +\footnotetext[1]{double bla} +\footnotetext[2]{triple bla} +%%%% fin exemple %%%% + +* Avec french, on peut utiliser la commande \refmark. + +Exemple : +le vrai appel\footnote{C'est une note en bas de +page\label{manote}} et le deuxieme appel\refmark{manote} +%%%% fin exemple %%%% + +Remarque : Si vous n'utilisez pas french, cette macro \refmark + est décrite dans le cahier Gutenberg numéro 15, avril + 1993, page 52. Ce cahier est accessible à l'URL : + http://www.gutenberg.eu.org/publications/. + +# 6.33 # Comment éviter les orphelins en début ou fin de page ? +--------------------------------------------------------------- +* Il suffit d'ajouter les lignes : +%%%% debut macro %%%% +\widowpenalty=10000 +\clubpenalty=10000 +\raggedbottom +%%%% fin macro %%%% +dans le préambule du document. + +* Pour agir localement, on peut également utiliser la commande +\enlargethispage (cf. question 6.11). + +# 6.34 # Comment définir de nouveaux flottants ? +------------------------------------------------ +Le package 'float' de G. Williams, disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/float/, permet de définir +de nouveaux objets flottants. Il définit notamment des +environnements permettant d'encadrer des objets ou de les séparer +du reste du texte par des lignes horizontales. + +Exemple : +\documentclass[11pt]{report} +\usepackage{float} +\usepackage{french} + +\floatstyle{ruled} % pour que mes flottants soient séparés du + % texte par des lignes. +\newfloat{important}{htbp}{loi}[section] + % important est le nom de mon nouvel environnement + % htbp sont les options de placement de mon flottant + % loi est l'extension du fichier qui sera utilise pour + % construire la liste de mes flottants + % section est le niveau duquel dependra la numerotation + % de mes flottants +\floatname{important}{Important} % titre du caption + +\begin{document} + +\listof{important}{Liste des textes importants.} % titre de la + % liste de mes flottants. + +\chapter{Règles de bases.} + +\section{Hommes célèbres.} + + Parmi les citations des hommes célèbres dans le domaine que + nous étudions actuellement, il faut retenir celle de M. + Maxime rappelée dans le cadre~\ref{imp-max}. + + \begin{important} + M. Maxime a dit un jour~: + \begin{quote} + Chacun doit se faire ses propres raisons. + \end{quote} + \caption{Adage de M. Maxime.} + \end{important} + + Notez que~\ldots +\end{document} +%%%% fin exemple %%%% + +# 6.35 # Comment utiliser la commande \caption hors d'un environnement flottant ? +--------------------------------------------------------------------------------- +* Pour pouvoir attacher un titre de style table à un +environnement non flottant (i.e. autre que figure ou table), il +faut définir : +%%%% debut macro %%%% +\makeatletter +\def\@captype{table} +\makeatother +%%%% fin macro %%%% + +Exemple : +Texte sur les couleurs. + +\begin{itemize} + \item rouge + \item vert + \item bleu +\end{itemize} +\caption{Liste des couleurs primaires.} + +Texte. +%%%% fin exemple %%%% + +* La macro suivante propose une autre possibilité pour obtenir +un titre de style table : +%%%% debut macro %%%% +\makeatletter +\def\captionof#1#2{{\def\@captype{#1}#2}} +\makeatother +%%%% fin macro %%%% + +Exemple : +\begin{document} +un texte + +\captionof{table}{\caption{un titre ici}\label{foo}} + +un autre texte +\end{document} +%%%% fin exemple %%%% + +* Le package 'capt-of' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/ définit la commande +\captionof. + +# 6.36 # Comment encadrer un objet flottant ? +--------------------------------------------- +* Il faut utiliser le package 'float' qui définit le style +boxed. Ce package est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/float/. Voir la question +6.34 pour un exemple plus complet. + +Exemple : +Dans le préambule : +\floatstyle{ruled} +\newfloat{nom-flottant}{placement}{ext-fic}[numerotation] +dans le corps du document : +\begin{nom-flottant} + +\end{nom-flottant} +%%%% fin exemple %%%% + +* Si le titre accompagnant le flottant peut être à l'extérieur +du cadre désiré, on peut alors utiliser \fbox dans la +déclaration du flottant. + +Exemple : +\begin{table} + \begin{center} + \fbox{ + \begin{tabular}{cll} + &1 case & 2 cases \\ + &3 cases & 4 cases \\\hline + Total~: & 4 cases & 6 cases \\ + \end{tabular} + } + \end{center} + \caption{Titre extérieur.} +\end{table} +%%%% fin exemple %%%% + +* M. Loreti propose également le package 'bigbox' ci-dessous : +%%%% debut macro %%%% +% I like to put boxes around all of my figures and algorithms in +% reports, and finally came up with my 'bigbox' environment. It +% makes a box as wide as the current text and sets the stuff +% inside with a narrower width. +% +% USAGE: +% +% \begin{figure} (or {table}, or {center}, or ...) +% \begin{bigbox} +% \begin{tabbing} +% ... +% \end{tabbing} +% \end{bigbox} +% \caption{XXX} +% \end{figure} +% +%%% BIGBOX - environment +%%% +%%% TOM SHEFFLER +%%% Carnegie Mellon, Aug 1990 +%%% +%%% Make an environment for boxing a figure and setting it in +%%% a narrower width. +\newdimen\boxfigwidth % width of figure box + +\def\bigbox{\begingroup + % Figure out how wide to set the box in + \boxfigwidth=\hsize + \advance\boxfigwidth by -2\fboxrule + \advance\boxfigwidth by -2\fboxsep + \setbox4=\vbox\bgroup\hsize\boxfigwidth + % Make an invisible hrule so that the box is exactly this wide + \hrule height0pt width\boxfigwidth\smallskip% +% Some environments like TABBING and other LIST environments +% use this measure of line size - \LINEWIDTH=\HSIZE-\LEFTMARGIN-\RIGHTMARGIN? + \linewidth=\boxfigwidth +} +\def\endbigbox{\smallskip\egroup\fbox{\box4}\endgroup} +%%%% fin macro %%%% + +Exemple : +\documentclass[11pt]{report} +\usepackage{graphics} +\usepackage{bigbox} +\usepackage{french} +\pagestyle{empty} +\begin{document} + +\begin{figure} + \begin{bigbox} + \includegraphics{../foobar.ps} + \end{bigbox} + \caption{Dessin.} +\end{figure} + +\end{document} +%%%% fin exemple %%%% + +# 6.37 # Comment changer l'orientation d'un caption ? +----------------------------------------------------- +La commande \rotcaption fournie avec le package 'rotating' +permet de changer l'orientation d'un caption. + +Exemple : +\begin{figure} + \centering + \begin{minipage}[c]{1in} + \includegraphics[angle=90,width=\linewidth]{coco.ps} + \end{minipage} + \begin{minipage} + \rotcaption{Ma jolie figure coco} + \label{coco} + \end{minipage} +\end{figure} +%%%% fin exemple %%%% + +# 6.38 # Comment mettre en page un programme ? +---------------------------------------------- +Les packages 'program' (disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/program/) et 'programs' +permettent de mettre en reliefs des mots clés, d'utiliser des +mathématiques dans des algorithmes, etc. + +# 6.39 # Comment inclure le source d'un programme ? +--------------------------------------------------- +Les packages 'lgrind' et 'listings' répondent à la question +(disponibles sur ftp://ftp.fdn.org/pub/CTAN/support/lgrind/ et +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/listings/). Ils +reconnaissent tous les 2 à peu près 40 langages différents. + +Le premier est composé d'un exécutable, 'lgrind' qui permet de +transformer le source en question, par exemple, monfichier.c, en +monfichier.tex, que l'on inclut directement dans son fichier +LaTeX, à l'aide d'une commande appropriée. L'inconvénient, est +qu'évidemment, il y a un fichier .tex qui est généré en plus. + +Notes : - utiliser au-moins la version 3.6 ; + - on peut paramétrer lgrind avec le fichier lgrindef. Par + défaut, l'auteur a jugé utile de transformer la lettre + « à » en $\alpha$. Il suffit donc de commenter cette + option à la fin de ce fichier pour éviter cela. + +Le deuxième ne nécessite pas de recompilation. On inclut +directement le source, avec une commande adéquate. Avec ce +package, on peut même définir son propre langage, le faire +hériter d'un autre langage, avec des mots-clés spécifiques, etc. + +À noter que, moyennant quelques paramètres à ajouter, il est tout +à fait possible de faire en sorte que ces packages reconnaissent +les fontes 8 bits. On peut lui faire comprendre par exemple, que +lorsqu'il rencontre le caractère « ¹ », il le transforme en +$\mathonesuperior$. + +# 6.40 # Comment obtenir un espace insécable ? +---------------------------------------------- +Le caractère ~ est interprété par LaTeX et permet d'obtenir un +espace insécable. + +Exemple : +Comme le montre l'exemple suivant~: $a + 2 = 0$. +%%%% fin exemple %%%% + +# 6.41 # Comment insérer une page blanche ? +------------------------------------------- +* Pour forcer LaTeX à laisser une page blanche dans un document, +il faut utiliser successivement les trois commandes : +\newpage +\strut ou ~ ou \mbox{} ou \null +\newpage + +Le principe est qu'il y ait quelque chose d'invisible sur la +page blanche pour que LaTeX la prenne en compte. + +# 6.42 # Comment supprimer l'indentation des paragraphes ? +---------------------------------------------------------- +* \noindent au début du texte permet de ne pas indenter un +paragraphe. + +* Pour systématiquement supprimer l'indentation du premier +paragraphe d'une section par exemple, il faut redéfinir la +commande \section. Il faut que le 4ème paramètre de +\@startsection soit une distance négative, pour qu'il n'y ait +pas de retrait au premier paragraphe du texte qui suit : + +%%%% debut macro %%%% +\makeatletter +\renewcommand\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% +%%%%%% ^^^^ (4eme parametre) + {2.3ex \@plus.2ex}% + {\normalfont\Large\bfseries}} +\makeatother +%%%% fin macro %%%% + +# 6.43 # Comment modifier l'espacement entre caractères ? +--------------------------------------------------------- +* Le package 'letterspace' permet de modifier l'espacement entre +mots ou caractères. + +* Le package 'trackin' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/tracking/ permet de jouer sur +les espacements dans les mots ou les phrases pour les ajuster +dans une longueur spécifiée. + +# 6.44 # Comment supprimer certaines coupures de mots ? +------------------------------------------------------- +* Pour agir sur un mot particulier, il faut utiliser la commande +\hyphenation. + +Exemple : +Visualisation des coupures : ++\showhyphens{mousehole AlGaAs GaAs GaInP AlInP} + + Underfull \hbox (badness 10000) detected at line 0 + [] \OT1/cmr/m/n/10 mouse-hole Al-GaAs GaAs GaInP Al-InP + +Interdiction de certaines coupures : ++\hyphenation{AlGaAs GaAs GaInP AlInP} ++\showhyphens{mousehole AlGaAs GaAs GaInP AlInP} + + Underfull \hbox (badness 10000) detected at line 0 + [] \OT1/cmr/m/n/10 mouse-hole AlGaAs GaAs GaInP AlInP +%%%% fin exemple %%%% + +* Moins propre mais tout aussi efficace, on peut inclure le mot +à ne pas couper dans une hbox. + +Exemple : +Même quand il est en bout de ligne ce mot très long n'est pas +coupé CeMotTrèsLongNestPasCoupé. + +Même quand il est en bout de ligne ce mot très long n'est pas +coupé \hbox{CeMotTrèsLongNestPasCoupé}. +%%%% fin exemple %%%% + +* Pour empêcher LaTeX de couper les mots dans un paragraphe il +suffit de l'encadrer par les commandes \begin{sloppypar} et +\end{sloppypar}. + +* Pour empêcher LaTeX de couper les mots dans tout un document, +il faut utiliser la commande \sloppy dans le préambule du +document. On peut également utiliser la déclaration : +\hyphenpenalty 10000. + +* De manière globale, on peut aussi déclarer : +\DeclareFontFamily{T1}{cmr}{\hyphenchar\font=-1} + +* Pour interdire la coupure de tous les mots commençant par une +majuscule, il faut utiliser : \uchyph=0 dans le préambule du +document. + +* On peut également interdire la coupure des mots d'une langue +particulière dans un document multilingues en utilisant l'astuce +suivante : il suffit de créer un fichier de motifs de césures +vide, par exemple pour le russe +%%%% debut macro %%%% +%%% ruhyph.tex %%% +\patterns{} +\endinput +%%%%%%%%%%%%%%%%%%% +%%%% fin macro %%%% +et dans le fichier language.dat ajouter la ligne +russian ruhyph.tex + +# 6.45 # Comment mettre en forme des équations chimiques ? +---------------------------------------------------------- +* Le package 'ppchtex' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/context/ permet d'écrire des formules chimiques. + +* Sur Mac ou PC, il existe MDL qui est une version freeware +d'ISIS Draw qui permet de créer ses propres structures et de les +sauver sous format eps. Pour plus de détails, consulter +http://www.mdli.com/prod/ioffer.html. + +* Il existe le package 'chemsym' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/chemsym/. + +* Le package 'XymTex' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/xymtex/ ou +ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/xymtex/ permet de définir des +structures chimiques. + +Remarques (F. Jacquet) : ++ XyMTeX est incompatible avec le package french de B. Gaulle. +Pour utiliser les deux dans un même document, il suffit de +repasser en mode \english avant la macros puis \french après. Je +ne sais pas comment cela fonctionne pour les \caption mais en +théorie, ça devrait marcher ! +AL: Vérifier la réalité de cette remarque par rapport au dernier french. ++ XyMTeX possède le gros défaut de ne pas pouvoir faire de +longues chaînes aliphatiques si on ne sait pas programmer le +nombre de points entre deux structures. Le plus simple dans ce +cas est donc l'emploi de Xfig (ou autre). ++ On ne peut pas imbriquer les formules, ce qui gène +considérablement son utilisation; en revanche, pour les +cholestérol l'ensemble est très puissant ! + +# 6.46 # Comment mettre en page un calendrier ? +----------------------------------------------- +* Le package 'termcal' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/termcal/ permet de mettre +en page un calendrier. Il permet de préciser quels jours doivent +apparaître et d'insérer du texte soit régulièrement à certaines +dates soit à des dates particulières. + +* Le package 'calendar ' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/plain/contrib/ propose un ensemble de macros pour +mettre en page des calendriers. + +* Un autre package 'calendar' est également disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/calendar/. + +* Il existe également le package 'yplan97' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/yplan97/. + +# 6.47 # Comment forcer un caption sur plusieurs lignes ? +--------------------------------------------------------- +Pour forcer un retour à la ligne dans un caption, il faut +utiliser \caption[text1]{text2 \\\hspace{\linewidth} text3}. + +Remarque : text1 est le texte qui apparaîtra dans la liste des +figures ou des tableaux. + +# 6.48 # Comment générer des barres de modification dans un document ? +---------------------------------------------------------------------- +Il suffit d'utiliser le package 'changebar' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/changebar/. + +Exemple : +dans le préambule : +\usepackage[outerbars]{changebar} % permet de positionner les + % barres en marge externe +\setcounter{changebargrey}{20} % permet de fixer le niveau de + % gris des barres + +et dans le document : +\begin{changebar} + texte.. +\end{changebar} + +ou + +ancien texte ancien texte ancien texte \cbstart nouveau +texte nouveau texte nouveau texte \cbend ancien texte ancien +texte ancien texte ancien texte +%%%% fin exemple %%%% + +# 6.49 # Comment encadrer du texte verbatim ? +--------------------------------------------- +* Le package 'moreverb' propose un environnement encadré. + +Exemple : \begin{boxedverbatim} La commande \LaTeX permet +d'appeler le logo + LaTeX. +\end{boxedverbatim} +%%%% fin exemple %%%% + +# 6.50 # Comment écrire du texte en forme de losange ou autre ? +--------------------------------------------------------------- +Le package 'shapepar' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/misc/ définit des +environnements losange, coeur, etc. + +Exemple : +\diamondpar{mon paragraphe en forme de losange.} +%%%% fin exemple %%%% + +# 6.51 # Comment isoler les flottants par un trait horizontal ? +--------------------------------------------------------------- +* Pour que les flottants qui sont renvoyés en début +(respectivement en fin) de page soient isolés du texte par un +trait horizontal en dessous (respectivement au dessus), il faut +activer les options suivantes dans le préambule du document : +\let\topfigrule\hrule +\let\botfigrule\hrule + +* Si leur comportement n'est pas satisfaisant, on peut le +redéfinir : +\newcommand{\topfigrule}{% + \vspace*{3pt}\noindent\rule{\linewidth}{0.4pt}\vspace{-3.4pt}} +\newcommand{\botfigrule}{% + \vspace*{3pt}\noindent\rule{\linewidth}{0.4pt}\vspace{-3.4pt}} + +# 6.52 # Comment insérer un espace vertical dans une page ? +----------------------------------------------------------- +Il suffit d'utiliser la commande \vspace et de préciser en +argument la hauteur de l'espace voulu. + +Exemple : +Texte avant. + +\vspace{2cm} + +Texte après. +%%%% fin exemple %%%% + +Remarque : la commande \vspace* force l'insertion d'un espace + vertical même si ce dernier se situe sur un + changement de page. + +# 6.53 # Comment insérer un espace horizontal dans un texte ? +------------------------------------------------------------- +De la même manière que pour les espaces verticaux, il existe la +commande \hspace pour insérer un espace horizontal dans un +texte. + +Exemple : +blabla bla \hspace{3cm} bli bli bli +%%%% fin exemple %%%% + +Remarque : la commande \hspace* force l'insertion d'un espace + même en début ou en fin de ligne. + +# 6.54 # Comment définir un style de paragraphe ? +------------------------------------------------- +* Pour agir de manière globale (sur tout le document), les +paramètres de définition d'un paragraphe sont : ++ \parindent pour fixer la longueur des indentations ++ \parskip pour gérer l'espace entre les paragraphes. + +Exemple : +\setlength{\parindent}{1cm} +\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex} +%%%% fin exemple %%%% + +* Pour forcer (supprimer) localement l'indentation d'un +paragraphe, il existe la commande \(no)indent. + +# 6.55 # À quoi sert la commande \stretch ? +------------------------------------------- +La commande \stretch{x} permet d'insérer un espace élastique qui +va s'ajuster de manière à forcer l'occupation de toute une +ligne (en mode horizontal) ou de toute une page (en mode +vertical). Le paramètre x est appelé facteur d'élasticité, il +intervient dès que plusieurs commandes \stretch sont appelées +sur la même ligne. + +Exemples : ++ bla\hspace{\stretch{1}} bla bla \hspace{\stretch{2}} bla bla +bla + ++ un texte normal \vspace{\stretch{1}} et un texte qui finit de +remplir la ligne courante et qui se poursuit tout en bas de la +page sur la dernière ligne. +%%%% fin exemple %%%% + +# 6.56 # Comment justifier un paragraphe à gauche ou à droite ? +--------------------------------------------------------------- +* Les environnements flushleft et flushright permettent de +justifier à gauche ou à droite une portion de texte. + +Exemple : +\begin{flushleft} + Texte aligné à gauche. Texte aligné à gauche. Texte aligné à + gauche. Texte aligné à gauche. Texte aligné à gauche. Texte + aligné à gauche. Texte aligné à gauche. Texte aligné à + gauche. Texte aligné à gauche. Texte aligné à gauche. Texte + aligné à gauche. +\end{flushleft} +%%%% fin exemple %%%% + +* Il existe également les commandes \raggedright et \raggedleft. + +Exemple : +{\raggedleft +Colle à droite. Colle à droite. Colle à droite. Colle à droite. +Colle à droite. Colle à droite. Colle à droite. + +Colle à droite. Colle à droite. Colle à droite. Colle à droite. Colle à +droite. Colle à droite. } +%%%% fin exemple %%%% + +* Le package 'ragged2e' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/ragged2e/ offre en plus des +commandes (\Centering, \RaggedLeft, et \RaggedRight) et des +environnements qui permettent de mieux gérer les césures. + +# 6.57 # Comment mettre en page des citations ? +----------------------------------------------- +Il existe deux environnements de gestion des citations : ++ quote pour les citations courtes, ++ quotation pour les citations longues. + +Exemple : +\begin{quote} + L'environnement \texttt{quote} n'indente pas ces paragraphes + par contre l'espace vertical entre ces derniers est supérieur + à celui d'un texte standard. + + La preuve~! +\end{quote} + +\begin{quotation} + L'environnement \texttt{quotation} indente la première ligne + de ses paragraphes et sépare ses paragraphes d'un espace + vertical standard. + + La preuve~! + +\end{quotation} + +Dans les deux cas les marges droite et gauche sont plus +importantes que celles d'un texte standard. +%%%% fin exemple %%%% + +# 6.58 # Comment insérer un texte sans que LaTeX le mette en forme ? +-------------------------------------------------------------------- +L'environnement verbatim permet d'insérer un texte tel quel sans +que LaTeX ne le traite. Il permet notamment de faire apparaître +des commandes LaTeX. + +Exemple : +\begin{verbatim} + La commande \LaTeX permet d'imprimer le logo LaTeX. +\end{verbatim} +%%%% fin exemple %%%% + +* La commande \verb?texte? permet de faire la même chose +localement. Le premier caractère ? permet de marquer le début du +mode verbatim et le second en marque la fin. Il peut être +remplacé par n'importe quel autre caractère sauf un espace ou *. + +# 6.59 # Comment visualiser des espaces ? +----------------------------------------- +* L'environnement verbatim* et la commande \verb* permettent de +visualiser les espaces insérés dans un texte en les remplaçant +par un caractère spécial en forme de u. + +Exemple : +Je mange \verb*? ? pomme. +%%%% fin exemple %%%% + +* LaTeX propose la commande \textvisiblespace. + +* En TeX, c'est le caractère 32 de la fonte cmtt, qui est +défini dans le source du TeXBook par : +\def\]{\leavevmode\hbox{\tt\char`\ }} % visible space + +Vous pouvez donc définir: +\def\vs{\leavevmode\hbox{\tt\char`\ }} % visible space +et \vs donnera ce fameux caractère. + +# 6.60 # Comment insérer du code LaTeX dans un document LaTeX ? +--------------------------------------------------------------- +* Le package 'example' offre un environnement example qui permet en +ne tapant qu'une seule fois le code d'avoir côte à côte le code +LaTeX et son résultat après compilation. + +Exemple : +\begin{example} + La commande \LaTeX permet d'appeler le logo LaTeX. +\end{example} +%%%% fin exemple %%%% + +* La solution la plus classique consiste à faire : +\hbox{\vtop{\hsize 0.5\hsize le permier texte}\vtop{\hsize +0.5\hsize{\begin{verbatim} le même texte \end{verbatim}}}} + +# 6.61 # Comment écrire du texte en couleurs ? +---------------------------------------------- +* Voir à ce sujet le Cahier GUTenberg numéro 16 (février 1994, +entièrement consacré à ce problème) et l'article de M. Goossens +et M. Jouhet dans Cahier GUTenberg 21 (juin 1995, pages 30-52), +accessible à l'URL : +http://www.gutenberg.eu.org/publications/. + +* Le package 'color' est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/packages/graphics/. Il permet de coloriser le +texte ou le fond du document. + +Exemple : +\textcolor{red}{Important} +%%%% fin exemple %%%% + +* pstricks disponible sur ftp://ftp.fdn.org/pub/CTAN/graphics/pstricks/ est un +ensemble de macros PostScript compatibles avec Plain +TeX, LaTeX, AmSTeX, and AmS-LaTeX. Il comprend notamment +des macros pour la colorisation, la gestion des graphiques, le +dessin de camembert, d'arbres, etc. + +* Voir également la question 6.25 : Comment griser le fond +(background) d'un paragraphe ? + +# 6.62 # Comment construire un arbre ? +-------------------------------------- +* Le package 'qobitree', est disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/other/qobitree/. + +* Le package 'treesvr' est également disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex/contrib/supported/treesvr/. + +Exemple : +\begin{picture}(100,100) +\setlength\unitlength{2mm} +\branchlabels ABC % 012 is the default +\root(2,10) 0. % root at absolute coordinate (2,10) + % its (internally used) label is 0 + % the space before the 0 obligatory +\branch2{16} 0:1,2. % node 0 has children 1 and 2 + % the text "16" is written above it + % space optional, :,. obligatory +\leaf{4}{$u_1$} 1. % node 1 is a leaf + % "4" written above, "$u_1$" at right +\branch2{12} 2:3,7. % branch to node 3 goes up labeled A + \tbranch2{9} 3:4,5,6. + \leaf{4}{$u_3$}4. + \leaf{3}{$u_4$}5. + \leaf{2}{$u_5$}6. + \leaf{3}{$u_2$} 7. +\end{picture} +%%%% fin exemple %%%% + +* Le package 'treetex' disponible sur +ftp://ftp.fdn.org/pub/CTAN/macros/latex209/contrib/trees/tree_tex/ permet de metttre en +page des arbres sous LaTeX. + +* Les packages 'epic', 'eepic', 'ecltree' permettent de créer des +arbres (les trois packages sont nécessaires pour une +utilisation avec Latex2e pour garder la compatibilité avec +Latex2.09). + +Exemple : +\documentstyle[epic,eepic,ecltree]{article} +\begin{document} + +\begin{bundle}{racine} +\chunk{feuille 1} +\chunk{feuille 2} +\drawwith{\dottedline{3}} +\chunk{feuille 3} +\drawwith{\drawline} +\chunk{feuille 4} +\end{bundle} + +\end{document} +%%%% fin exemple %%%% + +# 6.63 # Comment mettre en page un poème ? +------------------------------------------ +* Il existe l'environnement verse. Il gère les marges, les +retours à la ligne dans une strophe se font par \\ et les +strophes sont séparées par des lignes blanches. + +Exemple: +\begin{verse} + J'ai un poney gris, \\ + Qui galope à travers la prairie. + + Grignote, grignote dans ma main, \\ + La carotte rousse du jardin. + + Mes cousins ont un poney blanc, \\ + Qui parcourt chemins et champs. +\end{verse} +%%%% fin exemple %%%% + +* Ci-dessous un exemple de style de JHB Nijhof +(nijhojhb@aston.ac.uk) : + +Exemple : +\documentstyle[a4,12pt]{article} + +\def\testline{\par\noindent\hbox to 0pt{\hss*\hss}\hfill +\hbox to 0pt{\hss*\hss}\hfill\hbox to 0pt{\hss*\hss}\par} +\def\centerstar{\par\medskip\noindent\hbox to\hsize% +{\hss*\hss}\par\medskip} + +\newbox\poembox +\newbox\widebox +\newdimen\centerx +\newcount\linecount +\newdimen\poemleftmargin +\def\newpoem{\setbox0=\box\poembox \setbox0=\box\widebox +\linecount=0} % empty boxes +\newpoem % probably not necessary +\def\poemline#1{\setbox0=\hbox{\strut #1}% + \setbox\poembox=\vbox{\unvbox\poembox\copy0}% + \setbox\widebox=\hbox{\unhbox\widebox\copy0}% + \advance \linecount 1} +\def\setpoem{% you'll want a clearpage here +\centerx=\wd\widebox \divide\centerx\linecount \divide\centerx 2% +%now centerx is the x of the center of gravity +\poemleftmargin=0.5\hsize \advance \poemleftmargin-\centerx +\noindent\kern\poemleftmargin\box\poembox +\par +\newpoem} + +\begin{document} + +\testline % for viewing the margins/ middle +\poemline{Rozen verwelken} +\poemline{schepen vergaan} +\poemline{maar onze liefde} +\poemline{zal blijven bestaan} +\setpoem + +\centerstar + +\poemline{Rozen verwelken} +\poemline{schepen vergaan} +\poemline{maar onze liefde zal blijven bestaan} +\setpoem + +\centerstar + +\poemline{Rozen verwelken, schepen vergaan} +\poemline{maar onze liefde zal blijven bestaan} +\setpoem + +\centerstar + +\poemline{Rozen verwelken} +\poemline{\qquad schepen vergaan} +\poemline{maar onze liefde} +\poemline{\qquad zal blijven bestaan} +\setpoem + +\centerstar + +\end{document} +%%%% fin exemple %%%% + +# 6.64 # Comment aligner des paragraphes ? +------------------------------------------ +On peut utiliser la commande \parindent. + +Exemple : +{\settowidth{\parindent} +{Notes~:\ } + +\makebox[0pt][r] +{Notes~:\ }La première note pour dire que ... + +La seconde pour préciser que ... +} +%%%% fin exemple %%%% + +# 6.65 # Comment construire une liste d'éléments ? +-------------------------------------------------- +Il existe trois environnements de liste par défaut : ++ l'environnement itemize ++ l'environnement description ++ l'environnement enumerate + +Exemples : +\begin{itemize} + \item un élément + \item un autre élément +\end{itemize} + +\begin{description} + \item[Genre] Le genre peut être féminin ou masculin + \item[Nombre] Le nombre peut être singulier ou pluriel +\end{description} + +\begin{enumerate} + \item premier élément + \item deuxième élément +\end{enumerate} +%%%% fin exemple %%%% + +# 6.66 # Comment faire une note dans une marge ? +------------------------------------------------ +On peut utiliser la commande \marginpar{note marge}. + +Exemple : +La valeur du paramètre temps est fixée à +12~minutes\marginpar{AC}. En tenant compte de cette hypothèse +les résultats obtenus sont les suivants~: + +~\ldots +%%%% fin exemple %%%% + +Remarque : Pour inverser les notes dans les marges + (droite/gauche) il suffit de mettre dans le + préambule : \reversemarginpar. + +# 6.67 # Comment faire une page de garde ? +------------------------------------------ +Les commandes permettant de définir une page de garde sont : ++ \title pour un titre ++ \author pour le ou les auteurs (dans ce dernier cas leurs noms +sont séparés par la commande \and) ++ \date pour la date ++ \thanks utilisée dans l'une des commandes ci-dessus permet de +faire référence à une note de bas de page. + +La page de garde est ensuite générée par la commande \maketitle +appelée dans le corps du document (généralement juste après la +balise \begin{document}). + +Exemple : +\documentclass{report} +\usepackage{french} + +\newlength{\larg} +\setlength{\larg}{14.5cm} + +\title{ +{\rule{\larg}{1mm}}\vspace{7mm} +\begin{tabular}{p{4cm} r} + & {\Huge {\bf {FAQ} \LaTeX{} française}} \\ + & \\ + & {\huge Pour débutants et confirmés} +\end{tabular}\\ +\vspace{2mm} +{\rule{\larg}{1mm}} +\vspace{2mm} \\ +\begin{tabular}{p{11cm} r} + & {\large \bf Version 2.0} \\ + & {\large \today} +\end{tabular}\\ +\vspace{5.5cm} +} +\author{\begin{tabular}{p{13.7cm}} +Marie-Paule Kluth +\end{tabular}\\ +\hline } +\date{} + +\begin{document} +\maketitle + +Voici mon document. + +\end{document} +%%%% fin exemple %%%% + +# 6.68 # Comment utiliser \thanks dans chaque titre de chapitre ? +----------------------------------------------------------------- +Pour associer des remerciements dans chaque chapitre d'un thèse, +par exemple, il faut définir sa propre macro à base de +\footnote. + +Exemple (R. Fairbairns) : +\documentclass{report} +\usepackage{french} + +\newcommand\thankschapter[2]{% + % arg 1 is chapter title + % arg 2 is `thanks' text + \edef\savefootnote{\thefootnote} + \renewcommand\thefootnote{\fnsymbol{footnote}} + \chapter[#1]{#1\footnote[1]{#2}} + \renewcommand\thefootnote{\arabic{footnote}} + \setcounter{footnote}{\savefootnote} +} +\begin{document} +\chapter{Préface.}{\textit{Un grand merci à M. Nigaudon pour +avoir accepter de préfacer ce livre.\\}} + +Ce livre traitant de \LaTeX,~\ldots + +\end{document} +%%%% fin exemple %%%% + +# 6.69 # Comment mettre un résumé et un abstract dans un document ? +------------------------------------------------------------------- +* Le package 'french' propose les environnements resume et +abstract. + +Exemple (textes sur la même page) : +\documentclass{article} +\usepackage{french} +\pagestyle{empty} +\begin{document} +\begin{resume} résumé en français \end{resume} + \english +\begin{abstract} the same in english \end{abstract} + \french + + Cet article~\ldots +\end{document} +%%%% fin exemple %%%% + +Remarque : \resume n'est qu'un alias de \abstract. + +Exemple (chaque résumé est sur une page séparée) : +\begin{english} + \begin{abstract} + english text + \end{abstract} +\end{english} + +\begin{french} + \begin{abstract} + Texte français + \end{abstract} +\end{french} +%%%% fin exemple %%%% + +* Le package 'babel' peut également être utilisé. + +Exemple : +\usepackage[francais,english]{babel} +... +\selectlanguage{francais} +resume : je parle français +.... +\selectlanguage{english} +abstract : I speak english +.... +%%%% fin exemple %%%% + +* Autre solution qui ne permet toutefois pas d'avoir les deux +textes sur la même page : + +%%%% debut macro %%%% +\renewcommand{\abstractname}{Résumé} +\begin{abstract} résumé en français \end{abstract} +\renewcommand{\abstractname}{Abstract} +\begin{abstract} the same in english \end{abstract} +%%%% fin macro %%%% + +# 6.70 # Comment définir de nouvelles couleurs ? +------------------------------------------------ +Il existe deux repères pour cela : ++ cyan, magent, yellow, black et la commande : +\definecolor{nouveau_nom}{cmyk}{w,x,y,z} +\newcmykcolor{le_nom_de_la_couleur}{w x y z} +avec w,x,y,z entre 0.0 et 1.0 + ++ red,green, blue et la commande : +\definecolor{nouveau_nom}{rgb}{a,b,c} +ou : \newrgbcolor{le_nom_de_la_couleur}{a b c} +avec a,b,c entre 0.0 et 1.0 + ++ il existe également : +\newhsbcolor{le_nom_de_la_couleur}{num1 num2 num3} +qui permet de jouer sur le << hue >>, la saturation et la +luminosité. + +# 6.71 # Comment placer des figures face à face en recto-verso ? +---------------------------------------------------------------- +Dans un document recto-verso, pour s'assurer qu'une figure +apparaisse sur la page de gauche et une autre sur la page de +droite en face, il faut utiliser le package 'dpfloat' disponible +sur: http://weber.u.washington.edu/~fox/tex/dpfloat.html. + +# 6.72 # Quelles sont les différences entre a4paper et letterpaper ? +-------------------------------------------------------------------- +L'option a4paper exécute : + \setlength\paperheight {297mm} + \setlength\paperwidth {210mm} + +L'option par défaut est letterpaper qui fait + \setlength\paperheight {11in} + \setlength\paperwidth {8.5in} + +Remarque (J. Kanze) : Il faut remarquer que la différence n'est + pas énorme : les défauts en mm sont 279x216. En fait, + sur le petit test que j'ai fait, les coupures de + lignes se trouvaient exactement aux mêmes endroits -- + en revanche, chaque page contenait bien quelques + lignes de plus avec a4paper. + +# 6.73 # Comment couper une chaîne de caractères ? +-------------------------------------------------- +* Pour forcer la coupure d'une chaîne de caractères, il faut +utiliser la commande \- à l'endroit où la chaîne doit être +coupée. + +Exemple : +Je décide que le dernier mot de cette ligne soit coupé en deux +ici:~ do\-cumentation. N'est-ce pas beau~? +%%%% fin exemple %%%% + +* Pour indiquer à LaTeX comment couper certain mots, on peut +utiliser la commande \hyphenation. + +Exemple : +\hyphenation{do-cu-ment} +Je décide que le dernier mot de cette ligne soit coupé en deux +ici:~ documentation. N'est ce pas beau~? +%%%% fin exemple %%%% + +# 6.74 # Comment modifier l'espace entre une figure et sa légende ? +------------------------------------------------------------------- +Les deux variables qui définissent respectivement l'espace avant +une légende et l'espace après sont : \abovecaptionskip et +\belowcaptionskip. + +Exemple de redimensionnement : +\setlength\abovecaptionskip{0.25ex} +%%%% fin exemple %%%% + +-- +Benjamin Bayart +bayartb@edgard.fdn.fr |