Мне нужно разместить в документе много рисунков, и все они немного отличаются по размеру (т. е. не все имеют формат 4:3 или около того).
В данный момент я занимаюсь корректировкой обоих width=0.XX\textwidth
вариантов до тех пор, пока они не станут примерно одинаковой высоты.
Здесь я привожу пример кода: я хотел бы иметь возможность сделать макрос или что-то в этом роде, где я мог бы просто предоставить две фигуры, и они автоматически масштабируются, чтобы иметь одинаковую высоту и помещаться на одной строке. Возможно ли это? И если да, то как?
Редактировать: поскольку люди спрашивают, почему я не указываю конкретные размеры изображений: Код должен работать слюбой2 изображения с любым соотношением сторон. Дайте ему два изображения, и код масштабирует их так, чтобы они располагались рядомиимеют одинаковую высоту, заполняя все доступное горизонтальное пространство.
\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}
Что я получаю:
Что я хочу, чтобы происходило автоматически:
решение1
Для двух образцов графиков и ширины и высоты текста по умолчанию, заданных scrreprt
классом документа, достаточно заменить width=...
на height=0.21\textheight
, для обеих subfig
групп.
Для других комбинаций ширины текста, высоты текста и пропорций пар изображений, которые необходимо разместить рядом друг с другом, вам, вероятно, придется немного поэкспериментировать, чтобы выяснить, какое значение height=...
будет наиболее верным.
Я предполагаю, что цель состоит в том, чтобы сделать пары графиков как можно большими, т. е. охватывать всю ширину текстового блока. Если это предположение верно, то ни одна из инструкций не \centering
нужна.
\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}
решение2
с указанием (только) их высоты. например \includegraphics[height=33mm]{example-image-a}}
(выберите высоту изображения по вашему желанию).
не по теме: не используйте \centering
внутри подэлементов ...
редактировать:
В вашем случае, поскольку вы хотите иметь в обоих изображениях один и тот же height
ключ, Gin
как указано в отредактированном коде ниже. Чтобы раздвинуть изображения как можно дальше, используйте \hfill
вместо 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}
(красные линии обозначают границы текста)
решение3
Чтобы получить оба изображения одинаковой высоты, вы можете сохранить высоту первого изображения в измерении \imageheight
. Затем вы можете использовать его height=\imageheight
для второго изображения.
Виновником здесь является то, что вы не можете автоматически определить ширину обоих изображений, чтобы максимально точно подогнать их под ширину текста. Возможно, код с lua может это сделать, но до сих пор я не научился использовать lua в TeX...
Давайте сделаем это полуавтоматически...
Давайте посмотрим на код. Со строкой в преамбуле
\newdimen\imageheight
мы объявляем новое измерение \imageheight
для хранения высоты первого изображения. С кодом
\settoheight{\imageheight}{% <==========================================
\includegraphics[width=0.40\textwidth,keepaspectratio]{example-image-a}%
}
вы получаете текущую высоту изображения для выбранной ширины width=0.40\textwidth
.
Теперь вы можете использовать код
\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}}
для печати изображений с одинаковой высотой. Чтобы они соответствовали textwifth, просто поиграйте с шириной первого изображения: width=0.40\textwidth
. Измените значение 0.40\textwidth
по своему усмотрению.
Полный код
\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}
дает вам результат: