diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/lifia-th/lifia-th.dtx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/lifia-th/lifia-th.dtx')
-rw-r--r-- | macros/latex/contrib/lifia-th/lifia-th.dtx | 1789 |
1 files changed, 1789 insertions, 0 deletions
diff --git a/macros/latex/contrib/lifia-th/lifia-th.dtx b/macros/latex/contrib/lifia-th/lifia-th.dtx new file mode 100644 index 0000000000..1f9b3643dc --- /dev/null +++ b/macros/latex/contrib/lifia-th/lifia-th.dtx @@ -0,0 +1,1789 @@ +% \iffalse meta-comment +% +% Ce "package" fournit une classe thèse. +% +% Il est basé d'une part sur la classe "report", d'autre part sur le style +% thèse d'un auteur inconnu. +% +% Il est fourni tel quel, ce n'est pas de ma faute si vous plantez votre +% thèse ;-) +% +% Si vous changez ce fichier, vous le faites à vos dépends ... +% +% \fi +% +% +% \CheckSum{2005} +% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% \changes{v1.0b}{95/01/23}{Premiers pas ...} +% \changes{v1.0}{95/02/20}{Ça devrait aller !} +% \changes{v1.1}{95/04/12}{Qq modifs.} +% \changes{v1.2}{95/04/20}{Ajouté les césures.} +% \changes{v1.3}{95/06/20}{Éliminé l'ISO, ajouté des options.} +% \changes{v2.0}{95/07/01}{Remise à jour des manuels. Nouveau patch de +% Makeindex} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \iffalse meta-comment +% +% Things NOT to index +% +% \fi +% +% \DoNotIndex{\',\.,\@M,\@addtoreset,\@afterheading,\@esphack,\@index} +% +% \DoNotIndex{\arraycolsep,\arrayrulewidth,\c@page,\columnseprule,\columnsep,\columnwidth} +% \DoNotIndex{\dotfill,\dotfil,\efill,\endtrivlist,\enskip,\fbox} +% +% \DoNotIndex{\footnotesize,\footnoterule,\hfill,\hfil,\ifodd,\ifscan@allowed} +% \DoNotIndex{\ignorespaces,\indexentry,\leaders,\makebox,\marginpar} +% \DoNotIndex{\newsavebox,\newtheorem,\nopagebreak,\oddsidemargin} +% \DoNotIndex{\oldtextwidth,\oldoddmargin,\oldtextheight} +% \DoNotIndex{\pagestyle,\pfill,\protected@write,\rule,\sectionmark,\string} +% \DoNotIndex{\strut,\tabbingsep,\tabcolsep,\textwidth,\textheight} +% \DoNotIndex{\tmpleftmark,\tmprightmark,\trivlist,\unskip,\usebox} +% \DoNotIndex{\@arabic,\@author,\@beginparpenalty,\@biblabel,\@centercr,\@chapapp} +% \DoNotIndex{\@chapter,\@date,\@dblfloat,\@dotsep,\@dottedtocline,\@empty} +% \DoNotIndex{\@endparpenalty,\@endpart,\@evenfoot,\@evenhead,\@float,\@fontswitch} +% \DoNotIndex{\@gobble,\@gobbletwo,\@highpenalty,\@idxitem,\@itempenalty,\jurybox} +% \DoNotIndex{\@latex@warning,\@lowpenalty,\@m,\@makecaption,\@makechapterhead,\@makefnmark} +% \DoNotIndex{\@makefntext,\@makeschapterhead,\@maketitle,\@medpenalty,\@minipagefalse,\@minus} +% \DoNotIndex{\@mkboth,\@mparswitchfalse,\@mparswitchtrue,\@mpfootins,\@ne,\@nobreakfalse} +% \DoNotIndex{\@nobreaktrue,\@noitemerr,\@nomath,\@oddfoot,\@oddhead,\@openbibfalse} +% \DoNotIndex{\@openbibtrue,\@openrightfalse,\@openrighttrue,\@part,\@plus,\@pnumwidth} +% \DoNotIndex{\@ptsize,\@restonecolfalse,\@restonecoltrue,\@schapter,\@spart,\@startsection} +% \DoNotIndex{\@starttoc,\@tempboxa,\@tempdima,\@tempswafalse,\@tempswatrue,\@title} +% \DoNotIndex{\@tocrmarg,\@topnewpage,\@topnum,\@twocolumnfalse,\@twocolumntrue,\@twosidefalse} +% \DoNotIndex{\@twosidetrue,\\,\^,\`,\ ,\abovecaptionskip} +% \DoNotIndex{\addcontentsline,\addpenalty,\addtocontents,\addtolength,\addvspace,\advance} +% \DoNotIndex{\Alph,\alph,\arabic,\ast,\baselinestretch,\begin} +% \DoNotIndex{\begingroup,\belowcaptionskip,\bf,\bfseries,\bibindent,\bottomfraction} +% \DoNotIndex{\box,\bullet,\c@figure,\c@secnumdepth,\c@table,\c@tocdepth} +% \DoNotIndex{\cal,\cdot,\centering,\chaptermark,\cleardoublepage,\clearpage} +% \DoNotIndex{\clubpenalty,\col@number,\day,\dblfloatpagefraction,\dbltopfraction,\DeclareOldFontCommand} +% \DoNotIndex{\DeclareOption,\DeclareRobustCommand,\def,\descriptionlabel,\doublerulesep,\else} +% \DoNotIndex{\end,\end@dblfloat,\end@float,\endgroup,\endlist,\everypar} +% \DoNotIndex{\ExecuteOptions,\ext@figure,\ext@table,\fboxrule,\fboxsep,\fi} +% \DoNotIndex{\filedate,\fileversion,\floatpagefraction,\flushbottom,\fnum@figure,\fnum@table} +% \DoNotIndex{\footins,\fps@figure,\fps@table,\ftype@figure,\ftype@table,\gdef} +% \DoNotIndex{\global,\hangindent,\hbox,\hfil,\hrule,\hrulefill} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\Huge,\huge} +% \DoNotIndex{\if@compatibility,\if@restonecol,\if@tempswa,\ifcase,\ifdim,\ifnum} +% \DoNotIndex{\indexspace,\input,\interlinepenalty,\it,\item,\itemindent} +% \DoNotIndex{\itemsep,\itshape,\kern,\l@chapter,\l@figure,\l@paragraph} +% \DoNotIndex{\l@part,\l@section,\l@subparagraph,\l@subsection,\l@subsubsection,\l@table} +% \DoNotIndex{\labelenumi,\labelenumii,\labelenumiii,\labelenumiv,\labelitemi,\labelitemii} +% \DoNotIndex{\labelitemiii,\labelitemiv,\labelsep,\labelwidth,\LARGE,\Large} +% \DoNotIndex{\large,\leavevmode,\leftmargin,\leftmargini,\leftmarginii,\leftmarginiii} +% \DoNotIndex{\leftmarginiv,\leftmarginv,\leftmarginvi,\leftmark,\leftskip,\let} +% \DoNotIndex{\lineskip,\list,\listparindent,\long,\m@ne,\m@th} +% \DoNotIndex{\makelabel,\markboth,\markright,\mathbf,\mathcal,\mathit} +% \DoNotIndex{\mathnormal,\mathrm,\mathsf,\mathtt,\mit,\month} +% \DoNotIndex{\newblock,\newcommand,\newcounter,\newdimen,\newenvironment,\newif} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\normalfont,\normallineskip} +% \DoNotIndex{\normalsize,\null,\number,\numberline,\onecolumn,\or} +% \DoNotIndex{\overfullrule,\p@,\p@enumii,\p@enumiii,\p@enumiv,\pagenumbering} +% \DoNotIndex{\paperheight,\paperwidth,\par,\paragraph,\parfillskip,\parindent} +% \DoNotIndex{\parsep,\parskip,\part,\penalty,\ProcessOptions,\protect} +% \DoNotIndex{\ProvidesClass,\raggedbottom,\raggedright,\refstepcounter,\relax,\renewcommand} +% \DoNotIndex{\reset@font,\rightmargin,\rightmark,\rightskip,\rm,\rmfamily} +% \DoNotIndex{\Roman,\roman,\sbox,\sc,\scshape,\secdef} +% \DoNotIndex{\setcounter,\setlength,\settowidth,\sf,\sfcode,\sffamily} +% \DoNotIndex{\skip,\sl,\sloppy,\slshape,\small,\space} +% \DoNotIndex{\stackrel,\subitem,\subsubitem,\textfraction,\thechapter,\theenumi} +% \DoNotIndex{\theenumii,\theenumiii,\theenumiv,\theequation,\thefigure,\thepage} +% \DoNotIndex{\theparagraph,\thepart,\thesection,\thesubparagraph,\thesubsection,\thesubsubsection} +% \DoNotIndex{\thetable,\thispagestyle,\topfraction,\tt,\ttfamily} +% \DoNotIndex{\twocolumn,\typeout,\uppercase,\usecounter,\vfil,\vskip} +% \DoNotIndex{\vspace,\wd,\widowpenalty,\year,\z@,} +% \DoNotIndex{\@auxout,\@bsphack,\@cite,\@citea,\@citeb,\@for,\@iden} +% +% \DoNotIndex{\@ifundefined,\@sanitize,\active,\c@example,\catcode,\chardef} +% \DoNotIndex{\citation,\cocode,\csname,\diamond,\divide,\do,\edef} +% +% \DoNotIndex{\emcode,\endcsname,\expandafter,\font,\fontdimen,\footskip} +% \DoNotIndex{\G@refundefinedtrue,\if@twocolumn,\if@twoside,\ifhmode} +% +% \DoNotIndex{\ifmmode,\immediate,\l@example,\langle,\lastskip,\medskip} +% +% \DoNotIndex{\NeedsTeXFormat,\oldfootskip,\qmcode,\raggedleft,\raisebox} +% \DoNotIndex{\rangle,\RequirePackage,\sccode,\scriptscriptstyle,\the} +% \DoNotIndex{\thinspace,\tiny,\value,\vfill,\write} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% \title{Fichier \texttt{lifia-th.dtx}, à utiliser avec +% LaTeX2e. \thanks{Version \fileversion, daté du \filedate.} +% Ce fichier implémente la classe \texttt{lifia-th.cls}}~\\[2pt] +% \author{W. Pfister {\tt Wilfried.Pfister@imag.fr}} +% +% \maketitle +% \CodelineNumbered +% +% Ce fichier implémente le style ``thèse'' pour \LaTeXe. +% +%\StopEventually{\PrintIndex,\PrintChanges} +% +% \tableofcontents +% +% \iffalse +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +\usepackage{french,isolatin1} +\EnableCrossrefs +\RecordChanges +\PageIndex +\GetFileInfo{lifia-th.dtx} +\begin{document} + \DocInput{lifia-th.dtx} +\end{document} +%</driver> +% \end{macrocode} +% \fi +% +% \section{Introduction} +% +% La classe \texttt{lifia-th} est définie pour produire une thèse en +% français. Vous trouverez ici tous les éléments nécessaire à son +% utilisation. Les sections suivantes documentent le code \LaTeXe de +% la classe. +% +% \subsection{Les options} +% Les styles pris par défaut sont~: +% \begin{description} +% \item[a4paper~:] comme taille de papier. Sont aussi définies les +% options \texttt{a5paper, b5paper, legalpaper, executivepaper} ainsi +% que \texttt{landscape}. +% \item[11pt~:] comme taille de caractères. Les tailles \texttt{10pt} +% et \texttt{12pt} sont aussi possibles. +% \item[twoside~:] pour une impression recto-verso (\texttt{oneside} +% est aussi possible)~; +% \item[onecolumn~:] une seule colonne par page (\texttt{twocolumn} +% est aussi possible)~; +% \item[final~:] qui demande la version finale. Dans le cas de +% l'option \texttt{draft}, le texte est modifié comme suit~: +% \begin{enumerate} +% \item une page de titre simplifiée est produite (titre, auteur et +% date)~; +% \item un pavé noir est produit en marge pour les \texttt{*full +% hbox}~; +% \item la date est mise en bas de page~; +% \item si l'option |draftindex| est choisie, une note en marge +% donne les entrées de |\index|~; +% \item si l'option |draftbib| est choisie, une note marginale est +% posée pour toute référence bibliographique non trouvée et toutes +% les commandes |\cite| sont listées dans l'index sous l'entrée +% «bibliographie»~; +% \item {\bf néanmoins}, la pagination reste la même. +% \end{enumerate} +% \item[nodate~:] ne met pas la date de soutenance sur la page de +% garde de la version finale~; +% \item[openright~:] afin que les chapitres commencent sur une page de +% droite dans le cas recto-verso. L'option contraire est +% \texttt{openany}. +% \item[frenchdp~:] pour avoir un espacement correct avec les +% ponctuations doubles (;:!?). Comme cela pose des problèmes de +% placement des figures avec |psfrag|, je le laisse en option. +% \end{description} +% +% En plus de ces options, il est possible de préciser~: +% \begin{description} +% \item[leqno~:] pour numéroter les équations à gauche~; +% \item[fleqn~:] pour aligner à gauche les environnements +% mathématiques~; +% \item[openbib~:] pour avoir une bibliographie ``ouverte'' +% (i.e. où les références sont divisées en paragraphes). +% \end{description} +% +% isolatin1, n'est pas pris, car incompatible avec de nombreux packages +% (p.ex. \texttt{float.sty}) +% +% \subsection{Le style {\tt french}} +% +% Malheureusement, ce style introduit des surdéfinitions de +% |\chapter|, etc qui sont peu seyantes. De plus,il y a quelques +% imperfections avec l'environnement |eqnarray|. Par conséquent, je +% déconseille de l'appeler par la commande |\usepackage|, dans le +% texte. +% +% \subsection{La présentation du document} +% +% Le mieux est sans doute de regarder les deux exemples joints, voici +% néanmoins quelques précisions. +% +% La page de garde finale est telle qu'à la +% page~\pageref{fig-page-de-garde}. En plus des champs |\author| et +% |\title|, nous avons défini |\jury|. Les longueurs |\SautHaut| et +% |\SautBas| peuvent être redéfinies pour adapter la mise-en-page. +% +% Le reste du document est fortement inspiré de la classe +% \texttt{report}, à l'exception des détails suivants~: +% \begin{description} +% \item[les paragraphes] sont tous indentés (pour suivre la +% typographie française)~; +% \item[les en-têtes] sont définis de la manière suivante~: +% \begin{description} +% \item[dans le cas de l'impression recto-verso~:] à gauche, la page +% et le chapitre, et à droite, la section et la page. +% \item[dans le cas recto seul~:] on a le chapitre et la page. +% \end{description} +% La commande |\pagestyle{headings}| est prise par défaut. +% \item[les annexes] sont annoncés par la commande |\appendix| qui +% fait une partie ``Annexes'' (avec une ligne dans le sommaire) et +% affecte une lettre et non plus un nombre aux chapitres~; +% \item[l'index] commence sur une page de droite. De plus, on peut +% utiliser le fichier de style \texttt{lifia-th.ist} pour le +% produire. Une bonne méthode pour introduire l'index est d'utiliser +% la nouvelle commande de \LaTeXe~: +% \begin{center} +% \begin{verbatim} +% \IfFileExists{./<fichier>.ind}{\input{<fichier>.ind}}{} +% \end{verbatim} +% \end{center} +% Le patch de \texttt{makeindex} joint permet de traiter +% correctement les mots accentués (p.ex. ``énorme'' ira sous +% l'entrée ``E''). Il est prévu pour être utilisé avec +% \texttt{lifia-th.ist}. +% \item[la conclusion] de la thèse peut être produite grâce à la +% commande |\conclusion|. La seule différence avec |\chapter| est +% qu'elle introduit un plus grand espace dans le sommaire~; +% \item[le résumé~:] en plus de la commande |\abstract|, nous +% définissons |\resume| qui donne un paragraphe intitulé +% ``Résumé''~; +% \item[les mots-clés~:] deux environnements permettent de placer les +% mots-clés, |\motscles| et |\keywords|. +% \end{description} +% +% \subsection{La numérotation des pages} +% +% \DescribeMacro{\frontmatter} +% \DescribeMacro{\mainmatter} +% Deux commandes supplémentaires permettent de changer la numérotation +% des pages |\frontmatter| qui numérote en romain et |\mainmatter| qui +% numérote en arabe. En toute logique, elles peuvent être utilisées +% pour distinguer la partie ``avant'' (remerciements, tables, etc) du +% contenu réel de la thèse. +% +% À noter que selon les normes AFNOR, la pagination doit être continue +% (la page de titre étant la page 1). Voir le paragraphe +% \ref{s-biblio} pour quelques références bibliographiques. +% +% \subsection{Les nouveaux environnements} +% +% \DescribeEnv{theorem} +% \DescribeEnv{lemma} +% \DescribeEnv{proposition} +% \DescribeEnv{corollary} +% \DescribeEnv{proof} +% \DescribeEnv{definition} +% \DescribeEnv{remark} +% Nous avons définis les environnements |theorem|, |lemma|, +% |proposition|, |corollary|, |proof|, |definition| et +% |remark| qui sont numérotés par~: chapitre.section.numéro (à +% l'exception de |remark| et |proof| qui ne sont pas numérotés). +% +% \DescribeEnv{example} +% \DescribeMacro{\listofexamples} +% De plus, nous avons ajouté un environnement |example| qui produit +% une liste des exemples similaire à celle des figures ou des tables. +% +% \subsection{Les signes de ponctuation} +% +% En français, les signes {\bf ;~:~!~?} sont précédés d'un espace plus +% ou moins fin. La classe \texttt{lifia-th} permet d'ajouter +% automatiquement cet espace (option |frenchdp|). Celà pose des +% problèmes avec \texttt{psfrag} (et je suis preneur de toute +% solution~!). +% +% \subsection{Un exemple} +% +% Le fichier \texttt{test-lifia-th.\{texf,ps\}} donne un exemple +% d'utilisation de la classe \texttt{lifia-th}. Le fichier +% \texttt{test-draft.texf} donne un exemple de l'option draft. +% +% \section{Petite bibliographie} +% \label{s-biblio} +% +% Je rappelle que {\bf les majuscules sont accentuées}. Ceux +% intéressés pourront consulter le petit bouquin sur la typographie +% française édité par l'Imprimerie Nationale. +% +% Concernant les documents, une petite plaquette éditée par l'AFNOR +% cite les références suivantes~: +% \begin{description} +% \item[ISO 5996~:] présentation des rapports sci. et techn. +% \item[NF Z 44-004~:] recommandations aux auteurs pour le rédaction +% des résumés d'articles sci. et techn. +% \item[Z 44-005~:] contenu, forme et structures des réf. biblio. (ISO +% 690-1987) +% \item[NF Z 47-102~:] principes généraux pour l'indexation des +% documents +% \item[ISO 2108~:] système internat. pour la numérotation des livres +% (ISBN) +% \end{description} +% +% \section{Adapter la classe à un autre labo} +% +% L'essentiel de l'adaptation se fait en modifiant la page de titre +% (puisque le nom du laboratoire est inscrit en bas de page). On peut +% soit créer une nouvelle classe (ce qui est le plus propre), soit +% redéfinir les paramètres de la page de titre dans le préambule +% (|\gradename|, |\domainname|, |\soutname| et |\laboname|, voir les +% sections \ref{s-page-titre} et \ref{s-noms-francises}). +% +% La distribution est fourni avec un makefile assez générique~: il +% suffit de changer la variable |PREFIX| en lui donnant le nom de la +% nouvelle classe. +% +% \section{Paramètres généraux} +% +% Identification de la classe et de sa version~: +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e}[95/01/31] +\ProvidesClass{lifia-th}[95/07/01 v2.0] +\typeout{Classe ``thèse'' du LIFIA, bon courage ...} +% \end{macrocode} +% +% Paramètres généraux de la classe~: +% +% \begin{macrocode} +\newcommand{\@ptsize}{} +\newif\if@restonecol +\newif\if@openright +\newif\if@openbib +\newif\if@draft +\newif\if@draftindex +\newif\if@draftbib +\newif\if@nodate +\newif\if@frenchdp +\@openbibfalse +\@draftfalse +\@draftindexfalse +\@draftbibfalse +\@nodatefalse +\@frenchdpfalse +% \end{macrocode} +% +% \section{Les options disponibles} +% +% Tout d'abord, nous définissons les différentes options. Par rapport +% aux styles de base de \LaTeXe, nous éliminons l'option de page de +% titre (la page de titre sera plus dénudée dans le cas d'un ``draft'')~: +% +% \begin{macrocode} +\DeclareOption{a4paper} + {\setlength\paperheight {297mm}% + \setlength\paperwidth {210mm}} +\DeclareOption{a5paper} + {\setlength\paperheight {210mm}% + \setlength\paperwidth {148mm}} +\DeclareOption{b5paper} + {\setlength\paperheight {250mm}% + \setlength\paperwidth {176mm}} +\DeclareOption{letterpaper} + {\setlength\paperheight {11in}% + \setlength\paperwidth {8.5in}} +\DeclareOption{legalpaper} + {\setlength\paperheight {14in}% + \setlength\paperwidth {8.5in}} +\DeclareOption{executivepaper} + {\setlength\paperheight {10.5in}% + \setlength\paperwidth {7.25in}} +\DeclareOption{landscape} + {\setlength\@tempdima {\paperheight}% + \setlength\paperheight {\paperwidth}% + \setlength\paperwidth {\@tempdima}} +\DeclareOption{10pt}{\renewcommand{\@ptsize}{0}} +\DeclareOption{11pt}{\renewcommand{\@ptsize}{1}} +\DeclareOption{12pt}{\renewcommand{\@ptsize}{2}} +\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} +\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue} +\DeclareOption{onecolumn}{\@twocolumnfalse} +\DeclareOption{twocolumn}{\@twocolumntrue} +\DeclareOption{draft}{\setlength\overfullrule{5pt} \@drafttrue} +\DeclareOption{draftindex}{\@draftindextrue} +\DeclareOption{draftbib}{\@draftbibtrue} +\DeclareOption{final}{\setlength\overfullrule{0pt} \@draftfalse + \@draftindexfalse \@draftbibfalse} +\DeclareOption{nodate}{\@nodatetrue} +\DeclareOption{openright}{\@openrighttrue} +\DeclareOption{openany}{\@openrightfalse} +\DeclareOption{leqno}{\input{leqno.clo}} +\DeclareOption{fleqn}{\input{fleqn.clo}} +\DeclareOption{openbib}{\@openbibtrue} +\DeclareOption{frenchdp}{\@frenchdptrue} +% \end{macrocode} +% +% Les options prises par défaut sont~: +% \begin{itemize} +% \item papier A4, +% \item impression en 11 point, sur deux faces et une seule colonne, +% \item version finale, +% \item chapitres démarrant à droite. +% \end{itemize} +% +% \begin{macrocode} +\ExecuteOptions{a4paper,11pt,twoside,onecolumn,final,openright} +\ProcessOptions +% \end{macrocode} +% +% Quelques paramètres généraux~: +% +% \begin{macrocode} +\input{size1\@ptsize.clo} +\setlength\lineskip{1\p@} +\setlength\normallineskip{1\p@} +\renewcommand{\baselinestretch}{} +\setlength\parskip{0\p@ \@plus \p@} +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 +\setcounter{topnumber}{2} +\renewcommand{\topfraction}{.7} +\setcounter{bottomnumber}{1} +\renewcommand{\bottomfraction}{.3} +\setcounter{totalnumber}{3} +\renewcommand{\textfraction}{.2} +\renewcommand{\floatpagefraction}{.5} +\setcounter{dbltopnumber}{2} +\renewcommand{\dbltopfraction}{.7} +\renewcommand{\dblfloatpagefraction}{.5} +% \end{macrocode} +% +% \section{Les en-têtes et bas-de-page} +% +% \DescribeMacro{\ps@headings} +% +% Si la commande |\pagestyle{headings}| apparait, les en-têtes sont~: +% \begin{description} +% \item[dans le cas de l'impression recto-verso~:] à gauche, la page +% et le chapitre, et à droite, la section et la page. +% \item[dans le cas recto seul~:] on a le chapitre et la page. +% \end{description} +% +% Dans les deux cas, un trait est tracé sur toute la largeur de la +% page. +% +% Les bas-de-page sont vides si l'option |final| est choisie ou +% indiquent la date dans le cas |draft|. +% +% \begin{macrocode} +\if@twoside +\def\ps@headings{% + \if@draft + \def\@oddfoot{\hfill{\tiny Épreuve du \today}} + \def\@evenfoot{\hfill{\tiny Épreuve du \today}} + \else + \let\@oddfoot\@empty + \let\@evenfoot\@empty + \fi + \def\@evenhead{% + $\stackrel{\makebox[\textwidth]{\slshape\thepage\hfil\hfill\leftmark}}% + {\hrulefill}$} + \def\@oddhead{% + $\stackrel{\makebox[\textwidth]{\slshape\rightmark\hfil\hfill\thepage}}% + {\hrulefill}$} + \let\@mkboth\markboth + \def\chaptermark##1{% + \markboth {\uppercase{% + \ifnum \c@secnumdepth >\m@ne + \@chapapp\ \thechapter. \ % + \fi + ##1}}{}}% + \def\sectionmark##1{% + \markright {% + \ifnum \c@secnumdepth >\z@ + \thesection. \ % + \fi + ##1}}} +\else +\def\ps@headings{% + \if@draft + \def\@oddfoot{\hfill{\tiny Épreuve du \today}} + \else + \let\@oddfoot\@empty + \fi + \def\@oddhead{% + $\stackrel{\makebox[\textwidth]{\slshape\rightmark\hfil\hfill\thepage}}% + {\hrulefill}$} + \let\@mkboth\markboth + \def\chaptermark##1{% + \markright {\uppercase{% + \ifnum \c@secnumdepth >\m@ne + \@chapapp\ \thechapter. \ % + \fi + ##1}}}} +\fi +% \end{macrocode} +% +% Il est possible aussi de personnaliser les en-têtes~: +% +% \DescribeMacro{\ps@myheadings} +% \begin{macrocode} +\def\ps@myheadings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\thepage\hfil\slshape\leftmark}% + \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% + \let\@mkboth\@gobbletwo + \let\chaptermark\@gobble + \let\sectionmark\@gobble + } +% \end{macrocode} +% +% \section{La page de titre} +% \label{s-page-titre} +% +% \DescribeMacro{\maketitle} +% +% \DescribeMacro{\jury} +% +% En plus des paramètres classiques (titre, auteur, date), nous définissons +% la variable |\jury| comme contenant le jury en format |tabular|~: +% +% \begin{macrocode} +\newsavebox{\jurybox} +\DeclareRobustCommand{\jury}[1]{\begin{lrbox}{\jurybox}{#1}\end{lrbox}} +% \end{macrocode} +% +% \DescribeMacro{\SautHaut} +% \DescribeMacro{\SautBas} +% Les paramètres |\SautHaut| et |\SautBas| permettent de contrôler +% globalement la mise en page (version finale). +% +% \DescribeMacro{\gradename} +% \DescribeMacro{\domainname} +% \DescribeMacro{\soutname} +% \DescribeMacro{\laboname} +% Les commandes |\gradename|, |\domainname|, |\soutname| et +% |\laboname| permettent de définir la page de titre. Ces paramètres +% sont mis à jour dans la section \ref{s-noms-francises}. +% +% \begin{macrocode} +\newlength{\SautHaut} +\setlength{\SautHaut}{-10pt} +\newlength{\SautBas} +\setlength{\SautBas}{70pt} +% \end{macrocode} +% +% Dans le cas d'une version provisoire, la page de titre contient +% seulement le titre, l'auteur et la date de compilation~: +% +% \begin{macrocode} +\if@draft +\newcommand{\maketitle}{% + \thispagestyle{empty} + \null\vfil + \vskip 60\p@ + \begin{center}% + {\LARGE \@title \par}% + \vskip 3em% + {\large + \lineskip .75em% + \begin{tabular}[t]{c}% + \@author + \end{tabular}\par}% + \vskip 1.5em% + {\large \@date \par}% + \end{center}\par + \vfil\null +\setcounter{footnote}{0}% +\let\maketitle\relax +\gdef\@author{}\gdef\@title{} + \clearpage + \thispagestyle{empty} + \vfil \clearpage} +% \end{macrocode} +% +% \pagebreak +% +% Dans le cas de la version finale, la page est présentée de la +% manière suivante~: \label{fig-page-de-garde} +% \begin{center} +% \begin{verbatim} +% +-----------------------------------------------+ +% | ^ | +% | SautHaut | +% | v | +% | THÈSE (huge) | +% | ^ | +% | 0,5 cm | +% | v | +% | présentée par | +% | ^ | +% | 0,5 cm | +% | v | +% | <auteur> (Large) | +% | ^ | +% | 0,5 cm | +% | v | +% | pour obt. le titre de Docteur | ) +% | de l'Inst. Nat. Pol. de Gre. | ) = \gradename +% | (Arr. min. du 23 nov. 88) | ) +% | Spécialité : informatique | = \domainname +% | ^ | +% | vfill | +% | v | +% | <titre> (huge) | +% | ^ | +% | vfill | +% | v | +% | Soutenue le <date> ou rien (small) | = \soutname +% | ^ | +% | 1.5 cm | +% | v | +% | <jury> | +% | ^ | +% | SautBas | +% | v | +% | Thèse préparée au sein du LIFIA (small) | = \laboname +% +-----------------------------------------------+ +% +% \end{verbatim} +% \end{center} +% +% +% \begin{macrocode} +\else +\newcommand{\maketitle}{% + \thispagestyle{empty} + \newlength{\oldoddmargin} + \setlength{\oldoddmargin}{\oddsidemargin} + \setlength{\oddsidemargin}{-5.4mm} + \newlength{\oldfootskip} + \setlength{\oldfootskip}{\footskip} + \setlength{\footskip}{0pt} + \newlength{\titlewidth} + \setlength{\titlewidth}{\paperwidth} + \addtolength{\titlewidth}{-4cm} + \begingroup + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \fi + \thispagestyle{empty} + \endgroup + \setlength{\oddsidemargin}{\oldoddmargin} + \setlength{\footskip}{\oldfootskip} + \setcounter{footnote}{0}% + \let\maketitle\relax + \let\@maketitle\relax + \gdef\@author{}\gdef\@title{}} +\def\@maketitle{% + \begin{minipage}{\titlewidth} + \begin{center}% + \vskip \SautHaut% + {\huge TH\`ESE \par}% + \vskip 15pt% + {présentée par \par}% + \vskip 15pt% + {\Large \@author \par}% + \vskip 15pt% + {\gradename \par}% + \vskip 15pt% + {\domainname\par}% + \end{center} + \end{minipage} + \vfill% + \begin{minipage}{\titlewidth} + \begin{center}% + \vskip \SautHaut% + {\huge \@title \par}% + \end{center} + \end{minipage} + \vfill% + \begin{minipage}{\titlewidth} + \begin{center}% + \vskip \SautHaut% + \if@nodate + \vskip 40pt + \else + {\small \soutname \@date \par}% + \vskip 40pt% + \fi + {\usebox{\jurybox} \par}% + \vskip \SautBas + {\small \laboname}% + \end{center}% + \end{minipage} + \clearpage + \thispagestyle{empty} + \vfil \clearpage} +\fi +% \end{macrocode} +% +% \section{Le sectionnement} +% +% Il est exactement identique à celui donné dans +% \texttt{report.cls}. Les noms des sections et les numéros des +% parties sont francisés +% (voir la section \ref{s-noms-francises}). +% +% \begin{macrocode} +\newcommand*{\chaptermark}[1]{} +\setcounter{secnumdepth}{2} +\newcounter {part} +\newcounter {chapter} +\newcounter {section}[chapter] +\newcounter {subsection}[section] +\newcounter {subsubsection}[subsection] +\newcounter {paragraph}[subsubsection] +\newcounter {subparagraph}[paragraph] +\renewcommand{\thepart} {\Roman{part}} +\renewcommand{\thechapter} {\arabic{chapter}} +\renewcommand{\thesection} {\thechapter.\arabic{section}} +\renewcommand{\thesubsection} {\thesection.\arabic{subsection}} +\renewcommand{\thesubsubsection}{\thesubsection .\arabic{subsubsection}} +\renewcommand{\theparagraph} {\thesubsubsection.\arabic{paragraph}} +\renewcommand{\thesubparagraph} {\theparagraph.\arabic{subparagraph}} +\newcommand{\@chapapp}{\chaptername} +% \end{macrocode} +% +% \subsection{Les parties} +% +% Elles commencent sur une nouvelle page et seul le numéro et le titre +% apparaissent. À noter que je n'ai pas considéré les thèses ayant +% plus de vingt parties ;-) +% +% \DescribeMacro{\part} +% \begin{macrocode} +\newcommand{\part}{\cleardoublepage + \thispagestyle{empty}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \hbox{}\vfil + \secdef\@part\@spart} + +\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 + \reset@font + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \thepartspell~\partname + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + \@endpart} +\def\@spart#1{% + {\centering + \interlinepenalty \@M + \reset@font + \Huge \bfseries #1\par}% + \@endpart} +\def\@endpart{\vfil\newpage + \if@twoside + \hbox{}% + \thispagestyle{empty}% + \newpage + \fi + \if@tempswa + \twocolumn + \fi} +% \end{macrocode} +% +% \subsection{Les chapitres} +% +% Ils commencent sur une nouvelle page. +% +% \DescribeMacro{\chapter} +% \begin{macrocode} +\newcommand{\chapter}{\if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{empty}% + \global\@topnum\z@ + \secdef\@chapter\@schapter} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \addtocontents{loe}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +\def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright \reset@font + \ifnum \c@secnumdepth >\m@ne + \huge\bfseries \@chapapp{} \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \interlinepenalty\@M + \Huge \bfseries #1\par\nobreak + \vskip 40\p@ + }} +\def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +\def\@makeschapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \reset@font + \interlinepenalty\@M + \Huge \bfseries #1\par\nobreak + \vskip 40\p@ + }} +% \end{macrocode} +% +% \subsection{Les sections, ..., paragraphes} +% +% Tous les premiers paragraphes sont indentés (ce qui correspond à la +% typographie française). +% +% \DescribeMacro{\section} +% \DescribeMacro{\subsection} +% \DescribeMacro{\subsubsection} +% \DescribeMacro{\paragraph} +% \DescribeMacro{\subparagraph} +% \begin{macrocode} +\newcommand{\section}{\@startsection {section}{1}{\z@}% + {3.5ex \@plus 1ex \@minus .2ex}% + {2.3ex \@plus.2ex}% + {\reset@font\Large\bfseries}} +\newcommand{\subsection}{\@startsection{subsection}{2}{\z@}% + {3.25ex\@plus 1ex \@minus .2ex}% + {1.5ex \@plus .2ex}% + {\reset@font\large\bfseries}} +\newcommand{\subsubsection}{\@startsection{subsubsection}{3}{\z@}% + {3.25ex\@plus 1ex \@minus .2ex}% + {1.5ex \@plus .2ex}% + {\reset@font\normalsize\bfseries}} +\newcommand{\paragraph}{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\reset@font\normalsize\bfseries}} +\newcommand{\subparagraph}{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\reset@font\normalsize\bfseries}} +% \end{macrocode} +% +% \subsection{Les annexes} +% +% Elles sont désignées par une lettre et suivent la même présentation +% que les chapitres. Une ligne ``Annexes'' est ajoutée à la table des +% matières. +% +% \DescribeMacro{\appendix} +% \begin{macrocode} +\newcommand{\appendix}{\par + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \part*{\appendicesname}% + \addcontentsline{toc}{part}{\protect\appendicesname}% + \renewcommand{\@chapapp}{\appendixname}% + \renewcommand{\thechapter}{\Alph{chapter}}} +% \end{macrocode} +% +% \section{Les environnements mathématiques} +% +% Nous définissons quelques environnements de base et modifions le +% style des preuves. +% +% \DescribeEnv{theorem} +% \DescribeEnv{lemma} +% \DescribeEnv{proposition} +% \DescribeEnv{corollary} +% \DescribeEnv{definition} +% \begin{macrocode} +\newtheorem{theorem}{Théorème}[chapter] +\newtheorem{lemma}[theorem]{Lemme} +\newtheorem{proposition}[theorem]{Proposition} +\newtheorem{corollary}[theorem]{Corollaire} +\newtheorem{definition}[theorem]{Définition} +% \end{macrocode} +% +% Afin d'avoir une numérotation française, nous redéfinissons les +% commandes |\@begintheorem| et |\@oparbegintheorem|~: +% \DescribeMacro{\@begintheorem} +% \begin{macrocode} +\def\@begintheorem#1#2{\trivlist + \item[\hskip \labelsep{\bfseries #1\ #2.}]\itshape} +% \end{macrocode} +% \DescribeMacro{\@oparbegintheorem} +% \begin{macrocode} +\def\@oparbegintheorem#1#2#3{\trivlist + \item[\hskip \labelsep{\bfseries #1\ #2.\ (#3)}]\itshape} +% \end{macrocode} +% +% Enfin, nous avons ajouté un environnement |\proof| qui place un +% carré blanc en fin de preuve. +% \DescribeEnv{proof} +% \begin{macrocode} +\newenvironment{proof} + {{\raggedleft{\bf Preuve~:}}}% + {\nopagebreak\par \hfill \fbox{\rule{0ex}{1ex}\hspace{1ex}\rule{0ex}{1ex}}% + \hfil\par\medskip} +% \end{macrocode} +% +% \subsection{Les remarques} +% +% Cet environnement est sans numérotation et utilise la taille +% |small|. Un diamant termine la remarque. +% +% \DescribeEnv{remark} +% \begin{macrocode} +\newenvironment{remark} + {\medskip{\raggedleft{\bf\small\remarkname~:}}\nopagebreak + \begin{small}} + {\end{small}\nopagebreak\par \hfill $\diamond$ \hfil\par\medskip} +% \end{macrocode} +% +% \section{Les exemples} +% +% Cet environnement est du même type que |proof|, mais il permet de +% produire une table des exemples. L'environnement |example*| n'ajoute +% pas de ligne dans la liste des exemples et par conséquent, ne +% numérote pas l'exemple (de même qu'il n'a pas de titre). +% +% \DescribeEnv{example} +% \begin{macrocode} +\newcounter{example}[chapter] +\renewcommand{\theexample}{\thechapter.\@arabic\c@example} +\newlength{\examplewidth} +\setlength{\examplewidth}{\textwidth} +\addtolength{\examplewidth}{-\parindent} +\newenvironment{example}[1] + {\refstepcounter{example}% + \addcontentsline{loe}{example}% + {\protect\numberline{\theexample}{#1}}% + \trivlist\item[\hskip \labelsep{\bf + \examplename~\theexample~:}~#1.]% + \hfil\par\nopagebreak + \begin{small}} + {\end{small}\endtrivlist} +\newenvironment{example*} + {\trivlist\item[\hskip \labelsep{\bf \examplename~:}~] + \begin{small}} + {\end{small}\endtrivlist} +% \end{macrocode} +% +% \DescribeMacro{\listofexamples} +% \begin{macrocode} +\newcommand{\listofexamples}{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\listexamplename + \@mkboth{\uppercase{\listexamplename}}{\uppercase{\listexamplename}}}% + \@starttoc{loe}% + \if@restonecol\twocolumn\fi + } +\newcommand*{\l@example}{\@dottedtocline{1}{1.5em}{2.3em}} +% \end{macrocode} +% +% \section{Les énumérations} +% +% Sans changement par rapport à \texttt{report.cls}. +% +% \begin{macrocode} +\if@twocolumn + \setlength\leftmargini {2em} +\else + \setlength\leftmargini {2.5em} +\fi +\setlength\leftmarginii {2.2em} +\setlength\leftmarginiii {1.87em} +\setlength\leftmarginiv {1.7em} +\if@twocolumn + \setlength\leftmarginv {.5em} + \setlength\leftmarginvi {.5em} +\else + \setlength\leftmarginv {1em} + \setlength\leftmarginvi {1em} +\fi +\setlength\leftmargin {\leftmargini} +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +\renewcommand{\theenumi}{\arabic{enumi}} +\renewcommand{\theenumii}{\alph{enumii}} +\renewcommand{\theenumiii}{\roman{enumiii}} +\renewcommand{\theenumiv}{\Alph{enumiv}} +\newcommand{\labelenumi}{\theenumi.} +\newcommand{\labelenumii}{(\theenumii)} +\newcommand{\labelenumiii}{\theenumiii.} +\newcommand{\labelenumiv}{\theenumiv.} +\renewcommand{\p@enumii}{\theenumi} +\renewcommand{\p@enumiii}{\theenumi(\theenumii)} +\renewcommand{\p@enumiv}{\p@enumiii\theenumiii} +\newcommand{\labelitemi}{$\m@th\bullet$} +\newcommand{\labelitemii}{\normalfont\bfseries --} +\newcommand{\labelitemiii}{$\m@th\ast$} +\newcommand{\labelitemiv}{$\m@th\cdot$} +\newenvironment{description}% + {\list{}{\labelwidth\z@ \itemindent-\leftmargin + \divide \itemindent by 2 + \let\makelabel\descriptionlabel}} {\endlist} +\newcommand{\descriptionlabel}[1]{\hspace\labelsep + \normalfont\bfseries #1} +% \end{macrocode} +% +% \section{La conclusion} +% +% \DescribeMacro{\conclusion} +% La commande |\conclusion| permet de mettre un chapitre numéroté en +% introduisant un plus grand saut dans le sommaire. Bien que prévu +% pour la conclusion, il peut être utilisé pour n'importe quel +% chapitre hors parties. +% +% \begin{macrocode} +\newcommand{\conclusion}[1]{\addtocontents{toc}{\protect\addvspace{1.25em% + \@plus\p@}}\chapter{#1}} +% \end{macrocode} +% +% \section{Les résumés et les mots-clés} +% +% Les résumés sont sur une page de droite, seuls. Ils y a deux +% environnements pour des résumés en français et en anglais. La page +% n'est pas numérotée. +% +% \DescribeEnv{resume} +% \begin{macrocode} +\newenvironment{resume}{% + \cleardoublepage + \thispagestyle{empty} + \vskip 30pt + {\Large \bfseries \resumename} \par \vskip 10pt} + {\par \vskip 30pt} +% \end{macrocode} +% \DescribeEnv{abstract} +% \begin{macrocode} +\newenvironment{abstract}{% + \thispagestyle{empty} + \vskip 40pt + {\Large \bfseries \abstractname} \par \vskip 10pt} + {\par \vfil \null} +% \end{macrocode} +% +% Les mots clés ne sont pas sur une nouvelle page. +% +% \DescribeEnv{motscles} +% \begin{macrocode} +\newenvironment{motscles}{% + \vskip 40pt + {\large \bfseries \motsclesname~:~}} + {\par \vskip 30pt} +% \end{macrocode} +% \DescribeEnv{keywords} +% \begin{macrocode} +\newenvironment{keywords}{% + \vskip 20pt + {\large \bfseries \keywordsname~:~}} + {\par \vfil \null} +% \end{macrocode} +% +% \section{Les autres environnements} +% +% Ils sont sans changement par rapport à \texttt{report.cls}. +% +% \DescribeMacro{\verse} +% \DescribeMacro{\quotation} +% \DescribeMacro{\quote} +% \begin{macrocode} +\newenvironment{verse} + {\let\\=\@centercr + \list{}{\itemsep \z@ + \itemindent -1.5em% + \listparindent\itemindent + \rightmargin \leftmargin + \advance\leftmargin 1.5em}% + \item[]} + {\endlist} +\newenvironment{quotation} + {\list{}{\listparindent 1.5em% + \itemindent \listparindent + \rightmargin \leftmargin + \parsep \z@ \@plus\p@}% + \item[]} + {\endlist} +\newenvironment{quote} + {\list{}{\rightmargin\leftmargin}% + \item[]} + {\endlist} +% \end{macrocode} +% +% \section{Les corps flottants} +% +% Seul changement par rapport à \texttt{report.cls}~: les numéros de +% figures/tables dans la légende sont suivis d'un point. +% +% De plus, nous ajoutons l'environnement |figure|. +% +% \DescribeEnv{figure} +% \DescribeEnv{table} +% \begin{macrocode} +\newcounter{figure}[chapter] +\renewcommand{\thefigure}{\thechapter.\@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{{\bf \figurename~\thefigure~: }} +\newenvironment{figure} + {\@float{figure}} + {\end@float} +\newenvironment{figure*} + {\@dblfloat{figure}} + {\end@dblfloat} +\newcounter{table}[chapter] +\renewcommand{\thetable}{\thechapter.\@arabic\c@table} +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{{\bf \tablename~\thetable~: }} +\newenvironment{table} + {\@float{table}} + {\end@float} +\newenvironment{table*} + {\@dblfloat{table}} + {\end@dblfloat} +% \end{macrocode} +% +% \subsection{Les légendes} +% +% \DescribeMacro{\caption} +% \begin{macrocode} +\newlength\abovecaptionskip +\newlength\belowcaptionskip +\setlength\abovecaptionskip{10\p@} +\setlength\belowcaptionskip{0\p@} +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1#2}% + \ifdim \wd\@tempboxa >\hsize + #1#2\par + \else + \global \@minipagefalse + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} +% \end{macrocode} +% +% +% \section{Les tables, index et bibliographies} +% +% \subsection{La table des matières} +% +% \DescribeMacro{\tableofcontents} +% \begin{macrocode} +\newcommand{\@pnumwidth}{1.55em} +\newcommand{\@tocrmarg} {2.55em} +\newcommand{\@dotsep}{4.5} +\setcounter{tocdepth}{2} +\newcommand{\tableofcontents}{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\contentsname + \@mkboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}}% + \@starttoc{toc}% + \if@restonecol\twocolumn\fi + } +\newcommand*{\l@part}[2]{% + \ifnum \c@tocdepth >-2\relax + \addpenalty{-\@highpenalty}% + \addvspace{2.25em \@plus\p@}% + \begingroup + \setlength\@tempdima{3em}% + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + {\leavevmode + \Large \bfseries #1\hfil \hbox to\@pnumwidth{\hss #2}}\par + \nobreak + \global\@nobreaktrue + \everypar{\global\@nobreakfalse\everypar{}} + \endgroup + \fi} +\newcommand*{\l@chapter}[2]{% + \ifnum \c@tocdepth >\m@ne + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus\p@ + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \bfseries + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par + \penalty\@highpenalty + \endgroup + \fi} +\newcommand*{\l@section} {\@dottedtocline{1}{1.5em}{2.3em}} +\newcommand*{\l@subsection} {\@dottedtocline{2}{3.8em}{3.2em}} +\newcommand*{\l@subsubsection}{\@dottedtocline{3}{7.0em}{4.1em}} +\newcommand*{\l@paragraph} {\@dottedtocline{4}{10em}{5em}} +\newcommand*{\l@subparagraph} {\@dottedtocline{5}{12em}{6em}} +% \end{macrocode} +% +% \subsection{Les listes des figures et des tables} +% +% \DescribeMacro{\listoffigures} +% \begin{macrocode} +\newcommand{\listoffigures}{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\listfigurename + \@mkboth{\uppercase{\listfigurename}}% + {\uppercase{\listfigurename}}}% + \@starttoc{lof}% + \if@restonecol\twocolumn\fi + } +\newcommand*{\l@figure}{\@dottedtocline{1}{1.5em}{3em}} +% \end{macrocode} +% \DescribeMacro{\listoftables} +% \begin{macrocode} +\newcommand{\listoftables}{% + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\listtablename + \@mkboth{\uppercase{\listtablename}}{\uppercase{\listtablename}}}% + \@starttoc{lot}% + \if@restonecol\twocolumn\fi + } +\let\l@table\l@figure +% \end{macrocode} +% +% \subsection{La bibliographie} +% +% La commande |\cite| est partiellement redéfinie pour tenir compte de +% l'option |draftbib|. +% +% \DescribeMacro{\@citex} +% \begin{macrocode} +\def\@citex[#1]#2{% + \let\@citea\@empty + \@cite{\@for\@citeb:=#2\do + {\@citea\def\@citea{,\penalty\@m\ }% + \edef\@citeb{\expandafter\@iden\@citeb}% + \if@filesw\immediate\write\@auxout{% + \string\citation{\@citeb}}% + \if@draftbib\protected@write\@indexfile{}% + {\string\indexentry{bibliographie!\@citeb}{\thepage}}\fi\fi + \@ifundefined{b@\@citeb}{{\reset@font\bfseries ?}% + \if@draftbib\marginpar{\footnotesize\it{\@citeb}}\fi% + \G@refundefinedtrue\@latex@warning% + {Citation `\@citeb' page \thepage \space indéfinie}}% + {\hbox{\csname b@\@citeb\endcsname}}}}{#1}} +% \end{macrocode} +% +% \DescribeEnv{thebibliography} +% Elle commence sur une page de droite, puisqu'elle est définie comme +% un chapitre. +% +% \begin{macrocode} +\newdimen\bibindent +\bibindent=1.5em +\newenvironment{thebibliography}[1] + {\chapter*{\bibname} + \@mkboth{\uppercase{\bibname}}{\uppercase{\bibname}}% + \addtocontents{toc}{\protect\addvspace{1.25em \@plus\p@}} + \addcontentsline{toc}{chapter}{\bibname}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \list{\@biblabel{\arabic{enumiv}}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand{\theenumiv}{\arabic{enumiv}}}% + \if@openbib + \renewcommand{\newblock}{\par} + \else + \renewcommand{\newblock}{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Environnement `thebibliography' vide}}% + \endlist} +% \end{macrocode} +% +% \subsection{L'index} +% +% L'index est sur deux colonnes. Il est prévu qu'il soit traité par +% \texttt{makeindex} (éventuellement avec le fichier de style +% \texttt{lifia-th.ist}). Il démarre sur une page de droite dans le cas +% |twoside|. +% +% Joint à ce package, nous avons inclu une mise-à-jour de {\tt makeindex} +% ({\bf sur les sources de la version 2.12}) afin qu'il prenne en +% compte l'accentuation française. Il suffit de lancer {\tt makeindex} +% avec l'option {\tt -f}. Ceci est à utiliser conjointement avec le +% style {\tt lifia-th.ist} qui modifie le caractère {\tt quote} en +% {\tt \#}, afin d'éviter tout problème avec le tréma. +% +% De plus, nous redéfinissons la commande |\index| afin qu'en mode +% |draftindex| elle imprime la mot indexé en marge. +% +% La commande |\indexintro| peut être définie dans le +% fichier, afin de mettre une introduction à l'index. +% +% \DescribeMacro{\indexintro} +% \begin{macrocode} +\newif\if@indexintro +\@indexintrofalse +\newcommand{\indexintro}[1]{\def\indexintrotext{#1} \@indexintrotrue} +% \end{macrocode} +% +% \DescribeMacro{\@wrindex} +% \begin{macrocode} +\def\@wrindex#1{\if@draftindex\marginpar{\footnotesize\it{#1}}\fi% + \protected@write\@indexfile{}% + {\string\indexentry{#1}{\thepage}}% + \endgroup + \@esphack +} +% \end{macrocode} +% +% \DescribeEnv{theindex} +% \begin{macrocode} +\newcommand{\newblock}{} +\newenvironment{theindex} + {\if@twocolumn \@restonecoltrue \else \@restonecolfalse \twocolumn\fi% + \if@indexintro \chapter*{\indexname\\[40pt]\indexintrotext}% + \else \chapter*{\indexname} \fi% + \@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}% + \addtocontents{toc}{\protect\addvspace{1.25em \@plus\p@}} + \addcontentsline{toc}{chapter}{\indexname}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \columnseprule \z@% + \columnsep 35\p@% + \parskip\z@ \@plus .3\p@\relax + \let\item\@idxitem} + {\if@restonecol\clearpage\else\onecolumn\clearpage\fi} +\newcommand{\@idxitem} {\par\hangindent 40\p@} +\newcommand{\subitem} {\par\hangindent 40\p@ \hspace*{20\p@}} +\newcommand{\subsubitem}{\par\hangindent 40\p@ \hspace*{30\p@}} +\newcommand{\indexspace}{\par \vskip 10\p@ \@plus5\p@ + \@minus3\p@\relax} +% \end{macrocode} +% À cela, nous rajoutons quelques commandes afin de pouvoir utiliser +% le fichier de style d'index \texttt{lifia-th.ist}. +% \begin{macrocode} +\newif\ifscan@allowed +\def\efill{\hfill\nopagebreak}% +\def\dotfill{\leaders\hbox to.6em{\hss .\hss}\hskip\z@ plus 1fill}% +\def\dotfil{\leaders\hbox to.6em{\hss .\hss}\hfil}% +\def\pfill{\unskip~\dotfill\penalty500\strut\nobreak + \dotfil~\ignorespaces}% +% \end{macrocode} +% +% \section{Les noms francisés} +% \label{s-noms-francises} +% +% \begin{macrocode} +\newcommand{\contentsname}{Table des matières} +\newcommand{\listfigurename}{Liste des figures} +\newcommand{\listtablename}{Liste des tables} +\newcommand{\listexamplename}{Liste des exemples} +\newcommand{\bibname}{Bibliographie} +\newcommand{\indexname}{Index} +\newcommand{\figurename}{Figure} +\newcommand{\tablename}{Table} +\newcommand{\examplename}{Exemple} +\newcommand{\remarkname}{Remarque} +\newcommand{\partname}{partie} +\newcommand{\thepartspell}% + {\ifcase\value{part}\or + Premi\`ere\or Deuxi\`eme\or % + Troisi\`eme\or Quatri\`eme\or Cinqui\`eme\or Sixi\`eme\or % + Septi\`eme\or Huiti\`eme\or Neuvi\`eme\or Dixi\`eme\or % + Onzi\`eme\or Douzi\`eme\or Treizi\`eme\or Quatorzi\`eme\or % + Quinzi\`eme\or Seizi\`eme\or Dix-septi\`eme\or Dix-huiti\`eme\or % + Dix-neuvi\`eme\or Vingti\`eme\fi} +\newcommand{\chaptername}{Chapitre} +\newcommand{\appendixname}{Annexe} +\newcommand{\appendicesname}{Annexes} +\newcommand{\resumename}{Résumé} +\newcommand{\abstractname}{Abstract} +\newcommand{\motsclesname}{Mots clés} +\newcommand{\keywordsname}{Keywords} +\newcommand{\gradename}{pour obtenir le grade de Docteur \\% + de l'Institut National Polytechnique de Grenoble \\% + (Arr\^et\'e minist\'eriel du 23 novembre 1998)} +\newcommand{\soutname}{Soutenue le } +\newcommand{\laboname}{Th\`ese pr\'epar\'ee au sein du {\bf% + L}aboratoire d'{\bf I}nformatique {\bf F}ondamentale et d'{\bf% + I}ntelligence {\bf A}rtificielle} +\newcommand{\domainname}{Sp\'ecialit\'e~: informatique} +% \end{macrocode} +% \DescribeMacro{\today} +% \begin{macrocode} +\newcommand{\today}{\number\day\space \ifcase\month\or + janvier\or février\or mars\or avril\or mai\or juin\or + juillet\or août\or septembre\or octobre\or novembre\or décembre\fi + \space \number\year} +% \end{macrocode} +% +% \section{Les ponctuations doubles} +% +% Il s'agit de {\bf ;~:~!~?} qui nécessitent un espace avant. Nous +% définissons deux commandes (|\frenchpunct| et |\nofrenchpunct|) qui +% permettent de traiter ces signes comme des ponctuations françaises +% ou non. Tout d'abord, nous les définissons comme des caractères +% actifs, ensuite, il ne reste plus qu'à les définir en évitant +% d'ajouter un espace en mode {\tt math}. +% +% Tout d'abord, on sauvegarde les |\catcode| pour pouvoir les restituer~: +% \begin{macrocode} +\newif\ifnofrpu +\if@frenchdp + \global \chardef \sccode = \the \catcode `\; + \global \chardef \cocode = \the \catcode `\: + \global \chardef \emcode = \the \catcode `\! + \global \chardef \qmcode = \the \catcode `\? +% \end{macrocode} +% +% On rend ensuite actifs les caractères~: +% \DescribeMacro{\frenchpunct} +% \begin{macrocode} + \def\frenchpunct{% + \catcode `\; \active + \catcode `\: \active + \catcode `\! \active + \catcode `\? \active + \nofrpufalse + } + \frenchpunct +% \end{macrocode} +% +% On défini chaque caractère avec ses espacements~: +% \DescribeEnv{;} +% \begin{macrocode} + \def;{% + \ifmmode \string;% + \else \relax + \ifnofrpu \string;% + \else \relax + \ifhmode + \ifdim\lastskip>\z@ + \unskip\penalty\@M\thinspace + \fi + \fi + \string;% + \fi + \fi} +% \end{macrocode} +% \DescribeEnv{:} +% \begin{macrocode} + \def:{% + \ifmmode \string:% + \else \relax + \ifnofrpu \string:% + \else \relax + \ifhmode + \ifdim\lastskip>\z@ + \unskip\penalty\@M\thinspace + \fi + \fi + \string:% + \fi + \fi} +% \end{macrocode} +% \DescribeEnv{!} +% \begin{macrocode} + \def!{% + \ifmmode \string!% + \else \relax + \ifnofrpu \string!% + \else \relax + \ifhmode + \ifdim\lastskip>\z@ + \unskip\penalty\@M\thinspace + \fi + \fi + \string!% + \fi + \fi} +% \end{macrocode} +% \DescribeEnv{?} +% \begin{macrocode} + \def?{% + \ifmmode \string?% + \else \relax + \ifnofrpu \string?% + \else \relax + \ifhmode + \ifdim\lastskip>\z@ + \unskip\kern\fontdimen2\font\kern-1.4\fontdimen3\font + \fi + \fi + \string?% + \fi + \fi} +% \end{macrocode} +% \DescribeMacro{\nofrenchpunct} +% \begin{macrocode} + \def\nofrenchpunct{% + \catcode `\; = \the \sccode + \catcode `\: = \the \cocode + \catcode `\! = \the \emcode + \catcode `\? = \the \qmcode + \nofrputrue + } +\fi +% \end{macrocode} +% +% \section{Divers} +% +% Quelques petits bouts de code divers ... +% \begin{description} +% \item[la commande {\tt cleardoublepage}~:] +% nous la redéfinissons afin d'éviter d'avoir les noms de chapitres +% imprimés au verso (dans le cas où le chapitre s'arrête sur le recto). +% \DescribeMacro{\cleardoublepage} +% \begin{macrocode} +\renewcommand{\cleardoublepage}{% + \clearpage + \if@twoside + \ifodd\c@page + \else + \thispagestyle{empty}\hbox{}\newpage + \if@twocolumn\thispagestyle{empty}\hbox{}\newpage + \fi + \fi + \fi} +% \end{macrocode} +% \item[sur les notes de bas-de-page~:] +% \begin{macrocode} +\renewcommand{\footnoterule}{% + \kern-3\p@ + \hrule width .4\columnwidth + \kern 2.6\p@} +\@addtoreset{footnote}{chapter} +\long\def\@makefntext#1{% + \parindent 1em% + \noindent + \hbox to 1.8em{\hss\@makefnmark}#1} +% \end{macrocode} +% \item[sur les tableaux~:] +% \begin{macrocode} +\setlength\arraycolsep{5\p@} +\setlength\tabcolsep{6\p@} +\setlength\arrayrulewidth{.4\p@} +\setlength\doublerulesep{2\p@} +\setlength\tabbingsep{\labelsep} +% \end{macrocode} +% \item[sur la style de la page~:] +% \begin{macrocode} +\setlength\columnsep{10\p@} +\setlength\columnseprule{0\p@} +\pagestyle{headings} +\pagenumbering{arabic} +\if@twoside +\else + \raggedbottom +\fi +\if@twocolumn + \twocolumn + \sloppy + \flushbottom +\else + \onecolumn +\fi +\skip\@mpfootins = \skip\footins +\setlength\fboxsep{3\p@} +\setlength\fboxrule{.4\p@} +% \end{macrocode} +% \item[sur la numérotation~:] +% Les commandes |\frontmatter| et |\mainmatter| permettent de changer +% le type de numérotation (resp. romain et arabe). Elles agissent +% comme dans le style \texttt{book}. +% +% \DescribeMacro{\frontmatter} +% \DescribeMacro{\mainmatter} +% \begin{macrocode} +\newcommand{\frontmatter}{\cleardoublepage \pagenumbering{roman}} +\newcommand{\mainmatter}{\cleardoublepage \pagenumbering{arabic}} +% \end{macrocode} +% \item[sur les équations~:] +% \begin{macrocode} +\@addtoreset{equation}{chapter} +\renewcommand{\theequation}{\thechapter.\arabic{equation}} +% \end{macrocode} +% \item[sur les fontes~:] +% \begin{macrocode} +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}} +\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}} +% \end{macrocode} +% \item[les guillemets~:] +% \index{guillemets} +% \begin{macrocode} +\catcode171=13 +\def^^ab{\protect\raisebox{0.3ex}{% + $\protect\scriptscriptstyle\protect\mathbf{\langle\!\langle\;}$}} +\catcode187=13 +\def^^bb{\protect\raisebox{0.3ex}{% + $\protect\scriptscriptstyle\protect\mathbf{\;\rangle\!\rangle}$}} +% \end{macrocode} +% \item[les césures~:] +% \index{césures} +% \begin{macrocode} +\input frhyphex +% \end{macrocode} +% \end{description} +% +% \section{Ouiiin ! ... ça marche pas !} +% +% Avant de m'envoyer un mail, regardez ci-dessous~: +% \begin{description} +% \item[chapter*] ou autres n'apparaissent pas dans le sommaire~: +% ajouter une commande |\addcontentsline| après le chapitre (voir le +% bouquin de Lamport), ou utilisez |\conclusion| ; +% \item[c'est pas la bonne référence] d'une figure, d'une table ou +% d'un exemple~: placez la commande |\label| juste avant la fin de +% l'environnement. Et hop ! +% \item[le numéro de figure/exemple... colle au titre] dans la table +% des figure/exemple. Rajoutez les lignes suivantes en préambule~: +% \begin{verbatim} +% % Fixe la boîte du numéro à 4em +% \makeatletter +% \renewcommand*{\l@figure}{\@dottedtocline{1}{1.5em}{4em}} +% \let\l@table\l@figure +% \let\l@example\l@figure +% \makeatother +% \end{verbatim} +% en ajustant éventuellement la taille à votre cas. +% \item[j'ai un] \begin{verbatim} ! Missing \endcsname +% inserted. \end{verbatim} lorsqu'il lit une référence (ou autre +% chose). Avez-vous une ponctuation double ({\bf :;?!}) et l'option +% |frenchdp|~? Dans ce +% cas, changez la ponctuation par un tiret ou éliminez l'option. En +% effet, en français, ces +% ponctuations sont entourées d'espaces et sont donc +% |\active|. Sinon, donnez un coup de pied en haut à gauche de +% l'écran pour remettre \LaTeXe en marche |;-)|. +% \item[il m'insulte avec un] \begin{verbatim} ! LaTeX Error: Too many +% unprocessed floats. \end{verbatim}. Si vous êtes en mode +% |draftindex| ou |draftbib|, +% la classe produit une note pour les entrées dans l'index (ou la +% biblio si l'entrée est inconnue). Soit +% vous mettez une commande |\clearpage| pour termniner la page, soit +% vous utilisez |\multindex| suivante~: +% \begin{verbatim} +% % Comme je l'ai faite assez ``brute'', +% % elle accepte 5 entrées (mais cela devrait suffire ;-)). +% \def\multindex{\@bsphack\begingroup \@sanitize\@wrmultindex} +% \def\@wrmultindex#1#2#3#4#5{% +% \if@draftindex\marginpar{% +% \footnotesize\it{#1}\\{#2}\\{#3}\\{#4}\\{#5}}\fi% +% \protected@write\@indexfile{}% +% {\string\indexentry{#1}{\thepage}}% +% \protected@write\@indexfile{}% +% {\string\indexentry{#2}{\thepage}}% +% \protected@write\@indexfile{}% +% {\string\indexentry{#3}{\thepage}}% +% \protected@write\@indexfile{}% +% {\string\indexentry{#4}{\thepage}}% +% \protected@write\@indexfile{}% +% {\string\indexentry{#5}{\thepage}}% +% \endgroup +% \@esphack +% } +% \end{verbatim} +% \item[en mode draftindex] les indexations de formules maths donnent un +% truc |*%$$#!!| en marge. Je sais. Je n'ai pas encore trouvé pourquoi +% (et je n'ai plus le temps). Une manière de contourner le problème +% est~: +% \begin{verbatim} +% \newcommand{\symindex}[1]{\index{\ensuremath{#1}}} +% \newcommand{\multsymindex}[5]{ +% \multindex{\ensuremath{#1}|emphasize}{\ensuremath{#2}|emphasize}{% +% \ensuremath{#3}|emphasize}{\ensuremath{#4}|emphasize}{% +% \ensuremath{#5}|emphasize}} +% \end{verbatim} +% en éliminant les |$| autour des symboles indexés (sinon ils vont +% être centrés dans l'index). +% \item[les césures] sont faites n'importe comment~! |frhyphex| ne +% saurait tout savoir, il est toujours possible de rajouter des césures par +% une commande |\hyphenation{liste_de_mots}|, où chaque mot de la +% liste est séparé du suivant par un espace et où des tirets ont été +% introduits aux endroits idoines (par ex. {\tt pré-condi-tion}. +% \item[les en-têtes] sont moches car le titre de mon chapitre est +% trop long~: utilisez le paramètre optionnel de |\chapter| +% (e.g. \\ +% |\chapter[Petite en-tête]{Et un trop long titre qui bave partout}|). +% \item[je préfère ...]~: vous êtes un insatisfait :-) +% \end{description} +% \Finale +%</package> +\endinput +%% + |