색상 상자에서 내용과 범례 사이의 중단 방지

색상 상자에서 내용과 범례 사이의 중단 방지

상황: 을 사용하는데 tcolorbox, 상자의 내용과 범례가 페이지 나누기로 분리되는 경우가 있습니다. 나는 그것을 피하고 싶지만 상자의 내용이 깨질 수 있도록 하고 싶습니다.

내용과 범례 사이의 줄 바꿈을 억제하는 등 다양한 방법을 시도했지만(비록 차선책인 경우에도) 제가 잘못하고 있는 것 같습니다.

다음은 상황의 예입니다.

\documentclass{scrbook}

\usepackage[most]{tcolorbox}
\usepackage{setspace}
\usepackage{needspace}
\usepackage{lipsum}
\usepackage[french]{babel}

\newtcolorbox{carnetethno}[1][]{
    breakable, %pour casser les boîtes sur deux pages
    empty,
    before upper*={
        \newcommand{\transfert}{#1}
        \setstretch{1.1}
        \par\noindent\nobreak
    },
    after upper*={
        \par\textsc{\transfert}
    },
}

\begin{document}

    \section{Example}

\lipsum[1-3] \\

Bla~~\\

\begin{carnetethno}[Here the legend]

\lipsum[1]

\end{carnetethno}

\end{document}

답변1

\nopagebreak범례 바로 앞에 추가할 수 있습니다 .

\newtcolorbox{carnetethno}[1][]{
    breakable, %pour casser les boîtes sur deux pages
    empty,
    before upper*={
        \newcommand{\transfert}{#1}
        \setstretch{1.1}
        \par\noindent\nobreak
    },
    after upper*={
        \nopagebreak\par\textsc{\transfert}% <-- prevent page break before
    },
}

그건 그렇고, title키를 사용하여 범례를 처리할 수도 있습니다. 상자 아래에 넣으려면 detach title; 그런 다음 제목 텍스트를 로 사용할 수 \tcbtitletext있고 형식이 지정된 제목을 로 사용할 수 있습니다 \tcbtitle. 나는 다음 tcolorbox과 같이 정의하는 것을 제안합니다.

\newtcolorbox{carnetethno}[1][]{
    breakable, %pour casser les boîtes sur deux pages
    empty,
    before upper*={
        \setstretch{1.1}
        \par\noindent\nobreak
    },
    detach title,
    fonttitle=\scshape,
    coltitle=black,
    after upper*={
        \nopagebreak\par\tcbtitle
    },
    #1
}

인수는 #1마지막에 넣었으므로 특정 상자 하나에 추가 옵션을 설정할 수 있습니다.

전체 예:

\documentclass{scrbook}

\usepackage[most]{tcolorbox}
\usepackage{setspace}
\usepackage{needspace}
\usepackage{lipsum}
\usepackage[french]{babel}

\newtcolorbox{carnetethno}[1][]{
    breakable, %pour casser les boîtes sur deux pages
    empty,
    before upper*={
        \setstretch{1.1}
        \par\noindent\nobreak
    },
    detach title,
    fonttitle=\scshape,
    coltitle=black,
    after upper*={
        \nopagebreak\par\tcbtitle
    },
    #1
}

\begin{document}

    \section{Example}

\lipsum[1-3] \\

% Bla~~\\

\begin{carnetethno}[title={Here the legend}]

\lipsum[1]

\end{carnetethno}

\begin{carnetethno}[title={Here the legend}, coltitle=red]

\lipsum[1]

\end{carnetethno}

\end{document}

전체 예

관련 정보