MDFramed-Umgebung in einen Befehl einbinden

MDFramed-Umgebung in einen Befehl einbinden

Ich habe eine einfache Umgebung erstellt (kopiert), um einen Rahmen um einen Textabschnitt zu erstellen. Die Umgebung verwendet die mdframesUmgebung, um den Inhalt einzurahmen, und ein einfaches Makro changemargin, das verwendet wird, um links und rechts des Rahmens etwas Leerraum hinzuzufügen.

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

\usepackage{lipsum} % add some text

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

Das ist das Ergebnis. Es funktioniert perfekt. Bildbeschreibung hier eingeben

Meine Frage ist, kann ich meine Umgebung wie einen Befehl verwenden?

\Boxed{title}{content}

Antwort1

Es ist tatsächlich möglich, eine mdframedUmgebung innerhalb eines Befehls zu verwenden, wenn dieser in eine interne BoxedInternalUmgebung gekapselt ist.

Ich habe das Beispiel mit einem optionalen Argument für die BoxedInternalUmgebung und \Boxeddas Makro verbessert.

Die Frage ist, ob solche Wrapper-Befehle generell sinnvoll sind.

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

Bildbeschreibung hier eingeben

verwandte Informationen