# How to port this ntheorem solution to amsthm + thmtools?

Is it possible to reproduce this pleasant theorem environment using amsthm and thmtools?

-
–  Marco Daniel Apr 1 '13 at 15:19
add comment

## 1 Answer

You can also use the package mdframed for drawing the frame. The setting of the theorems can be done by your favorite package. After you setup your theorem environment you can surround the environment with \surroundwithmdframed. For you required style you can use the following definition whereby the short lines have a length of 0.25 cm. Of course this can be done more elegant.

To simplify the code I am using the calc library of TikZ

\usepackage[framemethod=TikZ]{mdframed}
\usetikzlibrary{calc}
\makeatletter
\newrobustcmd*\mdf@tikzbox@tfl@spare[1]{%three or four borders
\clip(0,0)rectangle(\mdfboundingboxwidth,\mdfboundingboxheight);%
\begin{scope}[mdfcorners]%
\clip[preaction=mdfouterline]%
[postaction=mdfbackground]%
[postaction=mdfinnerline]#1;%
\end{scope}%
\path[mdfmiddleline,mdfcorners]($(O|-P)-(0,0.25cm)$)--(O|-P)--(P)--($(P)-(0,0.25cm)$);
\path[mdfmiddleline,mdfcorners]($(P|-O)+(0,0.25cm)$)--(P|-O)--(O)--($(O)+(0,0.25cm)$);
}%
\newrobustcmd*\changelinestyle{\let\mdf@tikzbox@tfl\mdf@tikzbox@tfl@spare}
\makeatother
\surroundwithmdframed[settings=\changelinestyle]{theorem}


Through this definition all options of mdframed are allowed.

\documentclass{article}
\usepackage{amsmath,amsthm}
\usepackage{thmtools}
\declaretheorem[]{theorem}

\usepackage[framemethod=TikZ]{mdframed}
\usetikzlibrary{calc}
\makeatletter
\newrobustcmd*\mdf@tikzbox@tfl@spare[1]{%three or four borders
\clip(0,0)rectangle(\mdfboundingboxwidth,\mdfboundingboxheight);%
\begin{scope}[mdfcorners]%
\clip[preaction=mdfouterline]%
[postaction=mdfbackground]%
[postaction=mdfinnerline]#1;%
\end{scope}%
\path[mdfmiddleline,mdfcorners]($(O|-P)-(0,0.25cm)$)--(O|-P)--(P)--($(P)-(0,0.25cm)$);
\path[mdfmiddleline,mdfcorners]($(P|-O)+(0,0.25cm)$)--(P|-O)--(O)--($(O)+(0,0.25cm)$);
}%
\newrobustcmd*\changelinestyle{\let\mdf@tikzbox@tfl\mdf@tikzbox@tfl@spare}
\makeatother
\surroundwithmdframed[settings=\changelinestyle,middlelinecolor=blue,roundcorner=3pt,middlelinewidth=1.2pt]{theorem}

\usepackage{lipsum}
\begin{document}
\lipsum[2]

\begin{theorem}%
If~$G$ is a connected graph of order $n\geq 3$ and size~$m$, then
$g(G)\geq \frac{m}{6}-\frac{n}{2}+1.%$
\end{theorem}%

\lipsum[2]

\end{document}

-
Thanks, i'll try your solution as soon as i can, just wondering where the blue color was set? –  juliohm Apr 2 '13 at 21:10
The blue color is set by middlelinecolor=blue. Does the solution works for you? Would you accept my answer? –  Marco Daniel Apr 10 '13 at 5:34
Your solution is great, I'm wondering if it's possible to achieve a similar result with amsthm+thmtools only. If you argue it's impossible, I'll be happy to accept your argument as the answer. –  juliohm May 15 '13 at 1:10
@juliohm: At the moment I don't have any access to LaTeX. However of course it is possible ;-) -- thmtools have a key mdframed which can be used. –  Marco Daniel May 15 '13 at 5:42
add comment