Wie kann man dafür sorgen, dass „Minted“ auf mehrere Seiten aufgeteilt wird, die Überschrift aber mit dem Ende der Auflistung zusammenbleibt?

Wie kann man dafür sorgen, dass „Minted“ auf mehrere Seiten aufgeteilt wird, die Überschrift aber mit dem Ende der Auflistung zusammenbleibt?

Ich möchte eine Liste erstellen minted, die eine Hintergrundfarbe hat und auf mehrere Seiten aufgeteilt werden kann. In diesem Fall empfiehlt es sich normalerweise, die mdframedUmgebung zu verwenden, und ich habe einen Befehl geschrieben, der diesem Rat folgt.

\newcommand{\clojurecode}[4]{
    \label{code:#2}
    \begin{mdframed}[backgroundcolor=LightGray,hidealllines=true,leftmargin=10mm]
      \clojurefile{#1}
    \end{mdframed}
    \captionof{code}[#3]
      {#4}
}

In diesem Fall scheint es mir jedoch nicht möglich zu sein, ohne Weiteres anzugeben, dass die Überschrift auf derselben Seite wie die Auflistung angezeigt werden soll. Zudem samepagewürde die Umgebung verhindern, dass die Auflistung auf mehrere Seiten aufgeteilt wird, was ich jedoch nicht möchte.

Gibt es eine Lösung, um die Überschrift an das Ende der Auflistung zu binden, sodass sie immer auf derselben Seite erscheint, die Auflistung aber trotzdem unterbrochen wird?

BEARBEITEN:
\clojurefileMit diesem Aufruf wird ein Befehl generiert \newmintedfile:

\newmintedfile{clojure}{framesep=2mm,
                        baselinestretch=1.2,
                        numbersep=16pt,
                        fontsize=\footnotesize,
                        linenos,
                        breaklines,
                        breakanywhere}

EDIT2: Ich habe ein Minimalbeispiel erstellt, um zu demonstrieren, was falsch ist: https://gist.github.com/jaen/68c6fe78c83d5d58721f

Kapitel 1 weist ein gutes Verhalten auf – Minted bricht ab, die Überschrift beginnt neben dem Listenende,
Kapitel 2 hat dieselbe Seite und verhält sich falsch – Minted bricht nicht ab (die Überschrift beginnt jedoch dort, wo sie sollte),
Kapitel 3 weist einen längeren Code auf – Minted bricht wie erwartet ab, aber die Überschrift wird auf die nächste Seite verschoben und beginnt nicht unmittelbar nach der Listenauflistung,
Kapitel 4 ist wieder dieselbe Seite – es lässt Minted nicht abbrechen und verschiebt die Überschrift auf die nächste Seite,
Kapitel 5 ist noch immer ein längeres Codebeispiel – Minted bricht wieder ab, aber die Überschrift wird auf die nächste Seite verschoben,
Kapitel 6 ist dieselbe Seite und auskommentiert, weil es sich nicht einmal kompilieren lässt, wenn man es auskommentiert. Es scheint, als gerät es in eine Endlosschleife, in der versucht wird, Code und Überschrift auf eine Seite zu packen, was aber nicht gelingt.

Ich möchte ein Verhalten erreichen, bei dem a) Umbrüche über mehrere Seiten hinweg erfolgen, b) die Überschrift immer am Ende der Auflistung beginnt und nicht auf die nächste Seite verschoben wird.
Und ich kann anscheinend keins finden. Jemand?

Antwort1

Hier ist eine tcolorboxLösung (nur relevanter Code, da Ihr MWE nicht minimal ist). Ich habe das entfernt \usepackage{mdframed}und stattdessen Folgendes hinzugefügt:

\usepackage{tcolorbox}
\tcbuselibrary{breakable}

Das verwendet das Paket tcolorboxund ermöglicht es Ihnen, zerbrechliche Boxen zu haben. Sie werden innerhalb Ihrer Befehle verwendet (ich habe nicht verstanden, was das Ziel Ihrer Samepage-Version ist). Das folgende Beispiel setzt eine solche Box (sehen Sie sich die Dokumentation an, tcolorboxum zu sehen, wie Sie das Erscheinungsbild anpassen können). Ich habe die Überschrift in den unteren Teil der Box gesetzt. Dies ist eine Designentscheidung, Sie können sie natürlich nach Belieben ändern.

\newcommand{\clojurecode}[4]{
    \label{code:#2}
    \begin{tcolorbox}[breakable,colback=LightGray,left=10mm]
        \clojurefile{#1}
        \tcblower
        \captionof{code}[#3]{#4}
    \end{tcolorbox}
}

verwandte Informationen