Text neben Tikz anordnen

Tabellen und Grafiken erstellen und anordnen


Flo Rida
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 71
Registriert: Do 22. Mai 2014, 23:07

Text neben Tikz anordnen

Beitrag von Flo Rida »

Hallo,

ich habe mit Tikz eine Funktion gezeichnet. Daneben soll nun Text zentriert auf die Mitte der Tikz-Umgebung stehen. Der Text soll bis zum rechten Rand gehen. Zum Verdeutlichen meine bisherige Idee:
\documentclass[a4paper]{scrartcl}%evtl. mit parskip=full/half siehe KOMA
\usepackage{fixltx2e}  % Verbessert einige Kernkompetenzen von LaTeX2e
\usepackage[ngerman]{babel} %neue deutsche Rechtschreibung (Silbentrennung, Verzeichnisse ect.)
\usepackage[T1]{fontenc} %Ausgabecodierung festlegen
\usepackage[utf8]{inputenc} %Latex kann Nicht-ASCII-Zeichen (z.B.€) im Quelltext umwandeln
\usepackage{tikz}

\begin{document}
\begin{minipage}[c][][c]{\textwidth}
\begin{minipage}{8cm}
\begin{tikzpicture}[domain=0:2*pi,] % Zeichenbereich
 %Achsen zeichnen
 \draw[->] (-1pt,0) -- (2.2*pi,0) node[below] {$x$};
 \draw[->] (0,-1.5) -- (0,1.5) node[left] {$y$};
 %Achsenbeschriftungen zeichnen
 \foreach \x in {1,2}
  \draw(\x*pi,-1pt)--(\x*pi,1pt) node[below]{$\x \pi$}; 
 \foreach \x in {1,3}
  \draw(\x/2*pi,-1pt)--(\x/2*pi,1pt) node[below]{$\frac{\x}{2}\pi$};
 \foreach \y in {-1,0,1}
  \draw(-1pt,\y) -- (1pt,\y) node[left]{$\y$};
 % Funktionen zeichnen
 \draw[color=black] plot (\x,{sin(\x r)}) (2.5,0.8)node[right]{$f(x) = \sin x$};
\end{tikzpicture}
\end{minipage}
\begin{minipage}[c][][c]{5cm}{
sin-Fkt. (Bewegung der Ladungsträger) über Einheitskreis definiert $sin(\omega t)$ in die komplexe Zahlenebene}
\end{minipage}
\end{minipage}
\end{document}
Mich stören daran extrem die absoluten Breitenangaben. Latex soll das automatisch für mich machen. Nach dem Schema: 1. Tikz-Grafik links ausrichten und zeichen 2. Mit Text bis zum rechten Rand "auffüllen" und diesen an der tikz-Grafik vertikal zentrieren.

Nebenher noch eine Frage am Rande: Kann ich in tikz ein grid ohne viel Aufwand an vielfachen von pi zeichnen?

Viele Grüße
Flo Rida

Noch so einer

Beitrag von Noch so einer »

Man könnte eine tabularx dafür verwenden:
\documentclass[a4paper]{scrartcl}%evtl. mit parskip=full/half siehe KOMA
\usepackage{fixltx2e}  % Verbessert einige Kernkompetenzen von LaTeX2e
\usepackage[ngerman]{babel} %neue deutsche Rechtschreibung (Silbentrennung, Verzeichnisse ect.)
\usepackage[T1]{fontenc} %Ausgabecodierung festlegen
\usepackage[utf8]{inputenc} %Latex kann Nicht-ASCII-Zeichen (z.B.€) im Quelltext umwandeln
\usepackage{tikz}
\usepackage{tabularx}
\begin{document}
\noindent
\begin{tabularx}{\linewidth}{@{}lX@{}}
\raisebox{\dimexpr-\ht\strutbox-.5\totalheight\relax}{\begin{tikzpicture}[domain=0:2*pi,] % Zeichenbereich
 %Achsen zeichnen
 \draw[->] (-1pt,0) -- (2.2*pi,0) node[below] {$x$};
 \draw[->] (0,-1.5) -- (0,1.5) node[left] {$y$};
 %Achsenbeschriftungen zeichnen
 \foreach \x in {1,2}
  \draw(\x*pi,-1pt)--(\x*pi,1pt) node[below]{$\x \pi$};
 \foreach \x in {1,3}
  \draw(\x/2*pi,-1pt)--(\x/2*pi,1pt) node[below]{$\frac{\x}{2}\pi$};
 \foreach \y in {-1,0,1}
  \draw(-1pt,\y) -- (1pt,\y) node[left]{$\y$};
 % Funktionen zeichnen
 \draw[color=black] plot (\x,{sin(\x r)}) (2.5,0.8)node[right]{$f(x) = \sin x$};
\end{tikzpicture}} &
sin-Fkt. (Bewegung der Ladungsträger) über Einheitskreis definiert $sin(\omega t)$ in die komplexe Zahlenebene
\end{tabularx}
\end{document}
Statt der Verwendung einer \raisebox könnte man sicher auch die Grundlinie der tikz-Grafik durch irgendwelche tikz-Optionen anpassen. Müsste ich jetzt aber nachschauen. Da war für mich \raisebox einfacher und funktioniert auch mit anderen Inhalten.

