Latex在同一figure中排版多张图片的方法
主要使用了minipage(子图)
语法。minipage
可以嵌套,子图还可以分解为更多子图,功能很好玩,无聊可以自己试试。下面介绍几种常用效果的实现方法。
并排显示两张图,并分别标记
\begin{figure}[thbp!]
\centering
\begin{minipage}[t]{0.49\linewidth}
\centering
\includegraphics[width=0.9\linewidth]{figure/opencv-logo.png}
\caption{OpenCV的logo}
\label{fig:opencv_logo}
\end{minipage}
\begin{minipage}[t]{0.49\linewidth}
\centering
\includegraphics[width=0.9\linewidth]{figure/gdalicon_big.png}
\caption{GDAL的logo}
\label{fig:gdal_logo}
\end{minipage}
\end{figure}
上述代码的结果为:
特别需要注意的是,第一个minipage的宽度和第二个minipage的宽度之和不能超过1。如果超过一,则会自动变成垂直排列,如下图所示:
\begin{figure}[thbp!]
\centering
\begin{minipage}[t]{0.49\linewidth}% 注意!0.49
\centering
\includegraphics[width=0.9\linewidth]{figure/opencv-logo.png}
\caption{OpenCV的logo}
\label{fig:opencv_logo}
\end{minipage}
\begin{minipage}[t]{0.59\linewidth}% 注意!0.49+上面的0.59>1,导致自动重排版
\centering
\includegraphics[width=0.9\linewidth]{figure/gdalicon_big.png}
\caption{GDAL的logo}
\label{fig:gdal_logo}
\end{minipage}
\end{figure}
并排显示两张图,并只作一个标记\label
尝试下面的代码,figure/opencv-logo、figure/gdalicon_big为两张图片的相对路径,表示figure文件夹下的opencv-logo.png、gdalicon_big.png两张图片。则将其并排显示且整体标记的代码如下:
\begin{figure}[thbp!]
\centering
\begin{minipage}[t]{0.49\linewidth}
\centering
\includegraphics[width=0.9\linewidth]{figure/opencv-logo}
%\caption{第1个子图标题}
\end{minipage}
\begin{minipage}[t]{0.49\linewidth}
\centering
\includegraphics[width=0.9\linewidth]{figure/gdalicon_big}
%\caption{第2个子图标题}
\end{minipage}
\caption{并排安放两张图}
\label{fig:image_group}
\end{figure}
语法与上一节的类似,不同之处在于,对每个minipage
都不使用\caption
或\label
,以免将其编号。
注意,如果在minipage
包含的图片中也使用了\caption
命令,则也会将minipage
子图编号,如下图所示:
\begin{figure}[thbp!]
\centering
\begin{minipage}[t]{0.49\linewidth}
\centering
\includegraphics[width=0.9\linewidth]{figure/opencv-logo.png}
\caption{OpenCV的logo}
\end{minipage}
\begin{minipage}[t]{0.49\linewidth}
\centering
\includegraphics[width=0.9\linewidth]{figure/gdalicon_big.png}
\caption{GDAL的logo}
\end{minipage}
\caption{并排安放两张图}
\label{fig:image_group}
\end{figure}
那么,如何做到既标记子图,又不编号呢?
为子图增加说明文字,但不编号
实现这个效果需要用到tabular
包。
\begin{figure}[thbp!]
\centering
\begin{tabular}{@{\extracolsep{\fill}}c@{}c@{\extracolsep{\fill}}}
\includegraphics[width=0.5\linewidth]{figure/opencv-logo.png} &
\includegraphics[width=0.5\linewidth]{figure/gdalicon_big.png}\\
(a)OpenCV的logo & (b)GDAL的logo\\
\end{tabular}
\caption{并排,但不标记子图}
\label{fig:image_with_table}
\end{figure}
在figure
中嵌套一个两行两列表格,然后将两张图片插入第一行,两张图片的描述文字插入第二行,最后将整个figure
作一次标签。效果如下所示:
另一个例子,将6张图片按321排版:
\begin{figure}[thbp!]
\centering
\begin{minipage}[t]{1.0\linewidth}
\centering
\begin{tabular}{@{\extracolsep{\fill}}c@{}c@{}c@{}@{\extracolsep{\fill}}}
\includegraphics[width=0.33\linewidth]{figure/opencv-logo} &
\includegraphics[width=0.33\linewidth]{figure/gdalicon_big}&
\includegraphics[width=0.33\linewidth]{figure/eigen_logo}\\
(a)OpenCV的logo & (b)GDAL的logo & (c)Eigen的logo\\
\end{tabular}
\end{minipage}
\begin{minipage}[t]{1.0\linewidth}
\centering
\begin{tabular}{@{\extracolsep{\fill}}c@{}c@{}@{\extracolsep{\fill}}}
\includegraphics[width=0.33\linewidth]{figure/vtk_logo} &
\includegraphics[width=0.33\linewidth]{figure/qt}\\
(d)vtk的logo & (e)Qt的logo\\
\end{tabular}
\end{minipage}
\begin{minipage}[t]{1.0\linewidth}
\centering
\begin{tabular}{@{\extracolsep{\fill}}c@{}@{\extracolsep{\fill}}}
\includegraphics[width=0.33\linewidth]{figure/vcpkg_logo}\\
(f)vcpkg的logo\\
\end{tabular}
\end{minipage}
\caption{3行,每行子图数不同,子图不编号}
\label{fig:image_with_table_321}
\end{figure}
代码中使用了3个minipage
来分别完成3行图片的设置;每个minipage
内嵌一个tabular
来实现当前行子图的文字说明(不标记);每个tabular
的行数为2,第一行为子图、第二行为说明文字,列数为该行的子图数。
效果如下:文章来源:https://www.toymoban.com/news/detail-583634.html
文章来源地址https://www.toymoban.com/news/detail-583634.html
到了这里,关于Latex在同一figure中排版多张图片的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!