我正在使用包framed
来创建我自己的带有漂亮框架的引文环境。但是,当使用该包afterpage
将图形移至下一页并且下一页上的第一件事是框架时,框架会覆盖图形的标题。如果图形和框架之间有一些文本,则不会发生这种情况。
我怎样才能改变我的框架环境,以使其不覆盖标题?
梅威瑟:
\documentclass[12pt,a4paper,twoside,openany,fleqn]{book}
\usepackage[ngerman]{babel}
\usepackage{lipsum}
\usepackage{xcolor}
\usepackage{framed}
\usepackage{changepage}
\usepackage{afterpage}
\definecolor{lightgray}{HTML}{F0F0F0}
\definecolor{darkerlightgray}{HTML}{E0E0E0}
\newenvironment{myQuote}{%
\OuterFrameSep=0pt % space before and after box
\def\FrameCommand{%
\fboxsep=6pt %padding thickness
\fcolorbox{darkerlightgray}{lightgray}%
}%
\MakeFramed{\hsize\linewidth\advance\hsize-\width\FrameRestore}%
\noindent% disable indenting first paragraph
\begin{adjustwidth}{}{7pt}%
\vspace{-0.5\parskip}%
}
{%
\vspace{2pt}\end{adjustwidth}\endMakeFramed\vspace{-\parskip}%
}
\renewenvironment{quote}{\begin{myQuote}\em}{\end{myQuote}}
\begin{document}
\chapter{First Chapter}
\lipsum[2]
\afterpage{
\begin{figure}[htp]
\rule{\textwidth}{0.2\textheight}
\caption{my first figure}
\end{figure}
}
\lipsum[6]
\begin{quote}
Quote OK
\end{quote}
\lipsum[6]
\begin{quote}
Quote not OK (caption is covered)
\end{quote}
\lipsum[1]
\afterpage{
\begin{figure}[htp]
\rule{\textwidth}{0.2\textheight}
\caption{my second figure}
\end{figure}
}
\lipsum[1-2]
\begin{quote}
Quote OK
\end{quote}
\lipsum[1]
\end{document}
答案1
我意识到,它tcolorbox
处理脚注的方式与包不同framed
。由于我需要所有脚注都位于页面底部,所以我摆弄了包代码并想出了这个解决方案:
\usepackage{etoolbox}
\makeatletter
\tracingpatches
\patchcmd{\MakeFramed}{\penalty\@M \vskip 2\baselineskip \vskip\height}{\penalty\@M \vskip 1pt \vskip\height}{}{}
\patchcmd{\MakeFramed}{\penalty9999 \vskip -2\baselineskip \vskip-\height}{\penalty9999 \vskip -1pt \vskip-\height}{}{}
\makeatother
我不能保证这在所有情况下都有效,但是,MWE 中的问题以及我在博士论文中遇到的其他问题都消失了。也许有人可以评论一下这是否是一个好的解决方案,或者如何让它变得更好。