PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bilder nebeneinander auch vertikal zentieren



Tschortscho
19-03-2007, 08:25
Hallo,

Wie in den Tuturials hier auf mrunix, isses ja kein Problem zwei Bilder nebeneinander zu setzen, und die Bilder mit width horizontal auszurichten.

hier mein Codeauszug:



\begin{figure}[htb]
\centering
\subfloat[Filter \label{pic:Filter}]{ \includegraphics[width=0.27\textwidth]{Filter.png} }
\hspace{1cm}
\subfloat[Filtergraph \label{pic:Filtergraph}]{\includegraphics[width=0.63\textwidth]{Filtergraph.png}}
\caption{Filter und deren Verknüpungen zu Graphen}
\label{fig:Filterprinzip}
\end{figure}




Mein Problem ist jetzt, dass ich das erste Bild links auch gerne vertical zentrieren würde. Im Moment ist es leider am unteren Rand des rechten Bildes ausgerichtet. Durch die Skalierung der Breite ist nämlich das linke Bild in der Höhe kleiner als das rechte. (Is ja auch richtig so...)

Gibts dafür ne Lösung? Hab schon probiert im ersten Subfloat künstlich ne vspace einzubinden, der unterhalb meines kurzen Bildes einen künstlichen Abstand erzeugt. Leider ohne Erfolg.

Danke


P.S.: Ich biete hier kein Minimalbeispiel an, weil ihr die zugehörigen Bilddateien eh nicht habt...

Zur Verdeutlichung und dank dem Hinweis von Sofa-Surfer: Die Bilder werden bereits richitg horizontal nebeneinander ausgerichtet, mir geht es hier um die vertikale Zentrierung.

sofa-surfer
19-03-2007, 08:35
Hallo,

das Problem ist, dass deine beiden Bilder zusammen zu breit sind. 0.27\texwidth+0.63\textwidth=0.9\textwidth. Dazu kommt noch ein \hspace{1cm}. Das wird dann wohl insgesamt zu viel, sodass das zweite Bild nach unten rutscht. Also Bilder kleiner machen. Ein Minimalbeispiel kannst du übrigens trotzdem erzeugen, indem du die Bilder durch den \rule-Befehl ersetzt, oder die demo-Option des graphicx-Pakets nutzt. Da ich noch nicht die neuste Version des Paketes habe, hier die \rule-Variante:


\documentclass{article}

\usepackage{subfig}


\begin{document}


\begin{figure}[htb]
\centering
\subfloat[Filter \label{pic:Filter}]{\rule{.25\textwidth}{1cm} }
\hspace{1cm}
\subfloat[Filtergraph \label{pic:Filtergraph}]{\rule{.6\textwidth}{2cm}}
\caption{Filter und deren Verknüpungen zu Graphen}
\label{fig:Filterprinzip}
\end{figure}

\begin{figure}[htb]
\centering
\parbox{.25\textwidth}{\subfloat[Filter \label{pic:Filter}]{\rule{.25\textwidth}{1cm} }}
\hspace{1cm}
\parbox{.6\textwidth}{\subfloat[Filtergraph \label{pic:Filtergraph}]{\rule{.6\textwidth}{2cm}}}
\caption{Filter und deren Verknüpungen zu Graphen}
\label{fig:Filterprinzip}
\end{figure}

\end{document}

Matthias

EDIT: Jetzt hab ich deinen Beitrag noch mal ganz genau gelesen, und festgestellt, dass es dir tatsächlich nur um die vertikale Zentrierung geht. Das Problem mit der Breite der Bilder entstand nur bei mir aufgrund deines fehlenden Minimalbeispiels mit den zugehörigen Einstellungen für die Seitenbreite. Demnach kannst du oben geschriebenes getrost vernachlässigen und dich ganz auf den Beispielcode konzentrieren ;)

Tschortscho
19-03-2007, 09:01
Danke für deine Hilfe

Ok, ich habs jetzt mal getestet.

Das schaut schon mal gut aus. Jetzt stört mich aber, dass die erste Unterschrift Filter nicht auf einer Höhe zur zweiten "Filtergraph" ist.

Also wir haben jetzt das Bild zusammen (!) mit der Überschrift ausgerichtet und nicht nur das Bild alleine.


Danke

P.S.: Wie kann ich hier ins Board Screenshots einfügen?

