Ich möchte 3 Bilder nebeneinander zeichnen.

Wie muss dazu die scope-Umgebung eingestellt werden, damit die die Graphen auf einer baseline (x-Achse) nebeneinander liegen?

alt text

Open in Online-Editor
\documentclass[border=5pt]{standalone}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
%\usetikzlibrary{positioning}

\begin{document}

\begin{tikzpicture}

\begin{scope}[name=Urbild]
\draw[->] (-0.5,0)--(0.5,0);
\draw[->] (0,-0.5)--(0,0.5) node[above]{Urbild};
\end{scope}

\begin{scope}[name=Pfeil, right of=A]
\node[red]{$\rightarrow$}; 
\end{scope}

\begin{scope}[right of=Pfeil, scale=0.35]
\draw[->] (-2,0)--(2,0);
\draw[->] (0,-2)--(0,2) node[above]{Bild};
\end{scope}

\end{tikzpicture}

\end{document}

gefragt 17 Dez '15, 15:02

cis's gravatar image

cis
9.5k95459491
Akzeptiert-Rate: 29%

bearbeitet 07 Feb '16, 11:35

saputello's gravatar image

saputello
11.1k174365

xshift=<xdim> oder shift={(<xdim>,<ydim>)}.

(18 Dez '15, 09:53) Henri

Ja händisch gehts, klar. Ich wollte es irgendwie professionell machen - mit automatischer Ausrichtung.

(18 Dez '15, 11:27) cis

Mir ist nicht ganz klar, was Dein eigentliches Ziel ist. Selbst wenn man die Scopes wie Nodes nebeneinander platzieren und aneinander ausrichten könnte, wären die x-Achsen nicht auf einer Höhe, da sie sich nicht in der vertikalen Mitte der Teilzeichnungen befinden, die ja ebenfalls die Beschriftungen »Urbild« und »Bild« enthalten.

Prinzipiell ist es möglich für einen Scope mittels der Option local bounding box=<name> einen Node <name> zu definieren, den man für die spätere relative Positionierung weiterer Zeichungsteile verwenden kann. Laut Dokumentation verlangsamt die häufige Verwendung von local bounding box=<name> auch den Erstellungsprozess. Und AFAIK kann man diesen speziellen Node aber nicht mit einem anchor irgendwo positionieren. Deshalb müsste man die zweite Teilzeichnung zunächst in einer Box speichern, die man dann in einen normalen Node einfügen kann.

Das folgende Beispiel soll nur die Möglichkeiten zeigen. Die x-Achsen sind nur dann auf der gleichen Höhe, wenn sie sich in der vertikalen Mitte der Teilbilder befinden.

Open in Online-Editor
\documentclass[border=5pt]{standalone}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{positioning}

\newbox\mybox
\newcommand{\tikzbox}[2][\mybox]{%
  \sbox#1{\pgfinterruptpicture#2\endpgfinterruptpicture}}

\begin{document}
\begin{tikzpicture}[node distance=0pt]

\begin{scope}[local bounding box=Urbild]
\draw[->] (-.5,0)--(.5,0);
\draw[->] (0,-0.5)--(0,0.5);
\end{scope}
\node[above = of Urbild]{Urbild};

\node[red,right = of Urbild](pfeil){$\rightarrow$};

\tikzbox{\tikz[scale=.35,baseline=(O)]{
  \draw[->] (0,0)--(4,0)coordinate(O);
  \draw[->] (2,-2)--(2,2);
}}
\node[inner sep=0pt,right= of pfeil](bild){\usebox\mybox};
\node[above = of bild]{Bild};

\end{tikzpicture}
\end{document}

alt text

Dass der rote Pfeil scheinbar nach oben verschoben ist, liegt an dem Zeichen selbst. Das lässt sich ganz einfach über {\setlength\fboxsep{0pt}\fbox{$\rightarrow$}} nachvollziehen. Man erhält folgendes Ergebnis:

alt text

Es wäre damit vermutlich sinnvoller, den Pfeil auch einfach mit TikZ zeichnen zu lassen.

Zumindest bei dem von Dir angegebenen MWE würde ich die beiden Teilzeichnungen in separaten tikzpicture Umgebungen erstellen und bei beiden eine baseline festlegen. Damit lässt sich dann auch sicher stellen, dass die x-Achsen auf der gleichen Höhe liegen.

Open in Online-Editor
\documentclass[border=5pt]{standalone}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{positioning}

\begin{document}
\tikz[baseline=(O)]{
  \draw[->] (-0.5,0)--(0.5,0)coordinate(O);
  \draw[->] (0,-0.5)--(0,0.5) node[above]{Urbild};
  \node[red,right=0pt of O]{$\rightarrow$};
}%
\tikz[baseline=(O),scale=.35]{
  \draw[->] (-2,0)--(2,0)coordinate(O);
  \draw[->] (0,-2)--(0,2) node[above]{Bild};
}
\end{document}
Permanenter link

beantwortet 19 Dez '15, 01:29

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 19 Dez '15, 08:39

saputello's gravatar image

saputello
11.1k174365

Mmh, dann scheint scope als Lösung auszufallen. Ich habe dazu hier -- http://tex.stackexchange.com/questions/144402/positioning-a-tikz-scope-relative-to-another-tikz-scope -- einen interessannten Beitrag gelesen, wenngleich dort auch mit shift nachkorrigiert wird.

Bei dem Pfeil bin ich mir grad nicht siucher, ob der Pfeil mapsto nicht sinnvoller wäre; den könnte man auch mit TikZ zeichnen, aber mir wäre das Operationszeichen lieber.

(19 Dez '15, 06:31) cis

@cis Die Idee hatte ich unabhängig von tex.sx auch, aber dann muss der Koordinatenursprung des zweiten Scopes genau an dem Punkt liegen, mit dem Du den Scope positionierst. In Deinem Fall dürften keine negativen x-Werte vorkommen, d.h. Du müsstest die zweite Teilzeichnung umschreiben ... Steht übrigens auch in einem der Kommentare unter Deinem Link. Deshalb habe ich das von vornherein verworfen. shift wird in dem Beispiel dagegen nur verwendet, um den Abstand zwischen den beiden Teilzeichnungen festzulegen.

(19 Dez '15, 12:55) esdd
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
×70
×15
×3

gestellte Frage: 17 Dez '15, 15:02

Frage wurde gesehen: 21,242 Mal

zuletzt geändert: 07 Feb '16, 11:35