Vorrei affiancare due immagini in modo che:
-le proporzioni delle immagini siano rispettate,
-le due immagini abbiano la stessa altezza.
L’idea è di misurare le proporzioni delle immagini e scalarle in modo da rispettare queste condizioni.Il 90% di quello che mi serve è già nel codice scritto da Enrico, ma non so nulla di programmazione in TeX/LaTeX. Mi chiedevo se qualcuno volesse aiutarmi.
Supponiamo di avere l’immagine i1 di dimensioni 200×100 e i2 di dimensioni 300×300. Grossomodo, si dovrebbe assegnare a i2 uno spazio orizzontale pari a x e a i1 uno spazio orrizontale pari a 2x, considerando anche un eventuale spazio divisorio s.
Si potrebbe inizialmente misurare la dimensione delle due immagini secondo la formula:
propSum = largh(i1) / alt(i1) + largh(i2) / alt(i2)
propSum = 200/100 + 300/300 = 3
`\newcommand{\measure}[2]{{\sbox0{#1} \sbox1{#2} \global\propSum= (\wd0 / \ht0 + \wd1 / \ht1)}} `Poi quando si inseriscono le immagini, si potrebbe calcolare la larghezza delle immagini come:
width(i1) = (( largh(i1) / alt(i1) ) / propSum – s) * \columnwidth
width(i1) = ((200/100) / 3 – s) * \columnwidth = (0.66 – s) * \columnwidth
`\newcommand{\includegraphicsWd}[1]{{\sbox0{#1} \includegraphics[width=( (\wd0 / \ht0) / \propSum – 0.05)\linewidth]{#1} }} `Il problema è che non ho assolutamente idea di come si sommino o dividano le dimensioni in latex.
Più in generale, ci sono modi migliori per ottenere il risultato che vorrei?
Due immagini, che vuoi ridurre all’altezza della più piccola:
`\newdimen\tempheight
\newbox\imageA
\newbox\imageB
\def\reductionratio{1}
\newcommand{\twoimages}[2]{%
\sbox\imageA{\includegraphics{#1}}%
\sbox\imageB{\includegraphics{#2}}%
\ifdim\ht\imageA>\ht\imageB
\tempheight=\ht\imageB
\else
\tempheight=\ht\imageA
\fi
\sbox\imageA{\includegraphics[height=\tempheight]{#1}}%
\sbox\imageB{\includegraphics[height=\tempheight]{#2}}%
\tempheight=\dimexpr\wd\imageA+\wd\imageB+2em\relax
\ifdim\tempheight>\columnwidth\calculateratio\fi
\scalebox{\reductionratio}{\box\imageA}\hfill
\scalebox{\reductionratio}{\box\imageB}}
\def\calculateratio{\edef\reductionratio{0.%
\number\numexpr\number\dimexpr\columnwidth\relax/
\number\dimexpr.01\tempheight\relax}}`
1) Calcolo la minima altezza e compongo le due immagini in due box, scalate in modo che siano a quella minima altezza.
2) Vedo se ci stanno su una riga con 2em di spazio tra loro.
3) Se non ci stanno, calcolo un fattore di scala perché ci stiano.
\twoimages{Immagine1}{Immagine2}
Ciao
Enrico