Seite 1 von 2
über Zellengrenzen hinaus zeichnen
Verfasst: Mo 6. Mai 2013, 17:50
von MoonKid
Ich habe eine simple Tabelle.
\documentclass{scrartcl}
\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}
\begin{document}
\begin{tabular} {c | c | c}
& D+ & D- \\
\hline
E+ & a & b \\
\hline
E- & c & d
\end{tabular}
\end{document}
Ich möchte nicht in die Zellen, sondern über die Zellen Pfeile zeichnen. Bspw. möchte ich von a nach d einen andersfarbigen Pfeil haben.
Geht sowas?
Verfasst: Di 7. Mai 2013, 08:19
von Noch so einer
Sollte mit
TikZ zu machen sein.
Wobei als zusätzliches Stichwort "remember picture" genannt sei, mit dem man sich Nodes zwecks späterer Verarbeitung merken kann. Näheres ist der TikZ-Anleitung zu entnehmen. Möglicherweise findest Du auch ein passendes Beispiel unter
http://www.texample.net/tikz/examples/all/.
Verfasst: Di 7. Mai 2013, 09:36
von MoonKid
Mensch jetzt bin ich aber überrascht. Hätte ehr ein "Nein" erwartet.
Kann man mit TeX auch ne Frau backen? Gabs da nicht mal son Film...

Verfasst: Di 7. Mai 2013, 09:59
von esdd
Hallo,
eventuell hilft auch dieser
Thread bei mrunix weiter.
Gruß
Elke
Verfasst: Di 7. Mai 2013, 10:10
von MoonKid
Ach wie geil!
Sieht noch nicht hübsch aus, aber macht sinngemäß das, was ich mir vorgestellt hatte.
\documentclass{scrartcl}
\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}
\usepackage{tikz}
\begin{document}
\begin{tabular} {c | c}
\tikz[remember picture] \node (n1) {}; A
&
B \tikz[remember picture] \node (n2) {};
\end{tabular}
\begin{tikzpicture}[remember picture,overlay]
\draw[->,very thick] (n1) -- (n2);
\end{tikzpicture}
\end{document}
Verfasst: Sa 1. Jun 2013, 12:22
von MoonKid
Ok, aktuell sieht der Mini-Code so aus.
\documentclass{scrartcl}
\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}
\usepackage{tikz}
\begin{document}
\begin{tabular} {c | c}
\tikz[remember picture] \node (nA) {}; A &
B \tikz[remember picture] \node (nB) {}; \\
\tikz[remember picture] \node (nC) {}; C &
\tikz[remember picture] \node (nD) {}; D
\end{tabular}
\begin{tikzpicture}[remember picture,overlay]
\draw[->] (nA) -- (nD);
\end{tikzpicture}
\end{document}
Problem ist, dass beide Enden des Pfeils neben den Buchstaben gezeichnet werden.
Ich möchte aber das der Ansatzpunkt für beide Enden direkt in der Mitte der Zelle und somit direkt auf (also in der Mitte) dem Buchstaben ist.
Verfasst: Sa 1. Jun 2013, 14:42
von esdd
Hallo,
setz doch den Text in die Noden und lass die Pfeile dann bis zu deren center gehen:
\documentclass{scrartcl}
\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}
\usepackage{tikz}
\tikzset{table/.style={remember picture,baseline,every node/.style={anchor=base}}}
\begin{document}
\begin{tabular} {c | c}
\tikz[table] \node (nA) {A};&
\tikz[table] \node (nB) {B};\\
\tikz[table] \node (nC)[anchor=base] {C};&
\tikz[table] \node (nD) {Dg};
\end{tabular}
\begin{tikzpicture}[remember picture,overlay]
\draw[->] (nA.center) -- (nD.center);
\end{tikzpicture}
\end{document}
Gruß
Elke[/code]
Verfasst: Sa 1. Jun 2013, 15:32
von MoonKid
Danke für die schöne Lösung. Da hast du mir ja gleich, ein paar Hausaufgaben mit aufgegeben.
Das ich die nodes mit .center oder den Himmelsrichtungen ansprechen kann, hab ich kapiert.
Auch das ein Style "table" definiert und später verwendet wird.
das "anchor=base" verstehe ich aber nicht (im style und im node). In der doc finde ich diesen String überall im Code, aber nirgendwo im Text erklärt.
Ich sehe auch keinen Unterschied (3fach Lauf!) ob ich das nun im Code hab oder nicht. Was steckt dahinter?
Und wozu brauch ich einen Anker, wenn ein Node mit center, north, ... schon Ansatzpunkte (Anker?) hat?
Verfasst: Sa 1. Jun 2013, 16:19
von esdd
Den Unterschied siehst du nicht, so lange du keinen Text außerhalb der Noden und nur Großbuchstaben ohne Unterlängen verwendest. Nimm das folgende Beispiel und kommentiere da die beiden Zeilen abwechselnd oder gleichzeitig aus.
\documentclass{scrartcl}
\usepackage{xltxtra}
\defaultfontfeatures{Mapping=tex-text}
\usepackage{polyglossia}
\setdefaultlanguage[spelling=new]{german}
\usepackage{tikz}
\tikzset{table/.style={remember picture,%
baseline,%
every node/.style={anchor=base}%
}}
\begin{document}
\begin{tabular} {c | c}
\tikz[table] \node (nA) {A};&
\tikz[table] \node (nB) {B};\\
\tikz[table] \node (nC)[anchor=base] {C}; Text ohne tikz g&
\tikz[table] \node (nD) {Dg};Text ohne tikz g
\end{tabular}
\begin{tikzpicture}[remember picture,overlay]
\draw[->] (nA.center) -- (nD.center);
\end{tikzpicture}
\end{document}
Da wir für das Einfügen der Node keine Koordinaten vorgegeben haben, wird deren center im Ursprung des tikzbildes - also dem Punkt (0,0) - eingefügt. Mit anchor=base sorgen wir dafür, dass base anstatt center auf dem Ursprung positioniert wird.
Das tikzbild selbst wird allerdings mit seiner Unterkante auf der Grundlinie des umgebenden Textes eingefügt. Mit baseline als Synonym für baseline=0pt oder baseline=(current bounding box.base) wird das Bild nun so verschoben, dass die Linie y=0 des Bildes, die auch den Ursprung enthält, auf der Grundlinie des Textes neben dem tikzbild liegt.
Gruß
Elke
Verfasst: Sa 1. Jun 2013, 17:00
von MoonKid
Mhm... Ich sehe einen Unterschied. Aber so ganz schnall ich es nicht.
Is für mein Problem auch erstmal nciht wichtig. Trotzdem danke.