¿Cómo consigo que el texto de la última columna esté al final de la fila?
Es decir, quiero que XXX
esté alineado con la línea que contiene la flecha.
Intenté jugar con \multirow{3}{-3ex}{XXX}
, pero obviamente no lo entiendo \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}
Respuesta1
(Respuesta editada, usando un 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}
La respuesta original movió la línea de base de la columna X hacia la parte inferior usando
\renewcommand\tabularxcolumn[1]{b{#1}}
Pero eso afecta a todas X
las columnas y también hace que a.
se alineen en la fila inferior. El último problema podría solucionarse moviendo el a.
a la segunda columna (con una sangría francesa)
Si solo desea cambiar la alineación de algunas columnas X en una tabla, puede usar:
>{\begin{minipage}[b]{\hsize}}X<{\end{minipage}} :-)
Respuesta2
Si quieres jugar con \multirow
, puedes usar el segundo argumento opcional, que es "arreglar", una longitud para ajustar la posición.
En tu caso debería 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}
Producción:
Respuesta3
Dependiendo del tipo de contenido asociado con XXX
, la siguiente es una manera fácil de obtener la alineación inferior que no requiere conocimiento de las entradas de las columnas 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}
Idea: colocarlo XXX
en su propia línea, pero superpuesto con la parte inferior de la línea anterior usando \\[-\normalbaselineskip]
.
Respuesta4
Aquí hay una solución con {NiceTabularX}
of nicematrix
y su comando incorporado \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}
Necesita varias compilaciones (porque nicematrix
utiliza nodos PGF/TikZ bajo el capó).