마지막 열을 강조 표시하고 주석을 달아 테이블에 주석을 달려고 하는데 \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에서 역할을 지불하지 않기 때문에 패키지를 로드하는 이유가 명확하지 않습니다 .