dbitouze / yathesis

Classe de thèse LaTeX pour universités françaises
27 stars 3 forks source link

Problème d'adaptation au format A5 #91

Open msavaryleblanc opened 3 years ago

msavaryleblanc commented 3 years ago

Bonjour,

j'apporte les derniers réglages à ma thèse pour son impression en format a5 avec geometry a5paper.

Je rencontre 2 problèmes qui semblent liée à l'adaptation de la classe yathesis en fonction de la geometry:

Y a-t-il un moyen (même de dépannage) pour corriger ces problèmes rapidement ? Je dois envoyer le document demain, et j'aimerai éviter de bricoler sur le PDF :)

Capture d’écran 2021-11-01 à 15 29 17 Capture d’écran 2021-11-01 à 15 28 59

Merci, Maxime

dbitouze commented 3 years ago

Je parviens à reproduire le 1er problème, mais pas le second pour lequel il me faudrait un ECM.

msavaryleblanc commented 3 years ago

Bonjour,

merci pour votre réponse ! J'ai préparé ça, j'ai gardé l'import de tous les packages au cas où ça bloque. Cet exemple reproduit les deux problèmes évoqués ci dessus.

% Document de classe yathesis
\documentclass[mainlanguage=english, version=final, colophon-location=nowhere, 10pt]{yathesis}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{kpfonts}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{pgfplots}
\usepackage{caption}
\usepackage{microtype}
\usepackage{varioref}
\usepackage[backend=biber,safeinputenc]{biblatex}
\usepackage{hyperref}
\usepackage{longtable}
\usepackage{graphicx}
\usepackage{colortbl}
\usepackage{subcaption}
\usepackage{amssymb}
\usepackage{relsize}
\usepackage{afterpage}  % load the afterpage package
\usepackage{menukeys}
\usepackage{fancybox}
\usepackage{pdflscape}
\usepackage{lipsum} 

\geometry{%
  paper=a5paper
}
% Auteur de la thèse : prénom (1er argument obligatoire), nom (2e argument
% obligatoire) et éventuel courriel (argument optionnel). Les éventuels accents
% devront figurer et le nom /ne/ doit /pas/ être saisi en capitales
\author[qsdsqsqdsqd@sfsdfds.com]{Prénom}{NomDuThesard}

\expression{universitydepartment}{Unité de recherche}{Laboratory}

%
% Titre de la thèse dans la langue principale (argument obligatoire) et dans la
% langue secondaire (argument optionnel)
\title[Supporter les ingénieurs logiciels avec des assistants de modélisation]{Augmenting software engineers with modeling assistants}

\academicfield[Informatique]{Computer Science}
\date{01}{01}{2022}
\institute[logo=,url=]{}
\doctoralschool[url=]{}

\laboratory[
%logo=configuration/logoCRIStAL.png,
%logoheight=1.25cm,
url=https://www.cristal.univ-lille.fr/
]{CRIStAL UMR 9189}{%
     Université de Lille\\
     Campus scientifique \\
     Bâtiment ESPRIT            \\
     Avenue Henri Poincaré                             \\
     59655 Villeneuve d'Ascq                   \\
     France}

\keywords{Qqdfqdsf, SQsfdfssdf, Fsdfdsgh, Ffdsfsdfds}{Qqdfqdsf, SQsfdfssdf, Fsdfdsgh, Ffdsfsdfds}
\begin{document}

\maketitle

\newgeometry{%
  %showframe,
  inner=1.7cm,
  outer=1.7cm,
  bottom=1.7cm,
  top=1.7cm,
  bindingoffset=0.4cm,
  paper=a5paper
}

\begin{abstract}
\lipsum[3]
\end{abstract}
\begin{abstract}
\lipsum[3]
\end{abstract}
%
% Production de la page de résumés
\makeabstract
\tableofcontents[depth=chapter,name=Summary]

\mainmatter
\part{Une partie pour le contenu}
\backmatter

% Table des matières
\tableofcontents
\end{document}
dbitouze commented 3 years ago

Le second problème vient de l'option bottom=1.7cm. Si elle est supprimée, le problème disparaît.

L'autre problème est moins évident : je vais regarder cela un peu, mais je ne garantis rien pour ce soir car j'ai d'autres choses urgentes pour demain matin.

dbitouze commented 3 years ago

Pour régler le problème de centrage, il devrait suffire de faire figurer en préambule le (long) code suivant :

