如何让最后一列的文本位于行的底部?
也就是说,我希望XXX
与包含箭头的线对齐。
我尝试了一下\multirow{3}{-3ex}{XXX}
,但显然我不明白\multirow
。
代码:
\documentclass{article}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{multirow}
\begin{document}
\begin{tabularx}{\linewidth}[t]{l X p{1.3cm}}
& Header & Title \\\cmidrule(lr){2-2}\cmidrule(lr){3-3}
a. & Some text text text text text text text text text text text text text text
text text text text text text text text text text
Want XXX on this line $\rightarrow$%
& XXX\\
\end{tabularx}
\end{document}
答案1
(编辑答案,使用不同的机制)
\documentclass{article}
\usepackage{tabularx}
\usepackage{booktabs}
\makeatletter
\def\foo#1{\leavevmode
\expandafter\ifx\csname PDFSAVE#1\endcsname\relax
\expandafter\gdef\csname PDFSAVE#1\endcsname{0sp}%
\fi
\pdfsavepos\write\@auxout{\gdef\string\PDFSAVE#1{\the\pdflastypos}}}
\makeatother
\begin{document}
\noindent
\begin{tabularx}{\linewidth}[t]{l X p{1.3cm}}
& Header & Title \\\cmidrule(lr){2-2}\cmidrule(lr){3-3}
a. & \foo{a}Some text text text text text text text text text text text text text text
text text text text text text text text text text
Want XXX on this line $\rightarrow$\foo{b}%
& \smash{\raisebox{\dimexpr\PDFSAVEb sp-\PDFSAVEa sp\relax}{XXX}}\\
\end{tabularx}
\end{document}
原始答案使用将 X 列的基线移动到底部
\renewcommand\tabularxcolumn[1]{b{#1}}
但这会影响所有X
列,并且会使a.
对齐在底行。 后一个问题可以通过将移动a.
到第二列(带有悬挂缩进)来解决
如果你只想改变表中某些 X 列的对齐方式,那么你可以使用:
>{\begin{minipage}[b]{\hsize}}X<{\end{minipage}} :-)
答案2
如果您想玩\multirow
,您可以使用第二个可选参数,即“fixup”,用于微调位置的长度。
就你的情况来说应该是-2\baselineskip
梅威瑟:
\documentclass{article}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{multirow}
\begin{document}
\noindent
\begin{tabularx}{\linewidth}[t]{l X p{1.3cm}}
& Header & Title \\\cmidrule(lr){2-2}\cmidrule(lr){3-3}
a. & Some text text text text text text text text text text text text text text
text text text text text text text text text text
Want XXX on this line $\rightarrow$%
& \multirow{1}{*}[-2\baselineskip]{XXX}\\
\end{tabularx}
\end{document}
输出:
答案3
根据与 相关的内容类型XXX
,以下是获取底部对齐的简单方法,不需要了解前面的列条目:
\documentclass{article}
\usepackage{tabularx}
\usepackage{booktabs}
\begin{document}
\noindent
\begin{tabularx}{\linewidth}[t]{l X p{1.3cm}}
& Header & Title \\\cmidrule(lr){2-2}\cmidrule(lr){3-3}
a. & Some text text text text text text text text text text text text text text
text text text text text text text text text text
Want XXX on this line $\rightarrow$
& \\[-\normalbaselineskip] && XXX
\end{tabularx}
\end{document}
想法:设置XXX
在自己的行上,但使用与前一行的底部重叠\\[-\normalbaselineskip]
。
答案4
{NiceTabularX}
以下是使用nicematrix
及其内置命令 的解决方案\Block
。
\documentclass{article}
\usepackage{nicematrix}
\usepackage{booktabs}
\begin{document}
\begin{NiceTabularX}{\linewidth}[t]{l X p{1.3cm}}
& Header & Title \\\cmidrule(lr){2-2}\cmidrule(lr){3-3}
a. & Some text text text text text text text text text text text text text text
text text text text text text text text text text
Want XXX on this line $\rightarrow$%
& \Block[B]{}{XXX \strut}
\end{NiceTabularX}
\end{document}
您需要进行多次编译(因为nicematrix
在后台使用了 PGF/TikZ 节点)。