
Estoy tratando de ordenar lo que aparece a continuación en el sentido de: (a) el texto negro de la izquierda (xx, yy, zz) debe estar alineado verticalmente con respecto a la celda de la tabla correspondiente a la derecha; (b) no hay tanto espacio entre la columna de la izquierda y la columna de la derecha con los cuadros; (c) esto es complicado: como puede ver, en el conjunto de cuadros más bajo a la derecha, estoy tratando de alinear D y E con B y C, pero por alguna razón, la imagen tikz se "recorta".
Debo mencionar que estoy usando tabularray después de encontrar la siguiente respuesta:¿Cómo centrar verticalmente el texto de las celdas?
Aquí está el MWE:
\documentclass{article}
\usepackage{tabularray}
\usepackage{tikz}
\begin{document}
\begin{tblr}{
colspec = {X[l,m]X[l,m]},
rowsep = 0pt,
colsep = 0pt
}
zz: & something \\
yy: & \begin{tikzpicture}[cc/.style={fill=blue!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},cyellow/.style={align=center,fill=yellow!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},cgreen/.style={fill=green!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},corange/.style={fill=orange!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm}]
\path (0,0) node[cc] (A) {A} (2.3,0) node[cc] (B) {B} (4.6,0) node[cc] (C) {C};
\draw[->] (A)--(B);
\draw[->] (B)--(C);
\end{tikzpicture} \\
xx & \begin{tikzpicture}[cc/.style={fill=blue!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},cyellow/.style={align=center,fill=yellow!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},cgreen/.style={align=center,fill=green!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},corange/.style={align=center,fill=orange!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm}]
\path (2.3,0) node[cyellow] (AA) {D} (4.6,0) node[cgreen] (BB) {E};
\draw[->] (AA)--(BB);
\end{tikzpicture}
\end{tblr}
\end{document}
Respuesta1
¿Qué pasa con esto? Utilicé un tabular
entorno normal, puse los tikzpicture
s en modo matemático y \vcenter
los edité.
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tabular}{rl}
zz: & something\\
yy: & $\vcenter{\hbox{\begin{tikzpicture}[baseline=(current bounding box.center),cc/.style={fill=blue!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},cyellow/.style={align=center,fill=yellow!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},cgreen/.style={fill=green!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},corange/.style={fill=orange!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm}]
\path (0,0) node[cc] (A) {A} (2.3,0) node[cc] (B) {B} (4.6,0) node[cc] (C) {C};
\draw[->] (A)--(B);
\draw[->] (B)--(C);
\end{tikzpicture}}}$ \\
xx: & $\vcenter{\hbox{\begin{tikzpicture}[cc/.style={fill=blue!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},cyellow/.style={align=center,fill=yellow!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},cgreen/.style={align=center,fill=green!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},corange/.style={align=center,fill=orange!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm}]
\path (2.3,0) node[cyellow] (AA) {D} (4.6,0) node[cgreen] (BB) {E};
\draw[->] (AA)--(BB);
\end{tikzpicture}}}$
\end{tabular}
\end{document}
Respuesta2
(a) Establezca la línea de base de las imágenes tikz.
(b) Utilice Q
el tipo de columna en lugar de X
.
(c) Dibuje un nodo invisible debajo de A para alinear B con D y C con E.
He aumentado la altura de la caja sólo para demostrarlo.
\documentclass{article}
\usepackage{tabularray}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tblr}{
colspec = {Q[l,m] Q[l,m]},
rowsep = 0pt,
colsep = 0pt
}
zz: & something \\
yy: & \begin{tikzpicture}[
cc/.style={fill=blue!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm,minimum height=10mm},
cyellow/.style={align=center,fill=yellow!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},
cgreen/.style={fill=green!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},
corange/.style={fill=orange!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},
baseline={(A.base)}
]
\path (0,0) node[cc] (A) {A} (2.3,0) node[cc] (B) {B} (4.6,0) node[cc] (C) {C};
\draw[->] (A)--(B);
\draw[->] (B)--(C);
%\path node (yy) [left=of A, inner sep=0pt, rectangle, draw] {yy};
\end{tikzpicture} \\
xx & \begin{tikzpicture}[
cc/.style={fill=blue!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},
cyellow/.style={align=center,fill=yellow!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm,minimum height=10mm},
cgreen/.style={align=center,fill=green!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},
corange/.style={align=center,fill=orange!20,rounded corners=2pt,thick,inner sep=4,outer sep=0,minimum width=18mm},
invisible/.style={inner sep=4,outer sep=0,minimum width=18mm},
baseline={(AA.base)}
]
\path (0,0) node[invisible] {} (2.3,0) node[cyellow] (AA) {D} (4.6,0) node[cgreen] (BB) {E};
\draw[->] (AA)--(BB);
\end{tikzpicture}
\end{tblr}
\end{document}
Respuesta3
arrows.meta˛
posicionamiento de cadenas usadas`and
Tikbibliotecas Z- definición de estilo común tikz
- Código corto ...
\documentclass{article}
\usepackage{tabularray}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
chains,
positioning}
\begin{document}
\tikzset{
node distance = 0mm and 5mm,
start chain = going right,
N/.style = {fill=#1!20, rounded corners=2pt, anchor=base,
inner ysep=4mm, inner xsep=0mm, minimum width=18mm,
on chain},
N/.default = blue,
every edge/.append style = {-Straight Barb,}
}
\begin{tblr}{colspec = {Q[l,m] Q[r,m, wd=64mm]},
colsep = 1mm, rowsep = 0pt}
zz: & \SetCell{l} something \\
yy: & \tikz[baseline=1pt]
{\node[N] (a) {A};
\node[N] (b) {B};
\node[N] (c) {C};
\draw (a) edge (b) (b) edge (c);
} \\
xx: & \tikz[baseline=1pt]
{\node[N=yellow] (a) {D};
\node[N=green] (b) {E};
\draw (a) edge (b);
}
\end{tblr}
\end{document}
Editar:
o un código un poco más corto mediante el uso de la join
macro:
\documentclass{article}
\usepackage{tabularray}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
chains,
positioning}
\begin{document}
\tikzset{
node distance = 0mm and 5mm,
start chain = going right,
N/.style = {fill=#1!20, rounded corners=2pt, anchor=base,
inner ysep=4mm, inner xsep=0mm, minimum width=18mm,
on chain},
N/.default = blue,
every join/.style = {-Straight Barb} % <---
}
\begin{tblr}{colspec = {Q[l,m] Q[r,m, wd=64mm]},
colsep = 1mm, rowsep = 0pt}
zz: & \SetCell{l} something \\
yy: & \tikz[baseline=1pt]
{\node[N] (a) {A};
\node[N, join] {B}; % <---
\node[N, join] {C}; % <---
} \\
xx: & \tikz[baseline=1pt]
{\node[N=yellow] {D};
\node[N=green, join] {E}; % <---
}
\end{tblr}
\end{document}
En ambos casos obtienes el mismo resultado:
Apéndice:
Usando la respuesta @Qrrbrbirlbel en mi [pregunta2la posible solución usando graphs
la biblioteca puede ser:
\documentclass{article}
\usepackage{tabularray}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
graphs}
\begin{document}
\begin{table}
\centering
\tikzset{
N/.style = {fill=#1!20, rounded corners=2pt, alias=N,
inner ysep=4mm, inner xsep=0mm, outer sep=0pt,
minimum width=18mm},
N/.default = blue,
}
\tikzgraphsset{
branch right sep=5mm,
every graph/.append style = {path, ->, /tikz/>=Straight Barb}}
\begin{tblr}{colspec = {Q[r] Q[r,wd=64mm]},
colsep = 1mm, rowsep = 0pt}
zz: & \SetCell{l} something \\
yy: & \tikz[baseline=(N.base)] \graph{A[N], B[N], C[N]}; \\
xx: & \tikz[baseline=(N.base)] \graph{D[N=yellow], E[N=green]};
\end{tblr}
\end{table}
\end{document}
El resultado de la compilación es casi el mismo que antes.
Respuesta4
Aquí hay una solución con {NiceTabular}
of nicematrix
(y Tikz para las flechas).
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
\NewDocumentCommand{\Fill}{m}{\Block[fill=#1,rounded-corners]{}}
\begin{NiceTabular}{rw{c}{2cm}cw{c}{2cm}cw{c}{2cm}}[cell-space-limits=3mm]
xx: & something \\
yy: & \Fill{blue!15} A && \Fill{blue!15} B && \Fill{blue!15} C \\
xx: & && \Fill{yellow!15} D && \Fill{green!15} E \\
\CodeAfter
\begin{tikzpicture} [->]
\draw (2.5-|3) -- (2.5-|4) ;
\draw (2.5-|5) -- (2.5-|6) ;
\draw (3.5-|5) -- (3.5-|6) ;
\end{tikzpicture}
\end{NiceTabular}
\end{document}
Como es habitual, nicematrix
necesitas varias compilaciones.