我正在使用 framed 包,我发现很难调整框架的宽度以适应当前环境,例如,如果我shaded
在环境中使用环境enumerate
,我将得到一个与当前页面一样宽的框架框(实际上略宽)——它不会相应地缩进;然后我找到了一种解决方案,使框架的宽度与当前环境相同,但出现了一个新问题:框架内似乎有额外的水平间距。 MWE 如下:
\documentclass{article}
\usepackage{framed,color}
\definecolor{shadecolor}{rgb}{.9, .9, .9}
\newenvironment{myframe}{%
\def\FrameCommand{\fboxsep=\FrameSep \colorbox{shadecolor}}%
\MakeFramed {\hsize\linewidth\advance\hsize-\width \FrameRestore}}%
{\endMakeFramed}
\begin{document}
test a frame within an enumerate environment
\begin{enumerate}
\item abc
\begin{myframe}
def
\end{myframe}
\end{enumerate}
\end{document}
有人能告诉我如何消除多余的左填充,以便框架的内容可以与列表项对齐吗?非常感谢!
屏幕截图如下:
答案1
我询问了该软件包的作者framed
,他的解决方案对我很有帮助(尽管我并不真正理解它):
\documentclass{article}
\usepackage{framed,color}
\definecolor{shadecolor}{rgb}{.9, .9, .9}
\makeatletter
\renewenvironment{snugshade}{%
\def\FrameCommand##1{\hskip\@totalleftmargin \hskip-\fboxsep
\colorbox{shadecolor}{##1}\hskip-\fboxsep
% There is no \@totalrightmargin, so:
\hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
\MakeFramed {\advance\hsize-\width
\@totalleftmargin\z@ \linewidth\hsize
\@setminipage}}%
{\par\unskip\endMakeFramed}
\makeatother
\begin{document}
test a frame within an enumerate environment test a frame within an enumerate environment
\begin{enumerate}
\item abc
\begin{snugshade}
def
\end{snugshade}
\end{enumerate}
\end{document}
答案2
我建议使用框架包裹:
\documentclass{article}
\usepackage{xcolor} % better than color
\usepackage{mdframed}
\definecolor{shadecolor}{gray}{.9}
\begin{document}
test a frame within an enumerate environment
\begin{enumerate}
\item abc
\begin{mdframed}[
backgroundcolor=shadecolor,
leftmargin=\dimexpr\leftmargin-2pt\relax,
innerleftmargin=1.6pt,
innertopmargin=2pt,
skipabove=3pt,skipbelow=3pt
]
def
\end{mdframed}
\end{enumerate}
\end{document}
答案3
在后面添加波浪号\vspace{-4mm}
可以解决该问题:
\item abc \\[-8mm]~
或者
\item abc \vspace{-4mm}~
以下是全文
\documentclass{article}
\usepackage{framed,color}
\definecolor{shadecolor}{rgb}{.9, .9, .9}
\newenvironment{myframe}{%
\def\FrameCommand{\fboxsep=\FrameSep \colorbox{shadecolor}}%
\MakeFramed {\hsize\linewidth\advance\hsize-\width \FrameRestore}}%
{\endMakeFramed}
\begin{document}
test a frame within an enumerate environment
\begin{enumerate}
\item abc\\[-8mm]~
\begin{myframe}
def
\end{myframe}
\end{enumerate}
\end{document}