我有很多不同的图形,每个图形有三个版本。所有这些版本都有固定的宽度,我希望这三个版本彼此相邻显示。到目前为止,我使用了制表符环境来实现这一点。由于我有很多图形,我编写了一个命令:
\newcommand{\compimg}[1]{
\includegraphics[width=28.8mm]{img#1v1} \> \includegraphics[width=57.6mm]{img#1v2} \> \includegraphics[width=57.6mm]{img#1v3} \\[3mm]
}
\begin{tabbing}
\hspace{31.8mm} \= \hspace{60.6mm} \= \kill
\compimg{1}
\compimg{2}
\compimg{3}
% ...
\end{tabbing}
效果很好,尺寸和间距(所有图像之间间隔 3 毫米)非常完美。
现在,我希望图像在每页上垂直居中。我想我必须使用浮动,但我无法让它工作,至少会弄乱我的垂直间距。
如何才能使每页上的图像居中而不丢失一致的间距?任何帮助都非常感谢。
更新
由于我的所有图形都有固定宽度,因此我可以使用\hspace{3mm}
制表环境。这并不能解决我的问题,但可能会使它更容易。
答案1
不太清楚您想要的间距(特别是您是否希望所有图像行都聚集在中心,或者是否希望它们间隔开)。
我会用类似的东西
\newcommand{\compimg}[1]{%
\par
\includegraphics[width=28.8mm]{img#1v1}%
\hspace{3mm}%
\includegraphics[width=57.6mm]{img#1v2}%
\hspace{3mm}%
\includegraphics[width=57.6mm]{img#1v3}%
\par
}
然后
\vspace*{\fill}
\compimg{1}
\vspace*{\fill}
\compimg{2}
\vspace*{\fill}
\compimg{3}
\vspace*{\fill}
或者
\vspace*{\fill}
\compimg{1}
\compimg{2}
\compimg{3}
\vspace*{\fill}
取决于……
}
根据以下评论,我认为你实际上想要的是这个:
\documentclass{article}
\addtolength\textwidth{100pt}
\addtolength\oddsidemargin{-50pt}
\usepackage[demo]{graphicx}
\newcommand{\compimg}[1]{%
\par
\includegraphics[width=28.8mm]{img#1v1}%
\hspace{3mm}%
\includegraphics[width=57.6mm]{img#1v2}%
\hspace{3mm}%
\includegraphics[width=57.6mm]{img#1v3}%
\par
}
\begin{document}
\setlength\parskip{3mm}
\makeatletter
\newcommand\@texttop{\vfill}
\renewcommand\@textbottom{\vfill}
\makeatother
\compimg{1}
\compimg{2}
\compimg{3}
\compimg{4}
\compimg{5}
\compimg{6}
\compimg{7}
\end{document}
答案2
如果你确定每组 3 张图片都适合放在一行,你可以尝试以下方法:
\newcommand{\compimg}[1]{%
\hbox to\hsize{%
\hfill
\hbox to 28.8mm{v1\hfil#1\hfil v1}%
\hskip 3mm
\hbox to 57.6mm{v2\hfil#1\hfil v2}%
\hskip 3mm
\hbox to 28.8mm{v3\hfil#1\hfil v3}%
\hfill
}%
}%
以下是一个使用示例:
\begin{figure}
\compimg{a}
\compimg{b2b}
\compimg{c}
\end{figure}
当然,你需要用你的includegraphics
命令替换各种hbox。
我不了解制表符环境,因此我不确定您是否希望将数字置于浮动环境中。如果这样做,则示例没有问题;如果这样做,则必须删除figure
并将调用compimg
放在单独的段落中。
我可能还应该警告你,我的解决方案非常低级,我更像是 TeX 用户,而不是 LaTeX 用户!也许有人会想出更符合 LaTeX 习惯的答案,与此同时,也许我的答案会对你有所帮助!
答案3
另一个选项基于raster
库和\tcbincludegraphics
命令tcolorbox
。在tcbraster
环境中,您可以选择有多少列、行和列之间的距离以及应用于其中包含的所有内容的样式tcolorboxes
。下一个代码显示了两个示例,一个使用默认样式,为tcolorbox
每个包含的图形添加一些空间和框架,第二个样式blank
仅包含图形,周围没有框架和空间。
\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{mwe}
\begin{document}
\vspace*{\fill}
\noindent
\begin{tcbraster}[raster columns=3, raster equal height, raster column skip=3mm, raster row skip=3mm]
\tcbincludegraphics{example-image}
\tcbincludegraphics{example-image-a}
\tcbincludegraphics{example-image-c}
\tcbincludegraphics{example-image-b}
\tcbincludegraphics{example-image-a}
\tcbincludegraphics{example-image}
\tcbincludegraphics{example-image-b}
\tcbincludegraphics{example-image-c}
\tcbincludegraphics{example-image}
\end{tcbraster}
\vspace*{\fill}
\newpage
\vspace*{\fill}
\noindent
\begin{tcbraster}[raster columns=3, raster equal height, raster column skip=3mm, raster row skip=3mm, raster every box/.style={blank}]
\tcbincludegraphics{example-image}
\tcbincludegraphics{example-image-a}
\tcbincludegraphics{example-image-c}
\tcbincludegraphics{example-image-b}
\tcbincludegraphics{example-image-a}
\tcbincludegraphics{example-image}
\tcbincludegraphics{example-image-b}
\tcbincludegraphics{example-image-c}
\tcbincludegraphics{example-image}
\end{tcbraster}
\vspace*{\fill}
\end{document}