水平线前的垂直空间

水平线前的垂直空间

我定义了一个exercise以水平规则结尾的环境。我希望在环境文本的末尾和规则之间留出一些垂直空间。当我尝试插入该空间时,垂直空间最终会(以下)规则代替它。

\medskip我在 HorzLine 命令的开头和环境\vspace{5\bigskipamount}之前都尝试过,但都不起作用。\HorzLineexercise

这是怎么回事?

以下是一些代码:

\documentclass[a4paper,10pt]{article}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{color}

\definecolor{orange}{rgb}{1,.549,0}

\newcommand{\HorzLine}{\medskip\noindent\textcolor{orange}{\rule{\textwidth}{5pt}}}

\newenvironment{exercise}
{\noindent\small\textbf{Exercise:}}
{\vspace{5\bigskipamount}\HorzLine}

\begin{document}
    \begin{exercise}
        \blindtext
    \end{exercise}
    \blindtext
\end{document}

答案1

\vspace直到您处于垂直模式时才会生效。 \blindtext可能没有以\par或空白行结束,因此当环境结束时它仍然处于水平模式。\par在环境的结束代码的开头放置以强制规则上方的垂直空间:

{\par\nobreak\vspace{5\bigskipamount}\HorzLine}

编辑:添加\nobreak以防止在之前出现分页符\HorzLine

答案2

只需改变\vspace{5\bigskipamount}即可\vskip5\bigskipamount解决问题

答案3

您需要在代码中的\vspace和之间留出一些空格\HorzLine

\newenvironment{exercise}
{\noindent\small\textbf{Exercise:}}
{\vspace{5\bigskipamount}

\HorzLine}

enter image description here

空白改变了 TeX 所处的模式。

相关内容