如何消除框架包中的框架的水平间距?

如何消除框架包中的框架的水平间距?

我正在使用 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}

有人能告诉我如何消除多余的左填充,以便框架的内容可以与列表项对齐吗?非常感谢!

屏幕截图如下:

https://i.stack.imgur.com/VR1SF.png

答案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}

相关内容