框架环境覆盖了后页的图形标题

框架环境覆盖了后页的图形标题

我正在使用包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 中的问题以及我在博士论文中遇到的其他问题都消失了。也许有人可以评论一下这是否是一个好的解决方案,或者如何让它变得更好。

相关内容