====== classe LaTeX pour mémoire de thèse ====== [[:members:jchiquet:welcome|retour à l'accueil de ma page]] ===== fichiers du modèle ===== Le zip {{:members:jchiquet:modele_these.zip|}} comporte les fichiers nécessaires ainsi que les squelettes des fichiers .tex à remplir. ==== fichiers de classes et de styles ==== ++++ fichier ''these_gi.cls'' | % ============================================================== % CLASSE LaTeX POUR LA REDACTION DE THÈSE % % Julien Chiquet % % Nécessite au moins un fichier de style pour la thèse % plus le fichier de style pour les pages administratives \NeedsTeXFormat{LaTeX2e} \ProvidesClass{these_gi}[2005/09/21 Classe pour ma thèse] %% Les differents styles \newif\if@stylejchiquet \@stylejchiquetfalse % POUR L'INSTANT UN SEUL !!! %% Chargement de la classe book, avec transfert d'options \PassOptionsToClass{a4paper}{book} \PassOptionsToClass{11pt}{book} \PassOptionsToClass{twoside}{book} \DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}} \DeclareOption{stylejchiquet}{\@stylejchiquettrue} \DeclareOption*{} \ProcessOptions \LoadClass{book} % ============================================================== % PACKAGES STANDARD REQUIS % FONTS ET CARACTÈRES \RequirePackage[T1]{fontenc} \RequirePackage[latin1]{inputenc} \RequirePackage[frenchb]{babel} \frenchspacing \RequirePackage{eurosym} \RequirePackage{xcolor} % ============================================================== % CHARGEMENT DE LA FEUILLE DE STYLE CHOISIE \if@stylejchiquet \RequirePackage{stylejchiquet} \fi ++++ ++++ fichier ''style_jchiquet.sty'' | \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{stylejchiquet} \newif\if@sommairechap \@sommairechapfalse \DeclareOption{sommairechap}{\@sommairechaptrue} \ProcessOptions % ========================================================================== % PACKAGES ADDITIONNELS % Police MathPazo \RequirePackage[osf,sc]{mathpazo} \RequirePackage[scaled=.95]{helvet} \RequirePackage{courier} % Entêtes améliorés \RequirePackage{fancyhdr} % Enumerations personnalisée \RequirePackage{enumerate} % Calcul des tailles d'environnement \RequirePackage{calc} % Symboles de amsmath et additionnels \RequirePackage{amsmath,amsfonts,amssymb,amsthm} \RequirePackage{dsfont,mathrsfs} % Lettrine \RequirePackage{lettrine} % Ajout d'entrées dans la table des matières \RequirePackage{tocbibind} % Style de la légende \RequirePackage{caption} \DeclareCaptionLabelSeparator{mysep}{~--~} \captionsetup{singlelinecheck=no,labelsep=mysep,font=small,textfont=it} \setlength{\abovecaptionskip}{5pt} \setlength{\belowcaptionskip}{-5pt} % Tableaux sur plusieurs pages - page de notations \RequirePackage{supertabular} % Mise en forme des algorithmes \RequirePackage[french,ruled,vlined]{algorithm2e} % Gestion améliorée de la bibliographie \RequirePackage{natbib} \bibliographystyle{plainnatfrench} \bibpunct{(}{)}{,}{a}{}{;} % Gestion des référence selon le format de sortie \RequirePackage{ifpdf} \ifpdf % configuration de graphicx et hyperref pour sortie PDF \RequirePackage[pdftex]{graphicx} \RequirePackage[pdftex,bookmarksopen=false,pdfauthor=Julien Chiquet,colorlinks=false,pagebackref,plainpages=false]{hyperref} \DeclareGraphicsExtensions{.pdf,.png,.jpg} \else % configuration de graphicx et hyperref pour sortie PS \RequirePackage[dvips]{graphicx} \DeclareGraphicsExtensions{.eps,.ps} \RequirePackage[dvips,bookmarksopen=false,pdfauthor=Julien Chiquet,colorlinks=false,pagebackref,plainpages=false]{hyperref} \fi % Gestion éventuel des sommaires en début de chapitre \if@sommairechap \RequirePackage[french]{minitoc} \dominitoc \setlength{\mtcindent}{0em} \renewcommand{\mtifont}{\large\rm\scshape} \renewcommand{\mtcSfont}{\small\rm\scshape} \fi \RequirePackage{tocloft} \renewcommand{\cftsubsecfont}{\small} \renewcommand{\cftsecfont}{\normalsize\scshape} \renewcommand{\cftchapfont}{\large\scshape} \renewcommand{\cfttoctitlefont}{\Huge\scshape} \renewcommand{\cftloftitlefont}{\Huge\scshape} % CONFIGURATION DE LA CÉSURE (-> Axel Reichert) \tolerance = 1414 \hbadness = 1414 \emergencystretch 1.5em \hfuzz 0.3pt \widowpenalty=10000 \vfuzz \hfuzz \raggedbottom % ============================================= % PAGE DE GARDE \newif\ifdefinitif\definitiftrue \def\titleFR#1{\gdef\@titleFR{#1}} \def\titleEN#1{\gdef\@titleEN{#1}} \def\abstractFR#1{\gdef\@abstractFR{#1}} \def\abstractEN#1{\gdef\@abstractEN{#1}} \def\keywordsFR#1{\gdef\@keywordsFR{#1}} \def\keywordsEN#1{\gdef\@keywordsEN{#1}} \def\@author{} \def\address#1{\gdef\@address{#1}} \def\universite#1{\gdef\@universite{#1}} \def\laboratoire#1{\gdef\@laboratoire{#1}} \def\specialite#1{\gdef\@specialite{#1}} \def\datesoumission#1{\gdef\@datesoumission{#1}} \def\datesoutenance#1{\gdef\@datesoutenance{#1}} \def\jury#1{\gdef\@jury{#1}} \def\dedicate#1{\gdef\dedication@text{#1}} \renewcommand{\titlepage}{% \ifdefinitif \begin{center} \Large\textsc{\@universite} \\ \textsc{\@laboratoire} \\ \bigskip \Huge\textsc{Thèse} \\ \bigskip \large présentée en première version en vu d'obtenir le grade de Docteur, spécialité \og \@specialite \fg \\ \bigskip par \\ \bigskip \@author \vfill \huge~\textsc{\@titleFR} \vfill \normalsize Thèse soutenue le \@datesoutenance{} devant le jury composé de :\\ \vspace{1cm} \@jury \end{center} \cleardoublepage \else % -------------------------------------------------- % NON DEFINITIF : PAGE DE SOUMISSION AUX RAPPORTEURS \thispagestyle{empty} \vskip3cm \vfill \begin{center} \large Rapport soumis aux rapporteurs, dans le but de sanctionner le dossier pour l'obtention du grade de \\ Docteur en \@specialite\\ de \\ l'\@universite \end{center} \vskip3cm \begin{center} \huge {\sc \@titleFR }\\ \vskip2cm \large \@author, le \@datesoumission\\ \end{center} \vskip3cm \vskip3cm \vfill \textsc{Mots-clés :} \@keywordsFR \fi \cleardoublepage } % =========================================================== % PAGE DE DEDICACE \newcommand{\dedicacepage}{% \begin{flushright} \large\em\null\vskip1in\dedication@text\vfill \end{flushright} \cleardoublepage } \newcommand{\abstractpage}{% \pagestyle{empty} ~\newpage \par \vfill \paragraph*{Titre}\@titleFR \paragraph*{Résumé}\@abstractFR \paragraph*{Mots-clés}\@keywordsFR \paragraph*{Title}\@titleEN \paragraph*{Abstract}\@abstractEN \paragraph*{Keywords}\@keywordsEN } % ========================================================================== % MISE EN PAGE \RequirePackage{geometry} \geometry{textheight=145ex,textwidth=33em,top=85pt,headheight=30pt,headsep=30pt,inner=120pt} \addtolength{\marginparwidth}{-20pt} \addtolength{\headwidth}{\marginparsep} \addtolength{\headwidth}{\marginparwidth} % ========================================================================== % ENTÊTES % Entêtes standards \fancypagestyle{plain}{ \fancyhf{} \fancyfoot[RO,LE]{\thepage} \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{0pt} } \fancypagestyle{main}{ \fancyhf{} \fancyhead[LO]{\nouppercase{\rightmark}} \fancyhead[RO,LE]{\thepage} \fancyhead[RE]{\nouppercase{\leftmark}} \renewcommand{\headrulewidth}{0.5pt} \renewcommand{\footrulewidth}{0pt} } % ============================================================== % PRÉFACE \newcommand{\beforepreface}{ \frontmatter \pagestyle{empty} \titlepage \dedicacepage \pagestyle{plain} } % ============================================================== % CONTENU MAÎTRE \newcommand{\afterpreface}{ \mainmatter \pagestyle{main} } % --------------------------------------------------------------- % PERSONNALISATION DE BABEL % redéfinition des noms chapitres spéciaux \addto{\captionsfrench}{ \renewcommand*{\listfigurename}{Liste des figures} \renewcommand*{\appendixname}{}% } % ========================================================================== % PAGE DE GARDE DES CHAPITRES % Le résumé + le minitoc éventuel \newenvironment{chapintro}{% \if@sommairechap \nomtcrule \vspace{1.5cm} \minitoc[l] \fi}{% \cleardoublepage } % chapitre numéroté \newfont{\chapterNumber}{eurb10 scaled 7000} \renewcommand*{\@makechapterhead}[1]{% \thispagestyle{plain} \marginpar{\vspace*{1.5em}\flushright\chapterNumber\thechapter} \begin{flushleft}\nobreak\Huge\sc#1\end{flushleft} \vspace{3cm} } % chapitre non numéroté (*) \renewcommand*{\@makeschapterhead}[1]{% \markboth{#1}{#1} \thispagestyle{plain} \begin{flushleft}\nobreak\Huge\sc #1\end{flushleft} \vspace{3cm} \if@sommairechap \mtcaddchapter \fi } % ========================================================================== % LES SECTIONS, SOUS-SECTIONS, SOUS-SOUS-SECTIONS \renewcommand\section{\@startsection {section}{1}{\z@}% {-3.5ex \@plus -1ex \@minus -.2ex}% {2.3ex \@plus.2ex}% {\normalfont\Large\scshape}} \renewcommand{\subsection}{\@startsection{subsection}{2}{\z@}% {-3.25ex\@plus -1ex \@minus -.2ex}% {1.5ex \@plus .2ex}% {\normalfont\bfseries\large}} \def\@seccntformat#1{% \protect\makebox[-3.5pt][r]{\csname the#1\endcsname\quad\hspace{-3.5pt}} } % ========================================================================== % ANNEXE, BIBLIOGRAPHIE % Annexe se comportez comme un chapitre \let\oldappendix=\appendix \renewcommand\appendix{% \oldappendix \chapter{Annexes} \thispagestyle{plain} \begin{chapintro} \end{chapintro} \pagestyle{main} } \RequirePackage[hyperpageref]{backref} \backreffrench \renewcommand*{\backref}[1]{} % Disable standard \renewcommand*{\backrefalt}[4]{% Detailed backref \ifcase #1 % \relax%(Not cited.)% \or (Cit\'e page~#2.)% \else (Cit\'e pages~#2.) \fi} % Page blanche après chapitre si nécessaire \def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else \hbox{} \vspace*{\fill} \begin{center} ~ \end{center} \vspace{\fill} \thispagestyle{empty} \newpage \if@twocolumn\hbox{}\newpage\fi\fi\fi} % --------------------------------------------------------------- % LETTRINE \newcommand{\malettrine}[1]{ \lettrine[lines=2,lhang=0.33,loversize=0.33]{#1} } % --------------------------------------------------------------- % THEOREMES \newlength{\thmmargin} \newlength{\thmmargina} \newlength{\thmmarginb} \newlength{\thmmarginc} \newlength{\thmmargind} \newlength{\thmmargine} \newlength{\thmmarginf} \newlength{\thmmarging} \newlength{\thmmarginh} \addtolength{\thmmargin}{105pt} \addtolength{\thmmarginb}{\thmmargin-7.85ex} % exemple -- ok \addtolength{\thmmarginc}{\thmmargin-6.1ex} % théorème,remarque -- ok \addtolength{\thmmargind}{\thmmargin-7.4ex} % propriété -- ok \addtolength{\thmmargine}{\thmmargin-6ex} % définition -- ok \addtolength{\thmmargina}{\thmmargin-5.625ex} % hypothèse -- ok \addtolength{\thmmarginf}{\thmmargin-4.8ex} % proposition -- ok \addtolength{\thmmarging}{\thmmargin-8.7ex} % Lemme -- ok \addtolength{\thmmarginh}{\thmmargin-6.5ex} % Corollaire -- ok % COMMAND \newtheoremstyle % espace avant, espace après, font du corps, retrait titre, font titre, ponctuaiton après titre, espace intermot, option supp % hypothèse \newtheoremstyle{thma}{9pt}{9pt}{\itshape}{-\thmmargina}{\small\bfseries}{\quad}{ }{} \theoremstyle{thma} \newtheorem{hypothese}{Hypoth\`{e}se}[chapter] % exemple \newtheoremstyle{thmb}{9pt}{9pt}{\itshape}{-\thmmarginb}{\small\bfseries}{\quad}{ }{} \theoremstyle{thmb} \newtheorem{exemple}{Exemple}[chapter] % théorème & remarque \newtheoremstyle{thmc}{9pt}{9pt}{\itshape}{-\thmmarginc}{\small\bfseries}{\quad}{ }{} \theoremstyle{thmc} \newtheorem{theoreme}{Th\'{e}or\`{e}me}[chapter] \newtheorem{remarque}{Remarque}[chapter] % propriété \newtheoremstyle{thmd}{9pt}{9pt}{\itshape}{-\thmmargind}{\small\bfseries}{\quad}{ }{} \theoremstyle{thmd} \newtheorem{propriete}{Propri\'{e}t\'{e}}[chapter] % définition \newtheoremstyle{thme}{9pt}{9pt}{\itshape}{-\thmmargine}{\small\bfseries}{\quad}{ }{} \theoremstyle{thme} \newtheorem{definitionf}{D\'{e}finition}[chapter] % proposition \newtheoremstyle{thmf}{9pt}{9pt}{\itshape}{-\thmmarginf}{\small\bfseries}{\quad}{ }{} \theoremstyle{thmf} \newtheorem{propositionf}{Proposition}[chapter] % lemme \newtheoremstyle{thmg}{9pt}{9pt}{\itshape}{-\thmmarging}{\small\bfseries}{\quad}{ }{} \theoremstyle{thmg} \newtheorem{lemme}{Lemme}[chapter] % corollaire \newtheoremstyle{thmh}{9pt}{9pt}{\itshape}{-\thmmarginh}{\small\bfseries}{\quad}{ }{} \theoremstyle{thmh} \newtheorem{corollaire}{Corollaire}[chapter] % ========================================================================== % FIGURES ET TABLES % \figScale{monfichier}{Légende de la figure} \newcommand{\figScaleX}[3]{ \begin{figure}[htp!] \includegraphics[width=#1\textwidth]{./figures/#2} \caption{#3} \label{fig:#2} \end{figure} } \newcommand{\figScale}[2]{ \figScaleX{0.95}{#1}{#2} } \newcommand{\figScaleRot}[3]{ \begin{figure}[htp!] \includegraphics[angle=#1,width=0.95\textwidth]{./figures/#2} \caption{#3} \label{fig:#2} \end{figure} } % ========================================================================== % COLOPHON \newcommand{\colophon}[1]{ ~\vfill \begin{center} \small #1 \end{center} \cleardoublepage } ++++ ==== fichiers .''tex'' ==== * ''these_sample.tex'' -- le fichier principal, où l'on déclare les options, on fait les définitions, on inclut les fichiers ... voir plus bas (je l'ai pas mal commenté). * ''chap1.tex'', ''chap2.tex'', ''remerc.tex'', ''annexe.tex'', ''intro.tex'', ... c'est votre contenu ! ici il est minimal. Bon nombre de ces pages sont facultatives (par exemple notations, remerciements...), il suffit de ne pas les inclure le fichiers principal ! ++++ fichier these_sample.tex | \documentclass[sommairechap,stylejchiquet]{these_gi} \begin{document} % ================================================================== % OPTIONS D'AFFICHAGE % non-définitif (soumis aux rapporteurs) ou définitif \definitiftrue % \definitiffalse % ================================================================== % RENSEIGNEMENTS SUR LA THÈSE \titleFR{Le titre en français} \titleEN{Le titre en anglais} \abstractFR{Le résumé en français ($\approx$ 1000 caractères)} \abstractEN{Le résumé en anglais ($\approx$ 1000 caractères)} \keywordsFR{Les mots-clés en français} \keywordsEN{Les mots-clés en anglais} \author{nom de l'auteur} \address{adresse email} \universite{nom de l'université} \laboratoire{nom du laboratoire} \specialite{spécialité de la thèse} \datesoutenance{la date de soutenance} \datesoumission{la date de soumission aux rapporteurs} \jury{\begin{tabular}{llll} M\up{me} & \textsc{Lesley Truc} & Univ machin & (Rapporteur) \\ M. & \textsc{Robert Mitchum} & Labo bidule & (Rapporteur) \\ M. & \textsc{John Robert} & UTC & (Directeur) \\ & \etc. & \\ \end{tabular} } % ================================================================== % DÉDICACE \dedicate{À qui vous voulez\dots} % ================================================================== % DEBUT DE LA PRÉFACE \beforepreface % remerciements \include{remerc} % table des matières générale \tableofcontents % affiche la liste des figures \listoffigures % ================================================================== \afterpreface % ================================================================== % AVANT-PROPOS \include{intro} \adjustmtc % ================================================================== % CONTENU GÉNÉRAL \include{chap1} \include{chap2} \include{chap3} \include{chap4} \include{chap5} % ================================================================== % CONCLUSION \include{concl} % ================================================================== % ANNEXES \appendix \include{annexe} % ================================================================== % BIBLIOGRAPHIE \bibliography{biblio} % ================================================================== % NOTATIONS \include{nota} % ================================================================== % COLOPHON \colophon{Ce document a été préparé à l'aide de l'éditeur de texte GNU Emacs et du logiciel de composition typographique \LaTeXe.} % ================================================================== % COUVERTURE : RESUME ET MOTS-CLÉS \abstractpage \end{document} ++++ ==== autres fichiers ==== On trouve dans l'archive quelques fichiers images .eps et .pdf, notamment le logo de l'UTC, ceui qui permet de l'insérer directement sur la page de garde. On trouve également un fichier de biblio ''.bib''. ===== fonctionnement ===== ==== options de la classe ==== Les options usuelles de la classe ''book'', plus l'option suivante : * ''sommaire_chap'' : affiche des sommaires par chapitre. Si absent, le sommaire sera uniquement en début de thèse. ==== compilation ==== ++++ script de compilation (PDF) | #!/bin/bash pdflatex $1 bibtex $1 pdflatex $1 pdflatex $1 nettoyage ++++ ++++ script de compilation (postscript) | #!/bin/bash latex $1 bibtex $1 latex $1 latex $1 dvips $1.dvi -o $1.ps nettoyage Ce script est présent dans le zip sous le nom de ''buildtheseps''. Pour l'utiliser, assurez-vous qu'il soit exécutable, puis lancer $ ./buildtheseps these_sample ++++ J'ai récupéré ce script sur le web. Merci à son auteur. Il efface les fichers inutiles dans le cas d'une version définitive. Il est présent dans le zip. ++++ script de nettoyage | #!/bin/bash function nettoie() { while [ -n "$1" ] ; do nom=$1 rm $nom/*.toc 2>/dev/null rm $nom/*.mtc* 2>/dev/null rm $nom/*.dvi 2>/dev/null rm $nom/*.dvi 2>/dev/null rm $nom/*.out 2>/dev/null rm $nom/*.lof 2>/dev/null rm $nom/*.lot 2>/dev/null rm $nom/*.aux 2>/dev/null rm $nom/*.idx 2>/dev/null rm $nom/*.ilg 2>/dev/null rm $nom/*.ind 2>/dev/null rm $nom/*.log 2>/dev/null rm $nom/*.*# 2>/dev/null rm $nom/*.tex~ 2>/dev/null rm $nom/*.bbl 2>/dev/null rm $nom/*.brf 2>/dev/null rm $nom/*.bmt 2>/dev/null rm $nom/*.blg 2>/dev/null rm $nom/*~ 2>/dev/null rm $nom/.*~ 2>/dev/null rm core 2>/dev/null echo -e '\E[34m' "Rep $nom :" '\E[0m' `ls $nom` shift done } nom=`pwd` nettoie $nom for i in `ls` ; do if [ -d "$i" ] ; then nettoie $i ; fi done ++++