Der Textfluss in Latex zeichnet sich gerade durch seine Anpassungsfähigkeit aus, welches einem Arbeit ersparen soll. Absolute Positionierungen sind hier also nicht vorteilhaft. Jedoch habe ich ein ziemlich großes Objekt, erstellt mit TikZ, das rechts viel Platz bietet, z.B. für eine Legende, Beschreibungsliste... o. Ä. Gäbe es eine Möglichkeit, bezogen auf das Objekt/ Trapez (als Ortsangabe), diesen Platz auf der unteren rechten Seite zu nutzen? Quelltext für das Objekt/ Trapez:

Open in writeLaTeX
\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{calc,intersections}
\begin{document}
\begin{table}

\begin{tikzpicture}[every node/.append style={minimum width=1cm, minimum height=1cm}]

% Eckpunkte
\node (1) at (17,16)    {1};
\node (2) at (1,16)     {2};
\node (3) at (2,0)      {3};
\node (4) at (9,0)      {4};

\def \s{8} % Zwischenspaltenanzahl (Senkrechten)
\def \w{6} % Zwischenzeilenanzahl (Waagerechten)

% Gitterpunkte der oberen und unteren Seite:
\foreach \n in {1, ..., \s}
{
  \node (O\n) at ($ (1) !.{(1 / (\s + 1)) * \n}! (2) $) {O\n}; 
  \node (U\n) at ($ (4) !.{(1 / (\s + 1)) * \n}! (3) $) {U\n};
}

% Gitterpunkte der linken und rechten Seite: 
\foreach \n in {1, ..., \w}
{
  \node (L\n) at ($ (2) !.{(1 / (\w + 1)) * \n}! (3) $) {L\n}; 
  \node (R\n) at ($ (1) !.{(1 / (\w + 1)) * \n}! (4) $) {R\n};
}

% Festlegung senkrechter und waagerechter Reihen: 
\foreach \n in {1, ..., \s}
  \path [name path global/.expanded=O\n--U\n] (O\n) -- (U\n);
\foreach \n in {1, ..., \w}
  \path [name path global/.expanded=L\n--R\n] (L\n) -- (R\n);

% Schnittpunkte der senkrechen mit den waagerechten Reihen als neue Gitterpunkte:  
\foreach \i in {1, ..., \w}
{
  \foreach \n in {1, ..., \s}
  {
    \path [name intersections/.expanded = {of=O\n--U\n\space and L\i--R\i, by=\n\i}];
    \node at (\n\i) {\n\i};
  }
}

\end{tikzpicture}

\end{table}
\end{document}

gefragt 02 Mär '14, 16:10

rix's gravatar image

rix
3452419
Akzeptiert: 93%

bearbeitet 02 Mär '14, 17:34

esdd's gravatar image

esdd
14.2k53251

@rix Du brauchst nicht <pre><code> ... </pre></code>. Einfach markieren und Strg-K drücken, oder den Code-Button. Oder mit 4 Leerzeichen einrücken. (Markdown-Hilfe).