BTW: scrartcl kann auch Bildbeschreibungen neben ein Bild setzen. Siehe dazu captionbeside in der Anleitung oder im Buch.

Die zweite Frage stellst Du am besten als neue Frage. Ich bin ziemlich sicher, dass dann schnell eine unserer tikz-Expertinnen eine Antwort liefert.

Flo Rida
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 71
Registriert: Do 22. Mai 2014, 23:07

Beitrag von Flo Rida »

Hey vielen Dank,

sag mal wenn ich daneben eine align*-Umgebung haben möchte wird die immer unten ausgerichtet, was kann ich da machen?

Grüße
Flo Rida

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Das Gitter bekommst Du zum Beispiel mit
 \draw[help lines,xstep=pi](0,-1.5)grid(2.2*pi,1.5);
Wenn der Text automatisch (also unabhängig von der Zeilenanzahl) zentriert zur Höhe des Bildes sein soll, dann kann man die Option baseline=(current bounding box.center) für die tikzpicture Umgebung verwenden und die X-Spalte so umdefinieren, dass sie den m-Spaltentyp verwendet:
\documentclass{scrartcl}
\usepackage{fixltx2e}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz} 
\usepackage{tabularx}
\usepackage{ragged2e}

\begin{document} 
\noindent 
\renewcommand\tabularxcolumn[1]{m{#1}}
\begin{tabularx}{\linewidth}{@{}l>{\RaggedRight}X@{}}
\begin{tikzpicture}[%
  baseline=(current bounding box.center),% Grundlinie auf halber Höhe
  domain=0:2*pi, % Zeichenbereich 
  ]%
  %Gitter
  \draw[help lines,xstep=pi](0,-1.5)grid(2.2*pi,1.5);
  %Achsen zeichnen 
  \draw[->] (-1pt,0) -- (2.2*pi,0) node[below] {$x$}; 
  \draw[->] (0,-1.5) -- (0,1.5) node[left] {$y$}; 
  %Achsenbeschriftungen zeichnen 
  \foreach \x in {1,2} 
   \draw(\x*pi,-1pt)--(\x*pi,1pt) node[below]{$\x \pi$}; 
  \foreach \x in {1,3} 
   \draw(\x/2*pi,-1pt)--(\x/2*pi,1pt) node[below]{$\frac{\x}{2}\pi$}; 
  \foreach \y in {-1,0,1} 
   \draw(-1pt,\y) -- (1pt,\y) node[left]{$\y$}; 
  % Funktionen zeichnen 
  \draw[color=black] plot (\x,{sin(\x r)}) (2.5,0.8)node[right]{$f(x) = \sin x$}; 
\end{tikzpicture}%
 & 
 sin-Fkt. (Bewegung der Ladungsträger) über Einheitskreis definiert $sin(\omega t)$ in die komplexe Zahlenebene
\end{tabularx} 
\end{document}
Zu beachten ist dabei, dass die x-Achse etwas unterhalb der Mitte liegt, da die Beschriftung der y-Achse über die Achse hinausragt.

Aber man kann sich innerhalb der Abbildung eine Koordinate auf der gewünschten Höhe definieren, die man dann zur Festlegung der baseline verwendet:
\documentclass{scrartcl}
\usepackage{fixltx2e}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz} 
\usepackage{tabularx}
\usepackage{ragged2e}

\begin{document} 
\noindent 
\renewcommand\tabularxcolumn[1]{m{#1}}
\begin{tabularx}{\linewidth}{@{}l>{\RaggedRight}X@{}}
\begin{tikzpicture}[%
  baseline=(O),% Grundlinie auf Höhe der x-Achse
  domain=0:2*pi, % Zeichenbereich 
  ]%
  \coordinate(O)at(0,0);% Koordinate auf x-Achse für baseline Option
  %Gitter
  \draw[help lines,xstep=pi](0,-1.5)grid(2.2*pi,1.5);
  %Achsen zeichnen 
  \draw[->] (-1pt,0) -- (2.2*pi,0) node[below] {$x$}; 
  \draw[->] (0,-1.5) -- (0,1.5) node[left] {$y$}; 
  %Achsenbeschriftungen zeichnen 
  \foreach \x in {1,2} 
   \draw(\x*pi,-1pt)--(\x*pi,1pt) node[below]{$\x \pi$}; 
  \foreach \x in {1,3} 
   \draw(\x/2*pi,-1pt)--(\x/2*pi,1pt) node[below]{$\frac{\x}{2}\pi$}; 
  \foreach \y in {-1,0,1} 
   \draw(-1pt,\y) -- (1pt,\y) node[left]{$\y$}; 
  % Funktionen zeichnen 
  \draw[color=black] plot (\x,{sin(\x r)}) (2.5,0.8)node[right]{$f(x) = \sin x$}; 
\end{tikzpicture}%
 & 
 sin-Fkt. (Bewegung der Ladungsträger) über Einheitskreis definiert $sin(\omega t)$ in die komplexe Zahlenebene
\end{tabularx} 
\end{document}
Gruß
Elke

PS: Bezüglich der align* Umgebung wäre es sinnvoll, wenn Du angibst, was da wie neben der Abbildung stehen soll.

Flo Rida
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 71
Registriert: Do 22. Mai 2014, 23:07

Beitrag von Flo Rida »

Danke Elke,

ich versuche gerade das die Rechnung innerhalb der Spalte linksbündig oder vielleicht zentriert ausgerichtet wird. Außerdem funktioniert die Ausrichtung in der align*-Umgebung mit dem & nicht. Hier mein Beispiel:
\documentclass{scrartcl} 
\usepackage{fixltx2e} 
\usepackage[ngerman]{babel} 
\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc}
\usepackage{amsmath} 
\usepackage{tikz} 
\usepackage{tabularx} 
\usepackage{ragged2e}
\usepackage{blindtext}

\begin{document} 

\blindtext

\bigskip

\begin{minipage}{\linewidth}
\renewcommand\tabularxcolumn[1]{m{#1}} 
\begin{tabularx}{\linewidth}{@{}l>{\RaggedRight}X@{}} 
\begin{tikzpicture}[baseline=(current bounding box.center)]
%Achsen zeichen
 \draw[->] (-.5,0) -- (2,0) node[below]{$Re$};
 \draw[->] (0,-.5) -- (0,2) node[left]{$Im$};
%Achsenbeschriftungen zeichnen
 \foreach \x in {1}
  \draw(\x,-1pt)--(\x,1pt) node[below]{$\x$};
 \foreach \y in {1} 
  \draw(-1pt,\y)--(1pt,\y) node[left]{$\y$};
%Zeiger zeichnen
 \draw[->,very thick](0,0) -- (45:2) node[above]{\underline{I}};
 \draw(.5,0) arc [radius=.5, start angle=0, end angle=45] node[right]{$\phi_i$};
 \draw[->,very thick](0,0) -- ({2*cos(45)},0) node[above]{\underline{I}\textsubscript{w}};
 \draw[->, very thick](0,0) -- (0,{2*sin(45)}) node[right]{\underline{I}\textsubscript{b}};
\end{tikzpicture} 
 &
Linksbündig ausgerichtet so gefällt mir das :-)
\begin{align*}
\underline{I}=I_w+jI_b \\
\underline{I}=Ie^{j\phi}=\sqrt{{I_w}^2+{I_b}^2} \\
\underline{I}=I(\cos\phi+j\sin\phi)
\end{align*}
Und die Rechnung?

Sie nimmt auch den \& -Operator nicht an :-( 
\end{tabularx} 
\end{minipage}

\end{document}
Nebenher: Was bedeuten machen diese Zeilen genau:
\renewcommand\tabularxcolumn[1]{m{#1}}
\begin{tabularx}{\linewidth}{@{}l>{\RaggedRight}X@{}}
bis auf \RaggedRight verstehe ich sie nicht. Würde da gerne etwas mehr zu wissen.

Liebe Grüße
Flo Rida

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Flo Rida hat geschrieben: Nebenher: Was bedeuten machen diese Zeilen genau:
\renewcommand\tabularxcolumn[1]{m{#1}}
\begin{tabularx}{\linewidth}{@{}l>{\RaggedRight}X@{}}
bis auf \RaggedRight verstehe ich sie nicht. Würde da gerne etwas mehr zu wissen.
Es wird eine Tabelle mit der Gesamtbreite \linewidth begonnen. Mittels @{} wird statt des sonst einzufügenden Abstandes \tabcolsep nichts eingefügt. Die zweite Spalte ist eine linksbündige X Spalte. Normal hat eine X Spalte die p Spaltenform, nur eben mit automatisch angepasster Breite, so dass die Tabelle die gewünschte Gesamtbreite erreicht. Da die Spalte in Deinem Fall aber vertikal zentriert werden soll, habe ich in der ersten Zeile die Spaltenform für die X Spalte in m geändert. X Spalten kann man innerhalb von tabulax Umgebungen nutzen, die das Laden des gleichnamigen Paketes erfordern.

In Deinem Besipiel fehlt vor der minipage noch ein \noindent. Wenn Du das nicht einfügst, dann ist alles um die Breite des Absatzeinzuges nach rechts verschoben.

Wenn Du align* in der Tabelle verwenden möchtest, dann müsstest Du diese Umgebung in einer \parbox oder minipage mit einer festgelegten Breite einfügen. Ohne Nummerierung kannst Du aber auch aligned im Inlinemathemodus verwenden:


\documentclass{scrartcl} 
\usepackage{fixltx2e} 
\usepackage[ngerman]{babel} 
\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 
\usepackage{amsmath} 
\usepackage{tikz} 
\usepackage{tabularx} 
\usepackage{ragged2e} 
\usepackage{blindtext,varwidth} 

\begin{document} 
\blindtext 

\bigskip 
\noindent\begin{minipage}{\linewidth} 
\renewcommand\tabularxcolumn[1]{m{#1}} 
\begin{tabularx}{\linewidth}{@{}l>{\RaggedRight}X@{}} 
\begin{tikzpicture}[baseline=(current bounding box.center)] 
%Achsen zeichen 
  \draw[->] (-.5,0) -- (2,0) node[below]{$Re$}; 
  \draw[->] (0,-.5) -- (0,2) node[left]{$Im$}; 
%Achsenbeschriftungen zeichnen 
  \foreach \x in {1} 
   \draw(\x,-1pt)--(\x,1pt) node[below]{$\x$}; 
  \foreach \y in {1} 
   \draw(-1pt,\y)--(1pt,\y) node[left]{$\y$}; 
%Zeiger zeichnen 
  \draw[->,very thick](0,0) -- (45:2) node[above]{\underline{I}}; 
  \draw(.5,0) arc [radius=.5, start angle=0, end angle=45] node[right]{$\phi_i$}; 
  \draw[->,very thick](0,0) -- ({2*cos(45)},0) node[above]{\underline{I}\textsubscript{w}}; 
  \draw[->, very thick](0,0) -- (0,{2*sin(45)}) node[right]{\underline{I}\textsubscript{b}}; 
\end{tikzpicture} 
  & 
  Linksbündig ausgerichtet so gefällt mir das Smile
  \par\medskip
  $\begin{aligned} 
    \underline{I}&=I_w+jI_b \\ 
    \underline{I}&=Ie^{j\phi}=\sqrt{{I_w}^2+{I_b}^2} \\ 
    \underline{I}&=I(\cos\phi+j\sin\phi) 
  \end{aligned}$
  \par\medskip
   Und die Rechnung? 

   Sie nimmt auch den \& -Operator nicht an Sad 
\end{tabularx} 
\end{minipage} 
\end{document}
Wenn das ganze noch horizontal zentriert werden soll, dann könntest Du das mit
 Linksbündig ausgerichtet so gefällt mir das Smile
\par\medskip
{\centering
  $\begin{aligned} 
    \underline{I}&=I_w+jI_b \\ 
    \underline{I}&=Ie^{j\phi}=\sqrt{{I_w}^2+{I_b}^2} \\ 
    \underline{I}&=I(\cos\phi+j\sin\phi) 
  \end{aligned}$
\par}
\medskip
 Und die Rechnung?  
erreichen.

Gruß
Elke

Flo Rida
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 71
Registriert: Do 22. Mai 2014, 23:07

Beitrag von Flo Rida »

Hallo Elke,

auch besonders für die Erklärung vielen Dank :D !

Viele Grüße
Flo Rida

Antworten