sofa-surfer
19-03-2007, 09:33
Ok, in Anlehnung an die Abbildung 96 aus der subfig-Doku (ftp://tug.ctan.org/pub/tex-archive/macros/latex/contrib/subfig/subfig.pdf):


\documentclass{article}

\usepackage{subfig}

\begin{document}



\newsavebox{\tempbox}
\begin{figure}[htb]
\centering
\sbox{\tempbox}{\rule{.6\textwidth}{3cm}} % Code für größere Abbildung, um später auf der Höhe zugreifen zu können
\subfloat[Filter \label{pic:Filter}]{%
\parbox[b][\ht\tempbox][c]{.25\textwidth}{\rule{.25\textwidth}{1cm}} % kleinere Abbildung zentriert in einer Box der passenden Höhe
}
\hfill
\subfloat[Filtergraph \label{pic:Filtergraph}]{\usebox{\tempbox}}
\caption{Filter und deren Verknüpungen zu Graphen}
\label{fig:Filterprinzip}
\end{figure}

\end{document}

Matthias

Tschortscho
19-03-2007, 10:56
Danke, das war die Lösung.

ProfessorChaos
08-12-2008, 15:33
Hi,

da ich bereits seit Stunden versuche, mich durch euer Beispiel zu kämpfen, und es dennoch nicht an meine Zwecke anpassen kann, poste ich erst einmal Sofa-Surfers Lösung in einer meiner Meinung nach übersichtlicheren Darstellung (die ich um eine fbox erweitert habe):


\documentclass{article}
\usepackage[labelformat=empty]{subfig}
\begin{document}


\newsavebox{\tempbox}
\begin{figure}[htb]
% for centering the whole figure horizontal
\centering

% for a nice box around the whole figure
\fbox{

\sbox{\tempbox}{
% the following is the actual content of sub figure 2(!)
\rule{.6\textwidth}{3cm}
}
\subfloat[SUB-CAPTION-01 \label{fig:LABEL-SUB-FIGURE-01}]{%

\parbox[b][\ht\tempbox][c]{.25\textwidth}{
% the following is the actual content of sub figure 1(!)
\rule{.25\textwidth}{1cm}
}
}
\subfloat[SUB-CAPTION-02 \label{fig:LABEL-SUB-FIGURE-02}]{\usebox{\tempbox}}

}
\caption{CAPTION-OF-COMPLETE-FIGURE}
\label{fig:LABEL-OF-COMPLETE-FIGURE}
\end{figure}

\end{document}

So, wie es hier dargestellt wurde, funktioniert es auch 1a!
Wenn ich allerdings versuche, die \rule-Befehle durch tatsächlichen Inhalt zu ersetzen, verrutscht alles ungewollt.
Nachfolgend meine Adaption, welche tikz-Gitter zeichnet:


\documentclass{article}
\usepackage[labelformat=empty]{subfig}
\usepackage{tikz}
\begin{document}


\newsavebox{\tempbox}
\begin{figure}[htb]
% for centering the whole figure horizontal
\centering

% for a nice box around the whole figure
\fbox{

\sbox{\tempbox}{
% the following is the actual content of sub figure 2(!)
\begin{tikzpicture}
\draw[help lines] (0,0) grid (2,3);
\end{tikzpicture}

}
\subfloat[SUB-CAPTION-01 \label{fig:LABEL-SUB-FIGURE-01}]{%

\parbox[b][\ht\tempbox][c]{.5\textwidth}{
% the following is the actual content if sub figure 1(!)
\begin{tikzpicture}
\draw[help lines] (0,0) grid (2,2);
\end{tikzpicture}
}
}
\subfloat[SUB-CAPTION-02 \label{fig:LABEL-SUB-FIGURE-02}]{\usebox{\tempbox}}

}
\caption{CAPTION-OF-COMPLETE-FIGURE}
\label{fig:LABEL-OF-COMPLETE-FIGURE}
\end{figure}

\end{document}

Mein Problem ist, dass ich nicht weiß, wie ich im Code festhalte, welche Breite die zweite Grafik bekommen soll. Der ersten kann ich sagen, dass die 50% der Textbreite einnehmen soll, aber wie sage ich dies der zweiten Grafik?
Ein weiteres Problem ist, dass die erste Grafik nicht horizontal zentriert über ihrer Caption steht. Wie fixe ich dies?

sofa-surfer
08-12-2008, 20:56
*puuuuh* ist das schon lange her :)
Ich habe mal noch ein bisschen weiter gefriemelt:



