长表中图像的垂直对齐

长表中图像的垂直对齐

我正在尝试创建一个长表,其中第一列仅包含图像。长表定义为(只有一行):

\begin{longtable}{m{0.2\linewidth} m{0.7\linewidth}}
    \hline
    \includegraphics[keepaspectratio,width=\linewidth]{RectSolid.eps} & $\!\begin{aligned}
    A &= b\cdot{}h\\
    P &= 2(b+h)\\
    y &= \dfrac{h}{2}\\
    I_y &= \dfrac{1}{12}b\cdot{}h^3
    \end{aligned}$
    \\\hline
\end{longtable}

我得到的结果是(图像被紧密裁剪,没有空白填充):

在此处输入图片描述

看起来好像图像的基线位于其底部,因此它位于行的中点。或者 longtable 可能需要文本,因此将基点放置在“中点 - textHeight”而不是中点。无论如何,这显然不够好。

我见过长桌环境中的垂直对齐建议使用\raisebox{-\height}{\includegraphics{....}}(或者\normalbaselineskip-\height,或者,我自己的0.5\height),但结果并没有好多少:

在此处输入图片描述

@egreg 在该链接中的评论中给出的另一个建议是使用adjustbox,但不幸的是,我甚至不知道这是否适合我,因为我被迫使用我的大学提供的 .cls 文件,该文件不能与该包一起编译(该大学的 .cls 文件是垃圾,使用了一堆贬值的包)。

所以问题是:不使用adjustbox包是否可以垂直对齐长表中的图形?不一定是包longtable,但表需要跨越多页。所以如果有其他包可以做到这一点,我愿意尝试一下。

编辑1: 人们要求提供 MWE,所以这里就有了。我把它放在我的 Dropbox 的公共目录中,可以下载这里。我无法简单地放上代码,因为这\documentclass是我所在大学的 .cls 文件(ThesisPKKN2,实际上是我创建的原始文件的修改版,用来subcaption代替过时的subfigure包)给出的。

编辑2: 上面链接的 MWE 实际上使用了 Andrew Swann 的想法\vcenter,但尽管它在他提供的例子中显然发挥了奇效,但在我的例子中结果却是这样的:

\begin{longtable}{m{0.2\linewidth} m{0.7\linewidth}}
\hline
$\vcenter{\includegraphics[keepaspectratio,width=\linewidth]{RectSolid.eps}}$ & $\!\begin{aligned}
A &= b\cdot{}h\\
P &= 2(b+h)\\
y &= \dfrac{h}{2}\\
I_y &= \dfrac{1}{12}b\cdot{}h^3
\end{aligned}$
\\\hline
\end{longtable}

在此处输入图片描述

我想说这是迄今为止最好的结果,但图像下方的空间似乎仍然比上方的空间多。

编辑3: 这是 MWE 代码本身。

\documentclass[dissertacao,brazil]{ThesisPKKN2}
\usepackage{array}
\usepackage{amsmath}
\usepackage{epstopdf}
\usepackage{etoolbox}
\usepackage{fixltx2e}
\usepackage{longtable}
\graphicspath{{./figures/}} % graphicx

\begin{document}
\begin{longtable}{m{0.2\linewidth} m{0.7\linewidth}}
    \hline
    $\vcenter{\includegraphics[keepaspectratio,width=\linewidth]{RectSolid.eps}}$ & $\!\begin{aligned}
    A &= b\cdot{}h\\
    P &= 2(b+h)\\
    y &= \dfrac{h}{2}\\
    I_y &= \dfrac{1}{12}b\cdot{}h^3
    \end{aligned}$
    \\\hline
\end{longtable}
\end{document}

编辑4: 正如评论所说,我刚刚意识到这是使用 GIMP 时出现的问题,而不是 TeX 的问题。我修剪后的图像周围有大量填充,这就是导致图像偏离中心的原因。无论出于什么原因,这张图片

在此处输入图片描述

当导出为 .eps 并放入 TeX 中时,变为

在此处输入图片描述

无论如何,这是 GIMP 的问题,而不是 TeX 的问题。没关系。话虽如此,Swann 的\vcenter方法确实很有效。

答案1

您可以使用$\vcenter{...}$

示例输出

\documentclass{article}

\usepackage{graphicx}
\usepackage{longtable,amsmath,tabularx}

\begin{document}
\begin{longtable}{m{0.2\linewidth} m{0.7\linewidth}}
    \hline
    $\vcenter{\includegraphics[keepaspectratio,width=\linewidth]{example-image-a.jpg}}$ & $\!\begin{aligned}
    A &= b\cdot{}h\\
    P &= 2(b+h)\\
    y &= \dfrac{h}{2}\\
    I_y &= \dfrac{1}{12}b\cdot{}h^3
    \end{aligned}$
    \\\hline
    $\vcenter{\includegraphics[keepaspectratio,width=0.2\linewidth]{example-image-a.jpg}}$ & $\!\begin{aligned}
    A &= b\cdot{}h\\
    P &= 2(b+h)\\
    y &= \dfrac{h}{2}\\
    I_y &= \dfrac{1}{12}b\cdot{}h^3
    \end{aligned}$
    \\\hline
\end{longtable}

\end{document}

答案2

您可以使用adjustbox带有选项的包export,以便在命令内部可以使用键\includegraphics

 \usepackage[export]{adjustbox}

然后使用valign=c

\includegraphics[keepaspectratio,width=\linewidth,valign=c]{example-image-a.jpg}

代码:

\documentclass{article}

\usepackage{graphicx}
\usepackage{longtable,amsmath,tabularx}
\usepackage[export]{adjustbox}

\begin{document}
\begin{longtable}{m{0.2\linewidth} m{0.7\linewidth}}
    \hline
    \includegraphics[keepaspectratio,width=\linewidth,valign=c]{example-image-a.jpg} & $\!\begin{aligned}
    A &= b\cdot{}h\\
    P &= 2(b+h)\\
    y &= \dfrac{h}{2}\\
    I_y &= \dfrac{1}{12}b\cdot{}h^3
    \end{aligned}$
    \\\hline
    \includegraphics[keepaspectratio,width=0.2\linewidth,valign=c]{example-image-a.jpg} & $\!\begin{aligned}
    A &= b\cdot{}h\\
    P &= 2(b+h)\\
    y &= \dfrac{h}{2}\\
    I_y &= \dfrac{1}{12}b\cdot{}h^3
    \end{aligned}$
    \\\hline
\end{longtable}

\end{document}

在此处输入图片描述

相关内容