\makeatletter
\renewcommand{\maketitle}[1][]{%
  \booltrue{YAD@maketitle@used}%
  \yadsetup{#1}%
  \setlength{\fboxsep}{10pt}%
  \setlength{\YAD@titleboxwidth}{\linewidth-2\fboxsep-2\fboxrule}%
  \pagestyle{titles}%
  \renewcommand*{\do}[1]{%
    \cleardoublepage%
\begingroup%
\expandafter\selectlanguage\expandafter{##1}%
  \begin{lrbox}{\YAD@titlebox}
    \ifthenelse{\equal{\cmdKV@YAD@frametitle}{none}}{%
    }{%
      \tcbset{colback=white,boxsep=3pt,boxrule=0.4pt,arc=0mm}%
      \ifthenelse{\equal{\cmdKV@YAD@frametitle}{shadowbox}}{%
        \tcbset{enhanced,drop shadow southeast={black,opacity=1}}%
      }{%
        \ifthenelse{\equal{\cmdKV@YAD@frametitle}{ovalbox}}{%
          \tcbset{arc=3mm}%
        }{%
          \ifthenelse{\equal{\cmdKV@YAD@frametitle}{fbox}}{%
          }{%
            \tcbset{code={\expandafter\pgfkeysalsofrom{\cmdKV@YAD@frametitle}}}%
          }%
        }%
      }%
      \begin{tcolorbox}
    }%
    \noindent%
    % \centering%
      % \onehalfspacing%
      \noindent%
      \ifthenelse{\equal{\cmdKV@YAD@frametitle}{none}}{%
      }{%
        \ifYAD@hdr
        \YAD@translation{thesistitle-hdr}%
        \else%
        \YAD@translation{thesistitle}%
        \fi
      }%
      \par%
      \centering%
      \Huge\bfseries%
      \YAD@ifemptyorundef{\printtitle}{%
        \YAD@generic@argument@translate{title}%
        \ifbool{YAD@notitle}{%
        }{%
          \YAD@ClassError[notitle]{%
            Titre de la thèse non spécifié%
          }{%
            La commande \protect\title\space n'a pas été utilisée\MessageBreak%
            (celle-ci est requise) ou son argument obligatoire est vide\MessageBreak%
            (celui-ci doit être renseigné).%
          }%
        }%
      }{%
        \printtitle%
      }%
      \ifundef{\printsubtitle}{%
      }{%
        \ifdraft{}{%
          \vskip0.5em%
          % \vspace*{\stretch{.15}}%
        }%
        \par%
        \centering%
        \Large\printsubtitle%
      }%
    \ifthenelse{\equal{\cmdKV@YAD@frametitle}{none}}{%
    }{%
    \end{tcolorbox}%
  }%
  \end{lrbox}%
  \settototalheight{\YAD@titleboxheight}{\YAD@titlebox}%
  \setlength{\YAD@otherboxheight}{0.3\paperheight-\YAD@titleboxheight}%
  %\YAD@astuce@expressioncle%
  \noindent%
  \ifcsdef{printordernumber}{%
  \newcommand\YAD@printedordernumber{%
    \itshape%
    \sffamily%
    \YAD@translation{ordernumber}%
    \IfLanguageName{french}{%
      \FBcolonspace%
    }{%
    }: \printordernumber%
  }
  \ifdraft{}{\vspace*{\stretch{1}}}%
  \ifboolexpr{%
    bool {YAD@cover@page}%
    or (bool {YAD@nofrontcover} and test {\IfLanguageName{\YAD@mainlanguage}})%
  }{%
    % \vspace*{\stretch{1}}%
    \raggedleft{%
      \YAD@printedordernumber%
    }%
  }{%
  }%
  \ifdraft{}{\vspace*{\stretch{.5}}}%
  % \vspace*{\stretch{.5}}%
  \par%
}{%
}%
    \begin{center}
      \ifbool{YAD@noinstitute}{%
      }{%
        \YAD@ifemptyorundef{\printinstitute}{%
          \YAD@generic@argument@translate{institute}%
          \YAD@ClassError[noinstitute]{%
            Institut de la thèse non spécifié%
          }{%
            La commande \protect\institute\space n'a pas été
            utilisée\MessageBreak%
            (celle-ci est requise) ou son argument obligatoire est
            vide\MessageBreak%
            (celui-ci doit être renseigné).%
          }%
        }{%
          \YAD@translation{institute} \textbf{\textsc{\Large\printinstitute}}%
        }%
        \ifundef{\printcoinstitute}{%
        }{%
          \ifdraft{}{\vspace*{\stretch{.5}}}%
          % \vspace*{\stretch{.5}}%
          \par%
          \YAD@translation{coinstitute} \textbf{\textsc{\Large\printcoinstitute}}%
        }%
      }%
      \ifundef{\printcompany}{%
      }{%
        \ifdraft{}{\vspace*{\stretch{.5}}}%
        % \vspace*{\stretch{.5}}%
        \par%
        \YAD@translation{company} \textbf{\textsc{\Large\printcompany}}%
      }%
      \ifboolexpr{%
        bool {YAD@nodoctoralschool}%
        or bool {YAD@hdr}%
      }{%
      }{%
        \ifdraft{}{\vspace*{\stretch{1.5}}}%
        % \vspace*{\stretch{1.5}}%
        \par%
        \YAD@translation{doctoralschool}
        \YAD@ifemptyorundef{\printdoctoralschool}{%
          \YAD@generic@argument@translate{doctoralschool}%
          \YAD@ClassError[nodoctoralschool]{%
            École doctorale de la thèse non spécifiée%
          }{%
            la commande \protect\doctoralschool\space n'a pas été
            utilisée\MessageBreak%
            (celle-ci est requise) ou son argument obligatoire est
            vide\MessageBreak%
            (celui-ci doit être renseigné).%
          }%
        }{%
          \textbf{\printdoctoralschool}%
        }%
      }%
      \ifbool{YAD@hdr}{%
        \YAD@ifemptyorundef{\printdoctoralschool}{%
        }{%
          \YAD@ClassWarningNoLine{%
            Une école doctorale a été spécifiée mais elle ne\MessageBreak%
            figurera nulle part : les HDR ne sont pas préparées\MessageBreak%
            sous l'égide d'écoles doctorales (cf. \MessageBreak%
            https://www.legifrance.gouv.fr/loda/id/JORFTEXT000000298904)%
          }%
        }%
      }{%
      }%
      \ifbool{YAD@nolaboratory}{%
      }{%
        \ifdraft{}{\vspace*{\stretch{.5}}}%
        % \vspace*{\stretch{.5}}%
        \par%
        \YAD@translation{universitydepartment}
        \ifdefstring{\YAD@main@laboratory@nonamelink}{true}{%
          \textbf{\printlaboratory{\YAD@main@laboratory@name}}%
        }{%
          \textbf{\printlaboratory[\YAD@main@laboratory@url]{\YAD@main@laboratory@name}}%
        }%
      }%
      \ifdraft{}{\vspace*{\stretch{1.5}}}%
      % \vspace*{\stretch{1.5}}%
      \par%
      {\large%
        \ifYAD@hdr%
        \YAD@translation{thesisdefendedby-hdr} %
        \else%
        \YAD@translation{thesisdefendedby} %
        \fi%
        \YAD@ifemptyorundef{\printauthor}{%
          \YAD@generic@argument@translate{author}%
          \ifbool{YAD@noauthor}{%
          }{%
            \YAD@ClassError[noauthor]{%
              Auteur de la thèse non spécifié%
            }{%
              La commande \protect\author\space n'a pas été utilisée (celle-ci
              est requise)\MessageBreak%
              ou ses 2 premiers arguments obligatoires sont vides\MessageBreak%
              (ceux-ci doivent être renseignés).%
            }%
          }%
        }{%
          \textbf{\printauthor}%
        }%
        \ifboolexpr{%
          bool {YAD@submitted@work}%
          or bool {YAD@submitted@work@star}%
        }{%
          % \ifdraft{}{\vspace*{\stretch{1}}}%
          % \par%
          % \YAD@translation{estimateddefensedate}
          % \YAD@ifemptyorundef{\printdate}{%
          %   \YAD@generic@argument@translate{date}%
          % }{%
          %   \textbf{\printdate}%
          % }%
        }{%
          \ifbool{YAD@nodate}{%
          }{%
            \ifdraft{}{\vspace*{\stretch{1}}}%
            % \vspace*{\stretch{1}}%
            \par%
            \YAD@translation{defendedon}
            \YAD@ifemptyorundef{\printdate}{%
              \YAD@generic@argument@translate{date}%
            }{%
              \textbf{\printdate}%
            }%
          }%
        }%
      }%
      \ifYAD@hdr%
      \else%
      \ifbool{YAD@noaim}{%
      }{%
        \ifdraft{}{\vspace*{\stretch{1}}}%
        % \vspace*{\stretch{1}}%
        \par%
        \YAD@translation{aim}%
        \ifundef{\printinstitute}{%
          \YAD@generic@argument@translate{institute}%
        }{%
          \printinstitute*%
        }%
        \ifundef{\printcoinstitute}{%
        }{%
          \YAD@translation{aimand}%
          \printcoinstitute*%
        }%
      }%
      \fi%
      \ifdraft{}{\vspace*{\stretch{1}}}%
      % \vspace*{\stretch{1}}%
      \ifbool{YAD@noacademicfield}{%
      }{%
        \par%
        \large%
        \YAD@translation{academicfield}
        %
        \YAD@ifemptyorundef{\printacademicfield}{%
          \YAD@generic@argument@translate{academicfield}%
          \ifbool{YAD@noacademicfield}{%
          }{%
            \YAD@ClassError[noacademicfield]{%
              Champ disciplinaire de la thèse non spécifié%
            }{%
              La commande \protect\academicfield\space n'a pas été utilisée
              (celle-ci est requise)\MessageBreak%
              ou son argument obligatoire est vide (celui-ci doit être renseigné).%
            }%
          }%
        }{%
          \textbf{\printacademicfield}%
        }%
        \ifundef{\printspeciality}{%
        }{%
          \ifdraft{}{\vspace*{\stretch{.5}}}%
          % \vspace*{\stretch{.5}}%
          \par%
          \large%
          \YAD@translation{speciality} \textbf{\printspeciality}%
        }%
      }%
    \end{center}
  \vspace*{\stretch{1}}%
  \begin{center}
    \ifthenelse{\equal{\cmdKV@YAD@frametitle}{none}}{%
    }{%
      \ifdraft{}{\vspace*{\stretch{2}}}%
      % \vspace*{\stretch{2}}%
    }{%
      \ifdraft{}{\vspace*{\stretch{.25}}}%
      % \vspace*{\stretch{.25}}%
    }%
    \usebox{\YAD@titlebox}%
    % \ifdraft{}{\vspace*{\stretch{2}}}%
    \vspace*{\stretch{2}}%
  \end{center}
  \noindent%
  \begin{minipage}[c][\YAD@otherboxheight][c]{\textwidth}
    \YAD@supervisors@tabular%
    \par%
    \ifboolexpr{%
      bool {YAD@submitted@work}%
      or bool {YAD@submitted@work@star}%
    }{%
      \vphantom{\YAD@committee@tabular}%
    }{%
      \YAD@committee@tabular%
    }%
    \ifdraft{}{\vspace*{\stretch{.1}}}%
    % \vspace*{\stretch{.1}}%
  \end{minipage}%
  \ifthenelse{\equal{\cmdKV@YAD@frametitle}{none}}{%
  }{%
    % \ifdraft{}{\vspace*{\stretch{2}}}%
    \vspace*{\stretch{2}}%
  }{%
  }%
  \ifbool{YAD@supervisor@specified}{%
  }{%
    \ifbool{YAD@nosupervisor}{%
    }{%
      \YAD@ClassError*[nosupervisor]{%
        Directeur de thèse non spécifié%
      }{%
        La commande \protect\supervisor\space n'a pas été utilisée\MessageBreak%
        (celle-ci est requise) ou ses arguments obligatoires sont
        vides\MessageBreak%
        (ceux-ci doivent être renseignés).%
      }%
    }%
  }%
\endgroup%
\ifthenelse{\equal{\YAD@colophon@location}{verso-frontcover}}{%
  \YAD@insert@colophon%
}{%
}%
\boolfalse{YAD@cover@page}%
}%
\expandafter\docsvlist{\YAD@mainlanguage}%
\ifbool{YAD@two@titles}{%
  \booltrue{YAD@second@title}%
  \ifthenelse{\equal{\YAD@mainlanguage}{french}}{%
    \ifbool{YAD@nofrontcover}{%
      \docsvlist{english}%
    }{%
      \docsvlist{french,english}%
    }%
  }{%
    \ifbool{YAD@nofrontcover}{%
      \docsvlist{french}%
    }{%
      \docsvlist{english,french}%
    }%
  }%
}{%
}%
\ifthenelse{\equal{\cmdKV@YAD@frametitle}{shadowbox}}{%
  \let\tcb@shadow@prepare=\origtcb@shadow@prepare%
}{%
}%
\expandafter\selectlanguage\expandafter{\YAD@mainlanguage}%
\restoregeometry%
\pagestyle{preliminary}%
}%
\makeatother
msavaryleblanc commented 3 years ago

Bonjour Denis,

merci beaucoup pour cette réponse très rapide !

Les deux patchs fonctionnent parfaitement ! Merci encore, ça m'évite de longs moments de "bricolage" sur le PDF.

En tout cas, voilà un retour d'expérience pour le A5 ! Tout le reste fonctionne parfaitement !

Si plus tard, vous corrigez le placement de l'adresse en gardant les marges de geometry, n'hésitez pas à me notifier ! Peut être que le manuscrit ne sera pas encore parti en impression :)

Bonne journée, Maxime