我有以下代码
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage[table]{xcolor}
\begin{document}
\renewcommand{\arraystretch}{1.5}%
\begin{tabularx}{418.26pt}{|c|c|c|>{\centering}X|>{\centering}X|>{\centering}X|c|c|}
\hline
\rowcolor{black!20}Nr. & Date & Version & Changed Chapters & Types of Change & Autor & Status\\\hline
1 & 06.12.2022 & 0.1 & Alle & First Draft & Long Ass Lastname & -\\\hline
\end{tabularx}
\end{document}
输出结果如下
除了水平居中单元格之外,我还想垂直居中它们。理想情况下,我想定义单元格类型 X 的变体,以免因特殊情况处理而弄乱表格的实际内容。
我已经尝试了涉及tabularx
提出的两种解决方案高度可变的表格单元格中的垂直对齐,但都没有令人满意的效果。
\parbox
解决方案
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage[table]{xcolor}
\begin{document}
\renewcommand{\arraystretch}{1.5}%
\begin{tabularx}{418.26pt}{|c|c|c|>{\centering}X|>{\centering}X|>{\centering}X|c|c|}
\hline
\rowcolor{black!20}Nr. & Date & Version & \noindent\parbox[c]{\hsize}{Changed Chapters} & \noindent\parbox[c]{\hsize}{Types of Change} & Autor & Status\\\hline
1 & 06.12.2022 & 0.1 & Alle & First Draft & \noindent\parbox[c]{\hsize}{Long Ass Lastname} & -\\\hline
\end{tabularx}
\end{document}
导致了这种可怕的结果
“解决方案\multicolumn
”同样糟糕(除了还必须猜测合适的单元格宽度)
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage[table]{xcolor}
\begin{document}
\renewcommand{\arraystretch}{1.5}%
\begin{tabularx}{418.26pt}{|c|c|c|>{\centering}X|>{\centering}X|>{\centering}X|c|c|}
\hline
\rowcolor{black!20}Nr. & Date & Version & \multicolumn{1}{|m{2cm}|}{Changed Chapters} & \multicolumn{1}{|m{2cm}|}{Types of Change} & Autor & Status\\\hline
1 & 06.12.2022 & 0.1 & Alle & First Draft & \multicolumn{1}{|m{2cm}|}{Long Ass Lastname} & -\\\hline
\end{tabularx}
\end{document}
答案1
这个解决方案非常有效
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage[table]{xcolor}
\begin{document}
\renewcommand{\arraystretch}{1.5}%
{\renewcommand\tabularxcolumn[1]{m{#1}}%
\begin{tabularx}{418.26pt}{|c|c|c|>{\centering}X|>{\centering}X|>{\centering}X|c|c|}
\hline
\rowcolor{black!20}Nr. & Date & Version & Changed Chapters & Types of Change & Autor & Status\\\hline
1 & 06.12.2022 & 0.1 & Alle & First Draft & Long Ass Lastname & -\\\hline
\end{tabularx}%
}
\end{document}
答案2
除了arraystretch
,您可能还想使用 struts。这些是不可见的元素,可以人为地延长高度。另一方面,是不对称的,较大的值会使表格看起来很尴尬;这仍然可以通过将负值设置为(它需要包)\arraystretch
来补偿。\extrarowheight
array
以下代码演示了如何使用自定义支柱。该宏\mystrut[top][bottom]
添加了不可见的条:分别是顶部和底部间隙。然后,该宏可以成为影响表格中每一行的列定义的一部分。
此外,在小型牢房等狭窄环境中,请考虑使用ragged2e
以及microtype
。前者提供了改进的宏来格式化段落,例如\Centering
或\RaggedRight
等,在此示例中替代\centering
或\raggedright
。
代码
\documentclass{article}
\usepackage{tabularx}
\usepackage{ragged2e,microtype}
\usepackage[table]{xcolor}
\NewDocumentCommand\mystrut{O{1}O{#1}}{%
\sbox0{X}%
\rule[\ht0]{0pt}{#1\dimexpr\normalbaselineskip}%
\rule[#2\dimexpr-\normalbaselineskip]{0pt}{#2\dimexpr\normalbaselineskip}}
\renewcommand\tabularxcolumn[1]{m{#1}}%
\begin{document}
%%% Struts added manually per row
\noindent%
\begin{tabularx}{\textwidth}{|
*3{c|}
*3{>{\Centering}X|}
*2{c|}
}
\hline
\rowcolor{black!20}
\mystrut%
Nr. & Date & Version & Changed Chapters & Types of Change & Autor & Status \\
\hline
\mystrut 1 & 06.12.2022 & 0.1 & Alle & First Draft & Long Ass Lastname & - \\
\hline
\mystrut[1][2]%
1 & 06.12.2022 & 0.1 & Alle & First Draft & Long Ass Lastname & - \\
\hline
\end{tabularx}
\bigskip
%%% Struts added in column definition
\noindent%
\begin{tabularx}{\textwidth}{|
>{\mystrut[1.25]{}}c|
*2{c|}
*3{>{\Centering}X|}
*2{c|}
}
\hline
\rowcolor{black!20}
Nr. & Date & Version & Changed Chapters & Types of Change & Autor & Status \\
\hline
1 & 06.12.2022 & 0.1 & Alle & First Draft & Long Ass Lastname & - \\
\hline
\end{tabularx}%
\end{document}