Как автоматически масштабировать подфигуры, чтобы они имели одинаковую высоту?

Как автоматически масштабировать подфигуры, чтобы они имели одинаковую высоту?

Мне нужно разместить в документе много рисунков, и все они немного отличаются по размеру (т. е. не все имеют формат 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}

дает вам результат:

введите описание изображения здесь

Связанный контент