带内边距的带框框

带内边距的带框框

我想使用类似框架的东西,但垂直边框完全在边距内,实际内容的位置和宽度不变,并支持嵌套框。有没有支持此功能的环境?最好不要显式更改每个嵌套级别的属性。

答案1

[编辑我在我的第一个解决方案中提到过,有一种更奇特的方法可以做到这一点,所以这里就是它。]

我假设“垂直边框完全在边距内,实际内容的位置和宽度不变”,你的意思是嵌套框应该与外部框具有相同的宽度。如果不是这种情况,那么你只需要更改

leftmargin, rightmargin, innerleftmargin, innerrightmargin

在下面的代码中。除了我糟糕的颜色选择之外,我认为你正在尝试实现以下目标:

在此处输入图片描述

这是使用框架包和以下代码:

\documentclass{article}
\usepackage{mdframed}
\usepackage{xcolor}
\newcounter{FramedDepth}
\setcounter{FramedDepth}{-1}
\mdfdefinestyle{Framed}{linecolor=black,linewidth=0pt,leftmargin=0pt,rightmargin=0pt,
                        innerleftmargin=0pt,innerrightmargin=0pt}
\newenvironment{Framed}{%
  \addtocounter{FramedDepth}{1}
  \ifcase\theFramedDepth\def\FrameColour{blue!50}%
    \or\def\FrameColour{green!50}%
    \or\def\FrameColour{red!50}%
    \or\def\FrameColour{orange!50}%
    \fi%
  \begin{mdframed}[style=Framed,backgroundcolor=\FrameColour]%
}{\end{mdframed}\addtocounter{FramedDepth}{-1}}

\begin{document}

\begin{Framed}
  Some interesting text.
\end{Framed}

\begin{Framed}
  This is even more interesting.

    \begin{Framed}
      ...and this is beyond mentioning
    \end{Framed}
     Some more text
     \begin{Framed}
       Another level down
     \end{Framed}
  \end{Framed}
\end{Framed}

\end{document}

就我个人而言,我更喜欢让嵌套框稍微缩进一些。例如

\mdfdefinestyle{Framed}{linecolor=black,linewidth=1pt}

您将获得:

在此处输入图片描述

相关内容