我还没有在 Stack Exchange 上看到有人直接问或回答的一个问题是,如何在 LaTex 中并排放置两个图形,以便
- 图形是居中对齐的(特别是如果图形有白色背景,我认为居中对齐看起来最好);但是
- 两幅图的标题顶部对齐。
如果这些图形不相关,或者由于某种原因,您不想使用子图,那么据我所知,没有很好的方法可以做到这一点。
答案1
目前尚不清楚,您的问题是什么,以及为什么使用如此复杂的代码......如果预期结果如下:
那么您的代码可以更简单,如下面的 MWE 所示:
\documentclass{article}
\usepackage{array}
\usepackage[export]{adjustbox}% for move images baseline to vertical center of image
\begin{document}
\begin{figure}
\centering
\begin{tabular*}{\linewidth}{*{2}{>{\centering\arraybackslash}p{\dimexpr0.5\linewidth-2\tabcolsep}}}
\includegraphics[width=\linewidth,valign=c]{example-image-duck}
& \includegraphics[width=0.5\linewidth,valign=c]{example-image-duck} \\
\caption{The caption.} \label{label1}
& \caption{The caption.} \label{label2}
\end{tabular*}
\end{figure}
\end{document}
答案2
我建议用这个包来做floatrow
:
\documentclass[11pt]{article}
\usepackage{ebgaramond}
\usepackage{array}
\usepackage{caption}
\usepackage{floatrow}
\usepackage[export]{adjustbox}% for move images baseline to vertical center of image
\begin{document}
\begin{figure}
\centering
\captionsetup{textfont = it, labelfont=sc, labelsep=endash}
\floatsetup{heightadjust = object, valign = c}
\begin{floatrow}[2]\ffigbox[1.33\FBwidth]{\caption{The Virgin Spanking the Christ Child before Three Witnesses: André Breton, Paul Éluard, and the Painter}\label{MaxErnst36}}
{\includegraphics[scale=0.5]{ernst_vierge}}
\ffigbox[1.33\FBwidth]{\caption{Euclid}\label{MaxErnst45}}{ \includegraphics{euclid} }
\end{floatrow}
\end{figure}
\end{document}
答案3
我的解决方案是使用以下方法
\begin{figure}
\newlength{\miniPageWidth}
\setlength{\miniPageWidth}{0.45\textwidth}
\newcommand{\graphicOne}{example-image-a}
\newcommand{\graphicTwo}{example-image-b}
\newlength{\hOne}
\newlength{\hTwo}
\settoheight{\hOne}{\includegraphics[width=\miniPageWidth]{\graphicOne}}
\settoheight{\hTwo}{\includegraphics[width=\miniPageWidth]{\graphicTwo}}
\newlength{\padOne}
\newlength{\padTwo}
\setlength{\padOne}{0pt}
\setlength{\padTwo}{0pt}
\ifthenelse{\hOne>\hTwo}{\setlength{\padTwo}{(\hOne-\hTwo)/2}}{
\setlength{\padOne}{(\hTwo-\hOne)/2}}
\centering
\begin{minipage}[t]{\miniPageWidth}
\centering
\vskip\padOne
\includegraphics[width=\textwidth]{\graphicOne}
\vskip\padOne
\caption{The caption.}
\label{label1}
\end{minipage}
\hfill
\begin{minipage}[t]{\miniPageWidth}
\centering
\vspace\padTwo
\includegraphics[width=\textwidth]{\graphicTwo}
\vskip\padTwo
\caption{The caption.}
\label{label2}
\end{minipage}
\end{figure}
为了显示目的,我将第二个图形的宽度设置为 0.5\miniPageWidth,并更改了标题以生成以下示例图形。
上面的代码没有反映这些更改,因为我希望上面的代码可用。要生成上面的图形,请进行以下调整:
\settoheight{\hTwo}{\includegraphics[width=.5\miniPageWidth]{\graphicTwo}}
\includegraphics[width=.5\textwidth]{\graphicTwo}
\caption{Example caption one.}
\caption{This caption has \newline multiple lines.}
我不确定这是否是最合适的方法。这个问题有一些老问题,有些相关,但我不想让这个解决方案被埋在这些帖子的底部。希望有人能从中得到一些帮助。