Tcolorbox: Цвет фона субтитров

Tcolorbox: Цвет фона субтитров

Как исправить переход между фоновыми цветами? 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}

и результат:

введите описание изображения здесь

Большое спасибо; Харальд

решение1

Это действительно странно и, вероятно, является ошибкой. Хак в коде ниже устраняет проблему, чтобы произвести:

введите описание изображения здесь

но я не понимаю, что происходит. before skip=...Предполагается, что это должно решать эту проблему, но регулировка величины пропуска сама по себе не решает проблему. Аналогично, это можно сделать, используя только команду, \vskipно я не смог заставить это работать. Я смог решить проблему, только имея и a , и \vskipa before skip. Вот хак:

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

Возможно, вам придется отрегулировать это \vskipзначение, так как, по-моему, это -\baselineskipнемного завышает высоту субтитров, но с эстетической точки зрения использование этого параметра более приятно, чем выбор случайного расстояния.

решение2

Намеренно, есть некоторое расстояние между разделительной линией и содержимым нижней части коробки. Добавление опций draftпомогает понять, что происходит:

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

введите описание изображения здесь

Расстояние между bicolorразделительной линией и содержимым нижней части составляет middle(по умолчанию: 2 мм) плюс boxsep(по умолчанию: 1 мм). Вы видите эти расстояния белым и розовым цветом.

Субтитры начинаются точно в начале нижней части (вы можете заметить пунктирную линию в верхней части субтитров).

Чтобы переместить субтитр вверх к разделительной линии, можно использовать enlarge top initially byдля изменения ограничивающего прямоугольника субтитра. Это работает, пока высота субтитра больше исправленного расстояния. На самом деле, я бы добавил небольшое дополнительное расстояние, чтобы избежать оптических сбоев при сопоставлении двух строк, например, используйте 3.1mmдля значений по умолчанию:

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

Это дает:

введите описание изображения здесь

Связанный контент