Verwenden von Tikz Arrow mit Scaleboxed-Tabellen

Verwenden von Tikz Arrow mit Scaleboxed-Tabellen

Im Anschluss daran Post. Ich möchte Pfeile mit Tabellen verwenden. Meine Tabellen sind jedoch zu groß und ich möchte sie mithilfe von neu skalieren . Wenn ich jedoch in den bearbeiteten Tabellen scaleboxdie Position „a“ verwende , ist die Position falsch. scheint sich an den Punkt zu erinnern, bevor die Tabelle bearbeitet wird.tikzmarkscaleboxtikzmarkscalebox

Haben Sie eine Lösung für dieses Problem?

Hier ist ein Beispiel:

\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}

Antwort1

Alte Frage, aber hier sind zwei mögliche Problemumgehungen, die beide die Nichtverwendung beinhalten \scalebox.

  1. Reduzieren Sie die Größe der Tabelle, indem Sie die Schriftgröße verringern und/oder \tabcolsepstatt mit \scalebox. Dann \tikzmarkfunktioniert es einwandfrei.

  2. Platzieren Sie es tabularin einem TikZ nodemit scale=Xden Optionen und zeichnen Sie den Pfeil relativ zu den Knotenankern. Dies ist \tikzmarkjedoch nicht so bequem wie mit der Lösung, da Sie den Endpunkt des Pfeils manuell herausfinden müssen.

Bildbeschreibung hier eingeben

\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}

verwandte Informationen