Я хотел бы определить разрываемый tcolorbox, внутренняя часть которого не содержит цвета или другого кода рисования, поэтому отображает любой цвет, находящийся за ним.tcolorbox
в skins
библиотеке есть опции interior empty
и interior hidden
, которые управляют прорисовкой внутренней части, хотя я с трудом понимаю взаимодействие между этими клавишами и соответствующими frame empty
и frame hidden
. Я ожидал, что первые клавиши напечатают рамку, окружающую содержимое коробки, без каких-либо действий с внутренней частью, но вместо этого коробка напечатана с темно-серым фоном.
Отэтот ответ, я вижу, что мы можем обойти это, установив оба frame empty
и interior empty
затем нарисовав рамку с помощью borderline
. Это работает для целостных ящиков, но если ящик сломан, то, похоже, клавиши frame empty
и interior 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 empty
и interior empty
в целом:
\begin{tcolorbox}[
breakable,
interior empty,
frame empty
]
This is a \textbf{tcolorbox}.
\kant[1-5]
\end{tcolorbox}
Это сбрасывает настройки рамы и интерьера по умолчанию в случае поломки.
Для контекста я пытаюсь адаптироватьэтот ответдля эмуляцииthmbox
с tcolorbox для использования цвета фона страницы, а не предустановленного цвета фона white
, поскольку это поведение thmbox.
решение1
Оказывается, ответ — читать документы :)
Обычно движок рамы заполняет всю область коробки цветом, а другие движки заполняют определенные области другими цветами. [...] Для некоторых коробок требуется более тонкая процедура. Например, если коробка должна быть полупрозрачной, уже окрашенную область нельзя сделать неокрашенной. Поэтому более сложные движки рамы выпиливают отверстия в раме, где внутренняя область и, по желанию, область заголовка будут окрашены. Полученные оболочки называются оболочками-мозаиками.
Итак, нужно просто использовать Jigsaw Box:
\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 empty
не работают так, как ожидается, если заданы с breakable
, они работают, если заданы с extras
key. Таким образом, мы можем подделать фрейм с borderline
.
\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
Для контекста я пытаюсь адаптироватьэтот ответдля эмуляции
thmbox
с tcolorbox для использования цвета фона страницы, а не предустановленного цвета фона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's ответ:
\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}