Tcolorbox: Cor de fundo da legenda

Tcolorbox: Cor de fundo da legenda

Como posso corrigir a transição entre as cores de fundo? O MWE:

\documentclass[a4paper]{article}
\usepackage[scale=.85]{geometry}
\usepackage{tcolorbox,enumitem}
\tcbuselibrary{skins,xparse}

\begin{document}
\noindent

\begin{tcolorbox}[skin=bicolor,title=Main Title,
    colframe=red!75!black,colback=blue!10!white,colbacklower=green!10,width=0.5\linewidth,height=0.5\linewidth]
    The upper part. \par ~~~\par ~~~\par ~~~\par ~~~\par ~~~\par ~~~\par ~~~\par ~~~\par ~~~
\tcblower
\tcbsubtitle[before skip=\baselineskip]%
      {My subtitle}
    The lower part.
  \end{tcolorbox}


\end{document}

e o resultado é:

insira a descrição da imagem aqui

Muito obrigado; Harald

Responder1

Isso é realmente estranho e provavelmente é um bug. O hack no código abaixo corrige o problema de produção:

insira a descrição da imagem aqui

mas não entendo o que está acontecendo. O before skip=...programa deveria cuidar disso, mas ajustar a quantidade de salto por si só não resolve o problema. Da mesma forma, deveria ser possível fazer isso usando apenas um \vskipcomando, mas também não consegui fazer isso funcionar. Só consegui resolver o problema tendo um \vskipe um arquivo before skip. Aqui está o hack:

\documentclass[a4paper]{article}
\usepackage[scale=.85]{geometry}
\usepackage{tcolorbox,enumitem}
\tcbuselibrary{skins,xparse}

\begin{document}
\noindent

\begin{tcolorbox}[skin=bicolor,title=Main Title,
    colframe=red!75!black,colback=blue!10!white,colbacklower=green!10,
    width=0.5\linewidth,
    height=0.5\linewidth]
    The upper part. \par ~~~\par ~~~\par ~~~\par 
    ~~~\par ~~~\par ~~~\par ~~~\par ~~~\par ~~~
\tcblower\vskip-\baselineskip
\tcbsubtitle[before skip=-\baselineskip]{My subtitle}
    The lower part.
  \end{tcolorbox}

\end{document}

Pode ser necessário ajustar a \vskipquantidade, pois acho que isso -\baselineskipcoloca a legenda um pouco alta demais, mas usar isso foi mais esteticamente agradável do que escolher uma distância aleatória.

Responder2

Deliberadamente, existe alguma distância entre a linha de separação e o conteúdo da parte inferior da caixa. Adicionar as draftopções ajuda a entender o que acontece:

\documentclass[a4paper]{article}
\usepackage[scale=.85]{geometry}
\usepackage{tcolorbox}
\tcbuselibrary{skins,xparse}

\begin{document}

\begin{tcolorbox}[skin=bicolor,draft,title=Main Title,
    colframe=red!75!black,colback=blue!10!white,colbacklower=green!10,width=0.5\linewidth,height=0.5\linewidth]
    The upper part. \par ~~~\par ~~~\par ~~~\par ~~~\par ~~~\par ~~~\par ~~~\par ~~~\par ~~~
\tcblower
\tcbsubtitle[]%
      {My subtitle}
    The lower part.
\end{tcolorbox}

\end{document}

insira a descrição da imagem aqui

A distância entre a bicolorlinha de separação e o conteúdo da parte inferior é middle(padrão: 2mm) mais boxsep(padrão: 1mm). Você vê essas distâncias nas cores branca e rosa.

A legenda começa exatamente no início da parte inferior (você pode ver a linha tracejada no topo da legenda).

Para mover a legenda para cima, até a linha de separação, pode-se usar enlarge top initially bypara alterar a caixa delimitadora da legenda. Isso funciona desde que a altura da legenda seja maior que a distância corrigida. Na verdade, eu adicionaria uma pequena distância adicional para evitar falhas ópticas quando duas linhas forem correspondidas, por exemplo, use 3.1mmpara os valores padrão:

\documentclass[a4paper]{article}
\usepackage[scale=.85]{geometry}
\usepackage{tcolorbox}
\tcbuselibrary{skins,xparse}

\begin{document}

\begin{tcolorbox}[skin=bicolor,title=Main Title,
    colframe=red!75!black,colback=blue!10!white,colbacklower=green!10,width=0.5\linewidth,height=0.5\linewidth]
    The upper part. \par ~~~\par ~~~\par ~~~\par ~~~\par ~~~\par ~~~\par ~~~\par ~~~\par ~~~
\tcblower
\tcbsubtitle[enlarge top initially by=-3.1mm]% -(middle+boxsep+tinydelta)
      {My subtitle}
    The lower part.
\end{tcolorbox}


\end{document}

Isto dá:

insira a descrição da imagem aqui

informação relacionada