비어 있거나 숨겨진 내부와 비어 있지 않은 프레임이 있는 깨지기 쉬운 tcolorbox

비어 있거나 숨겨진 내부와 비어 있지 않은 프레임이 있는 깨지기 쉬운 tcolorbox

내부에 색상이나 기타 그리기 코드가 포함되어 있지 않아 그 뒤에 있는 색상이 무엇이든 표시하는 깨지기 쉬운 tcolorbox를 정의하고 싶습니다.tcolorbox라이브러리에는 내부 그림을 제어하는 ​​옵션이 있지만 이 키와 해당 키 사이의 상호 작용을 이해하는 데 어려움 을 skins겪었 습니다 . 이전 키는 내부에 아무 작업도 수행하지 않고 상자 내용물 주변의 프레임을 인쇄할 것으로 기대하지만 대신 상자는 어두운 회색 배경으로 인쇄됩니다.interior emptyinterior hiddenframe emptyframe hidden

에서이 답변frame empty, 두 가지를 모두 설정 한 interior empty다음 로 프레임을 그려서 이 문제를 해결할 수 있다는 것을 알았습니다 borderline. 이것은 깨지지 않은 상자에 작동하지만 상자가 깨지면 frame emptyinterior empty키가 무시되고 tcolorbox 기본값이 적용되는 것 같습니다.

\documentclass{article}

\usepackage[skins,breakable]{tcolorbox}
\usepackage{kantlipsum}

\pagecolor{yellow!10}

\tcbset{enhanced}

\begin{document}

\begin{tcolorbox}[
  interior empty
  ]
This is a \textbf{tcolorbox}.
\end{tcolorbox}

\begin{tcolorbox}[
  interior empty,
  frame empty % don't want hidden frame
  ]
This is a \textbf{tcolorbox}.
\end{tcolorbox}

\begin{tcolorbox}[
  interior hidden
  ]
This is a \textbf{tcolorbox}.
\end{tcolorbox}

\begin{tcolorbox}[
  interior hidden,
  frame hidden, % don't want hidden frame
  ]
This is a \textbf{tcolorbox}.
\end{tcolorbox}

\begin{tcolorbox}[
  frame empty,
  interior empty,
  borderline={1pt}{0pt}{},
]
This is a \textbf{tcolorbox}.
\end{tcolorbox}

\begin{tcolorbox}[
  breakable,
  frame empty,
  interior empty,
  borderline={1pt}{0pt}{},
]
This is a \textbf{tcolorbox}.
\kant[1-3]
\end{tcolorbox}
\end{document}

티박스

"프레임"과 "인테리어"가 실제로 무엇을 의미하는지 오해하고 있는 것 같습니다. 하지만 내부가 비어 있는 깨질 수 있는 tcolorbox를 만드는 방법이 있습니까?

편집하다

samcarter_is_at_topanswers.xyz가 주석에서 지적했듯이 "프레임"은 상자 주위에 그려진 선이 아니라 상자 뒤에 채워진 직사각형입니다. 이것은 interior empty및 의 출력을 설명합니다 interior hidden.

나는 또한 일반적으로 다음 과 breakable잘 상호 작용하지 않는다는 것을 발견했습니다.frame emptyinterior empty

\begin{tcolorbox}[
  breakable,
  interior empty,
  frame empty
  ]
This is a \textbf{tcolorbox}.
\kant[1-5]
\end{tcolorbox}

파손되면 프레임과 내부 기본값이 재설정됩니다.

상황에 따라 적응하려고 노력 중입니다.이 답변에뮬레이션을 위해thmboxtcolorbox를 사용하면 미리 설정된 배경색이 아닌 페이지 배경색을 사용할 수 있습니다 white. 이는 thmbox의 동작이기 때문입니다.

답변1

대답은 문서를 읽는 것입니다 :)

일반적으로 프레임 엔진은 전체 상자 영역을 색상으로 채우고 다른 엔진은 특정 영역을 다른 색상으로 채웁니다. [...] 특정 상자의 경우 더 섬세한 절차가 필요합니다. 예를 들어 상자가 반투명해야 하는 경우 이미 칠해진 영역을 칠하지 않은 상태로 만들 수 없습니다. 따라서 보다 정교한 프레임 엔진에서는 내부 영역과 선택적으로 제목 영역이 칠해지는 프레임에 구멍을 뚫었습니다. 생성된 스킨을 직소 스킨이라고 합니다.

따라서 퍼즐 상자를 사용해야 합니다.

\documentclass{article}
\usepackage{xcolor}
\usepackage{pagecolor}
\pagecolor{yellow}
\usepackage[most]{tcolorbox}
\usepackage{kantlipsum}

\begin{document}

\begin{tcolorbox}[
  enhanced jigsaw,
  breakable,
  opacityback=0,
]
This is a \textbf{tcolorbox}.
\kant[1-5]
\end{tcolorbox}

\end{document}

여기에 이미지 설명을 입력하세요

답변2

실제로 tcolorbox를 투명하게 만드는 대신 다음과 같이 만들 수 있습니다.바라보다페이지와 같은 색상으로 색칠하여 투명하게 만듭니다.

\documentclass{article}
\usepackage{xcolor}
\usepackage[skins,breakable]{tcolorbox}
\usepackage{kantlipsum}
\usepackage{pagecolor}

\pagecolor{yellow}

\tcbset{enhanced}

