\vspace
在真实页面的开头被取消,但在小页面的开头却被忠实地添加。
我怎样才能修改\vspace
(或修改小页面环境)以使其以与实际分页符相同的方式运行,即我希望在小页面中首先忽略 vspace,但在其他任何地方都受到尊重。
\documentclass{book}
\usepackage{showframe}
\begin{document}
\clearpage
\vspace{1cm}
test
\clearpage
\begin{minipage}{\textwidth}
\vspace{1cm} %should be ignored
test
\vspace{1cm} %should be kept
test
\end{minipage}
\end{document}
答案1
\documentclass{book}
\usepackage{showframe}
\makeatletter
\newcommand\myvspace[1]{\if@minipage\else\vspace{#1}\fi}
\makeatother
\begin{document}
\clearpage
\vspace{1cm}
test
\clearpage
\noindent\begin{minipage}{\textwidth}
\myvspace{1cm} %should be ignored
test
\myvspace{1cm} %should be kept
test
\end{minipage}
\end{document}
我保留了原来的设置,但您是否有意设置段落分隔符,以便在段落之间留出垂直空间test
?由于第二个垂直空间位于文本之后,因此您无法看到它。
在小页面开始时为\if@minpage
真,在第一段设置为假,然后使用。
作为定义自己的命令的更好的替代方法,您可以使用\addvspace
已经包含此测试的标准 LaTeX 命令(然后您必须有一个段落分隔符,因为\addvspace
在水平模式下会出现错误)。
\documentclass{book}
\usepackage{showframe}
\begin{document}
\clearpage
\addvspace{1cm}
test
\clearpage
\noindent\begin{minipage}{\textwidth}
\addvspace{1cm} %should be ignored
test
\addvspace{1cm} %should be kept
test
\end{minipage}
\end{document}