垂直居中一组选项卡式图形

垂直居中一组选项卡式图形

我有很多不同的图形,每个图形有三个版本。所有这些版本都有固定的宽度,我希望这三个版本彼此相邻显示。到目前为止,我使用了制表符环境来实现这一点。由于我有很多图形,我编写了一个命令:

\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}

在此处输入图片描述

相关内容