(02 Mär '14, 16:15) stefan ♦♦

Solltest Du mit Legende die \caption gemeint haben so ist auch das möglich. Hierzu muss man nur eine minipage in eine TikZ-Node packen. Im folgenden Beispiel habe ich die Tabelle in eine Abbildung geändert, da mir das passender erscheint.

alt text

Open in writeLaTeX
\documentclass{article}

\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{calc,intersections}

\usepackage[margin=1.5cm]{geometry}
\usepackage{blindtext}

\begin{document}
\blindtext
\begin{figure}
\centering
\begin{tikzpicture}[every node/.append style={minimum width=1cm, minimum height=1cm}]

% Eckpunkte
\node (1) at (17,16)    {1};
\node (2) at (1,16)     {2};
\node (3) at (2,0)      {3};
\node (4) at (9,0)      {4};

\def \s{8} % Zwischenspaltenanzahl (Senkrechten)
\def \w{6} % Zwischenzeilenanzahl (Waagerechten)

% Gitterpunkte der oberen und unteren Seite:
\foreach \n in {1, ..., \s}
{
  \node (O\n) at ($ (1) !.{(1 / (\s + 1)) * \n}! (2) $) {O\n}; 
  \node (U\n) at ($ (4) !.{(1 / (\s + 1)) * \n}! (3) $) {U\n};
}

% Gitterpunkte der linken und rechten Seite: 
\foreach \n in {1, ..., \w}
{
  \node (L\n) at ($ (2) !.{(1 / (\w + 1)) * \n}! (3) $) {L\n}; 
  \node (R\n) at ($ (1) !.{(1 / (\w + 1)) * \n}! (4) $) {R\n};
}

% Festlegung senkrechter und waagerechter Reihen: 
\foreach \n in {1, ..., \s}
  \path [name path global/.expanded=O\n--U\n] (O\n) -- (U\n);
\foreach \n in {1, ..., \w}
  \path [name path global/.expanded=L\n--R\n] (L\n) -- (R\n);

% Schnittpunkte der senkrechen mit den waagerechten Reihen als neue Gitterpunkte:  
\foreach \i in {1, ..., \w}
{
  \foreach \n in {1, ..., \s}
  {
    \path [name intersections/.expanded = {of=O\n--U\n\space and L\i--R\i, by=\n\i}];
    \node at (\n\i) {\n\i};
  }
}
\draw (current bounding box.south east) node[anchor=south east]
    { \begin{minipage}{5.5cm}
        \caption{Diese Abbildung zeigt ein Trapez, nach dem Formalismus nach Sonundso. Man beachte das es sehr groß ist und fast eine ganze Seite füllt. Man könnte natürlich noch viel mehr dazu sagen, wenn
        man denn wüsste was es zu bedeuten hat.}
    \end{minipage}
    };
\end{tikzpicture}

\end{figure}
\end{document}

EDIT: Alternativ kann man auch anstelle der minipage, die Breite der Node mit text width= angeben. Vielen Dank für diesen Tip an Clemens!

Open in writeLaTeX
\draw (current bounding box.south east) 
    node[anchor=south east, align=justify, text width=5.5cm]
    {\caption{Diese Abbildung zeigt ein Trapez, nach dem Formalismus
                nach Sonundso. Man beachte das es sehr groß ist und
                fast eine ganze Seite füllt. Man könnte natürlich noch
                viel mehr dazu sagen, wenn man denn wüsste was es zu
                bedeuten hat.}\label{trapez}
    };
Permanenter link

beantwortet 02 Mär '14, 17:25

quinmars's gravatar image

quinmars
1165

bearbeitet 03 Mär '14, 15:24

Der Node die Optionen align=justify,text width=5.5cm zu geben, sollte eigentlich reichen, ohne dass man extra eine minipage verwenden muss.

(03 Mär '14, 12:22) Clemens

eingebaut, ausprobiert und geklappt; hab dank! :-)

(03 Mär '14, 14:22) rix

@Clemens, vielen Dank für den Tipp! Irgendwie habe ich gedacht, dass das nicht funktionieren kann, darum hab ich es erst gar nicht ohne minipage probiert.

(03 Mär '14, 15:26) quinmars

@rix, freut mich, dass ich helfen konnte.

(03 Mär '14, 15:27) quinmars

@quinmars soweit ich mich erinnere, setzt die option align (zumindest mei den meisten Werten) den Inhalt der Node in eine \parbox (oder eine minipage, was letztlich dasselbe ist)... wahrscheinlich hat pgf sein eigenes Lowlevel-Konstrukt, aber das Konzept ist das gleiche

(03 Mär '14, 16:03) Clemens

Für relative Positionierung empfiehlt sich das Laden der positioning-library, hier also:

Open in writeLaTeX
\usetikzlibrary{calc,intersections,positioning}

Dann kannst Du in Deinem Bild einfach einen neuen Node setzen, mit Bezug auf einen existenten Node und dort hinein Text oder Grafik schreiben, wie z.B.:

Open in writeLaTeX
\node [right=2cm of U1] {mehr Text};

Das geht sogar in anderen TikZ-Bildern. Und man kann mit TikZ auch Bezug auf Stellen in klassischen Tabellen, Gleichungen uvm. nehmen, für Beschriftungen, Pfeile u.a.

Permanenter link

beantwortet 02 Mär '14, 16:25

stefan's gravatar image

stefan ♦♦
5.8k12134

bearbeitet 02 Mär '14, 16:26

Herzlichsten Dank, auch was ich gesucht habe (unter anderem zur Beschriftung), echt stark, wie einfach und zugleich mächtig die Befehle sind ;-)

(03 Mär '14, 14:17) rix
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×31

Frage gestellt: 02 Mär '14, 16:10

Frage wurde angeschaut: 3,005 Mal

Zuletzt aktualisiert: 03 Mär '14, 16:03