Пакет colorframed
(и его предшественник framed
) добавляет дополнительное вертикальное пространство внутри другой среды.
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\usepackage{colorframed}
\colorlet{shadecolor}{lightgray}
\begin{document}
This is text before quotation, but it must be longer than one line for comparison purposes.
\begin{snugshade*}
Purely fictional thinking leads to testing text inside shaded text environments.
\end{snugshade*}
This is text between quotation, but it must be longer than one line for comparison purposes.
\begin{quotation}\begin{snugshade*}
Purely fictional thinking leads to testing text inside shaded text environments.
\end{snugshade*}\end{quotation}
This is text after quotations, but it must be longer than one line for comparison purposes.
\end{document}
Есть ли способ это исправить?
решение1
Я изучил colorframed
код среды snugshade*
и взломал его, чтобы создать quotedsnugshade*
среду, допускающую необязательный параметр для управления величиной отступа.
\documentclass{article}
\usepackage[dvipsnames]{xcolor}
\usepackage{colorframed}
\colorlet{shadecolor}{lightgray}
\makeatletter
\newenvironment{quotedsnugshade*}[1][2em]{%
\def\FrameCommand##1{\hskip\@totalleftmargin
\colorframedcolorbox{shadecolor}{##1}%
\hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
\MakeFramed {\advance\hsize-\width
\advance\hsize-2\dimexpr#1\relax %%% ADDED
\@totalleftmargin\dimexpr#1\relax %%% ADDED
\linewidth\hsize
\advance\labelsep\fboxsep
\@setminipage}%
}{\par\unskip\@minipagefalse\endMakeFramed}
\makeatother
\begin{document}
This is text before quotations, but it must be longer than one line for comparison purposes.
\begin{quotedsnugshade*}
Purely fictional thinking leads to testing text inside shaded text environments.
\end{quotedsnugshade*}
This is text after quotations, but it must be longer than one line for comparison purposes.
\begin{quotation}
Purely fictional thinking leads to testing text inside quotation environment.
\end{quotation}
This is text after quotations, but it must be longer than one line for comparison purposes.
\begin{quotedsnugshade*}[2cm]
Purely fictional thinking leads to testing text inside shaded text environments.
\end{quotedsnugshade*}
\noindent\rule{2cm}{1pt}\dotfill margins are 2cm each\dotfill\rule{2cm}{1pt}
\end{document}
Обратите внимание, что это не тестируется с содержимым затененного элемента, являющимся списком.
решение2
С помощью этого tcolorbox
пакета вы можете одновременно использовать цветной фон, разрывы страниц и настраивать поля (при необходимости можно отрегулировать пространство сверху и снизу):
\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\newtcolorbox{quack}[1][]{enhanced,breakable,frame hidden,colback=lightgray,sharp corners,size=small,left skip=1cm,right skip=1cm,#1}
\begin{document}
This is text between quotation, but it must be longer than one line for comparison purposes.
\begin{quack}
Purely fictional thinking leads to testing text inside shaded text environments.
\end{quack}
This is text after quotations, but it must be longer than one line for comparison purposes.
\end{document}