如何定义列类型,以便在表中,该类型的每一列的每个单元格中,内容都底部对齐?(此内容是一些文本,而不是图像。)
我不想每一个表格中的单元格底部对齐。我希望最左侧列的每个单元格的内容顶部对齐(这确实会发生,因为这是默认设置;这没有问题)。但相比之下,我希望最右侧列的每个单元格的内容底部对齐。
我尝试采用建议的方法在 三 答案,如下所示。下面的 MWE 显示了三次尝试。在每次尝试中,我都限制了第二列的宽度,并在单元格中放入了太多文本,以至于文本溢出到第二行。这使得最右列的底部对齐与顶部对齐区分开来。我希望定义最右列的类型,以便最右单元格的内容底部对齐。但是,在每种情况下,文本都设置得太高了。
以防万一它相关:我正在使用 LuaLaTeX 排版。
梅威瑟:
\documentclass[12pt,a4paper]{article}
\usepackage{array, tabularx}
% See https://tex.stackexchange.com/a/395359
% This is worse for 2 reasons: 1) the \hline at the bottom of the table doesn't compile 2) the s cells' contents is even higher than the other cells'.
\newcolumntype{s}{>{\centering}b{.2\textwidth}}
% See https://tex.stackexchange.com/a/105671
% This top-aligns cell 3's contents within its cell, rather than bottom-aligning it.
%\def\tabularxcolumn#1{b{#1}}
% See https://tex.stackexchange.com/a/244213 re col type X and right-hand col. \centering horizontally centres the contents between left and right, but the contents is still top-aligned.
\renewcommand\tabularxcolumn[1]{>{\centering\arraybackslash}b{#1}}
\begin{document}
\begin{tabular}{lp{5cm}|b{3cm}|}
\hline
first & using the built-in tabular environment & last\\
\hline
\end{tabular}
\begin{tabular}{lp{5cm}|s|}
\hline
first & using a newly-defined column type s & last\\
\end{tabular}
\begin{tabularx}{\textwidth}{lp{5cm}|X|}
\hline
first & using the package tabularx and its col type X & last\\
\hline
\end{tabularx}
\end{document}
答案1
如果你使用b
第 2 列和第 3 列,你会得到
我认为这就是您想要的,尽管如果您希望第一个与顶部对齐,最后一个与底部对齐,那么这会有点困难,因为中间列只记录一个参考点。
\documentclass[12pt,a4paper]{article}
\usepackage{tabularx}
\renewcommand\tabularxcolumn[1]{>{\centering\arraybackslash}m{#1}}
\begin{document}
\begin{tabular}{wl{1cm}b{5cm}|b{3cm}|}
\hline
&
\noindent\makebox[0pt][l]{\hspace{-\dimexpr1cm+2\tabcolsep}first}%
using the built-in tabular environment & last\\
\hline
\end{tabular}
\end{document}
答案2
作为对@David Carlisle 的精彩回答的补充(+1)。
通过使用该tabularray
软件包,您可以轻松实现您的目标:
\documentclass[12pt,a4paper]{article}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{colspec = {Q[l,h, 3cm] Q[l,h, 5cm] | Q[l,f, 3cm]|}}
\hline
first (top)
& using the built-in tabular environment
& last (bottom \\
\hline
\end{tblr}
\end{document}
列规范中的选项h
将单元格中的文本推到顶部,将选项f
推到底部。
答案3
这是一个具有环境{NiceTabular}
的解决方案nicematrix
(仅当您使用其他功能时才推荐nicematrix
...)。
\documentclass[12pt,a4paper]{article}
\usepackage{nicematrix}
\usepackage{collcell}
\begin{document}
\newcommand{\bBlock}{\Block[B]{}}
\newcolumntype{B}{>{\collectcell\bBlock}c<{\endcollectcell}}
\begin{NiceTabular}{cp[l]{5cm}B}[hvlines]
first (top)
& using the environment \verb|{NiceTabular}| of \verb|nicematrix|
& last (bottom) \\
\end{NiceTabular}
\end{document}