我的书中有一个献词页(使用)\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
你需要做两件事:
- 阻止 LaTeX 进入新页面;以及
- 删除设置章节标题之前插入的初始(默认)50pt 间隙。
上述问题的解决方案如下(缩写形式):
\let\clearpage\relax
\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%