Tenho muitas figuras para colocar lado a lado em um documento e todas elas têm tamanhos ligeiramente diferentes (ou seja, nem todas no formato 4:3).
O que estou fazendo no momento é ajustar os width=0.XX\textwidth
dois até que pareçam mais ou menos da mesma altura.
Aqui forneço um código de exemplo: o que eu gostaria de poder fazer é ter uma macro ou algo assim, onde eu pudesse simplesmente fornecer as duas figuras e elas seriam dimensionadas automaticamente para terem a mesma altura e caberem em uma linha. Isso é possível? E se sim, como?
Editar: já que as pessoas estão perguntando por que não estou fornecendo tamanhos específicos para as imagens: O código deve funcionar comqualquer2 imagens com qualquer proporção. Dê duas imagens e o código as dimensiona para caberem lado a ladoetêm a mesma altura, preenchendo o espaço horizontal disponível.
\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}
\begin{document}
\chapter{Figures}
\begin{figure}[h!]
\centering
\subfloat[Figure one]{%
\centering\includegraphics[width=0.45\textwidth]{example-image-a}}
\qquad
\subfloat[Figure two with different side proportions]{%
\centering\includegraphics[width=0.45\textwidth]{example-image-16x9}}
\caption{How to get the two figures to same height (respecting proportions)?}
\end{figure}
\end{document}
O que eu ganho:
O que desejo que aconteça automaticamente:
Responder1
Para os dois gráficos de amostra e a largura e altura padrão do texto fornecidas pela scrreprt
classe do documento, basta substituir width=...
por height=0.21\textheight
, para ambos subfig
os grupos.
Para outras combinações de larguras e alturas de texto e proporções dos pares de imagens que precisam ser colocados um ao lado do outro, você provavelmente terá que experimentar um pouco para descobrir qual valor de height=...
está correto.
Estou assumindo que o objetivo é fazer com que os pares de gráficos sejam os maiores possíveis, ou seja, abranjam toda a largura do bloco de texto. Se esta suposição for válida, nenhuma das \centering
instruções será necessária.
\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}
\begin{document}
\chapter{Figures}
\begin{figure}[h!]
\subfloat[Figure one]{%
\includegraphics[height=0.21\textheight]{example-image-a}}
\hspace*{\fill}
\subfloat[Figure two with different side proportions]{%
\includegraphics[height=0.21\textheight]{example-image-16x9}}
\caption{How to get the two figures to same height (respecting proportions)?}\end{figure}
\end{document}
Responder2
com a definição (apenas) de sua altura. like \includegraphics[height=33mm]{example-image-a}}
(selecione a altura da imagem de acordo com seu desejo).
off-topic: não use \centering
dentro de subfloats ...
editar:
No seu caso, como você gostaria de ter as duas imagens iguais, height
use a chave Gin
conforme segue no código editado abaixo. Para separar as imagens tanto quanto possível, use \hfill
em vez de quad
.
\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
\chapter{Figures}
\begin{figure}[h!]
\setkeys{Gin}{height=44mm}
\subfloat[Figure one]{\includegraphics{example-image-a}}
\hfill% push sub images apart, so take all the line
\subfloat[Figure two with different side proportions]{%
\includegraphics{example-image-16x9}}
\caption{How to get the two figures to same height (respecting proportions)?}
\end{figure}
\end{document}
(linhas vermelhas indicam bordas do texto)
Responder3
Para obter as duas imagens com a mesma altura, você pode armazenar a altura da primeira imagem em uma dimensão \imageheight
. Então você pode usar height=\imageheight
para a segunda imagem.
O culpado aqui é que você não pode definir automaticamente a largura de ambas as imagens para ajustar a largura do texto da melhor maneira possível. Talvez um código com lua possa fazer isso mas até agora não aprendi a usar lua no TeX...
Então vamos fazer isso de forma semiautomática...
Vamos dar uma olhada no código. Com a linha no preâmbulo
\newdimen\imageheight
declaramos uma nova dimensão \imageheight
para armazenar a altura da primeira imagem. Com o código
\settoheight{\imageheight}{% <==========================================
\includegraphics[width=0.40\textwidth,keepaspectratio]{example-image-a}%
}
você obtém a altura atual da imagem para uma largura escolhida de width=0.40\textwidth
.
Agora você pode usar o código
\subfloat[Figure one]{%
\centering\includegraphics[height=\imageheight]{example-image-a}}
\qquad
\subfloat[Figure two with different side proportions]{%
\centering\includegraphics[height=\imageheight]{example-image-16x9}}
para imprimir as imagens com a mesma altura. Para ajustá-los à largura do texto, basta brincar com a largura da primeira imagem: width=0.40\textwidth
. Altere o valor de 0.40\textwidth
acordo com suas necessidades.
O código completo
\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}
\usepackage{showframe}
\newdimen\imageheight % to store the actual image height <==============
\begin{document}
\settoheight{\imageheight}{% <==========================================
\includegraphics[width=0.40\textwidth,keepaspectratio]{example-image-a}%
}
\chapter{Figures}
\begin{figure}[h!]
\centering
\subfloat[Figure one]{%
\centering\includegraphics[height=\imageheight]{example-image-a}} % <=============
\qquad
\subfloat[Figure two with different side proportions]{%
\centering\includegraphics[height=\imageheight]{example-image-16x9}} % <==========
\caption{How to get the two figures to same height (respecting proportions)?}
\end{figure}
\end{document}
te dá o resultado: