最後の列を強調表示して注釈を付けることで表に注釈を付けようとしていますが、 と\tabnode
色付けを一緒に使用すると、位置がずれてしまいます。 でマークされたセルの内容が\tabnode
表の外側にずれているか、セルの幅が引き伸ばされています (すべてのセルの幅は同じである必要があります)。これを修正する正しい方法は何ですか? 以下は私が使用しているサンプル コードです。
\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}
答え1
コードにはエラーを引き起こす間違いがいくつかあります (特に、4 つの列を宣言したが 5 つの列を使用していて、行変更コマンドを忘れています)。以下でそれらを修正し、他の側面を修正しました。
\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}
ただし、ライブラリを使用した別のアプローチを提案したいと思いますtikzmark
。基本的な考え方は同じです。\tikzmark を使用して、のように「マーク」を配置し、 のように.\tikzmark{a}
を使用してこのマークを使用できます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}
hf-tikz
MWE でロールが支払われないので、なぜパッケージをロードするのかは明らかではありません。