如何使最後一列文字位於行的底部?
也就是說,我希望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}
ofnicematrix
及其內建指令的解決方案\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 節點)。