Wrap mdframed environment into a command

I've created (copied) a simple environment in order to create a frame around a piece of text. The environment uses the mdframes environment in order to box the content and a simple macro changemargin that is used to add some white space at the left and at the right of the box.

\documentclass{article}
\usepackage[utf8]{inputenc}

% mdframe: put a certain amount of text in a box
\usepackage[framemethod=default]{mdframed}
\usepackage{showexpl}
\mdfdefinestyle{exampledefault}{
rightline=true,
innerleftmargin=10,
innerrightmargin=10,
frametitlerule=true,
frametitlerulecolor=black,
frametitlebackgroundcolor=white,
frametitlerulewidth=1pt,
}

% macro to change margins
\def\changemargin#1#2{\list{}{\rightmargin#2\leftmargin#1}\item[]}
\let\endchangemargin=\endlist

% custom environment
\newenvironment{Boxed}[1]
{
\begin{changemargin}{2cm}{2cm}
\begin{mdframed}[style=exampledefault, frametitle={#1}]
}
{
\end{mdframed}
\end{changemargin}
}

\begin{document}
\lipsum
\begin{Boxed}{I'm the title}
I'm the content. I've a nice frame around me.
\end{Boxed}
\end{document}


This is the result. It works perfectly.

My question is, can I use my environment like a command?

\Boxed{title}{content}

• @ChristianHupfer ok thank you. I'm adding it – incud Jan 29 '17 at 10:39
• I am correcting my previous statement (and deleted it) -- it is possible – user31729 Jan 29 '17 at 10:41
• thank you very much :) I'm trying it. Is the question ok? – incud Jan 29 '17 at 10:49
• Yes, much better, but do you really need the changemargin 'environment'? – user31729 Jan 29 '17 at 10:50
• Probably no. Without it the result is much nicer – incud Jan 29 '17 at 10:54

It is in fact possible to use a mdframed environment within a command if it is wrapped in an internal BoxedInternal environment.

I've improved the example with an optional argument to the BoxedInternal environment and \Boxed macro.

The question is whether such wrapper commands are useful in general.

\documentclass{article}

\usepackage[xcolor]{mdframed}

\def\changemargin#1#2{\list{}{\rightmargin#2\leftmargin#1}\item[]}
\let\endchangemargin=\endlist

\mdfdefinestyle{exampledefault}{backgroundcolor=yellow!10!white}

\newenvironment{BoxedInternal}[2][]
{%
\begin{changemargin}{0cm}{0cm}%
\begin{mdframed}[style=exampledefault, frametitle={#2},#1]
}{%
\end{mdframed}%
\end{changemargin}%
}

\newcommand{\Boxed}[3][]{%
\begin{BoxedInternal}[#1]{#2}
#3
\end{BoxedInternal}%
}

\begin{document}

\Boxed{Foo}{Foobar}

\end{document}


• It works perfectly – incud Jan 29 '17 at 10:55
• @Ignus: Happy TeXing then. And tcolorbox has such \Boxed commands out of the box (pun intended ;-), perhaps you can give it a try also – user31729 Jan 29 '17 at 10:56
• Can I ask you another thing? Why Boxed takes three arguments insted of two? – incud Jan 29 '17 at 10:59
• @Ignus: You can use it this way \Boxed[backgroundcolor=green]{Title}{Content}, the first argument with [...] is handed to the mdframed environment, so you could change the view etc. of the underlying box. If you never need this feature, just don't think about [...], just always use it as \Boxed[title]{content} and all is fine – user31729 Jan 29 '17 at 11:06