分类
LaTeX

LaTeX实现跨页模式下的垂直空白

我们在某些环境中, 想要隐藏答案或者证明. 那么我们可以将该环境放入一个盒子, 然后获取盒子高度. 再定义一个开关, 使得要隐藏时直接用\vspace{盒子高度}替代原来的内容.

问题是, 直接用vspace我们可能不能在跨页时保持相同的高度. SE上的解决方案是用一个loop将原来的高度细分, 然后结合\goodbreak就可以实现了.

具体代码如下:


\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}

效果如图
跨行垂直空白

参考文献

  1. Skip given vertical space accross pages if needed
  2. Repeating a command n times

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据