web-dev-qa-db-fra.com

Centrer verticalement une page de titre

J'essaie de centrer verticalement un titre sur une page de taille personnalisée en latex. J'ai écrit le code suivant, mais pour une raison quelconque, il n'est pas centré. Est-ce que quelqu'un pourrait m'indiquer ce qui ne va pas?

Merci! 

\documentclass{article}
\setlength{\pdfpagewidth}{88.184mm}
\setlength{\pdfpageheight}{113.854mm}

\usepackage[margin=0.5cm, paperwidth=88.184mm, paperheight=113.854mm]{geometry}

\title{[[title]]}
\date{[[date]]}
\author{[[author]]}

\begin{document}
    \vspace{\fill}
    \maketitle
    \vspace{\fill}

    \newpage

    [[text]]
\end{document}
32
Clément

Il y a deux petits bugs dans votre code.

Premièrement, si vous voulez que le \vspace fonctionne au début ou à la fin d'une page, vous devez utiliser la version étoilée (\vspace*).

Cela fonctionnerait, mais \maketitle est une macro assez compliquée, et si elle est utilisée comme dans votre exemple, elle place simplement le titre à la deuxième page. Vous pouvez utiliser l'environnement titlepage, qui vous donne beaucoup plus de contrôle sur l'apparence de la page de titre, y compris l'espacement. Par exemple, vous pouvez utiliser le code suivant:

\documentclass{article}
\setlength{\pdfpagewidth}{88.184mm}
\setlength{\pdfpageheight}{113.854mm}

\usepackage[margin=0.5cm, paperwidth=88.184mm, paperheight=113.854mm]{geometry}

\begin{document}
  \begin{titlepage}
    \vspace*{\fill}
    \begin{center}
      {Huge [[title]]}\\[0.5cm]
      {Large [[author}\\[0.4cm]
      [[date]]
    \end{center}
    \vspace*{\fill}
  \end{titlepage}

  [[text]]
\end{document}
42
finrod
\null  % Empty line
\nointerlineskip  % No skip for prev line
\vfill
\let\snewpage \newpage
\let\newpage \relax
\maketitle
\let \newpage \snewpage
\vfill 
\break % page break
15
Alexey Malistov

Si vous voulez que tout fonctionne même avec \maketitle, insérez votre \vspace*{\fill} dans les premier et dernier attributs, exp:

 \title{**\vspace*{\fill}**[[title]]}

 \date{[[date]]}

 \author{[[author]]**\vspace*{\fill}**[[}

 \begin{document}

    \maketitle

    \newpage

   [[text]]

\end{document}
1
Fadi

Comme dans la réponse de finrod, \maketitleest une macro assez compliquée, c'est pourquoi je n'ai pas eu envie de l'écraser moi-même (\renewcommand\maketitle{...). Néanmoins, en copiant, en collant et en modifiant les lignes 170 à 201 de article.cls documentclass , je pourrais en ajouter un nouveau à personnaliser (\newcommand\mymaketitle{...) comme suit:

\documentclass{article}
\setlength{\pdfpagewidth}{88.184mm}
\setlength{\pdfpageheight}{113.854mm}

\usepackage[margin=0.5cm, paperwidth=88.184mm, paperheight=113.854mm]{geometry}

\title{Title}
\date{Date}
\author{Author}

\makeatletter
\newcommand\mymaketitle{%
  \begin{titlepage}
    \null\vfil\vskip 40\p@
    \begin{center}
      {\LARGE \@title \par}
      \vskip 2.5em
      {\large \lineskip .75em \@author \par}
      \vskip 1.5em
      {\large \@date \par}
    \end{center}\par
    \@thanks
    \vfil\null
  \end{titlepage}
}
\makeatother

\begin{document}
\mymaketitle

Text
\end{document}

Le résultat:

 screenshot of output

0
MattAllegro