Странный вертикальный интервал внутри абзаца при использовании multicol в tcolorbox

Странный вертикальный интервал внутри абзаца при использовании multicol в tcolorbox

Основная идея — разместить подпись рядом с изображением и отцентрировать ее по вертикали. Я попробовал это в среде, tcolorboxпоскольку она используется на постере. Я не уверен, насколько tcolorboxважна рамка, но я оставил ее здесь в качестве контейнера.

Идея заключалась бы в том, чтобы поместить изображение в один столбец, а подпись — в другой, что должно быть смещено с помощью команды \vspace. Как показано ниже, код размещает вертикальное пространство между первой и второй строкой текста, а не над первой строкой (где оно должно быть в коде).

\documentclass{standalone}
\usepackage{tikz}
\usepackage{multicol}
\usepackage{tcolorbox}

\begin{document}

\begin{tcolorbox}[boxsep=-1mm]
\begin{multicols}{2} % also tried unbalanced multicols*
\begin{tikzpicture}
    \draw (0,0) -- (5,0) -- (5,4) -- (0,4) -- (0,0);
    \draw (0,0) -- (5,4);
    \draw (5,0) -- (0,4);
\end{tikzpicture}
\vspace{0.5cm} % this command causes strange vertical spacing
Figure aption. Weird vertical spacing between 1st and 2nd line, when using \textbackslash vspace command.
\end{multicols}
\end{tcolorbox}

\end{document}

Для сравнения вы можете увидеть два изображения, демонстрирующих эффект команды \vspace:

правильное поведение без команды vspace странный вертикальный интервал при использовании команды vspace

Есть ли способ обойти это? Это баг или фича?

решение1

Сначала нужно выйти из horizontalрежима, т.е. использовать пустую строку, а затем выполнить команду \vspace{0.5cm}, если это действительно необходимо.

\documentclass{standalone}
\usepackage{tikz}
\usepackage{multicol}
\usepackage{tcolorbox}

\begin{document}

\begin{tcolorbox}[boxsep=-1mm]
\begin{multicols}{2} % also tried unbalanced multicols*
\begin{tikzpicture}
    \draw (0,0) -- (5,0) -- (5,4) -- (0,4) -- (0,0);
    \draw (0,0) -- (5,4);
    \draw (5,0) -- (0,4);
\end{tikzpicture}



% this command causes strange vertical spacing
\vspace{0.5cm}
Figure caption. No weird vertical spacing between 1st and 2nd line, when using \textbackslash vspace command.
\end{multicols}
\end{tcolorbox}

\end{document}

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

решение2

Если вы используете, tcolorboxто нет необходимости в multicolсреде, так как tcolorboxкаждая коробка уже разделена на upperчасти lower, которые можно разместить рядом.

Вероятно, самый простой способ получить желаемый OP результат — это \tcbsidebysidebox (присутствует с версии 2015-11-20), которому нужна xparsetcolorboxlibrary. Эта команда уже делит box на два равных столбца, а содержимое вертикально центрируется:

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\usepackage[skins,xparse]{tcolorbox}

\begin{document}

\tcbsidebyside[notitle,lower separated=false]{%
\begin{tikzpicture}
    \draw (0,0) -- (5,0) -- (5,4) -- (0,4) -- (0,0);
    \draw (0,0) -- (5,4);
    \draw (5,0) -- (0,4);
\end{tikzpicture}
}{%
Figure caption. Weird vertical spacing between 1st and 2nd line, when using \textbackslash vspace command.
}
\end{document}

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

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