使用 `@{\extracolsep{\fill}}` 选项时 `tabular` 的垂直对齐

使用 `@{\extracolsep{\fill}}` 选项时 `tabular` 的垂直对齐

我正在尝试使用以下代码在学术简历中列出一篇论文

\begin{tabular*}{0.97\textwidth}{p{.8\textwidth} @{\extracolsep{\fill}}r}
      \small{A very long paper title with author names and other bibliographic information that spills over onto the next line.} & 
      \begin{tabular}{r} 
      2024 \\ \small{Expected}
      \end{tabular}
    \end{tabular*}

它几乎可以工作,但是“非常长...”和“2024”的行没有垂直对齐。

在此处输入图片描述

我该如何解决这个问题?我尝试过各种不同的想法,比如使用\makecell{Some really \\ longer text}第二列,但还是出现了同样的问题。有些资料说使用[t]intabular应该可以将文本对齐到顶部,但当我尝试时,它就坏了。

答案1

(在 OP 提供了有关所需布局的更多信息后更新了此答案)

我会劝告反对字体大小经常变化。相反,我建议您改用双列tabularx环境,将其目标宽度设置为,在第一列\textwidth使用(又名 flushleft)(并将其可用宽度设置为)和第二列使用 (又名 flushright);其宽度是作为 LaTeX 残差计算的。\RaggedRight0.8\textwidth\RaggedLeft

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx} % for 'tabularx' env. and 'X' col. type
\usepackage{ragged2e} % for '\RaggedRight' and '\RaggedLeft' macros
\begin{document}

\noindent
\begin{tabularx}{\textwidth}{@{} 
   >{\RaggedRight\small}p{0.8\textwidth} 
   >{\RaggedLeft\small}X @{}}
A very long paper title with author names and other bibliographic information that spills over onto the next line. & 
2024\newline Expected \\ % <-- use '\newline' to force a line break *within* an X-type column
\end{tabularx}

\end{document}

答案2

为什么0.97\textwidth?无论如何,使用top 对齐的表格。

\documentclass{article}

\usepackage{showframe}

\begin{document}

\noindent
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}p{.8\textwidth}r@{}}
  \small
  A very long paper title with author names and other bibliographic
  information that spills over onto the next line. &
  \begin{tabular}[t]{@{}r@{}}
  2024 \\ \small Expected
  \end{tabular}
\end{tabular*}

\end{document}

具有更好的语法。

\documentclass{article}

\usepackage{showframe}

\NewDocumentCommand{\paper}{mmO{}}{%
  \par\noindent
  \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}p{.8\textwidth}r@{}}
  \small #1 & \begin{tabular}[t]{@{}r@{}} #2 \\ \small #3 \end{tabular}
  \end{tabular*}\par
}


\begin{document}

\paper{A very long paper title with author names and other bibliographic
  information that spills over onto the next line.}{2024}[Expected]

\end{document}

在此处输入图片描述

我以前showframe只是用来显示相对于边距的位置。一旦您移除生产版本的包装,这些线条就会消失。

答案3

  • 如果我理解正确的话,您不需要包multirow。只需在第二列中写入两行文本(借助makecell包并将列对齐X类型从更改pm
\documentclass{article}
\usepackage{tabularx}
\usepackage{makecell}

\usepackage{lipsum}

\begin{document}
\lipsum[66]

\bigskip
    \begin{table}[!htb]
\renewcommand\tabularxcolumn[1]{m{#1}}
%\small
\begin{tabularx}{\textwidth}{@{} X l @{}}
A very long paper title with author names and other bibliographic information that spills over onto the next line.
    &   \makecell{2024 \\ Expected}
\end{tabularx}
    \end{table}
\end{document}

在此处输入图片描述

答案4

尝试一下:
使用array包:它允许更高级的列格式。
将右列设置为m{2cm}:它垂直居中“2024”和“预期”文本。
用于multirow标题:这将标题对齐到两行,并以“2024”居中。

\documentclass{article}
\usepackage{array}
\usepackage{multirow}

\begin{document}

\begin{tabular*}{0.97\textwidth}{@{}p{.8\textwidth} @{\extracolsep{\fill}}m{2cm}@{}}
  \multirow{2}{.8\textwidth}{\small{A very long paper title with author names and other bibliographic information that spills over onto the next line.}} & 
  \begin{tabular}[t]{@{}r@{}}
    2024 \\ \small{Expected}
  \end{tabular}
\end{tabular*}

\end{document}

输出:
在此处输入图片描述

相关内容