Espaçamento vertical estranho dentro do parágrafo usando multicol dentro do tcolorbox

Espaçamento vertical estranho dentro do parágrafo usando multicol dentro do tcolorbox

A ideia básica seria colocar uma legenda ao lado de uma imagem e centralizá-la verticalmente. Eu tentei isso em um tcolorboxambiente, pois está sendo usado em um pôster. Não tenho certeza do quanto a tcolorboxmoldura é importante, mas a mantive como contêiner aqui.

A ideia seria colocar a imagem em uma coluna e a legenda na outra, que deveria ser compensada por meio de um \vspacecomando. Conforme mostrado abaixo, o código coloca o espaço vertical entre a primeira e a segunda linha do texto e não acima da primeira linha (onde estaria no código).

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

Para efeito de comparação, você pode ver duas imagens, mostrando o efeito do \vspacecomando:

comportamento correto sem comando vspace espaçamento vertical estranho ao usar o comando vspace

Existe uma maneira de contornar isso? isso é um erro ou uma característica?

Responder1

Você tem que sair do horizontalmodo primeiro, ou seja, usar uma linha vazia e depois emitir \vspace{0.5cm}, se for realmente necessário.

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

insira a descrição da imagem aqui

Responder2

Se usar tcolorboxnão há necessidade de multicolambiente, pois tcolorboxjá divide cada caixa em uppere lowerpeças, que podem ser colocadas lado a lado.

Provavelmente a maneira mais fácil de obter o resultado desejado do OP é \tcbsidebysidebox (presente desde a versão 20/11/2015) que precisa xparsede tcolorboxlibrary. Este comando já divide a caixa em duas colunas iguais e o conteúdo fica centralizado verticalmente:

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

insira a descrição da imagem aqui

informação relacionada