Como faço para que o texto da última coluna fique na parte inferior da linha?
Quero que XXX
esteja alinhado com a linha que contém a seta.
Tentei brincar com \multirow{3}{-3ex}{XXX}
, mas obviamente não entendi \multirow
.
Código:
\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}
Responder1
(Resposta editada, usando mecanismo diferente)
\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}
A resposta original moveu a linha de base da coluna X para baixo usando
\renewcommand\tabularxcolumn[1]{b{#1}}
Mas isso afeta todas X
as colunas e também faz o a.
alinhamento na linha inferior. O último problema poderia ser resolvido movendo o a.
para a segunda coluna (com um recuo deslocado)
Se você deseja alterar apenas o alinhamento de algumas colunas X em uma tabela, você pode usar:
>{\begin{minipage}[b]{\hsize}}X<{\end{minipage}} :-)
Responder2
Se quiser brincar com \multirow
, você pode usar o segundo argumento opcional, que é o "fixup", um comprimento para ajustar a posição.
No seu caso deveria ser-2\baselineskip
MWE:
\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}
Saída:
Responder3
Dependendo do tipo de conteúdo associado a XXX
, a seguir é uma maneira fácil de obter o alinhamento inferior que não requer conhecimento das entradas da coluna anteriores:
\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}
Ideia: Definir XXX
em sua própria linha, mas sobreposto à parte inferior da linha anterior usando \\[-\normalbaselineskip]
.
Responder4
Aqui está uma solução com {NiceTabularX}
of nicematrix
e seu comando integrado \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}
Você precisa de várias compilações (porque nicematrix
usa nós PGF/TikZ nos bastidores).