自动缩放并排图形

自动缩放并排图形

我正在使用一个非常令人满意的解决方案来实现并排独立的标题图形,该解决方案将图像自动调整为相同的高度和文本宽度,请参阅下面的 MWE。

\documentclass{article}
\usepackage{mwe}
\usepackage{floatrow}

\begin{document}
\blindtext

\begin{figure*}
\CommonHeightRow{\begin{floatrow}
\ffigbox[\FBwidth]{\includegraphics[height=\CommonHeight]{example-image-16x10}}{\caption{A caption.}\label{fig:01}}
\ffigbox[\FBwidth]{\includegraphics[height=\CommonHeight]{example-image-10x16}}{\caption{Another caption.}\label{fig:02}}
\end{floatrow}}
\end{figure*}

\blindtext
\end{document}

在此处输入图片描述

但是有时我想将两个图形的总宽度限制为小于文本宽度(例如 80%)(保持统一高度),但我找不到实现它的方法。(由于某种原因,在 中添加标量前缀(\CommonHeight例如0.8\CommonHeight)的简单解决方案会导致错误。)

提前感谢任何线索。

欢迎使用除此以外的包的解决方案floatrow,只要它们根据需要根据给定的文本宽度百分比自动调整图像高度和整体宽度。

答案1

floatrow包有两个宏,\FRleftmargin\FRrightmargin,默认情况下为\hfill。您可以重新定义它们中的每一个,以便\hspace{0.1\textwidth}图形剩余的空间为0.8\textwidth

在此处输入图片描述

(比例规则:)

定义必须是 \begin{floatrow}。如果你把它放在里面\begin{figure}它将只对当前图形有效,否则它将一直有效直到你重新定义它。

我创建了一个小命令,它将图形所需的宽度作为参数。然后该命令将平衡它并传递给\FRleftmargin\FRrightmargin。只需\ThisWidth{0.8\textwidth}在之后调用\begin{figure}(或\begin{figure*},当然:)

\documentclass{article}
\usepackage{mwe}
\usepackage{floatrow}

\makeatletter
\def\ThisWidth#1{%
  \@tempdima\dimexpr(\textwidth-#1)/2\relax
  \edef\FRleftmargin{\noexpand\hspace*{\the\@tempdima}}%
  \edef\FRrightmargin{\noexpand\hspace*{\the\@tempdima}}%
  \ignorespaces}
\makeatother

\begin{document}
\pagenumbering{gobble}
\blindtext

\begin{figure*}
\ThisWidth{0.8\textwidth}
\CommonHeightRow{\begin{floatrow}
\ffigbox[\FBwidth]{\includegraphics[height=\CommonHeight]{example-image-16x10}}{\caption{A caption.}\label{fig:01}}
\ffigbox[\FBwidth]{\includegraphics[height=\CommonHeight]{example-image-10x16}}{\caption{Another caption.}\label{fig:02}}
\end{floatrow}}
\rule{0.8\textwidth}{2pt}
\end{figure*}

\blindtext
\end{document}

相关内容