ミントを複数のページに分割しながら、キャプションをリストの最後と一緒に保つにはどうすればよいでしょうか?

ミントを複数のページに分割しながら、キャプションをリストの最後と一緒に保つにはどうすればよいでしょうか?

minted背景色があり、複数のページに分割できるリストを作成したい。その場合の通常のアドバイスはmdframed環境を使用することであり、私はこのアドバイスに従うコマンドを作成しました。

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

しかし、その場合、キャプションをリストと同じページに保持するように簡単に指定することはできないようです。また、samepage環境によってリストがページ間で分割されないようにするため、これは私が望んでいることではありません。

キャプションをリストの下部に結び付けて、リストが分割されることなく、常に同じページに表示されるようにする解決策はありますか?

編集:コマンドは次の呼び出し
\clojurefileで生成されます:\newmintedfile

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

編集2: 何が間違っているかを示すために、最小限の例を作成しました。 https://gist.github.com/jaen/68c6fe78c83d5d58721f

Ch1 は適切な動作です - minted は中断し、キャプションはリストの終わりの次に始まります、
Ch2 は同じページで動作し、正しく動作しません - minted は中断しません (ただし、キャプションは必要な場所から始まり)、
Ch3 はコードが長く、minted は予想どおりに中断しますが、キャプションは次のページにプッシュされ、リストの直後には開始されません、
Ch4 は再び同じページです - minted は中断せず、キャプションは次のページにプッシュされます、
Ch5 は依然として長いコード サンプルです - 再び minted は中断しますが、キャプションは次のページにプッシュされます、
Ch6 は同一ページでコメント アウトされています。コメントを外すとコンパイルすら行われないためです。1 ページにコード + キャプションを収めようとしてそれができないという無限ループに陥っているようです。

私が求めているのは、a) ページをまたいで改行する、b) キャプションが常にリストの末尾の次に始まり、次のページに押し出されない、という動作です。
しかし、そのようなものが見つからないようです。誰かいますか?

答え1

ここにtcolorbox解決策があります (MWE が最小限ではないため、関連するコードのみ)。 を削除し\usepackage{mdframed}、代わりに次のコードを追加しました。

\usepackage{tcolorbox}
\tcbuselibrary{breakable}

これはパッケージを使用しtcolorbox、分割可能なボックスを作成できるようにします。これらはコマンド内で使用されます (samepage バージョンの目的がわかりません)。次の例では、このようなボックスをタイプセットします (tcolorbox外観をカスタマイズする方法については、のドキュメントを参照してください)。キャプションをボックスの下部に配置しました。これは設計上の決定であり、もちろん必要に応じて変更できます。

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

関連情報