Поля для позиции подзаголовка tcolorbox

Aug 20 2020

Я бы хотел, чтобы поля в субтитрах были такими же, как в заголовке окна tcolorbox.

Для установки поля в заголовке я использовал lefttitle=0mm, но не нашел ничего связанного со стилем субтитров. В MWE я бы хотел, чтобы «рамка субтитров» была выровнена так же, как и рамка заголовка.

\documentclass{article}
\usepackage{tcolorbox}
\begin{document}
\begin{tcolorbox}[title=Title Frame,
    lefttitle=0mm,
    %left=0mm, % flushes left everything : subtitle and its contents
    colback=red!5!white,
    colframe=red!75!black,
    fonttitle=\bfseries]
    This is a \textbf{tcolorbox}.
    \tcbsubtitle[before skip=\baselineskip, 
        halign=left, % does not work
        lefttitle=0mm, % does not work either
        ]%
    {Subtitle Frame (margin to be set to 0mm)}
    Further text.
\end{tcolorbox}
\end{document}

Следующий код хорошо уменьшает поле заголовка, но не подзаголовок.

Я попытался установить tcolorbox без какого-либо содержимого (или заголовка) и двух субтитров, но он отображает пустое пространство перед первым субтитром.

Ответы

2 Marijn Aug 20 2020 at 07:47

Подзаголовок - это tcolorbox внутри основного tcolorbox, со oversizeсвойством, установленным для расширения нового tcolorbox до ширины исходного поля (см. Руководство к пакету на стр. 45). Однако, видимо oversize, не lefttitleучитывает.

Решение состоит в том, чтобы установить левое поле субтитра на 0 мм и сдвинуть полосу субтитров влево на 5 мм (поле 4 мм и поле шириной 1 мм) и соответственно увеличить размер полосы справа на 4 мм (я ожидал, что это будет тоже 5мм но это многовато, не знаю почему).

MWE:

\documentclass{article}
\usepackage{tcolorbox}
\begin{document}
\begin{tcolorbox}[title=Title Frame,
    lefttitle=0mm,
    %left=0mm, % flushes left everything : subtitle and its contents
    colback=red!5!white,
    colframe=red!75!black,
    fonttitle=\bfseries,
    subtitle style={left=0mm,enlarge left by=-5mm,grow to right by=4mm}
    ]
    This is a \textbf{tcolorbox}.
    \tcbsubtitle[before skip=\baselineskip]%
    {Subtitle Frame (margin to be set to 0mm)}
    Further text.
\end{tcolorbox}
\end{document}

Результат:

Обратите внимание, что настройки выполняются с помощью клавиши subtitle styleв основном поле tcolorbox, в результате чего настройки применяются ко всем субтитрам в одном поле (в случае, если субтитров больше 1). Вы также можете применить настройки к отдельным субтитрам, предоставив их в качестве параметров для \tcbsubtitle.