[LaTeX]Subfigure met 1 groot en 1 klein plaatje

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Jhsmit
  • Registratie: Februari 2010
  • Laatst online: 12-08 13:46
Hallo,


Ik wil in LaTeX een subfigure maken met daarin 1 groot (qua hoogte) en 1 klein plaatje, waarbij het kleine plaatje verticaal gecentreerd wordt t.o.v. het kleine plaatje. Uiteraard heb ik zelf al wat zoekwerk verricht, en ben bij de subfig package uitgekomen. Uit het pdfje bij dit pakketje heb ik de volgende code gehaald:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
\newsavebox{\tempbox}

\begin{figure}%
\centering
\sbox{\tempbox}{.. large figure code...}}%
\subfloat[Large figure caption]{\usebox{\tempbox}}%
\subfloat[Small figure caption]{%
   \vbox to \ht\tempbox{%
     \vfil
            ... small figure code ...
     \vfil}}%
\caption{Two more sub-floats}
}


\end{figure}


In principe doet dit wat het moet doen, de plaatjes zijn verticaal gecentreerd, zie plaatje.

Afbeeldingslocatie: http://img716.imageshack.us/img716/6100/grootenkleinplaatje.th.png

Het probleem is dat ik deze code niet zelf bedacht heb, ik heb dus geen idee wat ie doet, en wat \newsavebox, \sbox ect doet. Het lijkt erop dat de rechter box waar het plaatje in staat te groot is, waardoor het plaatje te ver naar rechts staat en de caption te breed is. Ik denk dat ik op een of andere manier die box even breed moet maken als het plaatje, maar ik heb dus geen idee hoe. Iemand een suggestie?

Jochem

Acties:
  • 0 Henk 'm!

  • sam.vimes
  • Registratie: Januari 2007
  • Laatst online: 08-06 08:44
De betekenis van \sbox, \newsavebox kun je terugvinden in de LaTeX helpfile (http://www.google.nl/search?q=latex+help+sbox, bijvoorbeeld http://www.personal.ceu.hu/tex/spacebox.htm).
In regel 5 stop je het linker plaatje in een box met de "naam" \tempbox.
Dit linker plaatje gebruik je in regel 6.
In regel 8 maak je nog een box, een \vbox, met dezelfde hoogte als \tempbox, en door de code voor het rechter plaatje in te klemmen tussen \vfil wordt dat netjes verticaal gecentreerd in die \vbox.
Er staan dus twee even hoge doosjes naast elkaar in de figure.
De breedte van de \vbox wordt echter nergens opgegeven, en deze breedte is daarom \hsize, wat waarschijnlijk gelijk is aan je tekstbreedte, inderdaad te breed zoals je constateert.
De twee plaatjes samen zijn naast elkaar dus (veel) groter dan je tekstbreedte. Dit zie je aan een waarschuwing "Overfull \hbox (88.69159pt too wide) in paragraph at lines 10--19" in de log van je LaTeX-run.
De eenvoudigste manier om dit te verhelpen, is door \hsize in de \vbox een waarde te geven zodat de som van de breedtes van de twee plaatjes hooguit je tekstbreedte is.
TeX:
1
2
3
4
5
\vbox to \ht\tempbox{%
\hsize=60mm
\vfil
... small figure code ...
\vfil}}%


MWE met iets duidelijker structuur:
TeX:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
\documentclass[a4paper]{article}
\usepackage{subfig}
\newsavebox\hoogplaatje
\newsavebox\laagplaatje
\begin{document}
\begin{figure}%
\centering
\sbox{\hoogplaatje}{\rule{30mm}{50mm}}
\sbox{\laagplaatje}{\rule{50mm}{30mm}}
\subfloat[Large figure caption]{\usebox{\hoogplaatje}}
\subfloat[Small figure caption]{%
  \vbox to \ht\hoogplaatje{
    \hsize=60mm % breedte van de \vbox, breder dan het plaatje
    \vfil
    \usebox{\laagplaatje}
    \vfil
  }
}
\caption{Two more sub-floats}
\end{figure}
\end{document}

Acties:
  • 0 Henk 'm!

  • mvh
  • Registratie: Juni 2007
  • Laatst online: 10-09 11:21

mvh

State Governor

Gebruik het pakket subfig, is het eerste wat in mij opkomt. Ik heb op het moment geen LaTeX-installatie, maar volgens mij moet het daarmee wel kunnen.

In de PDF staat in figuur 96 een voorbeeld.

Als je rechts ingehaald kon worden had je ook rechts kunnen rijden | A thousand years ago and a thousand years from now we will always be together


Acties:
  • 0 Henk 'm!

  • Jhsmit
  • Registratie: Februari 2010
  • Laatst online: 12-08 13:46
Bedankt voor de reacties, met die \hsize is het probleem verholpen :)