增加表格行高并垂直对齐到中心

增加表格行高并垂直对齐到中心

我试图重现这个答案的结果:

https://tex.stackexchange.com/a/167022/25764

但是,当我输入相同的内容时,却得不到相同的结果。

这是代码:

\documentclass{article}

\usepackage{array}

\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}}
\newcolumntype{N}{@{}m{0pt}@{}}

\begin{document}

\begin{table}[htbp]
\centering
\begin{tabular}{|C{3cm}|L{4cm}|C{3.5cm}|N}
\hline
\textbf{\textit{fine/coarse}} & \textbf{Property} & \textbf{\textit{lamellar/equiaxed}} &\\[20pt]
\hline
x/x & Elastic Modulus & x/+ &\\[20pt]
\hline
+/- & Strength & -/+ &\\[20pt]
\hline
+/- & Ductility & -/+ &\\[20pt]
\hline
+/- & Fatigue crack initiation & -/+ &\\[20pt]
\hline
-/+ & Fatigur crack propagation & +/- &\\[20pt]
\hline
+/- & Oxidation Behaviour & +/- &\\[20pt]
\hline
\end{tabular}
\label{table:eomsomeprops}
\end{table}

\end{document} 

这是期望: 预期结果

这是我得到的:

我得到了什么

请注意,单元格高度合适,但它们没有垂直居中。我在 Windows 上使用 miktex。

我该如何修复该问题?

答案1

通过使用该tabularray包,MWE 非常简单和简短:

\documentclass{article}
\usepackage{tabularray}
 
\begin{document}
    \begin{table}[htbp]
    \centering
\begin{tblr}{hlines, vlines,
             colspec = {c l c},  %{Q[c, wd=3cm] Q[l, wd=4cm] Q[c, wd=3.5cm]}
             row{1}  = {font=\bfseries, c},
             rowsep=3ex,
             }
\textit{fine/coarse}    & Property                  &   \textit{lamellar/equiaxed}  \\
x/x                     & Elastic Modulus           & x/+       \\ 
+/-                     & Strength                  & -/+       \\
+/-                     & Ductility                 & -/+       \\
+/-                     & Fatigue crack initiation  & -/+       \\
-/+                     & Fatigur crack propagation & +/-       \\
+/-                     & Oxidation Behaviour       & +/-       \\
    \end{tblr}
    \label{table:eomsomeprops}
    \end{table}
\end{document} 

在此处输入图片描述

答案2

您可以使用包轻松获得所需的内容cellspace,该包允许您使用以字母为前缀的说明符S(或者C如果您加载siunitx)定义列中单元格顶部和底部的最小垂直间距。 这是一个可能的代码:

    \documentclass{article}

    \usepackage{array}
    \usepackage{cellspace}
    \setlength{\cellspacetoplimit}{3.5ex}
    \setlength{\cellspacebottomlimit}{2ex}
    \newcolumntype{C}[1]{>{\centering\arraybackslash}S{m{#1}}}
    \newcolumntype{L}[1]{>{\raggedright\arraybackslash}S{m{#1}}}
    \newcolumntype{N}{@{}m{0pt}@{}}

    \begin{document}

    \begin{table}[htbp]
    \centering
    \begin{tabular}{|C{3cm}|L{4cm}|C{3.5cm}|N}
    \hline
    \textbf{\textit{fine/coarse}} & \textbf{Property} & \textbf{\textit{lamellar/equiaxed}} &\\[20pt]
    \hline
    x/x & Elastic Modulus & x/+ &\\[20pt]
    \hline
    +/- & Strength & -/+ &\\[20pt]
    \hline
    +/- & Ductility & -/+ &\\[20pt]
    \hline
    +/- & Fatigue crack initiation & -/+ &\\[20pt]
    \hline
    -/+ & Fatigur crack propagation & +/- &\\[20pt]
    \hline
    +/- & Oxidation Behaviour & +/- &\\[20pt]
    \hline
    \end{tabular}
    \label{table:eomsomeprops}
    \end{table}

    \end{document} 

在此处输入图片描述

答案3

您可以通过垂直拉伸表格来实现所需的效果。只需添加\renewcommand\arraystretch{<factor>},例如3.0。由于这种方式的拉伸不太对称,因此补救措施是通过 减少上部空间\setlength\extrarowheight{<v-length>},例如-3pt

在此处输入图片描述

另一种解决方案类似于\\[20pt]定义一个支柱

\newcommand\mystrut{\rule{0pt}{30pt}}

\\例如,您可以在每行末尾添加

x/x & Elastic Modulus & x/+ & \mystrut\\

但在我看来它会造成不必要的混乱。


基于的解决方案arraystretch

\documentclass{article}
\usepackage{array}

\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}}
\newcolumntype{N}{@{}m{0pt}@{}}

\begin{document}

\begin{table}[htbp]
    \renewcommand{\arraystretch}{3.6}
    \setlength{\extrarowheight}{-3pt}
    \centering
    \begin{tabular}{|C{3cm}|L{4cm}|C{3.5cm}|N}
        \hline
        \textbf{\textit{fine/coarse}} & \textbf{Property} & \textbf{\textit{lamellar/equiaxed}} & \\
        \hline
        x/x & Elastic Modulus & x/+ &\\
        \hline
        +/- & Strength & -/+ &\\
        \hline
        +/- & Ductility & -/+ &\\
        \hline
        +/- & Fatigue crack initiation & -/+ &\\
        \hline
        -/+ & Fatigur crack propagation & +/- &\\
        \hline
        +/- & Oxidation Behaviour & +/- &\\
        \hline
    \end{tabular}
    \label{table:eomsomeprops}
\end{table}

\end{document} 

相关内容