我定义了一个exercise
以水平规则结尾的环境。我希望在环境文本的末尾和规则之间留出一些垂直空间。当我尝试插入该空间时,垂直空间最终会后(以下)规则代替前它。
\medskip
我在 HorzLine 命令的开头和环境\vspace{5\bigskipamount}
之前都尝试过,但都不起作用。\HorzLine
exercise
这是怎么回事?
以下是一些代码:
\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}
空白改变了 TeX 所处的模式。