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}
}