LaTeX实现跨页模式下的垂直空白
我们在某些环境中, 想要隐藏答案或者证明. 那么我们可以将该环境放入一个盒子, 然后获取盒子高度. 再定义一个开关, 使得要隐藏时直接用\vspace{盒子高度}替代原来的内容.
问题是, 直接用vspace我们可能不能在跨页时保持相同的高度. SE上的解决方案是用一个loop将原来的高度细分, 然后结合\goodbreak就可以实现了.
具体代码如下:
\documentclass{minimal}
\usepackage[margin=0pt, a4paper]{geometry}
\usepackage{calc}
\usepackage{fix-cm}
\usepackage{multido, ifthen}
\begin{document}
\newcounter{cnt}
\newcommand{\myVSpace}[1]{
\setcounter{cnt}{0}
\whiledo {\value{cnt} <100}
{
\vspace*{.01#1}\goodbreak
\stepcounter{cnt}
}
}
\newlength\skipheight
\newlength\lineheight
\setlength\lineheight{2em}
\setlength{\skipheight}{0.4\textheight}
\noindent\rule[.1\lineheight]{\textwidth}{.1\lineheight}
\myVSpace{\skipheight}
\noindent\rule[.1\lineheight]{\textwidth}{.1\lineheight}
\myVSpace{\skipheight}
\noindent\rule[.1\lineheight]{\textwidth}{.1\lineheight}
\myVSpace{\skipheight}
\noindent\rule[.1\lineheight]{\textwidth}{.1\lineheight}
\myVSpace{\skipheight}
\noindent\rule[.1\lineheight]{\textwidth}{.1\lineheight}
\myVSpace{\skipheight}
\noindent\rule[.1\lineheight]{\textwidth}{.1\lineheight}
\myVSpace{\skipheight}
\noindent\rule[.1\lineheight]{\textwidth}{.1\lineheight}
效果如图
跨行垂直空白
参考文献
\begin{enumerate}
\item \href{https://tex.stackexchange.com/a/67315/19832}{Skip given vertical space accross pages if needed}
\item \href{https://texfaq.org/FAQ-repeat-num}{Repeating a command n times}
\end{enumerate}
本作品采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循署名-非商业用途-保持一致的创作共用协议.

发表回复