Colocar uma linha vertical ao lado de um exercício

Colocar uma linha vertical ao lado de um exercício

Estou trabalhando com um ambiente existente (exercício) fornecido pelo estilo de documento svmono (monografias de Springer) e às vezes não está claro onde termina um exercício e começa o próximo parágrafo.

Para resolver isso, estou tentando adicionar uma linha vertical à esquerda do texto. Estou usando o framedpacote para isso, usando uma modificação do leftbar. Não tenho certeza de onde tirei isso, mas um problema que tenho é que a barra se estende em torno de uma linha muito alta e muito baixa em ambos os lados do exercício. Assim, o exercício agora ocupa muito espaço vertical. Aqui está um exemplo usando amsthm para o ambiente em vez da versão fornecida.

\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}

Existe uma maneira de modificar isso para que a barra não faça com que o ambiente ocupe espaço vertical extra? (alternadamente - uma vez que este pode ser umProblema XY- existe uma alternativa melhor para tornar o exercício claramente distinto do resto do texto?)

Responder1

Proponho uma solução baseada em mdframed, que é fácil de personalizar. Espero que esteja próximo do que você deseja:

\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} 

insira a descrição da imagem aqui

informação relacionada