\begin{document}

\begin{tcolorbox}[
  breakable,
  colback=\thepagecolor
]
This is a \textbf{tcolorbox}.
\kant[1-5]
\end{tcolorbox}


\end{document}

여기에 이미지 설명을 입력하세요

답변3

및 와 함께 제공되면 예상대로 작동하지 않지만 frame empty키 에 제공되면 작동합니다 . 이런 식으로 우리는 프레임을 가짜로 만들 수 있습니다 .interior emptybreakableextrasborderline

\documentclass{article}

\usepackage[skins,breakable]{tcolorbox}
\usepackage{kantlipsum}

\pagecolor{yellow!10}

\begin{document}

\begin{tcolorbox}[
  breakable,
  extras={frame empty,interior empty},
  borderline={1pt}{0pt}{}
  ]
This is a \textbf{tcolorbox}.
\kant[1-5]
\end{tcolorbox}

\end{document}

깨지기 쉬운 상자

답변4

상황에 따라 적응하려고 노력 중입니다.이 답변에뮬레이션을 위해thmboxtcolorbox를 사용하면 미리 설정된 배경색이 아닌 페이지 배경색을 사용할 수 있습니다 white. 이는 thmbox의 동작이기 때문입니다.

당신이 필요한 것 같습니다

\tcbset{
    thmbox/.style={
        % ...
        % colback=white,
        % colframe=white,
        % colbacktitle=white,
        %% in order to imitate effect of "enhanced jigsaw, boxrule=0pt"
        frame engine=empty,
        interior titled engine=empty,
        interior engine=empty,
        extras broken={
          frame engine=empty,
          interior titled engine=empty,
          interior engine=empty
        },
        % ...
    }
}

여기에 이미지 설명을 입력하세요

링크된 내용을 기반으로 한 전체 예@Ignasi의 답변:

\documentclass{article}
\usepackage{amssymb}
\usepackage{lipsum}
\usepackage{tcolorbox}
\tcbuselibrary{breakable, skins, theorems}

\pagecolor{yellow!10}

\tcbset{
    thmbox/.style={
        breakable,
        enhanced,
        sharp corners=all,
        fonttitle=\bfseries\normalsize,
        fontupper=\normalsize\itshape,
        top=0mm,
        bottom=0mm,
        right=0mm,
        % colback=white,
        % colframe=white,
        % colbacktitle=white,
        %% in order to imitate effect of "enhanced jigsaw, boxrule=0pt".
        %% or put the following three lines in "extras unbroken={...}"
        frame engine=empty,
        interior titled engine=empty,
        %% every theorem has a title, so this is just for completeness
        interior engine=empty,
        extras broken={
          frame engine=empty,
          interior titled engine=empty,
          interior engine=empty
        },
        coltitle=black,
        attach boxed title to top left,
        boxed title style={empty, size=minimal, bottom=1.5mm},
        overlay unbroken ={
            \draw (title.south west)--(title.south east);
            \draw ([xshift=3.5mm]frame.north west)|-%
                  (frame.south east)--(frame.north east);},
        overlay first={
            \draw (title.south west)--(title.south east); 
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);
            \draw (frame.north east)--(frame.south east);},
        overlay middle={
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);
            \draw (frame.north east)--(frame.south east);},
        overlay last={
            \draw ([xshift=3.5mm]frame.north west)|-%
                  (frame.south east)--(frame.north east);},
        },
    S/.style={thmbox, 
        overlay unbroken ={
            \draw (title.south west)--(title.south east);
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay first={
            \draw (title.south west)--(title.south east); 
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay middle={
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay last={
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        },
    L/.style={thmbox, 
        overlay unbroken ={
            \draw (title.south west)--(title.south east);
            \draw ([xshift=3.5mm]frame.north west)|-([xshift=15mm]frame.south west);},
        overlay first={
            \draw (title.south west)--(title.south east); 
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay middle={
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay last={
            \draw ([xshift=3.5mm]frame.north west)|-([xshift=15mm]frame.south west);},
        },
    LQ/.style={thmbox, 
        overlay unbroken ={
            \draw (title.south west)--(title.south east);
            \draw ([xshift=3.5mm]frame.north west)|-([xshift=15mm]frame.south west);
            \node[anchor=east] at (frame.south east) {$\square$};},
        overlay first={
            \draw (title.south west)--(title.south east); 
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay middle={
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay last={
            \draw ([xshift=3.5mm]frame.north west)|-([xshift=15mm]frame.south west);
            \node[anchor=east] at (frame.south east) {$\square$};},
    },  
}

\newtcbtheorem[]{tcbthmbox}{Theorem}{thmbox}{theo}
\newtcbtheorem[]{tcbSthmbox}{Theorem}{thmbox,S}{theo}
\newtcbtheorem[]{tcbLthmbox}{Theorem}{thmbox,L}{theo}
\newtcbtheorem[]{proof}{Démonstration}{thmbox,LQ}{theo}

\begin{document}

\begin{tcbthmbox}{First result}{}
\lipsum[3]
\end{tcbthmbox}

\begin{tcbSthmbox}{Important}{}
\lipsum[2]
\end{tcbSthmbox}

\begin{tcbLthmbox}{Final}{}
\lipsum[1]
\end{tcbLthmbox}

\begin{proof}{Proof}{}
\lipsum[1]
\end{proof}
\end{document}

관련 정보