PDA

View Full Version : Anordnung bei subfig



Wurst09
03-08-2010, 19:58
Hallo allerseits,
ich habe ein kleines Problem mit der Anordnung von einigen subfigs. Ich hätte gerne, dass in einer Zeile die Inhalte jeweils oben ausgerichtet sind und unten die Captions auf einer Linie stehen.
Außerdem sollte der Abstand der Spalten auch der gleiche sein.
Bislang habe ich ein bisschen rumgebastelt, aber bin nicht wirklich mit dem Ergebnis zufrieden.

Für Ideen wäre ich sehr dankbar. Vielen Dank schon mal im Voraus.

Grüße,

Wurst



\documentclass{article}

\usepackage{subfig}
\usepackage{amsmath}
\usepackage{amssymb}

\newlength{\OptProblemTemp}
\newcommand{\OProb}[3]{
\ensuremath{
\setlength{\arraycolsep}{2pt}
\begin{array}{cl}
#1 & #2 \\
\operatorname{s.t.} & #3
\end{array}
\setlength{\arraycolsep}{\OptProblemTemp}
}
}
\newcommand{\ZZ}{\mathbb{Z}}

\begin{document}
TextText

\begin{figure*}[htb]%
\centering
\subfloat[Lineares Programm]{
\OProb{\min}{x_1+x_2}{
\begin{array}[t]{rccccccl}
2x_1 & + & 3x_2 & \leq & 2\\
x_1 & + & 2x_2 & \leq & 2\\
x_1 &&& \geq &0
\end{array}
}
}%
\qquad
\subfloat[Mixed Integer Programm]{
\OProb{\min}{x_1+x_2}{
\begin{array}[t]{rccccccl}
2x_1 & + & 3x_2 & \leq & 2\\
x_1 & + & 2x_2 & \leq & 2\\
x_1 &&& \geq &0\\
& &x_2 & \in & \ZZ
\end{array}
}
}
\\
\subfloat[Integer Programm]{
\OProb{\min}{x_1+x_2}{
\begin{array}[t]{rccccccl}
2x_1 & + & 3x_2 & \leq & 2\\
x_1 & + & 2x_2 & \leq & 2\\
x_1 &&& \geq &0\\
&&x_1, x_2 & \in & \ZZ
\end{array}
}
}
\qquad
\subfloat[Binary Programm]{
\OProb{\min}{x_1+x_2}{
\begin{array}[t]{rccccccl}
2x_1 & + & 3x_2 & \leq & 2\\
x_1 & + & 2x_2 & \leq & 2\\
&&x_1, x_2 & \in & \{0,1\}
\end{array}
}
}
\end{figure*}

TextText

\end{document}

sommerfee
04-08-2010, 08:30
Eine Quick & Dirty Lösung:


\documentclass{article}

\usepackage{caption,subcaption}
\usepackage{amsmath}
\usepackage{amssymb}

\newlength{\OptProblemTemp}
\newcommand{\OProb}[3]{
\ensuremath{
\setlength{\arraycolsep}{2pt}
\begin{array}{cl}
#1 & #2 \\
\operatorname{s.t.} & #3
\end{array}
\setlength{\arraycolsep}{\OptProblemTemp}
}
}
\newcommand{\ZZ}{\mathbb{Z}}

\begin{document}
TextText

\begin{figure*}[htb]%
\centering
\captionsetup[sub]{singlelinecheck=off}
\begin{subfigure}[b][2.5cm]{4.5cm}
\OProb{\min}{x_1+x_2}{
\begin{array}[t]{rccccccl}
2x_1 & + & 3x_2 & \leq & 2\\
x_1 & + & 2x_2 & \leq & 2\\
x_1 &&& \geq &0
\end{array}
}\vfill
\caption{Lineares Programm}%
\end{subfigure}
\qquad
\begin{subfigure}[b][2.5cm]{4.5cm}
\OProb{\min}{x_1+x_2}{
\begin{array}[t]{rccccccl}
2x_1 & + & 3x_2 & \leq & 2\\
x_1 & + & 2x_2 & \leq & 2\\
x_1 &&& \geq &0\\
& &x_2 & \in & \ZZ
\end{array}
}\vfill
\caption{Mixed Integer Programm}%
\end{subfigure}
\par\vspace{20pt}% vertikaler Abstand
\begin{subfigure}[b][2.5cm]{4.5cm}
\OProb{\min}{x_1+x_2}{
\begin{array}[t]{rccccccl}
2x_1 & + & 3x_2 & \leq & 2\\
x_1 & + & 2x_2 & \leq & 2\\
x_1 &&& \geq &0\\
&&x_1, x_2 & \in & \ZZ
\end{array}
}\vfill
\caption{Integer Programm}%
\end{subfigure}
\qquad
\begin{subfigure}[b][2.5cm]{4.5cm}
\OProb{\min}{x_1+x_2}{
\begin{array}[t]{rccccccl}
2x_1 & + & 3x_2 & \leq & 2\\
x_1 & + & 2x_2 & \leq & 2\\
&&x_1, x_2 & \in & \{0,1\}
\end{array}
}\vfill
\caption{Binary Programm}%
\end{subfigure}
\end{figure*}

