答案1
如果不解决 floatrow 的细节问题(我对此一无所知),您的问题有两个组成部分:将图形缩放到相同的高度,并将整体宽度缩放到某个尺寸,例如\textwidth
。此 MWE 展示了如何同时执行这两项操作,使用scalerel
包将一个对象的高度与下一个对象匹配(同时保留纵横比)。然后,我对结果进行缩放以将宽度匹配到,在本例中为\textwidth
。
我的图形由 s 组成\rule
,而您的图形则由图像组成tikz
。还请注意,\scalerel
假设其参数处于数学模式,因此我添加了数学分隔符,本质上是退出数学模式。
我把所有图片并排放在一个框中\x
。但是,如果你的要求(例如字幕等)要求你将图片作为单独的实体,\scalerel*{$\figa$}{$\figd$}
则命令将创建一个\figa
缩放到大小的版本\figd
。当然,你仍然需要将其乘以\scalebox
一个因子才能\scaleratio
使其达到所需的最终大小(我将这种情况作为我的最后一个例子)。
已编辑以与最新软件包 (scalerel V1.5) 兼容
\documentclass{article}
\usepackage{scalerel}
\usepackage{fp}
\usepackage{stackengine}
\def\stacktype{L}
\usepackage{xcolor}
\begin{document}
\def\figa{\color{blue}\rule{.5in}{.7in}}
\def\figb{\color{red}\rule{.7in}{.3in}}
\def\figc{\color{green}\rule{.4in}{.5in}}
\def\figd{\color{black}\rule{1.in}{.8in}}
Figures as is:
\figa\figb\figc\figd
figures scaled to height of figd
\newsavebox\x
\sbox\x{\scalerel{$\figc$}{$\figd$}}
\sbox\x{\scalerel{$\figb$}{\usebox{\x}}}
\sbox\x{\scalerel{$\figa$}{\usebox{\x}}}
\usebox{\x}
textwidth rule
\rule[1ex]{\textwidth}{.1ex}
figures scaled to textwidth in one box
\newcount\figwidthc
\newcount\textwidthc
\figwidthc=\wd\x
\textwidthc=\textwidth
\FPdiv\scaleratio{\the\textwidthc}{\the\figwidthc}
\scalebox{\scaleratio}{\usebox{\x}}
individual figures scaled to textwidth
\stackunder{\scalebox{\scaleratio}{\scalerel*{$\figa$}{$\figd$}}}{(a)}%
\stackunder{\scalebox{\scaleratio}{\scalerel*{$\figb$}{$\figd$}}}{(b)}%
\stackunder{\scalebox{\scaleratio}{\scalerel*{$\figc$}{$\figd$}}}{(c)}%
\stackunder{\scalebox{\scaleratio}{\figd}}{(d)}
\end{document}
答案2
只需缩放以下图片,使它们具有与第一张图片相同的高度,最后将行大小调整为所需的宽度:
\documentclass{article}
\usepackage{graphicx,etoolbox}
\newenvironment{imageRow}[1][\textwidth]
{\center\firstimagetrue\def\rowwidth{#1}}
{\resizebox{\rowwidth}{!}{\addimagerow}\endcenter}
\newif\iffirstimage
\newlength{\imageheight}
\newcommand{\addimage}[1]{%
\sbox0{\includegraphics{#1}}%
\iffirstimage
\setlength{\imageheight}{\ht0}%
\appto\addimagerow{\includegraphics{#1}}%
\firstimagefalse
\else
\appto\addimagerow{\includegraphics[height=\imageheight]{#1}}%
\fi
}
\begin{document}
\begin{imageRow}
\addimage{example-image.pdf}
\addimage{example-grid-100x100pt.pdf}
\addimage{example-image-golden.pdf}
\end{imageRow}
\begin{imageRow}[.7\textwidth]
\addimage{example-image.pdf}
\addimage{example-grid-100x100pt.pdf}
\addimage{example-image-golden.pdf}
\addimage{example-image-16x9.pdf}
\end{imageRow}
\end{document}
环境center
只是为了方便。
这不仅限于\includegraphics
;可能需要进行一些更改以支持其他类型的图形,例如 TikZ 图片,但想法是一样的:只要图像是矢量的,多次缩放它们就没有问题。