为每个包含 mdframed 的页面添加“标签”

为每个包含 mdframed 的页面添加“标签”

假设我有一个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}

目前尚未实现对重复框架标题的任何修改。

在此处输入图片描述

相关内容