Вертикальное центрирование титульного листа - PullRequest
33 голосов
/ 29 июня 2010

Я пытаюсь расположить заголовок по вертикали на странице нестандартного размера с латексом.Я написал следующий код, но по какой-то причине он не центрируется.Может ли кто-нибудь указать мне, что с ним не так?

Спасибо!

\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}

Ответы [ 4 ]

43 голосов
/ 29 июня 2010

В вашем коде есть две небольшие ошибки.

Во-первых, если вы хотите, чтобы \vspace работал в начале или в конце страницы, вы должны использовать помеченную версию (\vspace*).

Это бы сработало, но \maketitle - довольно сложный макрос, и при использовании, как в вашем примере, он просто помещает заголовок на вторую страницу.Вы можете использовать среду titlepage, которая дает вам гораздо больше команд над тем, как выглядит титульный лист, включая пробелы.Например, вы можете использовать следующий код:

\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}
14 голосов
/ 29 июня 2010
\null  % Empty line
\nointerlineskip  % No skip for prev line
\vfill
\let\snewpage \newpage
\let\newpage \relax
\maketitle
\let \newpage \snewpage
\vfill 
\break % page break
1 голос
/ 01 июля 2018

Как и в ответе finrod, \maketitle - довольно сложный макрос , поэтому я не хотел переписывать его сам (\renewcommand\maketitle{ ...).Тем не менее, копируя, вставляя и редактируя строки 170-201 из article.cls documentclass , я мог бы добавить новую для настройки (\newcommand\mymaketitle{ ...) следующим образом:

\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}

Выход:

screenshot of output

1 голос
/ 19 марта 2013

Если вы хотите, чтобы все работало даже с \maketitle, поместите ваш \vspace*{\fill} в первый и последний атрибут, exp:

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

 \date{[[date]]}

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

 \begin{document}

    \maketitle

    \newpage

   [[text]]

\end{document}
...