我想让文本在页面上垂直和水平居中。我从这里获取了答案https://tex.stackexchange.com/a/2327/110351并创建了以下文档:
\documentclass[pagesize=auto, paper=102mm:51mm, paper=landscape]{scrartcl}
\usepackage[margin=3mm]{geometry}
\begin{document}%
\pagestyle{empty}%
\setlength{\parindent}{0pt}%
\setlength{\topskip}{0pt}%
\vspace*{\fill}%
\begin{center}
Test
More tests
More tests
\end{center}
\vspace*{\fill}%
\end{document}
这样,页面顶部的空间就比底部的空间大,也就是说,文本的位置比需要的要低。
我怎样才能解决这个问题?
编辑:这可能与文本或字体有关吗?当我突出显示文本时,字母上方的框比字母下方的框大。因此,文本可能看起来没有垂直居中,但实际上却是垂直居中的。
答案1
在良好的排版中,页面上两行连续文本之间的距离不应取决于它们包含的字母的高度(当然,这不仅仅适用于良好的排版!)。因此,(La)TeX 将它们的基线放置在固定距离(例如,12 点,或约 4.2 毫米),与内部字形的实际高度无关。这样,就有足够的空间\big
在一行中包含一个包含指数或括号的数学公式,而无需垂直移动它。
TeX 通过一种称为“行间粘连”的砂浆来实现此行为,该砂浆插入连续的文本行之间。在 的实现中\vspace*
,特别注意不要影响行间粘连的插入方式:这通常是正确的,但在您的情况下,它会产生副作用,即第一行文本的位置会比实际高。这可能是也可能不是您想要的:如果不是,您可以简单地发出命令来抵消它\nointerlineskip
,这会抑制通常会在紧随其后的行之前插入的行间粘连。
请注意,在 LaTeX 的实现中\vspace*
,“行间粘合”机制覆盖了“\topskip
粘合”装置。更准确地说,\vspace*
添加了一条不可见的水平线,以防止其插入的空格在分页符处消失:现在,设置\topskip
为零可防止插入不需要的垂直空格多于这条不可见的规则;另一方面,发出该\nonterlineskip
命令会阻止添加行间粘连(以及它所占用的垂直空间)以下同样的规则。所以,对于你的情况,你需要两个都。
梅威瑟:
\documentclass[pagesize=auto, paper=102mm:49mm, paper=landscape]{scrartcl}
\usepackage[margin=3mm]{geometry}
% \showoutput
\begin{document}
\pagestyle{empty}
\setlength{\parindent}{0pt}
\setlength{\topskip}{0pt}
\nointerlineskip
\setlength{\parskip}{0pt}
\vspace*{\fill}
% \showthe\prevdepth
\begin{center}
Test
More tests
More tests
More tests
More tests
More tests
More tests
Test
\end{center}
\vspace*{\fill}
\end{document}
在这种情况下,设置\parskip
为零不是必需的,但在其他情况下可能很重要。取消注释注释行以查看一些诊断消息。