我怎样才能使这些表格列自适应以使它们保持居中?

我怎样才能使这些表格列自适应以使它们保持居中?

我正在尝试创建一个可以调整其列高度的表格,以便当文本长度增加时,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}

相关内容