假设,我定义了一个名为的环境,myenvironment
它使用各种格式排版多行文本。因此,环境的高度取决于它所包含的文本,每次都不同。我需要它将文本放在页面底部。如果我在该环境的定义中使用\vspace*{\fill}
,则不起作用。有什么解决办法吗?
梅威瑟:
\newenvironment{myenvironment}{\vspace*{\fill}
\begin{minipage}{\textwidth}
\begin{center}
OUTLINE OF THIS CHAPTER
\end{center}
\vspace*{-6pt}\sffamily\fontsize{12}{14}%
\setlength{\parindent}{0pt}%
\hrule height 0.5pt width \textwidth \vspace*{10pt}%
}%End of the begining commands
{\vspace*{10pt}%
\hrule height 0.5pt width \textwidth
\end{minipage}}
答案1
您必须在环境之后立即中断页面,否则\vspace*{\fill}
将无法实现您所期望的效果。
\documentclass{article}
\usepackage{lipsum}
\newenvironment{myenvironment}
{\par\vspace*{\fill} % better ensuring we are between paragraphs
\noindent\begin{minipage}{\textwidth} % \noindent
\begin{center}
OUTLINE OF THIS CHAPTER
\end{center}
\vspace*{-6pt}\large\sffamily % better using a high level command
\hrule height 0.5pt width \textwidth \vspace*{10pt}%
}%End of the begining commands
{\vspace*{10pt}%
\hrule height 0.5pt width \textwidth
\end{minipage}\newpage % end this page
}
\begin{document}
\lipsum[1]
\begin{myenvironment}
\lipsum*[2]
\end{myenvironment}
\lipsum[3]
\end{document}
请注意,将\parindent
a 设置为零minipage
是多余的,因为 LaTeX 会自动执行此操作。