我正在使用 svmono documentstyle(springer monographs)提供的现有环境(练习),有时不清楚练习在哪里结束以及下一段在哪里开始。
为了解决这个问题,我尝试在文本左侧添加一条垂直线。我使用 包来实现framed
这一点,并使用 的修改leftbar
。我不太清楚我从哪里得到这个,但我遇到的一个问题是,该栏在练习的两边延伸了一条线,太高和太低。因此,练习现在占用了太多的垂直空间。这是一个使用 amsthm 作为环境的示例,而不是提供的版本。
\documentclass{article}
\usepackage{amsthm}
\newtheorem{exercise}{Exercise}
\usepackage{framed}
\renewenvironment{leftbar}[1][\hsize]
{%
\def\FrameCommand
{%
{\hspace{-0.5ex}\vrule width 0.5pt}%
\hspace{0ex}%must no space.
\fboxsep=\FrameSep%
}%
\MakeFramed{\hsize#1\advance\hsize-\width\FrameRestore}%
}
{\endMakeFramed}
\let\oldexercise\exercise
\let\oldendexercise\endexercise
\def\exercise{\begingroup \begin{leftbar}\oldexercise}
\def\endexercise{\oldendexercise \end{leftbar}\endgroup}
\begin{document}
some text
\begin{exercise}
here is exercise 1.
\end{exercise}
more text
\end{document}
有没有办法修改它,以便栏不会导致环境占用额外的垂直空间?(或者 - 因为这可能是一个XY问题- 有没有更好的方法可以使练习与文本的其余部分明显区分开来?)
答案1
我提出了一个基于的解决方案mdframed
,它很容易定制。希望它接近你想要的:
\documentclass{article}
\usepackage{amsthm}
\usepackage{mdframed}
\usepackage{lipsum}
\newmdtheoremenv[linewidth=0.5pt, topline=false, bottomline=false, rightline=false,%
leftmargin=0pt, innerleftmargin=0.4em, rightmargin=0pt, innerrightmargin=0pt, innertopmargin=-5pt ,%
innerbottommargin=3pt, splittopskip=\topskip, splitbottomskip=0.3\topskip, %
skipabove=0.6\topsep]%
{exercise}{Exercise}%
\begin{document}
\lipsum[11]
\begin{exercise}
Here is exercise 1. You must answer the following question: why is it that
\[ 1 + 1 = 2 \]%
\end{exercise}
more text
\end{document}