Re: [Risolto] Anomalia pacchetto subfig

#32277
Up
0
Down
::

Buona sera

Dispongo di due figure, una quadrata, una rettangolare con base maggiore dell’altezza.
Le vorrei affiancare e per questo mi sono rivolto al pacchetto subfig.
Utilizzando la sintassi standard
`\begin{figure}%
\centering
\subfloat[didascalia1]{\includegraphics[width=.45\textwidth]{figura grande}} \hfill%
\subfloat[didascalia2]{\includegraphics[width=.45\textwidth]{figura piccola}}
\caption{dida comune}
\end{figure}`
ottengo le figure affiancate ma con la figura piccola allineata in basso come la figura grande, con un ampio spazio bianco sopra.

La documentazione del pacchetto subfig (questa) alle pagine 44-45-46 mostra un esempio che fa esattamente al caso mio (figura 96).

Io, però, ho semplicemente copiato il codice suggerito e l’ho riempito con i miei campi, così:
`\newsavebox{\tempbox}
\begin{figure}%
\centering
\sbox{\tempbox}{\includegraphics[width=.45\columnwidth]{scarico_2}}%
\subfloat[Big figure]{\usebox{\tempbox}}%
\qquad
\subfloat[Small figure]{\vbox to \ht\tempbox{\vfil\includegraphics[width=.45\columnwidth]{controforza}\vfil}}%
\caption{Two more sub-floats.}
\label{fig:vertcenter}
\end{figure}`
e… le figure finiscono una sotto l’altra anziché affiancarsi (la figura bassa è però correttamente contenuta in una “scatola” alta come l’altra figura).
Ho provato a sostituire \qquad con \hfill ma non è cambiato nulla. Tra l’altro, come si vede, ho impostato la laghezza di ciascuna figura al 45% della larghezza del testo, quindi lo spazio fisico per affiancarle dovrebbe esserci…
L’unico tentativo che ha avuto un mezzo successo è stato togliere \qquad e \hfill, lasciando cioè
`\subfloat[]{}%
\subfloat[]{}`
e ottengo le figure correttamente affiancate con le didascalie allineate in basso, ma se la figura 1 è giustamente allineata a sinistra con il testo, la figura 2 è mooolto spostata a destra, finisce fuori dai margini fin quasi a limite pagina lasciando uno spazio orizzontale enorme tra sè stessa e la figura 1…

spero di essere stato chiaro.

Per la cronaca, nel mio prembolo c’è, tra l’altro:
`\documentclass[a4paper,titlepage,oneside,12pt]{article}

\usepackage{graphicx}
\usepackage[font=small]{caption}
\usepackage[a4paper,top=3cm,bottom=3cm,left=3.5cm,right=3.5cm,]{geometry}
\usepackage{floatrow,subfig}`

La documentazione trascura un fatto piuttosto importante: che il “…figure code…” va inserito in una \hbox:
`\subfloat[Small figure]{\vbox to \ht\tempbox{
\vfil
\hbox{\includegraphics[width=.45\columnwidth]{controforza}}
\vfil}}`
Naturalmente tutta questa roba va più utilmente messa nel preambolo:
`\newdimen\templen
\newcommand{\measure}[1]{{\sbox0{#1}\global\templen=\ht0 }}
\newcommand{\adjustheight}[1]{\vbox to\templen{\vfil\hbox{#1}\vfil}}`
Il tuo codice per le figure diventerebbe
`\begin{figure}
\centering
\measure{\includegraphics[width=.45\columnwidth]{scarico_2}}%
\subfloat[Big figure]{\includegraphics[width=.45\columnwidth]{scarico_2}}%
\qquad
\subfloat[Small figure]{\adjust{\includegraphics[width=.45\columnwidth]{controforza}}}
\caption{Two more sub-floats.}
\label{fig:vertcenter}
\end{figure}`
Dentro \measure puoi mettere qualsiasi cosa, non necessariamente il codice per la figura più grande, e puoi usare \adjust anche per più sottofigure.

Ciao
Enrico

Go to top