我想构造一个名为 的宏\vs
,它排版一个恒定的垂直间距,例如\vs{40em}
将获得 40em 高度的白色间距。我知道有很多方法—— \vskip
、\vspace
等等……——可以实现这一点。但是,如果遇到分页符,所有这些方法都会失败,如我的附图所示,由以下 MWE 生成。有人能帮我吗?
梅威瑟:
\documentclass{article}
\usepackage{geometry}
\geometry{showframe}
\begin{document}
some text.\vskip10em
question 1...\vskip40em
question 2...\vskip40em
question 3...\vskip40em
\end{document}
答案1
如果您希望空间可以分割,一部分放在一页上,一部分放在下一页上,您可以尝试使用小块进行循环。例如
\documentclass{article}
\usepackage{geometry}
\geometry{showframe}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand\manyvspace { m }
{
\par
\int_step_inline:nn{#1}{\vspace*{1em}\goodbreak}
}
\ExplSyntaxOff
\begin{document}
some text.\vskip10em
question 1... \manyvspace{30}
question 2... \manyvspace{40}
question 3... \manyvspace{40}
\end{document}
答案2
只需使用以下*
形式:
\vspace*{4cm}
这回答了标题中的问题,尽管看了你的草图示例代码,我还是认为你总是想要一个位于空间上方的问题标题,在这种情况下,空间不应该落在页面的顶部,因此在那一点上删除空间应该不是问题。
经过进一步的评论,似乎你并不真正想要空间,而是一个(比如说)5行的白色段落,可能会在一页上分开,你可以这样做
\section*{Some title}
\mbox{}\\
\mbox{}\\
\mbox{}\\
\mbox{}\\
\mbox{}
\section*{Some other title}
\mbox{}\\
\mbox{}\\
\mbox{}\\
\mbox{}\\
\mbox{}