Minted가 여러 페이지에 걸쳐 나누도록 하고 캡션을 목록 끝 부분과 함께 유지하는 방법은 무엇입니까?

Minted가 여러 페이지에 걸쳐 나누도록 하고 캡션을 목록 끝 부분과 함께 유지하는 방법은 무엇입니까?

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}

EDIT2: 무엇이 잘못되었는지 보여주기 위해 최소한의 예를 만들었습니다. https://gist.github.com/jaen/68c6fe78c83d5d58721f

Ch1은 좋은 동작입니다 - 생성된 중단, 캡션은 목록 끝 옆에서 시작,
Ch2는 동일한 페이지에 있고 잘못 작동합니다. 생성된 것은 중단되지 않습니다(캡션은 필요한 위치에서 시작하지만).
Ch3에는 더 긴 코드가 있습니다. 예상한 대로 생성된 중단이지만 캡션은 다음 페이지로 푸시되고 목록 직후에 시작되지 않습니다.
Ch4는 다시 동일한 페이지입니다. 둘 다 생성 중단을 허용하지 않고 캡션을 다음 페이지로 푸시합니다.
Ch5는 여전히 더 긴 코드 샘플입니다. 다시 생성된 중단, 하지만 캡션은 다음 페이지로 푸시되고,
Ch6은 동일한 페이지이고 주석 처리되어 있습니다. 왜냐하면 주석 처리를 제거하면 컴파일조차 되지 않고 코드 + 캡션을 한 페이지에 맞추려고 무한 루프에 들어가는 것처럼 보이기 때문입니다. '티.

내가 원하는 것은 a) 발행된 페이지가 여러 페이지에 걸쳐 나누는 동작, b) 캡션이 항상 목록 끝 옆에서 시작하고 다음 페이지로 푸시되지 않는 동작을 얻는 것입니다.
그리고 하나도 찾을 수 없는 것 같아요. 누구나?

답변1

해결책 은 다음과 같습니다 tcolorbox(MWE가 최소가 아니므로 관련 코드만 해당). 나는을 제거 \usepackage{mdframed}하고 대신 다음을 추가했습니다.

\usepackage{tcolorbox}
\tcbuselibrary{breakable}

패키지를 사용하면 tcolorbox깨지기 쉬운 상자를 가질 수 있습니다. 이는 귀하의 명령 내에서 사용됩니다(동일 페이지 버전의 목적이 무엇인지 이해하지 못했습니다). 다음 예제는 상자와 같은 조판입니다(모양을 사용자 정의하는 방법을 보려면 의 문서를 살펴보십시오 tcolorbox. 캡션을 상자 아래쪽에 넣었습니다. 이것은 디자인 결정이므로 변경할 수 있습니다). 당신이 원하는 방식으로.

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

관련 정보