我正在尝试创建一个长表,其中第一列仅包含图像。长表定义为(只有一行):
\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}