Ich möchte an die folgende Tabelle

Open in Online-Editor
\begin{table*}
    \centering
        \begin{tabular}[t]{|l|r|}
            \toprule[2pt]
            100 km & 6,8 l \tabularnewline
            \midrule
            1 km   & 0,068 l \tabularnewline
            \midrule
            35 km  & 2,38 l \tabularnewline
            \bottomrule[2pt]
        \end{tabular}
\end{table*}

rechts und links Pfeile mit den zugehörigen Rechenoperationen anbringen. Das Paket Tikz habe ich eingebunden. Kann mir jemand helfen, wie ich die Anfangs- und Endpunkte jeweils an den Rand der Zeilenmitte bekomme?

gefragt 13 Jun '16, 13:33

AnneTeek's gravatar image

AnneTeek
35111
Akzeptiert-Rate: 0%

bearbeitet 07 Jul '16, 11:32

saputello's gravatar image

saputello
11.1k174365

1

Dein Code ist unvollständig und so nicht lauffähig. Bitte immer vollständige Minimalbeispiele posten.

(13 Jun '16, 14:19) Henri

Sorry, bin neu hier...

(14 Jun '16, 08:49) AnneTeek

Für TikZ gibt es die tikzmark Bibliothek, die es möglich macht »Labels« zu platzieren und diese später in einem tikzpicture zu referenzieren. Zusammen mit der overlay-Option kann man so über das Dokment malen.

Open in Online-Editor
\documentclass{article}
\usepackage{booktabs}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
\begin{table*}
  \centering
  \begin{tabular}[t]{|l|r|}
    \toprule[2pt]
    \tikzmark{l-a}100 km & 6,8 l\tikzmark{r-a}\tabularnewline
    \midrule
    \tikzmark{l-b}1 km   & 0,068 l\tikzmark{r-b}\tabularnewline
    \midrule
    \tikzmark{l-c}35 km  & 2,38 l\tikzmark{r-c}\tabularnewline
    \bottomrule[2pt]
  \end{tabular}
  \begin{tikzpicture}[remember picture,overlay,thick,red,shorten <=1pt,shorten >=1pt]
    \begin{scope}[c/.style={shift={(-\tabcolsep,\the\dimexpr\fontdimen22\textfont2\relax)}}]
      \draw[->] ([c]pic cs:l-a) to[bend right] node[left] {$\div 100$} ([c]pic cs:l-b);
      \draw[->] ([c]pic cs:l-b) to[bend right] node[left] {$\times 35$} ([c]pic cs:l-c);
    \end{scope}
    \begin{scope}[c/.style={shift={(\tabcolsep,\the\dimexpr\fontdimen22\textfont2\relax)}}]
      \draw[->] ([c]pic cs:r-a) to[bend left] node[right] {$\div 100$} ([c]pic cs:r-b);
      \draw[->] ([c]pic cs:r-b) to[bend left] node[right] {$\times 35$} ([c]pic cs:r-c);
    \end{scope}
  \end{tikzpicture}
\end{table*}
\end{document}

alt text

Ein wenig Magie steckt dann noch im Verbinden der Punkte. Im optionalen Argument des tikzpicture wird nämlich noch der Style c definiert

Open in Online-Editor
c/.style={shift={(-\tabcolsep,\the\dimexpr\fontdimen22\textfont2\relax)}}

welcher dann auf die Koordinaten angewendet wird, z.B. ([c]pic cs:l-a). Beachte das [c]. Der Style wendet den shift auf die angegebene Koordinate an. Im folgenden Bild ist der Shift visualisiert.

alt text

Der rote Punkt ist die nackte Koordinate pic cs:l-a. Um auf die Höhe der Zeilenmitte (math axis) zu gelangen verschieben wir den Punkt in y-Richtung um \the\dimexpr\fontdimen22\textfont2\relax. Das ist die Höhe der von der Schrift vorgegebenen math axis. Der resultierende Punkt ist in grün markiert. Nun soll die Linie aber am Rand der Tabelle und nicht neben dem Text beginnen. Dazu müssen wir den Platz kompensieren, der zwischen vertikaler Linie und Text gelassen wird. Innerhalb von tabular ist dieser standardmäßig durch \tabcolsep gegeben. Auf der linken Seite der Tabelle verschieben wir also um -\tabcolsep in x-Richtung (blauer Punkt), auf der rechten Seite um +\tabcolsep.

Permanenter link

beantwortet 13 Jun '16, 13:55

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 14 Jun '16, 16:10

1000 Dank! Genau so habe ich es mir vorgestellt. :-)

(14 Jun '16, 08:32) AnneTeek
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×731
×257
×35

gestellte Frage: 13 Jun '16, 13:33

Frage wurde gesehen: 10,361 Mal

zuletzt geändert: 07 Jul '16, 11:32