垂直居中文本,精确

垂直居中文本,精确

我尝试了论坛上给出的两种解决方案。它们都没有真正使文本居中。我在下面放了一个。它偏离了相当多。我希望它居中,测量范围从文本块(?...写正常文本的矩形)到字母高度的中间(大写字母也可以)。

%\documentclass[a4paper, 11pt, oneside]{book} % A4 paper size, default 11pt font size and oneside for equal margins

%PACKAGES
\usepackage{fontspec}
\usepackage{libertine}
\usepackage{fancyhdr}
\usepackage[paperwidth=6in, paperheight=9in, showframe]{geometry}

\fancypagestyle{clearstyle}{\fancyhead{}\fancyfoot{}}

\begin{document}
\begin{center}
\vspace*{\stretch{1}}
{\Huge \textbf{\textit{Too Low}}\par}
\vspace*{\stretch{1}}
\end{center}

\clearpage 
\end{document}

答案1

只需使用这个(尽管在我看来,黄金比例会更精细):

\begin{center}
\null\vspace*{\stretch{1}}
{\Huge \textbf{\textit{Too Low}}\par}
\vspace*{\stretch{1}}\null
\end{center}

\clearpage

在此处输入图片描述

stretch以下是用于近似黄金分割率(针对文本区域)的值的代码:

\begin{center}
\null\vspace*{\stretch{1}}
{\Huge \textbf{\textit{Too Low}}\par}
\vspace*{\stretch{1.72}\null
\end{center}

在此处输入图片描述

答案2

您可以使用文本位置将文本绝对放置在网格的中间 - 但是,当文本位于页面中间时,它在视觉上看起来会太低。

我没有补偿文本框的高度,所以可能文本应该高出大约 2 毫米。

在此处输入图片描述

\documentclass[a4paper, 11pt, oneside]{book}

\usepackage{libertine}
\usepackage[absolute]{textpos}
\TPGrid[-7mm,0mm]{210}{290}

\begin{document}
\begin{textblock}{54}(78,145)
{\Huge \textbf{\textit{Too Low gg}}\par}
\end{textblock}
\end{document}

答案3

下面我使用eso-pic\AtTextCenter对象放置在文本块的中心。由于对象是放置在基线上的文本,因此将其放下(或将其抬高负距离)到基线的一半有助于将其垂直放置在页面上的中心。

在此处输入图片描述

\documentclass{book}

%PACKAGES
\usepackage{fontspec}
\usepackage{libertine}
\usepackage{eso-pic}
\usepackage[paperwidth=6in, paperheight=9in, showframe]{geometry}

\begin{document}

\pagestyle{empty}

\mbox{}% Just to put something on the page
\AddToShipoutPicture*{%
  \AtTextCenter{%
    \makebox[0pt]{\raisebox{\dimexpr-.5\height+.5\depth}{\fbox{\Huge\bfseries Lazy fox}}}%
  }%
}

%\clearpage% Ship out page

\end{document}

当然,您可以删除\fbox和其他不符合您用途的元素。

相关内容