Opção alinhada ao meio sem argumento de largura para tabular usando pacote array

Opção alinhada ao meio sem argumento de largura para tabular usando pacote array

Considere um tabularambiente básico. Duas colunas, a primeira deve conter uma tikzpicturede tamanho indeterminado, a segunda, uma descrição de largura determinada (e especificada pelo usuário). Se o conteúdo da primeira coluna fosse bem restrito, seria possível fazer o seguinte:

\begin{tabular}{m{2cm}p{6cm}}

O conteúdo da primeira coluna não é, no entanto, bem restringido e por isso pergunto-me se podemos alcançar o equivalente a isto:

\begin{tabular}{mp{6cm}}

ou

\begin{tabular}{m{}p{6cm}}

Primeira coluna alinhada ao meio, mas sem argumento de largura. Vou postar um mwe se for necessária clareza.

Responder1

Dependendo do alinhamento horizontal desejado da primeira coluna, você pode simplesmente escolher l(alinhado à esquerda), c(centralizado horizontalmente) ou r(alinhado à direita) para a primeira coluna. Isso se adaptará automaticamente à largura da imagem tikz incluída. Para centralizar verticalmente o texto na segunda coluna em relação ao tikzpicture, use m{6cm}para a segunda coluna e adicione baseline=(current bounding box.center)como opção a cada tikzpicture.

Como essa configuração pode levar a uma tabela mais larga que a largura do texto, você também pode tentar tabularx. Também incluí um tabularxexemplo no seguinte MWE. Observe que usei \hlinecomo guia para os olhos. Na tabela real eu não usaria \hlineapenas linhas do booktabspacote ou nenhuma linha horizontal:

insira a descrição da imagem aqui

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usepackage{array}
\usepackage{tabularx}
\renewcommand\tabularxcolumn[1]{m{#1}}
\begin{document}

\begin{tabular}{cm{6cm}}
\hline
\begin{tikzpicture}[baseline=(current bounding box.center)] 
\node[draw=black] (text1) {some text here};
\node[draw=black] (text2) [below left =of text1] {some other text here}edge [->] node {}(text1) ;
\end{tikzpicture}
& some explanatory text that is vertically centered with respect to the tikz picture\\
\hline
\begin{tikzpicture}[baseline=(current bounding box.center)] 
\node[draw=black] (text1) {A};
\node[draw=black] (text2) [below left =of text1] {B}edge [->] node {}(text1) ;
\end{tikzpicture}
& some explanatory text that is vertically centered with respect to the tikz picture\\
\hline
\end{tabular}

\bigskip

\begin{tabularx}{\textwidth}{cX}
\hline
\begin{tikzpicture}[baseline=(current bounding box.center)] 
\node[draw=black] (text1) {some text here};
\node[draw=black] (text2) [below left =of text1] {some other text here}edge [->] node {}(text1) ;
\end{tikzpicture}
& some explanatory text that is vertically centered with respect to the tikz picture\\
\hline
\begin{tikzpicture}[baseline=(current bounding box.center)] 
\node[draw=black] (text1) {A};
\node[draw=black] (text2) [below left =of text1] {B}edge [->] node {}(text1) ;
\end{tikzpicture}
& some explanatory text that is vertically centered with respect to the tikz picture\\
\hline
\end{tabularx}
\end{document}

informação relacionada