假设我有一个mdframed
跨越几页的内容。
每个框架mdframed
都有一个标题,但由于一个框架可能跨越多页,读者在快速搜索信息时可能会忽略框架中实际讨论的内容。
因此,我想做的是在每个页面上添加一种“标题”(就像许多书将章节标题和/或章节放在页面的某个位置一样)。
然而,“页眉”实际上是框架标题或其他类似的文本,放置在mdframed
除第一页之外的每一页上(因为它可能已经存在frametitle
)。
如果在左边距和右边距,文本可能是垂直的;如果在顶部和底部,文本可能是水平的。
有什么方法可以将其添加到mdframed
?基本上,它只需要一些智能,第一次不添加自己,并在框架结束时做一些不同的事情,否则它每次都会将自己放在框架边界上的相同位置。
更新:
代码演示了 mdframed 的问题/“错误”。框架标题出现在框架末尾,但出现在新页面上的第一项(在我的情况下,情况正好相反,因为我使用的内容类型,我在开头而不是结尾处获得了没有任何内容的框架标题(在同一页面上)。
基本上,如果该页面上的内容为空,则框架应该在前一页结束。(或者在我的情况下,框架应该从下一页开始(在我的情况下,如果我可以将其放在正确的位置,我可以使用 \newpage 来解决问题,这很困难))
还请注意,同一帧上后续帧标题的圆角看起来很糟糕。后续帧内标题的圆角应为 0。
\documentclass{book}
\usepackage{tikz, pgffor}
\usepackage[framemethod=TikZ]{mdframed}
\newcommand{\myframe}[2]{
\begin{mdframed}[rightline=true,
frametitlerule=true,frametitlerulecolor=blue,
frametitlebackgroundcolor=gray,repeatframetitle=true,
align=center,linecolor=gray, middlelinewidth=2pt,roundcorner=10pt, innerbottommargin=0.5cm, innertopmargin=0.05cm, frametitleaboveskip=8.5pt, skipbelow=10pt,frametitlealignment={\hspace*{0.25cm}},frametitle={#1}]#2\end{mdframed}
}%
\begin{document}
\foreach \l in {1,2,3,4,5,6,7,8,9} {\myframe{Title}{Frame \l{} content \hrule \vspace{8cm}
\hrule}}
\end{document}
答案1
该包mdframed
提供了选项repeatframetitle
。
下面是一个例子:
\documentclass{article}
\usepackage[framemethod=tikz,repeatframetitle=true,frametitlebackgroundcolor=green]{mdframed}
\usepackage{kantlipsum}
\begin{document}
\begin{mdframed}[frametitle={My Frametitle}]
\kant
\end{mdframed}
\end{document}
目前尚未实现对重复框架标题的任何修改。