平底环境

平底环境

假设,我定义了一个名为的环境,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}

请注意,将\parindenta 设置为零minipage是多余的,因为 LaTeX 会自动执行此操作。

相关内容