Historique des modifications [retour]
cliquez ici pour masquer/afficher la révision 2

07 Fév '16, 17:26

denis's gravatar image

denis
7.3k2510

Il est difficile d'anticiper tous les desiderata des doctorants (ou de leurs directeurs de thèse ou de laboratoire :) en terme de présentation de la page de titre. Donc il n'y a (pour l'instant) pas d'interface utilisateur pour procéder à ce qui est demandé ici. En revanche, il est toujours possible de reprendre redéfinir en préambule le code de la classe commande `\maketitle` responsable de la présentation de la page de titre et de le la modifier à sa guise. Comme ce le code contient correspondant comporte des commandes « privées » (dont le nom contient « @ ») » de façon à éviter qu'elles ne soient redéfinies par erreur par l'utilisateur), il convient de le faire figurer entre commandes `\makeatletter` et `\makeatother`. Voici un ECM qui répond à la question : \documentclass{yathesis} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \makeatletter \renewcommand{\maketitle}[1][]{% \booltrue{YAD@maketitle@used}% \yadsetup{#1} \setlength{\fboxsep}{10pt}% \setlength{\YAD@titleboxwidth}{\linewidth-2\fboxsep-2\fboxrule}% \renewcommand*{\do}[1]{% % \end{macrocode} % Appel du style de page propre au(x) titre(s) % \begin{macrocode} \pagestyle{titles}% % \end{macrocode} % On passe dans la langue choisie en option (en français si rien n'est % spécifié). % \begin{macrocode} \begingroup% \expandafter\selectlanguage\expandafter{##1}% % \YAD@ifemptyorundef{\YAD@frametitle@set}{% % \gdef\YAD@frametitle{\cmdKV@YAD@frametitle}% % }{% % \gdef\YAD@frametitle{\YAD@frametitle@set}% % }% \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% \begin{minipage}{\linewidth-2\fboxsep-2\fboxrule} \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 these non specifie% }{% La commande \protect\title\space n'a pas ete utilisee\MessageBreak% (celle-ci est requise) ou son argument obligatoire est vide\MessageBreak% (celui-ci doit etre renseigne).% }% }% }{% \printtitle% }% \ifundef{\printsubtitle}{% }{% \ifdraft{}{\vspace*{\stretch{.15}}}% % \vspace*{\stretch{.15}}% \par% \centering% \Large\printsubtitle% }% \end{minipage}% \ifthenelse{\equal{\cmdKV@YAD@frametitle}{none}}{% }{% \end{tcolorbox} }% \end{lrbox} \settototalheight{\YAD@titleboxheight}{\YAD@titlebox}% \setlength{\YAD@otherboxheight}{0.3\paperheight-\YAD@titleboxheight}% % \end{macrocode} % On met en page les divers éléments des titres. % \begin{macrocode} %\YAD@astuce@expressioncle% \noindent% \ifcsdef{printordernumber}{% % \end{macrocode} % On n'affiche le numéro d'ordre de la thèse que sur la 1\iere{} page du % document : 1\iere{} de couverture s'il y a, page de titre en langue % principale sinon. % \begin{macrocode} \ifboolexpr{% bool {YAD@cover@page}% or (bool {YAD@nofrontcover} and test {\IfLanguageName{\YAD@mainlanguage}})% }{% \ifdraft{}{\vspace*{\stretch{1}}}% % \vspace*{\stretch{1}}% \raggedleft{% \itshape% \sffamily% \YAD@translation{ordernumber}% \IfLanguageName{french}{% \FBcolonspace% }{% }: \printordernumber% }% }{% }% \ifdraft{}{\vspace*{\stretch{.5}}}% % \vspace*{\stretch{.5}}% \par% }{% }% % \begin{minipage}[c][\YAD@otherboxheight][c]{\YAD@titleboxwidth} % \ifdraft{}{\vspace*{\stretch{.25}}}% \begin{center} \YAD@ifemptyorundef{\printinstitute}{% \YAD@generic@argument@translate{institute}% \ifbool{YAD@noinstitute}{% }{% \YAD@ClassError[noinstitute]{% Institut de la these non specifie% }{% La commande \protect\institute\space n'a pas ete utilisee\MessageBreak% (celle-ci est requise) ou son argument obligatoire est vide\MessageBreak% (celui-ci doit etre renseigne).% }% }% }{% \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}}% }% \ifdraft{}{\vspace*{\stretch{1.5}}}% % \vspace*{\stretch{1.5}}% \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 these non specifie% }{% La commande \protect\author\space n'a pas ete utilisee (celle-ci est requise)\MessageBreak% ou ses 2 premiers arguments obligatoires sont vides\MessageBreak% (ceux-ci doivent etre renseignes).% }% }% }{% \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}% % }% }{% \ifdraft{}{\vspace*{\stretch{1}}}% % \vspace*{\stretch{1}}% \par% \YAD@translation{defendedon} \YAD@ifemptyorundef{\printdate}{% \YAD@generic@argument@translate{date}% }{% \textbf{\printdate}% }% }% }% \ifYAD@hdr% \else% \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}}% \par% \large% \YAD@translation{academicfield} % \YAD@ifemptyorundef{\printacademicfield}{% \YAD@generic@argument@translate{academicfield}% \ifbool{YAD@noacademicfield}{% }{% \YAD@ClassError[noacademicfield]{% Champ disciplinaire de la these non specifie% }{% La commande \protect\academicfield\space n'a pas ete utilisee (celle-ci est requise)\MessageBreak% ou son argument obligatoire est vide (celui-ci doit etre renseigne).% }% }% }{% \textbf{\printacademicfield}% }% \ifundef{\printspeciality}{% }{% \ifdraft{}{\vspace*{\stretch{.5}}}% % \vspace*{\stretch{.5}}% \par% \large% \YAD@translation{speciality} \textbf{\printspeciality}% } \end{center} % \end{minipage}% \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} % \end{macrocode} % Affichage des directeurs de thèse et du jury % \begin{macrocode} \noindent% \begin{minipage}[c][\YAD@otherboxheight][c]{\YAD@titleboxwidth} \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 these non specifie% }{% La commande \protect\supervisor\space n'a pas ete utilisee\MessageBreak% (celle-ci est requise) ou ses arguments obligatoires sont vides\MessageBreak% (ceux-ci doivent etre renseignes).% }% }% }% \par% \YAD@translation{doctoralschool} \YAD@ifemptyorundef{\printdoctoralschool}{% \YAD@generic@argument@translate{doctoralschool}% \ifbool{YAD@nodoctoralschool}{% }{% \YAD@ClassError[nodoctoralschool]{% Ecole doctorale de la these non specifiee% }{% la commande \protect\doctoralschool\space n'a pas ete utilisee\MessageBreak% (celle-ci est requise) ou son argument obligatoire est vide\MessageBreak% (celui-ci doit etre renseigne).% }% }% }{% \textbf{\printdoctoralschool}% }% \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}}% }% % \end{macrocode} % On repasse à la langue par défaut % \begin{macrocode} \endgroup% % \end{macrocode} % Maintenant que la 1\iere{} page de titre (celle de 1\iere{} de couverture) % a été créée, le booléen ×YAD@cover@page× est faux. % \begin{macrocode} \boolfalse{YAD@cover@page}% % \end{macrocode} % On génère une page de titre dans la langue principale puis dans la % langue secondaire. % \begin{macrocode} }% \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}% \pagestyle{preliminary}% }% \makeatother \begin{document} \author{John}{Doe} \supervisor{Jane}{Doe} \maketitle \end{document}
cliquez ici pour masquer/afficher la révision 1

07 Fév '16, 17:10

denis's gravatar image

denis
7.3k2510

Il est difficile d'anticiper tous les desiderata des doctorants (ou de leurs directeurs de thèse ou de laboratoire :) en terme de présentation de la page de titre. Donc il n'y a (pour l'instant) pas d'interface utilisateur pour procéder à ce qui est demandé ici. En revanche, il est toujours possible de reprendre en préambule le code de la classe responsable de la présentation de la page de titre et de le modifier à sa guise. Comme ce code contient des commandes « privées » (dont le nom contient « @ ») de façon à éviter qu'elles soient redéfinies par erreur par l'utilisateur), il convient de le faire figurer entre commandes `\makeatletter` et `\makeatother`. Voici un ECM qui répond à la question : \documentclass{yathesis} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \makeatletter \renewcommand{\maketitle}[1][]{% \booltrue{YAD@maketitle@used}% \yadsetup{#1} \setlength{\fboxsep}{10pt}% \setlength{\YAD@titleboxwidth}{\linewidth-2\fboxsep-2\fboxrule}% \renewcommand*{\do}[1]{% % \end{macrocode} % Appel du style de page propre au(x) titre(s) % \begin{macrocode} \pagestyle{titles}% % \end{macrocode} % On passe dans la langue choisie en option (en français si rien n'est % spécifié). % \begin{macrocode} \begingroup% \expandafter\selectlanguage\expandafter{##1}% % \YAD@ifemptyorundef{\YAD@frametitle@set}{% % \gdef\YAD@frametitle{\cmdKV@YAD@frametitle}% % }{% % \gdef\YAD@frametitle{\YAD@frametitle@set}% % }% \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% \begin{minipage}{\linewidth-2\fboxsep-2\fboxrule} \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 these non specifie% }{% La commande \protect\title\space n'a pas ete utilisee\MessageBreak% (celle-ci est requise) ou son argument obligatoire est vide\MessageBreak% (celui-ci doit etre renseigne).% }% }% }{% \printtitle% }% \ifundef{\printsubtitle}{% }{% \ifdraft{}{\vspace*{\stretch{.15}}}% % \vspace*{\stretch{.15}}% \par% \centering% \Large\printsubtitle% }% \end{minipage}% \ifthenelse{\equal{\cmdKV@YAD@frametitle}{none}}{% }{% \end{tcolorbox} }% \end{lrbox} \settototalheight{\YAD@titleboxheight}{\YAD@titlebox}% \setlength{\YAD@otherboxheight}{0.3\paperheight-\YAD@titleboxheight}% % \end{macrocode} % On met en page les divers éléments des titres. % \begin{macrocode} %\YAD@astuce@expressioncle% \noindent% \ifcsdef{printordernumber}{% % \end{macrocode} % On n'affiche le numéro d'ordre de la thèse que sur la 1\iere{} page du % document : 1\iere{} de couverture s'il y a, page de titre en langue % principale sinon. % \begin{macrocode} \ifboolexpr{% bool {YAD@cover@page}% or (bool {YAD@nofrontcover} and test {\IfLanguageName{\YAD@mainlanguage}})% }{% \ifdraft{}{\vspace*{\stretch{1}}}% % \vspace*{\stretch{1}}% \raggedleft{% \itshape% \sffamily% \YAD@translation{ordernumber}% \IfLanguageName{french}{% \FBcolonspace% }{% }: \printordernumber% }% }{% }% \ifdraft{}{\vspace*{\stretch{.5}}}% % \vspace*{\stretch{.5}}% \par% }{% }% % \begin{minipage}[c][\YAD@otherboxheight][c]{\YAD@titleboxwidth} % \ifdraft{}{\vspace*{\stretch{.25}}}% \begin{center} \YAD@ifemptyorundef{\printinstitute}{% \YAD@generic@argument@translate{institute}% \ifbool{YAD@noinstitute}{% }{% \YAD@ClassError[noinstitute]{% Institut de la these non specifie% }{% La commande \protect\institute\space n'a pas ete utilisee\MessageBreak% (celle-ci est requise) ou son argument obligatoire est vide\MessageBreak% (celui-ci doit etre renseigne).% }% }% }{% \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}}% }% \ifdraft{}{\vspace*{\stretch{1.5}}}% % \vspace*{\stretch{1.5}}% \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 these non specifie% }{% La commande \protect\author\space n'a pas ete utilisee (celle-ci est requise)\MessageBreak% ou ses 2 premiers arguments obligatoires sont vides\MessageBreak% (ceux-ci doivent etre renseignes).% }% }% }{% \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}% % }% }{% \ifdraft{}{\vspace*{\stretch{1}}}% % \vspace*{\stretch{1}}% \par% \YAD@translation{defendedon} \YAD@ifemptyorundef{\printdate}{% \YAD@generic@argument@translate{date}% }{% \textbf{\printdate}% }% }% }% \ifYAD@hdr% \else% \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}}% \par% \large% \YAD@translation{academicfield} % \YAD@ifemptyorundef{\printacademicfield}{% \YAD@generic@argument@translate{academicfield}% \ifbool{YAD@noacademicfield}{% }{% \YAD@ClassError[noacademicfield]{% Champ disciplinaire de la these non specifie% }{% La commande \protect\academicfield\space n'a pas ete utilisee (celle-ci est requise)\MessageBreak% ou son argument obligatoire est vide (celui-ci doit etre renseigne).% }% }% }{% \textbf{\printacademicfield}% }% \ifundef{\printspeciality}{% }{% \ifdraft{}{\vspace*{\stretch{.5}}}% % \vspace*{\stretch{.5}}% \par% \large% \YAD@translation{speciality} \textbf{\printspeciality}% } \end{center} % \end{minipage}% \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} % \end{macrocode} % Affichage des directeurs de thèse et du jury % \begin{macrocode} \noindent% \begin{minipage}[c][\YAD@otherboxheight][c]{\YAD@titleboxwidth} \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 these non specifie% }{% La commande \protect\supervisor\space n'a pas ete utilisee\MessageBreak% (celle-ci est requise) ou ses arguments obligatoires sont vides\MessageBreak% (ceux-ci doivent etre renseignes).% }% }% }% \par% \YAD@translation{doctoralschool} \YAD@ifemptyorundef{\printdoctoralschool}{% \YAD@generic@argument@translate{doctoralschool}% \ifbool{YAD@nodoctoralschool}{% }{% \YAD@ClassError[nodoctoralschool]{% Ecole doctorale de la these non specifiee% }{% la commande \protect\doctoralschool\space n'a pas ete utilisee\MessageBreak% (celle-ci est requise) ou son argument obligatoire est vide\MessageBreak% (celui-ci doit etre renseigne).% }% }% }{% \textbf{\printdoctoralschool}% }% \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}}% }% % \end{macrocode} % On repasse à la langue par défaut % \begin{macrocode} \endgroup% % \end{macrocode} % Maintenant que la 1\iere{} page de titre (celle de 1\iere{} de couverture) % a été créée, le booléen ×YAD@cover@page× est faux. % \begin{macrocode} \boolfalse{YAD@cover@page}% % \end{macrocode} % On génère une page de titre dans la langue principale puis dans la % langue secondaire. % \begin{macrocode} }% \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}% \pagestyle{preliminary}% }% \makeatother \begin{document} \author{John}{Doe} \supervisor{Jane}{Doe} \maketitle \end{document}