在練習旁邊放置一條​​垂直線

在練習旁邊放置一條​​垂直線

我正在使用 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} 

在此輸入影像描述

相關內容