我试图重现这个答案的结果:
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}