Ich versuche, eine Tabelle zu kommentieren, indem ich die letzte Spalte hervorhebe und kommentiere. Wenn ich jedoch die \tabnode
Farbe zusammen mit der Markierung verwende, kommt es zu einer Fehlausrichtung. Entweder wird der Inhalt der mit markierten Zelle \tabnode
außerhalb der Tabelle falsch platziert oder die Zelle wird in der Breite gestreckt (wobei alle Zellen gleich breit sein sollten). Wie kann ich das richtig beheben? Hier ist ein Beispielcode, den ich verwende:
\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}
Antwort1
Ihr Code weist einige Fehler auf, die zu Fehlern führen (insbesondere haben Sie vier Spalten deklariert, aber fünf verwendet und die Befehle zum Zeilenwechsel vergessen): Im Folgenden habe ich sie korrigiert und andere Aspekte behoben:
\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}
Ich möchte Ihnen jedoch einen anderen Ansatz unter Verwendung der tikzmark
Bibliothek vorschlagen: Die Grundidee ist immer noch dieselbe; mit \tikzmark setzen Sie eine „Markierung“, wie in und dann können Sie diese Markierung mit . \tikzmark{a}
verwenden, wie in . Ein vollständiges Beispiel:pic cs
\draw (pic cs:a) -- ++(1,0);
\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}
Es ist nicht klar, warum Sie das hf-tikz
Paket laden, da es in Ihrem MWE keine Rolle spielt.