我有下表:
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\renewcommand{\arraystretch}{2.2}
\begin{table}[H]
\centering
\caption{Tipos de funções de ativação}
\label{activacao}
\begin{tabular}{p{35mm}P{35mm}P{35mm}}
\toprule
\textbf{Nome} & \textbf{Função $f$} & \textbf{Contradomínio} \\ \midrule
Limiar & \(\begin{cases} 1, & u_i \geq 0 \\ 0, & u_i < 0 \end{cases}\) & ${0,1}$ \\ \midrule
Linear & $u_i$ & $]-\infty,-\infty[$ \\ \midrule
Por troços & \(\begin{cases} 1, & u_i \geq 0.5 \\ ku_i, & -0.5 < u_i < 0.5 \\ 0, & u_i \leq -0.5 \end{cases}\) & $[0,1]$ \\ \midrule
Logística & $\frac{1}{1+e^{-ku_i}}$ & $[0,1]$ \\ \midrule
Tangente hiperbólica & $tanh(ku_i)$ & $[-1,1]$ \\ \midrule
Sin & $sin(u_i \: mod \: 2\pi)$ & $[-1,1]$ \\ \midrule
Cos & $cos(u_i \: mod \: 2\pi)$ & $[-1,1]$ \\ \midrule
Gaussiana & $e^{\frac{-u^2}{2k^2}}$ & $[-1,1]$ \\ \midrule
Quadrada & $-sign(u_i)u_{}^{2}$ & $]-\infty,-\infty[$ \\ \bottomrule
\end{tabular}
\end{table}
\renewcommand{\arraystretch}{1}~
并使用:
\usepackage{multicol}
\usepackage{tabularx}
\usepackage{array}
\usepackage{booktabs}
我得到了这个:
我希望所有行的行高相同(即使我使用了 \arraystretch 命令),列宽相同,并且所有 3 列必须垂直居中对齐。至于水平对齐,第一列应在左侧,其他两列应在中间。如上图所示,单元格\cases
垂直居中,但我不知道为什么。我尝试了和p
标题m
,但没有成功。
答案1
看看这是否是让您满意的解决方案:
\usepackage[utf8]{inputenc}
\DeclareMathOperator{\sign}{sign}
\newcolumntype{P}[1]{>{\centering\arraybackslash}m{#1}} % vertical center cell contents
\begin{table}[hbt]
\centering
\caption{Tipos de funções de ativação}
\label{activacao}
\begin{tabular}{@{\rule[-8mm]{0mm}{18mm}\hspace{\tabcolsep}}% determine cells heights
P{35mm}
*{2}{>{$\displaystyle}P{35mm}<{$}}}
\toprule
\textbf{Nome} & \textbf{Função $f$} & \textbf{Contradomínio} \\
\midrule
Limiar & \begin{cases} 1, &
u_i \geq 0 \\
0, & u_i < 0
\end{cases}
& {0,1} \\
\midrule
Linear & u_i & ]-\infty,-\infty[ \\
\midrule
Por troços & \begin{cases} 1, & u_i \geq 0.5 \\
ku_i, & -0.5 < u_i < 0.5 \\
0, & u_i \leq -0.5
\end{cases} & [0,1] \\
\midrule
Logística & \frac{1}{1+e^{-ku_i}} & [0,1] \\
\midrule
Tangente hiperbólica & \tanh(ku_i) & [-1,1] \\
\midrule
Sinus & \sin(u_i \: mod \: 2\pi) & [-1,1] \\
\midrule
Cosinus & \cos(u_i \: mod \: 2\pi) & [-1,1] \\
\midrule
Gaussiana & \mathrm{e}^{\frac{-u^2}{2k^2}} & [-1,1] \\
\midrule
Quadrada & -\sign(u_i)u_{}^{2} & \infty,-\infty[ \\
\bottomrule
\end{tabular}
\end{table}
编辑:解决方案现在被视为 Bernard 的评论。
答案2
我不认为相同的行高会提高表格的质量,反而会产生大量不必要的垂直空间。改进建议:
删除普通行之间的线。如果使用标准的三条线(
\toprule
、\midrule
、\bottomrule
),则表格结构会更加清晰(表格区域、标题、正文)。除了规则之外,额外的空格还能更清晰地分隔公式。下面的示例使用了
\addlinespace
包booktabs
,还展示了如何.5em
更改表格的默认值 ()。第三列可以以逗号为中心。下面的示例通过使用逗号作为列分隔符来实现这一点。棘手的部分是冗长的列标题。多余的宽度会进入右列,标题将不再居中。因此,该示例测量标题宽度并计算两列的宽度部分。
数学运算符名称(
tanh
、sin
、cos
、sign
)通常以直立字体排版。软件包amsmath
为其中大部分提供了宏。可以通过 声明新的运算符\DeclareMathOperator
。行内的单元格在基线垂直对齐,这不应改变。
该示例使用标准列宽,如
l
和 ,c
而不是固定宽度。如果整个表格的宽度太大,单元格内容应该跨行显示,则固定列宽是有意义的。但这里没有必要这样做。
示例(由于我的编辑器和屏幕受到宽度限制,因此重新格式化了行):
\documentclass{article}
\usepackage{amsmath}
\usepackage{array}
\usepackage{booktabs}
\usepackage{caption}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[portuges]{babel}
\DeclareMathOperator{\sign}{sign}
\begin{document}
\begin{table}
\centering
\caption{Tipos de funções de ativação}
\label{activacao}
\setlength{\defaultaddspace}{.75em}
\begin{tabular}{lcr@{$,{}$}l}
\toprule
\textbf{Nome}
& \textbf{Função $f$}
& \multicolumn{1}{r@{$\hphantom{,{}}$}}{%
\sbox0{\textbf{Contradomínio}}\sbox2{$,{}$}%
\xdef\ContradominioColWidth{\the\dimexpr(\wd0-\wd2)/2}%
\hbox to\ContradominioColWidth{\usebox0\hss}%
}
& \kern\ContradominioColWidth \\
\midrule
Limiar
& \(\begin{cases} 1, & u_i \geq 0 \\ 0, & u_i < 0 \end{cases}\)
& $0$ & $1$ \\
\addlinespace
Linear
& $u_i$
& $]-\infty$ & $-\infty[$ \\
\addlinespace
Por troços
& $\begin{cases}
1, & u_i \geq 0.5 \\
ku_i, & -0.5 < u_i < 0.5 \\
0, & u_i \leq -0.5
\end{cases}$
& $[0$ & $1]$ \\
\addlinespace
Logística
& $\frac{1}{1+e^{-ku_i}}$
& $[0$ & $1]$ \\
\addlinespace
Tangente hiperbólica
& $\tanh(ku_i)$
& $[-1$ & $1]$ \\
\addlinespace
Sin
& $\sin(u_i \mod 2\pi)$
& $[-1$ & $1]$ \\
\addlinespace
Cos
& $\cos(u_i \mod 2\pi)$
& $[-1$ & $1]$ \\
\addlinespace
Gaussiana
& $e^{\frac{-u^2}{2k^2}}$
& $[-1$ & $1]$ \\
\addlinespace
Quadrada
& $-\sign(u_i)u_{}^{2}$
& $]-\infty$ & $-\infty[$ \\
\bottomrule
\end{tabular}
\end{table}
\end{document}