Dans book.cls, on trouve que \chapter fait appel à \@chapter ou à \@schapter qui font appel à \@makechapterhead et cette macro est définie comme suit :
et donc, l'espace au début est dû au \vspace*{50\p@} (un espace vertical de 50 pt).
Il «suffit» donc de modifier cette définition (ben oui, l'espace est codé en dur, ils auraient pu utiliser une longueur (variable modifiable par \setlength)). Pour la redéfinition, il faut ajouter cela avant le \begin{document} :
Les \makeatletter et \makeatother permettent d'utiliser des @ dans les noms de macro (ce qui est interdit dans un document mais pas dans un .sty ou un .cls).
Voilà, ça a pas l'air très propre mais c'est parce que ce n'est pas prévu : book.cls est un *exemple*, on _devrait_ refaire son style soi-même, mais faut pas pousser, on va pas s'embêter pour si peu.
Bien sûr, si on fait plein de modifications, le plus simple est de copier book.cls dans monbook.cls et d'y faire les modifs directement. Ça permet d'apprendre à faire ses propres classes.
# Hum, très facile
Posté par Sylvain Sauvage . En réponse au message Latex : la place du nom des chapitres. Évalué à 5.
\def\@makechapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\huge\bfseries \@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@
\fi
\fi
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@
}}
et donc, l'espace au début est dû au \vspace*{50\p@} (un espace vertical de 50 pt).
Il «suffit» donc de modifier cette définition (ben oui, l'espace est codé en dur, ils auraient pu utiliser une longueur (variable modifiable par \setlength)). Pour la redéfinition, il faut ajouter cela avant le \begin{document} :
\makeatletter
\def\@makechapterhead#1{%
\vspace*{10\p@}% <<-------------------- modifier la taille (marche aussi en cm...)
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\huge\bfseries \@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@
\fi
\fi
\interlinepenalty\@M
\Huge \bfseries #1\par\nobreak
\vskip 40\p@
}}
\makeatother
Les \makeatletter et \makeatother permettent d'utiliser des @ dans les noms de macro (ce qui est interdit dans un document mais pas dans un .sty ou un .cls).
Voilà, ça a pas l'air très propre mais c'est parce que ce n'est pas prévu : book.cls est un *exemple*, on _devrait_ refaire son style soi-même, mais faut pas pousser, on va pas s'embêter pour si peu.
Bien sûr, si on fait plein de modifications, le plus simple est de copier book.cls dans monbook.cls et d'y faire les modifs directement. Ça permet d'apprendre à faire ses propres classes.