使用 mdframed/tikz 防止双帧

使用 mdframed/tikz 防止双帧

我想使用 mdframed 创建一个离题图。我希望​​它有圆角,所以我用选项 [framemethod=tikz] 加载它。因此,出现了一个问题,即我为 tikzpictures 使用的标准框架框也放在了 mdframed-box 周围,导致出现非常丑陋的双框架。我尝试了在问题,但我无法将 TikZ 密钥传递给 mdframed。

MWE-图片

我最终想要实现的是一个具有圆角和灰色背景的框架。这是我的 MWE:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usepackage[framemethod=tikz]{mdframed}
\tikzset{every picture/.style={framed,background rectangle/.style={draw=black!80,rounded corners=.5ex}}}

\begin{document}
\begin{mdframed}[backgroundcolor=black!10!white]
Plain text.
Or something else.
\end{mdframed}
\end{document}

如何防止外框?

答案1

由于您想要禁用every picture的样式mdframe,您可以使用:

\AtBeginEnvironment{mdframed}{%
    \tikzset{every picture/.style={}}%
}

然后将\mdfsetup{}其应用roundcorner到 mdframe:

\mdfsetup{roundcorner=.5ex}

这样,tikzpicture环境仍然可以获得所需的帧,并且mdframe不会受到影响:

在此处输入图片描述

代码:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usepackage[framemethod=tikz]{mdframed}

\tikzset{every picture/.style={framed,background rectangle/.style={draw=red!80,rounded corners=.5ex, inner sep=0pt}}}%

\AtBeginEnvironment{mdframed}{%
    \tikzset{every picture/.style={}}%
}
\mdfsetup{roundcorner=.5ex}

\begin{document}
\noindent
\begin{tikzpicture}
    \draw [fill=yellow] (0,0) rectangle (2,3);
\end{tikzpicture}

\begin{mdframed}[backgroundcolor=black!10!white]
Plain text.
Or something else.
\end{mdframed}
\end{document}

相关内容