mdframed 환경을 명령으로 래핑

mdframed 환경을 명령으로 래핑

텍스트 주위에 프레임을 만들기 위해 간단한 환경을 생성(복사)했습니다. 환경은 mdframes콘텐츠를 상자에 넣기 위해 환경을 사용하고 changemargin상자의 왼쪽과 오른쪽에 공백을 추가하는 데 사용되는 간단한 매크로를 사용합니다.

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

이것이 결과입니다. 완벽하게 작동합니다. 여기에 이미지 설명을 입력하세요

내 질문은 내 환경을 명령처럼 사용할 수 있느냐는 것입니다.

\Boxed{title}{content}

답변1

실제로 mdframed내부 환경에 래핑된 경우 명령 내에서 환경을 사용하는 것이 가능합니다 BoxedInternal.

BoxedInternal환경과 \Boxed매크로 에 대한 선택적 인수를 사용하여 예제를 개선했습니다 .

문제는 그러한 래퍼 명령이 일반적으로 유용한지 여부입니다.

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

여기에 이미지 설명을 입력하세요

관련 정보