スケールボックステーブルで tikz arrow を使用する

スケールボックステーブルで tikz arrow を使用する

これに続いて 役職。テーブルで矢印を使用したいのですが、テーブルが大きすぎるため、 を使用してサイズを変更したいのですが、 ed テーブルでscaleboxplace a を使用すると、位置が間違っています。は、テーブルがed される前のポイントを記憶しているようです。tikzmarkscaleboxtikzmarkscalebox

この問題に対する解決策はありますか?

次に例を示します。

\documentclass[pdf]{beamer}
\mode<presentation>{}
\usepackage[english]{babel}
\usepackage{color, colortbl}
\usepackage{tikz}
\usetikzlibrary{tikzmark, positioning, fit, shapes.misc}

\usetikzlibrary{decorations.pathreplacing, calc}

\tikzset{brace/.style={decorate, decoration={brace}},
  brace mirrored/.style={decorate, decoration={brace,mirror}},
}

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

\begin{document}
  \begin{frame}
    \begin{tabular}{ | l | l |}
      \hline
      letter & number \\ \hline
      \tikzmark{x}A &  1\tikzmark{a} \\ \hline
      A &  2 \\ \hline
      \tikzmark{y}A &  1\tikzmark{b} \\ \hline
      \tikzmark{w}B &  1 \\ \hline
      \tikzmark{z}B &  2 \\ \hline
    \end{tabular}
    \begin{tikzpicture}[remember picture, overlay]
      \draw ($(pic cs:a) + (3.5em,0)$) edge[bend left=60,-stealth] ($(pic cs:b) + (3.5em,0)$) node [midway, right, xshift=5pt, yshift=5pt] {Duplicate};
      \draw[brace mirrored, thick] ($(pic cs:x) + (-8pt,1ex)$)--($(pic cs:y) + (-8pt,-1ex)$) node [midway, left] {A};
      \draw[brace mirrored, thick] ($(pic cs:w) + (-8pt,1ex)$)--($(pic cs:z) + (-8pt,-1ex)$) node [midway, left] {B};
    \end{tikzpicture}

    \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}
\scalebox{0.7}{
     \centering

\begin{tabular}{|c|c|c|g|c|}
        \hline
        bla   &  bla  & bla   & $b_1$\tikzmark{c}\\
        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:c}) (A) {A};
      \draw [<-,out=5,in=180] ([xshift=0pt]{pic cs:c}) to (A);
    \end{tikzpicture}

  \end{frame}

\end{document}

答え1

古い質問ですが、ここでは 2 つの回避策を紹介します。どちらも を使用しません\scalebox

  1. \tabcolsepフォントサイズを小さくしたり、の代わりに を使用したりして、テーブルのサイズを小さくします\scalebox。これで は\tikzmark正常に動作します。

  2. オプションを使用してTikZtabularに配置し、ノード アンカーを基準にして矢印を描画します。ただし、矢印の終点を手動で特定する必要があるため、ソリューションを使用する場合ほど便利ではありません。nodescale=X\tikzmark

ここに画像の説明を入力してください

\documentclass[pdf]{beamer}
\mode<presentation>{}
\usepackage[english]{babel}
\usepackage{color, colortbl}
\usepackage{tikz}
\usetikzlibrary{tikzmark, positioning, fit, shapes.misc}

\usetikzlibrary{decorations.pathreplacing, calc}

\tikzset{brace/.style={decorate, decoration={brace}},
  brace mirrored/.style={decorate, decoration={brace,mirror}},
}

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

\begin{document}
\begin{frame}
    \begin{tabular}{ | l | l |}
        \hline
        letter        & number        \\ \hline
        \tikzmark{x}A & 1\tikzmark{a} \\ \hline
        A             & 2             \\ \hline
        \tikzmark{y}A & 1\tikzmark{b} \\ \hline
        \tikzmark{w}B & 1             \\ \hline
        \tikzmark{z}B & 2             \\ \hline
    \end{tabular}
    \begin{tikzpicture}[remember picture, overlay]
        \draw ($(pic cs:a) + (3.5em,0)$) edge[bend left=60,-stealth] ($(pic cs:b) + (3.5em,0)$) node [midway, right, xshift=5pt, yshift=5pt] {Duplicate};
        \draw[brace mirrored, thick] ($(pic cs:x) + (-8pt,1ex)$)--($(pic cs:y) + (-8pt,-1ex)$) node [midway, left] {A};
        \draw[brace mirrored, thick] ($(pic cs:w) + (-8pt,1ex)$)--($(pic cs:z) + (-8pt,-1ex)$) node [midway, left] {B};
    \end{tikzpicture}

    \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}
        \scriptsize % or \tiny or \footnotesize
        \setlength\tabcolsep{2pt}
        \centering

        \begin{tabular}{|c|c|c|g|c|}
            \hline
            bla & bla & bla & $b_1$\tikzmark{c} \\
            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:c}) (A) {A};
        \draw [<-,out=5,in=180] ([xshift=0pt]{pic cs:c}) to (A);
    \end{tikzpicture}

\end{frame}

\begin{frame}
    \begin{tabular}{ | l | l |}
        \hline
        letter         & number         \\ \hline
        \tikzmark{x2}A & 1\tikzmark{a2} \\ \hline
        A              & 2              \\ \hline
        \tikzmark{y2}A & 1\tikzmark{b2} \\ \hline
        \tikzmark{w2}B & 1              \\ \hline
        \tikzmark{z2}B & 2              \\ \hline
    \end{tabular}
    \begin{tikzpicture}[remember picture, overlay]
        \draw ($(pic cs:a2) + (3.5em,0)$) edge[bend left=60,-stealth] ($(pic cs:b2) + (3.5em,0)$) node [midway, right, xshift=5pt, yshift=5pt] {Duplicate};
        \draw[brace mirrored, thick] ($(pic cs:x2) + (-8pt,1ex)$)--($(pic cs:y2) + (-8pt,-1ex)$) node [midway, left] {A};
        \draw[brace mirrored, thick] ($(pic cs:w2) + (-8pt,1ex)$)--($(pic cs:z2) + (-8pt,-1ex)$) node [midway, left] {B};
    \end{tikzpicture}

    \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{tikzpicture}
            \node [inner sep=0pt,scale=0.7] (table) {%
                \begin{tabular}{|c|c|c|g|c|}
                    \hline
                    bla & bla & bla & $b_1$ \\
                    bla & bla & bla & bla   \\\hline
                    bla & bla & bla & bla   \\\hline
                    bla & bla & bla & bla   \\\hline
                    bla & bla & bla & bla   \\\hline
                \end{tabular}};

            \begin{scope}[overlay]
                \node [right=2cm,above=2cm,minimum width=0pt] at (table.north east) (A) {A};
                \draw [<-,out=5,in=180] ([xshift=-5pt,yshift=-8pt]table.north east) to (A);
            \end{scope}
        \end{tikzpicture}
    \end{table}

\end{frame}

\end{document}

関連情報