TextText

\end{document}

Eleganter geht das sicherlich irgendwie mit dem floatrow-Paket, einfach mal in der Dokumentation ab Kapitel 6 "The floatrow Package and The caption Package" lesen.

Liebe Grüße,
Axel

Wurst09
05-08-2010, 09:55
Hallo Alex,

danke für deine Antwort. Sie funktioniert zwar, jedoch kann ich aus anderen Gründen das subcaption Paket nicht verwenden, da es Komplikationen mit einem anderen Paket gibt. Außerdem wäre ich glücklicher mit einer Lösung mit den subfig und floatrow Paketen. Falls jemand noch einen Vorschlag hat würde ich mich freuen.

Schöne Grüße,

Wurst

sommerfee
05-08-2010, 19:44
Sie funktioniert zwar, jedoch kann ich aus anderen Gründen das subcaption Paket nicht verwenden, da es Komplikationen mit einem anderen Paket gibt.

Mit welchem Paket gibt es Komplikationen und welche? Wenn ich das weiß, kann ich mir das ansehen und beheben.

Liebe Grüße,
Axel

Wurst09
05-08-2010, 23:28
Hallo Alex,
danke, dass du dich so meinem Problem annimmst.
Um die Komplikationen zu erläutern muss ich etwas ausholen. Ich schreibe grade meine Diplomarbeit und benutze dazu ein Paket, was von meine Uni rausgegeben wird (also zumindest ist es von Leuten erstellt worden, die an der Uni arbeiten... Vorlagen von den Designern gabs nur für Word :eek:).
Zu finden ist es unter http://exp1.fkp.physik.tu-darmstadt.de/tuddesign/,
es gibt dort auch ein Forum http://tuddesign-latex.fs-etit.de/ auf dem einige Dinge besprochen werden.

Nach einigem Rumprobieren bin ich darauf gekommen, dass wohl das hyperref-Paket für die Inkompatibilitäten verantwortlich ist. Leider wird bei einem Minimalbeispiel, das article verwendet, keine Fehlermeldung erzeugt. Ich befürchte, dass wohl in der Vorlage irgendwas rumgebastelt worden ist und es deshalb zu Inkompatibilitäten kommt... Wenn ich hyperref weglasse, läuft es zwar durch, aber man erkennt bereits Unterschiede zu deinem obigen Beispiel (siehe Anhang). Leider bin ich nicht wirklich in der Lage mich in die Tiefen der Vorlage zu begeben und nachzuschauen, was den Fehler verursacht. Als letzte Rettung könnte ich die einzelnen Probleme als Bilder exportieren und dann einbinden. Das ist zwar ZIEMLICH gemogelt, aber vielleicht klappts.

Schöne Grüße,

Wurst

PS: Ich hab noch einen Logfile mit den Fehlermeldungen angehängt. Vielleicht sieht ja jemand spontan, woran es liegt.

sommerfee
06-08-2010, 07:25
Ich schaue mir das am Samstag alles mal an und gebe dann bescheid.

Liebe Grüße,
Axel

P.S.: Ich sehe gerade, daß du subcaption und subfig lädst. Kannst du mal das Laden von subfig auskommentieren, geht es dann besser?

Wurst09
06-08-2010, 14:33
P.S.: Ich sehe gerade, daß du subcaption und subfig lädst. Kannst du mal das Laden von subfig auskommentieren, geht es dann besser?

Hallo Axel,
ja, dann bekomme ich keinen Fehler mehr... Müsste dann aber meine ganzen Subfigs umbauen in subfigures (was ja eigentlich veraltet ist und nicht mehr genutzt werden solle ;))

Schöne Grüße,

Wurst

PS: Hab gerade ein bisschen im floatrow-Handbuch gelesen... Kapitel 3.1.9: Vertical Alignment of Float Elements sieht ziemlich erfolgversprechend aus.

sommerfee
06-08-2010, 19:52
Hallo Alex

http://www.mrunix.de/forums/showthread.php?t=36130&p=233100


Müsste dann aber meine ganzen Subfigs umbauen in subfigures

Nein, nicht unbedingt, das subcaption-Paket kann auch \subfloat. Ich habe es aber nicht dokumentiert, weil es nicht 100% kompatibel zum subfloat-Paket implementiert ist.


(was ja eigentlich veraltet ist und nicht mehr genutzt werden solle ;))

Das subfigure-Paket ist veraltet und wurde vom Autor durch das subfig-Paket ersetzt.

Die subfigure-Umgebung meines subcaption-Paketes ist (hoffentlich ;-)) noch nicht veraltet.

Liebe Grüße,
Axel