在使用tabularray
宏包实现表格内插图时,垂直方向无法完全居中。
如下面的MWE:
\documentclass{article}
\usepackage[a2paper,margin=1in]{geometry}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{graphbox} % thanks to 鱼香肉丝没有鱼先生...
\usepackage{tabularray}
\begin{document}
\begin{tblr}{
colspec={|c|*{4}{Q[c,7cm]|}},
rowspec={|*{4}{Q[m]|}},
}
& short text & image without `align=m' & image with `align=m' & long text\\
pure image
& \lipsum[2]
& \includegraphics[width=4.8cm]{example-image}
& \includegraphics[align=m,width=4.8cm]{example-image}
&\lipsum[1] \\
image with text before
& \lipsum[2]
& {some text before\\ \includegraphics[width=4.8cm]{example-image}}
& {some text before\\ \includegraphics[align=m,width=4.8cm]{example-image}}
& \lipsum[1] \\
image with text after
& \lipsum[2]
& {\includegraphics[width=4.8cm]{example-image}\\ some text after}
& {\includegraphics[align=m,width=4.8cm]{example-image}\\ some text after}
& \lipsum[1] \\
\end{tblr}
\end{document}
1处无法垂直方向居中;
2处使用graphbox
提供的align=m
可以实现垂直方向居中;
3/4/5/6处当出现图文混排的情况无法实现垂直方向居中;
我的问题是:对于上述情况3以及情况5中出现的情况,如何实现垂直方向的居中呢?
可参考链接:
TSE1
特别要感谢鱼香肉丝没有鱼先生@u19850 提供的graphbox
解决方案
加上 varwidth
环境。
\documentclass{article}
\usepackage[a2paper,margin=1in]{geometry}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{graphbox} % thanks to 鱼香肉丝没有鱼先生...
\usepackage{tabularray}
\usepackage{varwidth}
\begin{document}
\begin{tblr}{
colspec={|c|*{4}{Q[c,m,7cm]|}},
rowspec={|*{4}{Q|}},
}
& short text & image without `align=m' & image with `align=m' & long text\\
pure image
& \lipsum[2]
& \begin{varwidth}{7cm}\includegraphics[width=4.8cm]{example-image}\end{varwidth}
& \includegraphics[align=m,width=4.8cm]{example-image}
&\lipsum[1] \\
image with text before
& \lipsum[2]
& {some text before\\ \includegraphics[width=4.8cm]{example-image}}
& {some text before\\ \includegraphics[align=b,width=4.8cm]{example-image}}
& \lipsum[1] \\
image with text after
& \lipsum[2]
& {\begin{varwidth}{7cm}\centering
\includegraphics[width=4.8cm]{example-image}\\ some text after\end{varwidth}}
& {\includegraphics[align=t,width=4.8cm]{example-image}\\ some text after}
& \lipsum[1] \\
\end{tblr}
\end{document}
配合 functional
库,应该可以做到检测 \includegraphics
自动加上 varwidth
环境(留作习题)。
\documentclass{article}
\usepackage[a2paper,margin=1in]{geometry}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{graphbox} % thanks to 鱼香肉丝没有鱼先生...
\usepackage{adjustbox}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{
colspec={|c|*{4}{Q[c,7cm]|}},
rowspec={|*{4}{Q[m]|}},
}
& short text & image without `align=m' & image with `align=m' & long text\\
pure image
& \lipsum[2]
& \adjustbox{valign=m}{\includegraphics[width=4.8cm]{example-image} }
& \adjustbox{valign=m}{\includegraphics[align=m,width=4.8cm]{example-image}}
&\lipsum[1] \\
image with text before
& \lipsum[2]
& {some text before\\ \includegraphics[width=4.8cm]{example-image}}
& \adjustbox{valign=m}{
\parbox{5cm}{\centering some text before\\ \includegraphics[align=m,width=4.8cm]{example-image}} }
& \lipsum[1] \\
image with text after
& \lipsum[2]
& \adjustbox{valign=m}{
\parbox{5cm}{\centering\includegraphics[width=4.8cm]{example-image}\\ some text after} }
& \adjustbox{valign=m}{
\parbox{5cm}{\centering\includegraphics[align=m,width=4.8cm]{example-image}\\ some text after}}
& \lipsum[1] \\
\end{tblr}
\end{document}
非常感谢雾月大神提供的解答...
使用
\varwidth
确实可以处理这里的问题。关于
functional
库,我简略浏览了一下这似乎类似于latex2e
中的expl3
(?)或许应该叫expl2e
,但是在标题中我似乎只找到了Bool
这种章节可以提供判断的功能,我同时也没有接触过expl3
中如何判断是否存在某命令/某环境...似乎\ifx
可以提供等号的判断,感觉很难下手,如果您有空可否提供下习题的解答或者更具体的指明可能用到的命令我再进一步查阅,谢谢您!@u70550
\tl_if_in:Nn..
或\regex_match:Nn..
都可以用来判断某个命令是否存在。这个习题实际上难度不大。