我使用 mdframed 在定理环境的左侧用双线包围它(试图重现 Hatcher 的“代数拓扑”)。它几乎完美地工作,除了两条连接我的主要垂直线的小水平灰线:
下面是生成上述图片的最小代码:
\documentclass{article}
\usepackage{lipsum}
\usepackage{amsthm}
\usepackage{tikz}
\usepackage[framemethod=tikz]{mdframed}
\newtheorem{thm}{Theorem}
\mdfdefinestyle{double-line}{%
outerlinewidth=0.4pt,%
innerlinewidth=0.4pt,%
middlelinewidth=1.5pt,%
middlelinecolor=white,%
innertopmargin=-6.5pt,%
innerbottommargin=1pt,%
innerleftmargin = 5pt,%
bottomline=false,%
topline=false,%
rightline=false}
\surroundwithmdframed[style=double-line]{thm}
\begin{document}
\begin{thm}
\lipsum[3]
\end{thm}
\end{document}
有人知道为什么会出现这些灰线,以及如何去除它们吗?
编辑:感谢@Sigur的评论,我在他的网站上找到了Hatcher的解决方案(http://pi.math.cornell.edu/~hatcher/AT/typography.html,第 4 点):
\long\def\proclaim #1. #2\par{\bigbreak\vbox{\hbox {\vrule\kern1.5pt\vrule
\everypar{\leftskip 5pt\rightskip 4pt}\vbox{\noindent {\bf #1.\enspace}{\sl#2}}}}
\par\ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi}
但是,我不确定如何使用此代码以使其围绕我的定理环境。有什么想法吗?
EDIT2/3:@Bernard 的解决方案几乎是完美的,但我注意到,当不使用 parskip 时,它在列表方面表现不佳,而当使用 parskip 时,它在短结尾行方面表现不佳。
和parskip
theorem
环境与环境之间的间距proof
太大,但似乎与双条环境无关,所以我创建了另一个问题(见这里)。
尽管如此,当定理环境以短线结束时,双线就不够长了:
\documentclass{article}
\usepackage{lipsum}
\usepackage{fullpage}
\usepackage{framed}
\usepackage{amsthm, thmtools}
\usepackage{enumitem}
\usepackage{etoolbox}
\newenvironment{dbleftbar}{%
\def\FrameCommand{\vrule width0.6pt\hspace{0.15em}\vrule width0.6pt \hspace{0.5em}}%
\MakeFramed {\advance\hsize-\width \FrameRestore}}%
{\endMakeFramed}
% With parskip
\usepackage{parskip}
\declaretheorem[%
name =Theorem,%
postheadhook =\vspace*{\parskip}\begin{dbleftbar}\vspace*{-5pt},%
prefoothook =\vspace*{-1pt}\end{dbleftbar}%
]{Thm}
\begin{document}
\begin{Thm}\leavevmode
\begin{enumerate}[wide=0pt, leftmargin=*]
\item Lorem i
\end{enumerate}
\end{Thm}
\hrule
\begin{Thm}\leavevmode
\begin{enumerate}[wide=0pt, leftmargin=*]
\item Lorem ip
\end{enumerate}
\end{Thm}
\hrule
\begin{Thm}
Lorem
\end{Thm}
\hrule
\begin{Thm}
Lorem ip
\end{Thm}
\hrule
\end{document}
没有parskip
此处,使用列表时双线会更长。
答案1
我提出了一个带有包的解决方案,
framed
并定义了一个环境,我对其进行了修改以通过环境获得双杠 :thmtools
Framed
leftbar
leftdblbar
\documentclass{article}
\usepackage{lipsum}
\usepackage{framed}
\usepackage{amsthm, thmtools}
\newenvironment{dbleftbar}{%
\def\FrameCommand{\vrule width0.6pt\hspace{0.15em}\vrule width0.6pt \hspace{0.5em}}%
\MakeFramed {\advance\hsize-\width \FrameRestore}}%
{\endMakeFramed}
\declaretheorem[name=Theorem, postheadhook=\begin{dbleftbar}\rule{0pt}{2ex}, prefoothook=\smallskip\end{dbleftbar}]{Thm}
\begin{document}
\begin{Thm}
\lipsum[11]
\end{Thm}
\end{document}