shaded
为了区分不同类别的环境,我使用来自包的环境framed
。
然后,我想使用 TiKZ 设计一个相应的环境,其中应该出现一行描述而不是背景颜色。因此,我使用了\newenviron
包中的命令newenviron
。如果环境中的条目不需要分页符,我的尝试(见下面的代码)是可以接受的,尽管它比前一个更窄。
因此我有两个问题
我如何定义一个环境,在其中可以设计(使用 TiKZ;出于其他原因,这很重要)边距中的注释,以便它也可以允许分页符?(寻求对我的环境的更正/扩展
lbox
)我如何保证宽度与框架版本相同?(我已经实现了我可以使用控制命令在这两种模式之间切换以节省打印机墨水)
谢谢!
以下是相关示例代码,其中的问题显而易见:
\documentclass{article}
\usepackage{blindtext}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{newenviron}
\newenviron{lbox}[1]
{\par \hspace*{-1.05cm}
\begin{tikzpicture}
\node[inner xsep=0pt,outer sep=0pt,inner ysep=2mm] (box)
{\parbox[t]{\textwidth}{\lboxbody}};
\draw[black,line width=0.5pt]
( $ (box.north west) + (-0.4cm,0) $ )
--node[pos=0,rotate=90,above,anchor=south east]
{\scriptsize{\textsc{#1}}} ( $ (box.south west) + (-0.4cm,0) $ ) ;
\end{tikzpicture}
}{}
\usepackage{framed,color}
\colorlet{shadecolor}{red!30}
\begin{document}
\blindtext
\begin{shaded}
\blindtext
\end{shaded}
\begin{lbox}{Comment}
\blindtext
\end{lbox}
\begin{shaded}
\blindtext\blindtext\blindtext\blindtext\blindtext\blindtext\blindtext
\end{shaded}
\begin{lbox}{Comment}
\blindtext\blindtext\blindtext\blindtext\blindtext\blindtext\blindtext
\end{lbox}
\end{document}
答案1
tcolorbox
对于带框架的可破坏框很有用。下面的代码显示了两个示例,第一个示例tshaded
为段落添加了一些彩色背景,同时lbox
绘制了一条带有可选文本的线。如果此文本(“注释”)应仅出现在可破坏框的第一部分,请更改overlay
为overlay first
(来自文档中的第 63 页)。
\documentclass{article}
\usepackage{blindtext}
\usepackage{tikz}
\usepackage{framed,xcolor}
\colorlet{shadecolor}{red!30}
\usepackage[most]{tcolorbox}
\newtcolorbox{tshaded}[1][]{breakable, oversize, notitle, enhanced,
colback=shadecolor, boxrule=0pt, sharp corners, #1}
\newtcolorbox{lbox}[1]{breakable, blanker, oversize, notitle, colback=white,
boxrule=0pt, left=4mm, right=4mm,
overlay={\draw[black, line width=.5pt] (frame.south west) -- (frame.north west)
node[anchor=south east, rotate=90, font=\scriptsize\scshape] {#1};}}
\begin{document}
\blindtext
\begin{tshaded}
\blindtext
\end{tshaded}
\begin{lbox}{Comment}
\blindtext
\end{lbox}
\begin{tshaded}[colback=green!20]
\blindtext\blindtext\blindtext\blindtext
\end{tshaded}
\begin{lbox}{Another comment}
\blindtext\blindtext\blindtext\blindtext\blindtext
\end{lbox}
\end{document}