alineación vertical de una imagen tkz en una celda de tabla larga

alineación vertical de una imagen tkz en una celda de tabla larga

Estoy luchando por alinear el centro vertical o la parte superior de una imagen tkz en una celda de tabla larga con el texto. De alguna manera se alinea con la línea base inferior:

imagen que muestra la imagen alineada hacia arriba; no centrar

Estoy tratando de alinearlos todos.

Ejemplo simplificado a continuación.

\documentclass{report}

\usepackage{tikz}
\usepackage{longtable}

\begin{document}

% define a square with text
\def\sqs{2.6cm}
\newcommand{\square}[3]{\node[inner sep=5pt, outer sep=5pt, minimum height=\sqs,minimum width=\sqs,fill=#3,draw,label={[align=center]center:#2}] at (#1){};}

\newcommand{\someset}[4]{
    \begin{tikzpicture}[baseline=(current bounding box.center)]
        \square{0,3}{A}{#1};
        \square{3,3}{B}{#2};
        \square{0,0}{C}{#3};
        \square{3,0}{D}{#4};
    \end{tikzpicture}
}
% Smaller version to use in tables.
\newcommand{\smallset}[4]{\resizebox{2.3cm}{1cm}{\someset{#1}{#2}{#3}{#4}}}

\begin{longtable}[t]{|p{2cm}||p{3cm}|p{2cm}|}
\hline 
foo & \smallset{red}{green}{green}{red} & some long text that will be on many lines and so on some long text that will be on many lines and so on  \\
\hline
foo & \smallset{red}{green}{green}{red} & boo \\
\hline
\end{longtable}
\end{document}

Al establecerlo baseline=(current bounding box.center)se baseline=(current bounding box.north)obtiene una división por cero. Establecerlo en el centro no parece centrarlo con el texto.

El resultado deseado es texto e imagen tkz, todos alineados en la parte superior.

Respuesta1

Esto coloca la línea de base correctamente tanto para como \somesetpara \smallset.

\documentclass{report}

\usepackage{tikz}
\usepackage{longtable}

\begin{document}

% define a square with text
\def\sqs{2.6cm}
\newcommand{\square}[3]{\node[inner sep=5pt, outer sep=5pt, minimum height=\sqs,minimum width=\sqs,fill=#3,draw,label={[align=center]center:#2}] at (#1){};}

\newcommand{\someset}[4]{
    \begin{tikzpicture}[baseline=(BASE)]
        \square{0,3}{A}{#1};
        \square{3,3}{B}{#2};
        \square{0,0}{C}{#3};
        \square{3,0}{D}{#4};
      \path (current bounding box.north) ++(0pt,-\ht\strutbox) coordinate (BASE);
    \end{tikzpicture}
}
% Smaller version to use in tables.
\newcommand{\smallset}[4]{\raisebox{\dimexpr \ht\strutbox-\height}% set baseline
  {\resizebox{2.3cm}{2cm}%
    {\raisebox{\depth}% make height total height
      {\someset{#1}{#2}{#3}{#4}}}}}

\begin{longtable}{|p{2cm}||p{3cm}|p{2cm}|}
\hline 
foo & \smallset{red}{green}{green}{red} & some long text that will be on many lines and so on some long text that will be on many lines and so on  \\
\hline
foo & \smallset{red}{green}{green}{red} & boo \\
\hline
\end{longtable}
\end{document}

información relacionada