\documentclass{article}
\usepackage[labelformat=empty]{subfig}
\usepackage{tikz}
\begin{document}

\newsavebox{\tempbox}
\fboxsep=0pt
\sbox{\tempbox}{%
% the following is the actual content if sub figure 2(!)
\begin{tikzpicture}
\draw[help lines] (0,0) grid (2,3);
\end{tikzpicture}%
}%
\begin{figure}[htb]
% for centering the whole figure horizontal
\centering
% for a nice box around the whole figure
\fbox{%
\subfloat[SUB-CAPTION-01\label{fig:LABEL-SUB-FIGURE-01}]{%
\parbox[b][\ht\tempbox][c]{.5\textwidth}{\centering%
\begin{tikzpicture}
\draw[help lines] (0,0) grid (2,2);
\end{tikzpicture}%
}%
}%
\subfloat[SUB-CAPTION-02 \label{fig:LABEL-SUB-FIGURE-02}]{%
\parbox[t]{.5\textwidth}{\centering%
\usebox{\tempbox}%
}}%
}% fbox
\caption{CAPTION-OF-COMPLETE-FIGURE}
\label{fig:LABEL-OF-COMPLETE-FIGURE}
\end{figure}

\end{document}


Matthias

ProfessorChaos
09-12-2008, 10:14
*puuuuh* ist das schon lange her :)
Ja, ich weiß. :)


Ich habe mal noch ein bisschen weiter gefriemelt:[...]
Vielen Dank! Mit deiner Hilfe habe ich es nun geschafft!

Ich glaube, dass mein folgender Code als Referenz für alle verwendet werden kann, die mehrere Grafiken nebeneinander plazieren möchten, denn diesen halte ich für so gut systematisch/gegliedert, dass nun absolut klar sein sollte, wie die Befehle zusammenspielen. Außerdem benutze ich in meinem Beispiel nun drei Grafiken, um die Allgemeinheit deutlich zu machen.


\documentclass{article}
\usepackage[labelformat=empty]{subfig}
\usepackage{tikz}
\begin{document}


% define the name and the content of a new box for figure one
\newsavebox{\tmpBoxFigureOne}
\sbox{\tmpBoxFigureOne}{%
% actual content of sub figure 1
\begin{tikzpicture}
\draw[help lines] (0,0) grid (2,3);
\end{tikzpicture}%
}%

% define the name and the content of a new box for figure two
\newsavebox{\tmpBoxFigureTwo}
\sbox{\tmpBoxFigureTwo}{%
% actual content of sub figure 2
\begin{tikzpicture}
\draw[help lines] (0,0) grid (2,2);
\end{tikzpicture}%
}%

% define the name and the content of a new box for figure three
\newsavebox{\tmpBoxFigureThree}
\sbox{\tmpBoxFigureThree}{%
% actual content of sub figure 3
\begin{tikzpicture}
\draw[help lines] (0,0) grid (2,4);
\end{tikzpicture}%
}%

% a new box for referencing the highest box
\newsavebox{\boxWithLargestHight}
\sbox{\boxWithLargestHight}{%
% choose the highest box manually
\usebox{\tmpBoxFigureThree}%
}

\begin{figure}[htb]
% a nice box around the whole figure
\fbox{%
\subfloat[SUB-CAPTION-01\label{fig:LABEL-SUB-FIGURE-01}]{%
\parbox[b][\ht\boxWithLargestHight][c]{.3333\textwidth}{
% horizontal centering inside this box
\centering%
% use the previously defined box for figure one
\usebox{\tmpBoxFigureOne}%
}%
}%
\subfloat[SUB-CAPTION-02 \label{fig:LABEL-SUB-FIGURE-02}]{%
\parbox[b][\ht\boxWithLargestHight][c]{.3334\textwidth}{
% horizontal centering inside this box
\centering%
% use the previously defined box for figure two
\usebox{\tmpBoxFigureTwo}%
}
}%
\subfloat[SUB-CAPTION-03 \label{fig:LABEL-SUB-FIGURE-03}]{%
\parbox[b][\ht\boxWithLargestHight][c]{.3333\textwidth}{
% horizontal centering inside this box
\centering%
% use the previously defined box for figure three
\usebox{\tmpBoxFigureThree}%
}
}%
}% fbox
\caption{CAPTION-OF-COMPLETE-FIGURE}
\label{fig:LABEL-OF-COMPLETE-FIGURE}
\end{figure}

\end{document}