垂直居中文本块(包括章节题注页)

垂直居中文本块(包括章节题注页)

我的书中有一个献词页(使用)\documentclass[a4paper,11pt,openany,oneside]{book}。它位于单独的章节中,包含两个小段落。章节位于单独的页面上。目前,对于我的所有章节,献词段落都位于页面顶部附近。

与许多书籍一样,我想将本章的文本及其标题垂直居中。

由于章节标题的原因,在这种情况下,使文本居中的通常的解决方案\vspace*{\fill} some text \vspace*{\fill}不起作用。

我怀疑我可能需要定义一个单独的特殊章节定义并将其用于奉献(我正在使用titlesec包)。

以下是 MWE,显示了\vspace*{\fill}在章节标题的情况下该解决方案如何不起作用。MWE 导致章节显示在下一页,而正确的页面则为空白:

\documentclass[a4paper,11pt,openany,oneside]{book}
\usepackage{titlesec}
\begin{document}
\vspace*{\fill}
\chapter{example}
Some text here...
\vspace*{\fill}
\end{document}

有人能帮忙吗?

或者也许有一种更简单的方法来强制将我选择的所有文本居中(也许定义一个特殊的环境)?

此外,我认为如果“奉献”章节标题也居中,效果会更好。尝试\centerline确实将其居中,但也在正文下方引入了大量空间。

答案1

你需要做两件事:

  1. 阻止 LaTeX 进入新页面;以及
  2. 删除设置章节标题之前插入的初始(默认)50pt 间隙。

上述问题的解决方案如下(缩写形式):

  1. \let\clearpage\relax
  2. \vspace*{\dimexpr-50\p@-\baselineskip}

在此处输入图片描述

\documentclass[a4paper,11pt,openany,oneside]{book}
\usepackage{titlesec}% http://ctan.org/pkg/titlesec
\begin{document}
\begingroup%
\makeatletter%
\let\clearpage\relax% Stop LaTeX from going to a new page; and
\vspace*{\fill}%
\vspace*{\dimexpr-50\p@-\baselineskip}% Remove the initial (default) 50pt gap (plus 1 line)
\chapter{example}
Some text here...
\vspace*{\fill}%
\endgroup
\end{document}

\clearpage使用组对的重新定义进行本地化( \begingroup... \endgroup{...}也可以工作)。


更好的方法是仅设置文本没有使用\chapter但使用章节字体:

在此处输入图片描述

\documentclass[a4paper,11pt,openany,oneside]{book}
\usepackage{titlesec}% http://ctan.org/pkg/titlesec
\begin{document}
\vspace*{\fill}
{\centering\huge\bfseries Dedication\par}
\bigskip
\noindent Some text here...
\vspace*{\fill}
\end{document}

这样您就可以更好地控制展示位置。我曾经\bigskip将“标题”分开 -奉献- 来自文本的其余部分。您可以使用任何内容。


或者,对前言(包括类似献词的内容)的一种非常常见的方法通常是使用\chapter*而不必担心垂直对齐。

答案2

这对我有用。:D

    \begingroup%
    \makeatletter%
    \cleardoublepage%
    \let\newpage\relax%
    \let\clearpage\relax%
    \vspace*{\fill}%
    \vspace*{\dimexpr-50\p@-\baselineskip}% Remove the initial
    %% -default- 50pt gap (plus 1 line) 
    \chapter{Hello World}
    \vspace*{\fill}%
    \endgroup%

相关内容