我正在尝试创建一个可以调整其列高度的表格,以便当文本长度增加时,column-width
保持不变但column height
可以调整。此外,我希望这个表格中的文本保持居中。
这是我目前得到的结果。问题是,当中间有更多文本时,它column
不会像我希望的那样转换到下一行或保持居中。
\documentclass{article}
\usepackage{array}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\usepackage{multirow}
\begin{table}[h]
\centering
\begin{tabular}[t]{|M{5cm}|P{5cm}|M{5cm}|}
\hline
\multirow{2}{*}{\textbf{Control Variables}} & \multirow{2}{*}{\textbf{Description}} & \multirow{2}{*}{\textbf{Value}}\\
&&\\ \hline % End of Header
\multirow{3}{*}{\text{Humidity}} & \multirow{3}{*}{\text{Humidity}} & \multirow{3}{*}{\text{Humidity}} \\
&&\\
&&\\ \hline
\multirow{3}{*}{\text{Temperature inside Freezer}} & \multirow{3}{*}{\text{Humidity}} & \multirow{3}{*}{\text{Humidity}} \\
&&\\
&&\\ \hline
\multirow{3}{*}{\text{Room Temperature}} & \multirow{3}{*}{\text{Nothing.}} & \multirow{3}{*}{\text{Humidity}} \\
&&\\
&&\\ \hline
\end{tabular}
\caption{Caption}
\label{tab:my_label}
\end{table}
非常感谢您的任何建议。
答案1
如果我正确理解了这个问题,问题是如何设置表格,单元格内容是否可以自动以泥线分隔,并且水平和垂直居中。
这可以通过使用以下方法简单实现:
tabularx
经过修改的软件包X
如下一个 MWE 中的第一个示例所示,或者- 通过
tabularray
包,其中的列功能设置起来很简单。
multirow
在这两种情况下都不需要该包:
\documentclass{article}
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\usepackage{tabularray}
%---------------- Show page layout. Don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
By use of the \verb+tabularx+ package:
\begin{table}[ht]
\renewcommand\tabularxcolumn[1]{m{#1}}
\renewcommand\arraystretch{1.3}
\begin{tabularx}{\linewidth}{|C|C|C|}
\hline
\textbf{Control Variables}
& \textbf{Description}
& \textbf{Value} \\
\hline %
Humidity & Humidity & Humidity \\
\hline
Temperature inside Freezer
& Humidity & Humidity \\
\hline
Room Temperature
& Nothing & Humidity \\
\hline
\end{tabularx}
\caption{Caption}
\label{tab:tabularx}
\end{table}
By use of the \verb+tabularray+ package:
\begin{table}[ht]
\begin{tblr}{hlines, vlines,
colspec = {*{3}{X[c,m]}},
rowsep = 3pt,
row{1} = {font=\bfseries}
}
Control Variables
& Description
& Value \\
Humidity & Humidity & Humidity \\
Temperature inside Freezer
& Humidity & Humidity \\
Room Temperature
& Nothing & Humidity \\
\end{tblr}
\caption{Caption}
\label{tab:tabularray}
\end{table}
\end{document}
答案2
“列宽保持不变但列高适应”和“希望行高相同”似乎是有些矛盾的要求。
在以下 MWE 中,单元格的内容垂直和水平居中,而行高适应其中文本的长度:
\documentclass{article}
\usepackage{array}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\usepackage{multirow}
\begin{document}
\begin{table}[h]
\setlength\extrarowheight{3pt}
\centering
\begin{tabular}[t]{|M{3.5cm}|P{3.5cm}|M{3.5cm}|}
\hline
\textbf{Control Variables} & \textbf{Description} & \textbf{Value}\\[3pt] \hline % End of Header
Humidity & Humidity & Humidity \\[3pt]\hline
Temperature inside Freezer & Humidity & Humidity \\[3pt] \hline
Room Temperature & Nothing. & Humidity \\[3pt]\hline
\end{tabular}
\caption{Caption}
\label{tab:my_label}
\end{table}
\end{document}
答案3
\documentclass[]{article}
\usepackage{booktabs,lipsum}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\begin{document}
\begin{table}
\caption{Scenario}\label{tab3}
\begin{tabular}{ M{3cm}P{5cm}M{3cm}}
\toprule
Col 1& Col 2 &Col3 \\
\cmidrule(l){1-1}\cmidrule(l){2-2}\cmidrule(l){3-3}
\addlinespace
\addlinespace
1 &\lipsum[1]& 3 \\
\addlinespace
4 &5 & 6\\
\bottomrule
\end{tabular}
\end{table}
\end{document}