Поставьте вертикальную линию рядом с упражнением

Поставьте вертикальную линию рядом с упражнением

Я работаю с существующей средой (упражнением), предоставляемой svmono documentstyle (монографии Springer), и иногда непонятно, где заканчивается упражнение и начинается следующий абзац.

Чтобы решить эту проблему, я пытаюсь добавить вертикальную линию слева от текста. Я использую 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} 

введите описание изображения здесь

Связанный контент