Anzeige:
Ergebnis 1 bis 12 von 12

Thema: Bilder ausrichten in enumerate Umgebung

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.10.2011
    Beiträge
    9

    Bilder ausrichten in enumerate Umgebung

    Hallo Community,

    ich habe nun eine Frage zum Ausrichten meiner Bilder, welche sich bspw. in einer enumerate Umgebung befinden.

    Damit die Bilder an die richtige Stelle gesetzt werden (und nicht weg floaten), verzichte ich schon auf die figure-Umgebung.

    Nun möchte ich aber, dass mein Bild nicht mittig ausgerichtet wird wie in Beispiel a), sondern das Bild nur nach unten hin aufgebaut wird, d.h. das a) würde von der Grafik aus gesehen oben links stehen.

    Kann mir da jemand weiter helfen?

    Lg Julius

    Code:
    \documentclass{article}
    
    % Deutsche Sprachpakete
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern}
    \usepackage[ngerman]{babel}
    
    %Mathepakete
    \usepackage{amsmath,amssymb, amstext}
    \usepackage{ntheorem}
    
    %Listenpaket
    \usepackage{enumerate}
    
    %Grafiken
    \usepackage{tikz}
    
    \begin{document}
    \theoremstyle{break}
    \newtheorem*{Bsp}{Beispiel}
    
    \begin{Bsp}
        \begin{enumerate}[(a)]
            \item	{
                \begin{minipage}[h]{\textwidth}
                    \begin{tikzpicture}
                        \begin{scope}
                            \node (A) at (0.5,0) {$A$};
                                \draw[color=red, thick] (2.5, 2) ellipse (2 and 2.5);
                                \node (d1) at (1,1) {$\circ$};
                                \node (d2) at (2,2) {$\circ$};
                                \node (d3) at (1,3) {$\circ$};
                                \node (d4) at (3,1) {$\circ$};
                                \node (d5) at (4,2) {$\circ$};
                                \node (d6) at (3,3) {$\circ$};
                            \end{scope}
                            \begin{scope}
                                \node (B) at (12,0) {$B$};
                                \draw[color=red, thick] (5.5, 0) rectangle (11.5, 4);
                                \node (w1) at (6.5,0.5) {$X$};
                                \node (w2) at (7,2) {$X$};
                                \node (w3) at (8,3) {$X$};
                                \node (w4) at (10,1) {$X$};
                                \node (w5) at (9,2) {$X$};
                                \node (w6) at (11,3) {$X$};
                            \end{scope}
                            \path[draw,->] (d1) to [bend right] (w1);
                            \path[draw,->] (d2) to [bend left] (w5);
                            \path[draw,->] (d3) to [bend left] (w3);
                            \path[draw,->] (d5) to [bend left] (w2);
                            \path[draw,->] (d6) to [bend left] (w3);
                            \path[draw,->] (d4) -- (w4);
                            \draw[color=orange, densely dashed] (6, -0.5) rectangle (10.5,4.5);
                            \node (wf) at (11,-1) {$W_f = Im(f)$ 'Image von $f$'};
                        \end{tikzpicture}
                    \end{minipage}
            }
            \item	Konstante Funktion: Sei $c \in B$, \[ f: A \to B, x \mapsto f(x) = c \in B (W_f = \{c\}) \]
            \item	Die Identität: Sei $A = B, id: A \to A, x \mapsto id(x) = x$
            \item	$f = Mikrowelle$												\\
                    $A = \{essbar\} \cap \{\text{kein Metall}\} \cap \{\text{enthält Wasser}\}$					\\
                    $B = \{\text{heiß}\}$												\\
            $Im(f) = A \cap B$
        \end{enumerate}
    \end{Bsp}
    
    \end{document}

  2. #2
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Mit \raisebox geht immer:
    Code:
            \item
                \begin{minipage}[t]{\linewidth}
                    \raisebox{-\totalheight}{\begin{tikzpicture}
                        \begin{scope}
                            \node (A) at (0.5,0) {$A$};
                                \draw[color=red, thick] (2.5, 2) ellipse (2 and 2.5);
                                \node (d1) at (1,1) {$\circ$};
                                \node (d2) at (2,2) {$\circ$};
                                \node (d3) at (1,3) {$\circ$};
                                \node (d4) at (3,1) {$\circ$};
                                \node (d5) at (4,2) {$\circ$};
                                \node (d6) at (3,3) {$\circ$};
                            \end{scope}
                            \begin{scope}
                                \node (B) at (12,0) {$B$};
                                \draw[color=red, thick] (5.5, 0) rectangle (11.5, 4);
                                \node (w1) at (6.5,0.5) {$X$};
                                \node (w2) at (7,2) {$X$};
                                \node (w3) at (8,3) {$X$};
                                \node (w4) at (10,1) {$X$};
                                \node (w5) at (9,2) {$X$};
                                \node (w6) at (11,3) {$X$};
                            \end{scope}
                            \path[draw,->] (d1) to [bend right] (w1);
                            \path[draw,->] (d2) to [bend left] (w5);
                            \path[draw,->] (d3) to [bend left] (w3);
                            \path[draw,->] (d5) to [bend left] (w2);
                            \path[draw,->] (d6) to [bend left] (w3);
                            \path[draw,->] (d4) -- (w4);
                            \draw[color=orange, densely dashed] (6, -0.5) rectangle (10.5,4.5);
                            \node (wf) at (11,-1) {$W_f = Im(f)$ 'Image von $f$'};
                        \end{tikzpicture}}
                    \end{minipage}
    Allerdings glaube ich mich auch dunkel zu erinnern, dass man auch bei tikz selbst eine Verschiebung (ähnlich wie bei picture) einstellen kann, so dass man die Grundlinie nicht manuell mit \raisebox nach unten verlegen muss. Ich bin jetzt aber zu faul, in der Anleitung nachzulesen.

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.10.2011
    Beiträge
    9
    Hey,

    damit bekomme ich zwar das Bild ordentlich positioniert, jedoch ist die Lösung suboptimal sobald ich mehr als 1 Bild hintereinander platziere, dann verbraucht der teilweise viel mehr Platz als nötig.

    Noch schlimmer ist es, wenn ich neben dem Bild eine Tabelle platzieren möchte, was ich vorher ohne Probleme mit 2 Minipages gemacht habe. Diese ist das wirklich ungünstig platziert, oftmals tiefer gestellt als das Bild, egal wie viel ich mit der raisebox jongliere.

    Fällt jemand noch eine alternative Lösung ein?

  4. #4
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Man kann auch Tabellen mit einer Platzierungsoption t oder b versehen. Die Platzierung h, die Du für minipage gewählt hattest, gibt es hingegen nicht und führt zu einer vertikalen Zentrierung. Lies einfach einmal die Möglichkeiten von minipage (wird bei mir ja ebenfalls verwendet) im usrguide nach.

    Und mach doch mal ein Beispiel, das das Problem zeigt. Würde mich wundern, wenn man da nicht mit korrekter Platzierung bei tabular und minipages etwas tun könnte. Die ganzen Möglichkeiten, die es im Zusammenspiel mit raisebox da so gibt, zeigt übrigens http://www.golatex.de/wichtige-hinwe...rum-t4688.html. Dort wird lediglich \includegraphics für das Bild und \parbox statt minipage verwendet, das spielt aber für das Prinzip keine Rolle.

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    In deinem Beispiel brauchst du keine minipage. Setze einfach die Grundlinie des Bildes oben:

    Code:
         \item       
                   \begin{tikzpicture}[baseline=(current bounding box.north)]

  6. #6
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Danke, das war das, was ich erwähnt hatte aber zu faul war in der Anleitung zu suchen. Wobei auch \raisebox die Grundlinie nach unten verlegt und sich deshalb am Zusammenspiel mit anderen minipage- oder mit tabular-Umgebungen wenig ändern sollte.

  7. #7
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Wobei auch \raisebox die Grundlinie nach unten verlegt und sich deshalb am Zusammenspiel mit anderen minipage- oder mit tabular-Umgebungen wenig ändern sollte.
    Wenn man nicht auf die Platzierungsoption der umgebenden minipage achtet (hier das unbekannte [h]) können zusätzliche Boxen mit eigenen Grundlinien schon überraschende Nebeneffekte haben:

    Code:
    \documentclass{article}
    \usepackage[ansinew]{inputenc}
    \usepackage[T1]{fontenc}
    
    \begin{document}
    abc\begin{minipage}{5cm}
            xyz\raisebox{-\height}{\rule{2cm}{2cm}}
         \end{minipage}
    
    
    \bigskip
    
    abc\begin{minipage}[t]{5cm}
         xyz\raisebox{-\height}{\rule{2cm}{2cm}} 
        \end{minipage}
    
    \end{document}

  8. #8
    Registrierter Benutzer
    Registriert seit
    31.03.2010
    Beiträge
    1.039
    Zitat Zitat von u_fischer Beitrag anzeigen
    Wenn man nicht auf die Platzierungsoption der umgebenden minipage achtet (hier das unbekannte [h]) können zusätzliche Boxen mit eigenen Grundlinien schon überraschende Nebeneffekte haben:
    Dass fehlende oder falsche Platzierungsoptionen Auswirkungen haben ist klar. Fehler und fehlende Angaben haben immer irgend eine Wirkung. Teil meiner Lösung war deshalb auch eine Korrektur dieses Fehlers …

    Versteh' mich bitte richtig: Das soll keine Kritik an Deiner Lösung sein. Die ist mit Sicherheit besser als meine, weshalb ich indirekt auch bereits bei meiner angedeutet hatte, dass suchen in der tikz-Anleitung nach genau Deiner Lösung vorteilhaft sein könnte. Ich wollte nur noch allgemein darauf hinweisen, dass man mit \raisebox allgemein die Grundlinie verschieben kann und man bei mehreren Elementen nebeneinander ggf. nicht nur das eine Element, sondern auch die Elemente daneben passend ausrichten muss. Wie das geht, wird unter dem von mir genannten Link am Beispiel \raisebox (mit \includegraphics) und \parbox gezeigt. Wen es interessiert, kann es sich anschauen, wen es nicht interessiert, soll es lassen.

  9. #9
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Ich wollte nur noch allgemein darauf hinweisen, dass man mit \raisebox allgemein die Grundlinie verschieben kann
    Gegen \raisebox als Lösung ist überhaupt nichts einzuwenden. Ob man das oder die tikz-Option benutzt ist mehr oder weniger Geschmackssache.

    Aber die minipage drumherum ist erstens einfach überflüssig und zweitens: je mehr Boxen umso schwieriger den Durchblick bei der Bestimmung der Lage der diversen Grundlinien und Referenzpunkte. Ich wollte mit meinem Beispiel nur mal demonstrieren, wie die Änderung der Grundlinie der äußeren Box scheinbar die innere verschiebt.

  10. #10
    Registrierter Benutzer
    Registriert seit
    20.10.2011
    Beiträge
    9
    Hey,

    erst einmal vielen dank, mit der Ausrichtung komme ich jetzt schon besser zurecht

    leider komme ich erst jetzt dazu wieder hier zu antworten.

    Die Ausrichtung über
    Code:
    \begin{tikzpicture}[baseline=(current bounding box.north)]
    klappt super, nur wie oben bereits erwähnt reißt das irgendwie die Tabelle nach oben. Wenn ich nur eine Tabelle habe wird diese super ausgerichtet, nur im Zusammenhang mit einem vorangestellten Bild macht es Probleme.

    Im Anhang ist der Code, den das betreffen würde (das was dort steht ist jetzt zusammenhanglos, aber für das Ausrichtungsproblem ist der Textinhalt sowieso bedeutungslos.)

    Code:
    \documentclass{article}
    
    % Deutsche Sprachpakete
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern}
    \usepackage[ngerman]{babel}
    
    %Mathepakete
    \usepackage{amsmath,amssymb, amstext}
    \usepackage{ntheorem}
    
    %Listenpaket
    \usepackage{enumerate}
    
    %Grafiken
    \usepackage{tikz}
    
    \begin{document}
    \theoremstyle{break}
    \newtheorem*{Bsp}{Beispiel}
    
    \begin{Bsp}
        \begin{enumerate}[(a)]
            \item	{
    		\begin{tikzpicture}[baseline=(current bounding box.north)]
    			\begin{scope}
    				\node (A) at (0,0.5) {$A$};
    				\draw[color=red, thick] (0.75, 1.5) ellipse (0.75 and 1);
    				\node (a1) at (1,1) {a};
    				\node (b1) at (0.5,1.5) {b};
    				\node (c1) at (1,2) {c};
    			\end{scope}
    			\begin{scope}
    				\node (A) at (4.5,0.5) {$A$};
    				\draw[color=red, thick] (3.75, 1.5) ellipse (0.75 and 1);
    				\node (a2) at (4,1) {a};
    				\node (b2) at (3.5,1.5) {b};
    				\node (c2) at (4,2) {c};
    			\end{scope}
    			\path[draw,->] (a1) to [bend right] (a2);
    			\path[draw,->] (b1) -- (b2);
    			\path[draw,->] (c1) to [bend left] (c2);
    		\end{tikzpicture}
    		\begin{tabular}{c | c c c c}
    			$A \times A$	&	a	&	b	&	c						\\
    			\hline
    			a		&	\colorbox{red}{(a,a)}	&	\colorbox{red}{(a,b)}	&	(a,c)			\\
    			b		&	(b,a)			&	\colorbox{red}{(b,b)}	&	\colorbox{red}{(b,c)}	\\
    			c		&	\colorbox{red}{(c,a)}	&	(c,b)			&	(c,c)			\\
    		\end{tabular}
    	}
            \item	Konstante Funktion: Sei $c \in B$, \[ f: A \to B, x \mapsto f(x) = c \in B (W_f = \{c\}) \]
            \item	Die Identität: Sei $A = B, id: A \to A, x \mapsto id(x) = x$
            \item	$f = Mikrowelle$												\\
                    $A = \{essbar\} \cap \{\text{kein Metall}\} \cap \{\text{enthält Wasser}\}$					\\
                    $B = \{\text{heiß}\}$												\\
            $Im(f) = A \cap B$
        \end{enumerate}
    \end{Bsp}
    
    \end{document}

  11. #11
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Wenn ich nur eine Tabelle habe wird diese super ausgerichtet, nur im Zusammenhang mit einem vorangestellten Bild macht es Probleme.
    Weder sehe ich, dass das Bild die Ausrichtung der Tabelle beeinflusst (relativ zur durch das a) gegebenen Grundlinie) noch wüsste ich einen Grund dafür. Wenn du möchstest, dass die 1 Zeile der Tabelle sich am a) ausrichtest, benutzt \begin{tabular}[t]

    Allerdings habe ich den Eindruck, dass dir grundsätzlich nicht so ganz klar ist, was woran ausgerichtet wird.

    Fast alles in TeX ist eine Box: tabular ist eine Box, ein Buchstabe ist eine Box, eine tikzpicture ist eine Box. Jede Box hat einen Referenzpunkt, durch den die Grundlinie dieser Box läuft. Bei vielen Boxen kannst du über Optionen wie [t] oder [baseline=(current bounding box.north)] die Lage dieses Referenzpunktes beeinflussen.

    Im Horizontalmodus, also wenn Zeilen gebaut werden, werden diese Referenzpunkte wie auf einer Perlenschnur auf die Grundlinie der Zeile gesetzt.


    Code:
    \documentclass{article}
    \usepackage{tikz}
    
    \begin{document}
    \noindent\makebox[0pt][l]{\rule{\linewidth}{1pt}}% Zeile darstellen
    A, y
    \begin{tabular}{c}A\\B\end{tabular},
    \begin{tabular}[t]{c}A\\B\end{tabular}
    \begin{tabular}[b]{c}A\\B\end{tabular}
    \begin{tikzpicture}[baseline=(current bounding box.north)]
    \draw[color=red] (0,0) -- (1,1);
    \end{tikzpicture},
    \begin{tikzpicture}
    \draw[color=green] (0,0) -- (1,1);
    \end{tikzpicture}
    
    \end{document}

  12. #12
    Registrierter Benutzer
    Registriert seit
    20.10.2011
    Beiträge
    9

    Thumbs up

    Hallo Ulrike,

    das Boxenmodell von LaTeX habe ich prinzipiell verstanden, (ähnelt dem html und css prinzip). Ich war mir eigentlich auch sicher, dass ich das [t] gesetzt hatte aber anscheined war ich etwas zu schnell mit dem Post hier. Dein Beispiel zeigt die einzelnen Möglichkeiten super.

    Vorher hatte ich ja beides (sowohl das Bild als auch die Tabelle) in eine separate Minipage gepackt, welche mit einem [t] versehen war. Als ich dann die Minipage weggenommen habe ist mir das wohl 'durch die Lappen gegangen'.

    Nun habe ich aber alles bestens ausrichten können. Vielen Dank an der Stelle

    Lg
    Julius
    Geändert von Julius (29-10-2011 um 14:13 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •