我的书中有几页文字,我想把它们放在一个浅灰色背景的框中。我尝试使用 mdframed,从外观上看,它正是我想要的。但是,我在几页上使用了(几个)脚注,它们都出现在框的末尾,要么作为脚注,要么在框中,这取决于我的设置。据我所知,mdframed 不知道如何继续脚注计数并将脚注放在相应的页面上,所以我想知道:有没有一种很好的 mdframed 替代品,可以创建具有不同颜色背景的框,完全支持脚注?
答案1
mdframed 和 tcolorbox(我总是更喜欢后者而不是 mdframed)都无法处理与可破坏框结合的“全局”脚注。您可以尝试以下类似方法手动绘制背景,但请注意这会干扰输出例程。这意味着
- 它可能与那些修改输出的包发生冲突
- 它可能会破裂
- 它可能会对页面间距产生副作用
- 它可能会破裂
- 它可能会破裂
- 您应该仔细决定何时启用标记(使用 \addmarkstrue)以及何时禁用它们(使用 \addmarksfalse)。
我没有尝试为第一页或最后一页添加特殊绘图,但从页面中间开始绘制矩形应该很困难。我也没有检查双列模式或特殊输出模式。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\makeatletter
\newif\ifaddmarks
\gdef \@makecol {%
\ifvoid\footins
\ifaddmarks
\setbox\@outputbox \vbox{%
\boxmaxdepth \@maxdepth
\pgfmark{startof\thepage}%
\unvbox \@cclv
\@tempskipa\lastskip \unskip\pgfmark{endof\thepage}\vskip\@tempskipa
}%
\else
\setbox\@outputbox \box\@cclv
\fi
\else
\setbox\@outputbox \vbox {%
\boxmaxdepth \@maxdepth
\ifaddmarks\pgfmark{startof\thepage}\fi%
\unvbox \@cclv
\ifaddmarks\@tempskipa\lastskip \unskip\pgfmark{endof\thepage}\vskip\@tempskipa\fi
\vskip \skip\footins
\color@begingroup
\normalcolor
\footnoterule
\unvbox \footins
\color@endgroup
}%
\fi
\let\@elt\relax
\xdef\@freelist{\@freelist\@midlist}%
\global \let \@midlist \@empty
\@combinefloats
\ifvbox\@kludgeins
\@makespecialcolbox
\else
\setbox\@outputbox \vbox to\@colht {%
\@texttop
\dimen@ \dp\@outputbox
\unvbox \@outputbox
\vskip -\dimen@
\@textbottom
}%
\fi
\global \maxdepth \@maxdepth
}
\usepackage{fancyhdr}
\pagestyle{fancy}
\chead{%
\ifaddmarks
\tikz[overlay,remember picture]
\draw[red,fill=gray!50!white,opacity=0.5]
([xshift=-2pt]pic cs:startof\thepage)
rectangle
([xshift=\linewidth+2pt,yshift=-2pt]pic cs:endof\thepage);
\fi
}
\begin{document}
\addmarkstrue
abc\newpage
blblbl \begin{figure}[t!] a figure\end{figure}
alblb
blblbl \begin{figure}[h!] a figure\end{figure}
alblb
\newpage
aaaa
\lipsum
\lipsum*[1-2] bböööbö\footnote{\lipsum[1]}
\lipsum*[1-2]\footnote{\lipsum[1]}
\lipsum*[1-2]\footnote{\lipsum[1]}
\newpage\addmarksfalse %needed to avoid a gray empty page because of the splitted footnote
\end{document}