Anotar tablas

Anotar tablas

Estoy tratando de anotar una tabla resaltando y anotando la columna final, pero una vez que uso el \tabnodecolor junto con el color, obtengo una desalineación. O el contenido de la celda marcada con \tabnodeestá fuera de la tabla o la celda está estirada en ancho (mientras que todas las celdas deben tener el mismo ancho). ¿Cuál es la forma correcta de solucionar este problema? Aquí hay un código de muestra que estoy usando:

   \documentclass{beamer}
   \usepackage[beamer,customcolors]{hf-tikz}
   \usepackage{tabularx}
   \begin{document}

    \begin{frame}{Title}
    \newcounter{nodecount}
    \newcommand\tabnode[1]{\addtocounter{nodecount}{1}\tikz\node(\arabic{nodecount}){#1};}

     \tikzstyle{every picture}+=[remember picture,baseline]
     \tikzstyle{every node}+=[inner sep=0pt,anchor=base,
     minimum width=1.8cm,align=center,text depth=.25ex,outer sep=1.5pt]
     \tikzstyle{every path}+=[thick, rounded corners]


   \newcolumntype{g}{>{\columncolor{red}}c}
   \begin{table}[ht]
     \centering
     \begin{tabular}{|c|c|c|g|}\hline
      bla   &  bla  & bla   & \tabnode{$b_1$}& \hline
  bla   &  bla  & bla   & bla            & \hline       
  bla   &  bla  & bla   & bla            & \hline   
  bla   &  bla  & bla   & bla            & \hline
  bla   &  bla  & bla   & bla            & \hline       
  bla   &  bla  & bla   & bla            & \hline
     \end{tabular}
   \end{table}


   \begin{tikzpicture}[overlay]

    \node [right=2cm,above=2cm,minimum width=0pt] at (1) (A) {A};
    \draw [<-,out=5,in=180] (1) to (A);

   \end{tikzpicture}

   \end{frame}

Respuesta1

Tu código tiene algunos errores que producirán errores (en particular, declaraste cuatro columnas pero estabas usando cinco y olvidaste los comandos de cambio de línea): a continuación los corregí y arreglé otros aspectos:

\documentclass{beamer}
\usepackage[beamer,customcolors]{hf-tikz}
\usepackage{tabularx}
\usepackage{colortbl}

\newcounter{nodecount}
\newcolumntype{g}{>{\columncolor{red}}c}

\newcommand\tabnode[1]{%
  \addtocounter{nodecount}{1}%
  \tikz[remember picture,overlay]\node[inner sep=0pt] (\thenodecount) {#1};}

\begin{document}

\begin{frame}{Title}

\tikzset{
every picture/.style={remember picture,baseline},
every node/.style={
  inner sep=0pt,
  anchor=base,
 minimum width=1.8cm,
 align=center,
 text depth=.25ex,
 outer sep=1.5pt},
every path/.style={
  thick, 
  rounded corners
  }
}  

\begin{table}
\centering
\begin{tabular}{|c|c|c|g|c|}
 \hline
  bla   &  bla  & bla   & \tabnode{$b_1$} \\ \hline
  bla   &  bla  & bla   & bla \\\hline   
  bla   &  bla  & bla   & bla \\\hline   
  bla   &  bla  & bla   & bla \\\hline
  bla   &  bla  & bla   & bla \\\hline   
  bla   &  bla  & bla   & bla \\\hline
 \end{tabular}
\end{table}
\begin{tikzpicture}[remember picture,overlay]
  \node [right=2cm,above=2cm,minimum width=0pt] at (1) (A) {A};
  \draw [<-,out=5,in=180] (1) to (A);
\end{tikzpicture}
\end{frame}

\end{document}

ingrese la descripción de la imagen aquí

Sin embargo, me gustaría proponerles otro enfoque utilizando la tikzmarkbiblioteca: la idea general sigue siendo la misma; usando \tikzmark colocas una "marca", como en \tikzmark{a}y luego puedes usar esta marca usando pic cs. como en \draw (pic cs:a) -- ++(1,0);. Un ejemplo completo:

\documentclass{beamer}
\usepackage[beamer,customcolors]{hf-tikz}
\usepackage{tabularx}
\usepackage{colortbl}
\usetikzlibrary{tikzmark}

\newcolumntype{g}{>{\columncolor{red}}c}

\begin{document}

\begin{frame}{Title}

\tikzset{
every picture/.style={remember picture,baseline},
every node/.style={
  inner sep=0pt,
  anchor=base,
 minimum width=1.8cm,
 align=center,
 text depth=.25ex,
 outer sep=1.5pt},
every path/.style={
  thick, 
  rounded corners
  }
}  

\begin{table}
\centering
\begin{tabular}{|c|c|c|g|c|}
 \hline
  bla   &  bla  & bla   & $b_1$\tikzmark{a} \\ \hline
  bla   &  bla  & bla   & bla \\\hline   
  bla   &  bla  & bla   & bla \\\hline   
  bla   &  bla  & bla   & bla \\\hline
  bla   &  bla  & bla   & bla \\\hline   
  bla   &  bla  & bla   & bla \\\hline
 \end{tabular}
\end{table}
\begin{tikzpicture}[remember picture,overlay]
  \node [right=2cm,above=2cm,minimum width=0pt] at (pic cs:a) (A) {A};
  \draw [<-,out=5,in=180] ([xshift=15pt]{pic cs:a}) to (A);
\end{tikzpicture}
\end{frame}

\end{document}

ingrese la descripción de la imagen aquí

No está claro por qué estás cargando el hf-tikzpaquete, ya que no paga ninguna función en tu MWE.

información relacionada