我想使用类似框架的东西,但垂直边框完全在边距内,实际内容的位置和宽度不变,并支持嵌套框。有没有支持此功能的环境?最好不要显式更改每个嵌套级别的属性。
答案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}
您将获得: