我想为表格行/单元格添加额外的间距tabularx
。但是,在设置\arraystretch
为大于 1 的值并设置\tabularxcolumn
为m
(见下文)后,我注意到内容稍微垂直居中,但向下移动了相当多,即低于每个单元格的垂直中心。
我该如何正确居中呢?
\documentclass[a4paper,11pt]{article}
\usepackage{tabularx}
\pagenumbering{gobble}
\renewcommand\tabularxcolumn[1]{m{#1}}
\renewcommand\arraystretch{5}
\begin{document}
\begin{tabularx}{\textwidth}{|X|X|}
\hline
hello & world \\
\hline
hello & x\vspace{20ex}\newline world \\
\hline
\end{tabularx}
\end{document}
我发现一些 答案这会将一些看似随机的间距调整到顶部。但是,这似乎并没有解决这个特定问题。至少我没有看到通过添加固定间距(例如)的通用解决方案,{-1ex}
因为间距似乎取决于内容大小。如果我的眼睛欺骗了我,偏移量确实是恒定的,我如何确定精确的抵消?
編輯:cellspace
是的不是在我的上下文中似乎可以工作。我想,这些都是最小工作示例的问题。
答案1
这里有一种方法,将X
列类型重新定义为m{...}
列,以及S
预列说明符结合起来cellspace
,确保最小列中单元格顶部和底部的垂直间距,前缀如下:
\documentclass[a4paper,11pt]{article}
\usepackage{tabularx, cellspace}
\pagenumbering{gobble}
\setlength{\cellspacetoplimit}{30pt}
\setlength{\cellspacebottomlimit}{30pt}
\addparagraphcolumntypes{X}
\begin{document}
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\begin{tabularx}{\textwidth}{|S{X}|S{X}|}
\hline
hello & world \\
\hline
hello & x \newline world \\
\hline
\end{tabularx}
\end{document}
答案2
借助该cellspace
包,您可以实现以下目标:
\documentclass{article}
\usepackage{cellspace}
\usepackage{tabularx}
\renewcommand\tabularxcolumn[1]{m{#1}}
\setlength\cellspacetoplimit{2.5\baselineskip}
\setlength\cellspacebottomlimit{2.5\baselineskip}
\addparagraphcolumntypes{X}
\begin{document}
\begin{tabularx}{\textwidth}{|SX|SX|}
\hline
hello & world \\
\hline
hello & x\vspace{20ex}\newline world \\
\hline
\end{tabularx}
\end{document}
答案3
\vspace{fill}
您可以使用语法在单元格内容之前和之后重定向>{}
。如果您只有这种类型的 X 列,则将重定向放入 X 列的重新定义中,IE:
\renewcommand\tabularxcolumn[1]{>{\vspace{\fill}}m{#1}<{\vspace{\fill}}}
您也可以使用p
-columns 和标准表格。要使内容准确居中,您需要使用 来终止单元格\par
。
\documentclass[a4paper,11pt]{article}
\usepackage{tabularx, array}
\pagenumbering{gobble}
\renewcommand\tabularxcolumn[1]{>{\vspace{\fill}}m{#1}<{\vspace{\fill}}}
\renewcommand\arraystretch{5}
\newcolumntype{P}{m{\dimexpr(0.5\linewidth-2\tabcolsep-1.5\arrayrulewidth)}}
\begin{document}
%% tabularx and redefined `X`-columns
\begin{tabularx}{\textwidth}{|X|X|}
\hline
hello\par& world\par\\
\hline
hello\par & x\vspace{20ex}\newline world\par\\
\hline
\end{tabularx}
\vspace{2cm}
%% Tabular and `m`-columns
\begin{tabular}{|P|P|}
\hline
hello\par& world\par\\
\hline
hello\par& x\vspace{20ex}\newline world\par\\
\hline
\end{tabular}
\end{document}