![表格中多行单元格的水平和垂直居中问题](https://linux22.com/image/295440/%E8%A1%A8%E6%A0%BC%E4%B8%AD%E5%A4%9A%E8%A1%8C%E5%8D%95%E5%85%83%E6%A0%BC%E7%9A%84%E6%B0%B4%E5%B9%B3%E5%92%8C%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD%E9%97%AE%E9%A2%98.png)
我在表格中无法完美地将几个单元格(水平和垂直)居中。以下是当前情况的屏幕截图:
问题行是以“Courant”、“Champ magnétique”等开头的行。
文本相当居中,但令人沮丧的是略微向左对齐......
这是我的代码:
\begin{table}[h]
\centering
\caption{Variation de l'amplitude de la force électromotrice en fonction du courant circulant dans des bobines d'Helmholtz à une fréquence de rotation de la bobine d'induction constante ($(40\pm2)$ Hz)}
\label{tableau1}
\begin{tabular}{|>{\centering\arraybackslash}m{1.25cm}|>{\centering\arraybackslash}m{1.25cm}|>{\centering\arraybackslash}m{1.25cm}|>{\centering\arraybackslash}m{1.25cm}|>{\centering\arraybackslash}m{1.3cm}|>{\centering\arraybackslash}m{1.3cm}|>{\centering\arraybackslash}m{2cm}|>{\centering\arraybackslash}m{2cm}|}
\hline
\multicolumn{2}{|>{\centering\arraybackslash}m{2.5cm}|}{Courant} & \multicolumn{2}{>{\centering\arraybackslash}m{2.5cm}|}{Champ magnétique} & \multicolumn{2}{>{\centering\arraybackslash}m{2.6cm}|}{Force électromotrice expérimentale (amplitude)} & \multicolumn{2}{>{\centering\arraybackslash}m{4cm}|}{Force électromotrice théorique (amplitude)} \tabularnewline
\hline
$I_1$ & $\Delta I_1$ & $B$ & $\Delta B$ & $\epsilon_{Exp. 0}$ & $\Delta \epsilon_{Exp. 0}$ & $\epsilon_{Th. 0}$ & $\Delta \epsilon_{Th. 0}$ \tabularnewline
\hline
(A) & (A) & (mT) & (mT) & (V) & (V) & (V) & (V) \tabularnewline
\hline
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \tabularnewline
\hline
0,55 & 0,04 & 0,50 & 0,04 & 0,10 & 0,04 & 0,90 & 0,02 \tabularnewline
\hline
1,00 & 0,04 & 0,91 & 0,05 & 0,20 & 0,04 & 0,16 & 0,04 \tabularnewline
\hline
1,50 & 0,05 & 1,36 & 0,07 & 0,28 & 0,04 & 0,25 & 0,05 \tabularnewline
\hline
2,00 & 0,05 & 1,81 & 0,08 & 0,39 & 0,04 & 0,32 & 0,07 \tabularnewline
\hline
2,50 & 0,06 & 2,3 & 0,1 & 0,47 & 0,04 & 0,41 & 0,09 \tabularnewline
\hline
3,20 & 0,06 & 2,9 & 0,1 & 0,57 & 0,04 & 0,5 & 0,1 \tabularnewline
\hline
3,52 & 0,07 & 3,2 & 0,1 & 0,66 & 0,04 & 0,6 & 0,1 \tabularnewline
\hline
\end{tabular}
\end{table}
谢谢!
答案1
要获得右侧宽度,\multicolumn
您必须将\tabcolsep
第一列的右侧宽度和第二列的左侧宽度添加到两列宽度中。例如:
\multicolumn{2}{|>{\centering\arraybackslash}m{\dimexpr2.5cm+2\tabcolsep\relax}|}{Courant}
代码:
\documentclass[captions=tableabove]{scrartcl}
\usepackage{array}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\newcolumntype{T}[1]{M{\dimexpr#1+2\tabcolsep\relax}}
\begin{document}
\begin{table}[htb]
\centering
\caption{Variation de l'amplitude de la force électromotrice en fonction du courant circulant dans des bobines d'Helmholtz à une fréquence de rotation de la bobine d'induction constante ($(40\pm2)$ Hz)}
\label{tableau1}
\begin{tabular}{|*{4}{M{1.25cm}|}*{2}{M{1.3cm}|}*{2}{M{1.8cm}|}}
\hline
\multicolumn{2}{|T{2.5cm}|}{Courant}
& \multicolumn{2}{T{2.5cm}|}{Champ magnétique}
& \multicolumn{2}{T{2.6cm}|}{Force électromotrice expérimentale (amplitude)}
& \multicolumn{2}{T{3.6cm}|}{Force électromotrice théorique (amplitude)} \tabularnewline
\hline
$I_1$ & $\Delta I_1$ & $B$ & $\Delta B$ & $\epsilon_{Exp. 0}$ & $\Delta \epsilon_{Exp. 0}$ & $\epsilon_{Th. 0}$ & $\Delta \epsilon_{Th. 0}$ \tabularnewline
\hline
(A) & (A) & (mT) & (mT) & (V) & (V) & (V) & (V) \tabularnewline
\hline
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \tabularnewline
\hline
0,55 & 0,04 & 0,50 & 0,04 & 0,10 & 0,04 & 0,90 & 0,02 \tabularnewline
\hline
1,00 & 0,04 & 0,91 & 0,05 & 0,20 & 0,04 & 0,16 & 0,04 \tabularnewline
\hline
1,50 & 0,05 & 1,36 & 0,07 & 0,28 & 0,04 & 0,25 & 0,05 \tabularnewline
\hline
2,00 & 0,05 & 1,81 & 0,08 & 0,39 & 0,04 & 0,32 & 0,07 \tabularnewline
\hline
2,50 & 0,06 & 2,3 & 0,1 & 0,47 & 0,04 & 0,41 & 0,09 \tabularnewline
\hline
3,20 & 0,06 & 2,9 & 0,1 & 0,57 & 0,04 & 0,5 & 0,1 \tabularnewline
\hline
3,52 & 0,07 & 3,2 & 0,1 & 0,66 & 0,04 & 0,6 & 0,1 \tabularnewline
\hline
\end{tabular}
\end{table}
\end{document}
答案2
作为一个可能的解决方案,我会使用包制造细胞。瞧:
\documentclass[a4paper, 12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[english,french]{babel}
\usepackage{makecell}
\begin{document}
%makecell setting for fonts, spacing etc.
\setlength\rotheadsize{3cm}
\renewcommand\theadfont{\small}
\renewcommand\theadfont{\bfseries}
\renewcommand\theadset{\renewcommand\arraystretch{0.9}%
\setlength\extrarowheight{1pt}}
\renewcommand\cellalign{cc}
\renewcommand\cellgape{\Gape[1pt]}
\begin{table}[h]
\centering
\caption{Variation de l'amplitude de la force électromotrice en fonction du courant circulant dans des bobines d'Helmholtz à une fréquence de rotation de la bobine d'induction constante ($(40\pm2)$ Hz)}
\vspace{1ex}
\label{tableau1}
\begin{tabular}{*{8}{|m{1.25cm}}|}
\hline
\multicolumn{2}{|c|}{\thead{Courant}} & \multicolumn{2}{c|}{\thead{Champ\\ magnétique}} & \multicolumn{2}{c|}{\thead{Force\\ électromotrice\\ expérimentale\\ (amplitude)}} & \multicolumn{2}{c|}{\thead{Force\\ électromotrice\\ théorique\\ (amplitude)}} \tabularnewline
\hline
\makecell{$I_1$} & \makecell{$\Delta I_1$} & \makecell{$B$} & \makecell{$\Delta B$} & \makecell{$\epsilon_{Exp. 0}$} & \makecell{$\Delta \epsilon_{Exp. 0}$} & \makecell{$\epsilon_{Th. 0}$} & \makecell{$\Delta \epsilon_{Th. 0}$} \tabularnewline
\hline
\makecell{(A)} & \makecell{(A)} & \makecell{(mT)} & \makecell{(mT)} & \makecell{(V)} & \makecell{(V)} & \makecell{(V)} & \makecell{(V)} \tabularnewline
\hline
\makecell{0} & \makecell{0} & \makecell{0} & \makecell{0} & \makecell{0} & \makecell{0} & \makecell{0} & \makecell{0} \tabularnewline
\hline
\makecell{0,55} & \makecell{0,04} & \makecell{0,50} & \makecell{0,04} & \makecell{0,10} & \makecell{0,04} & \makecell{0,90} & \makecell{0,02} \tabularnewline
\hline
\makecell{1,00} & \makecell{0,04} & \makecell{0,91} & \makecell{0,05} & \makecell{0,20} & \makecell{0,04} & \makecell{0,16} & \makecell{0,04} \tabularnewline
\hline
\makecell{1,50} & \makecell{0,05} & \makecell{1,36} & \makecell{0,07} & \makecell{0,28} & \makecell{0,04} & \makecell{0,25} & \makecell{0,05} \tabularnewline
\hline
\makecell{2,00} & \makecell{0,05} & \makecell{1,81} & \makecell{0,08} & \makecell{0,39} & \makecell{0,04} & \makecell{0,32} & \makecell{0,07} \tabularnewline
\hline
\makecell{2,50} & \makecell{0,06} & \makecell{2,3} & \makecell{0,1} & \makecell{0,47} & \makecell{0,04} & \makecell{0,41} & \makecell{0,09} \tabularnewline
\hline
\makecell{3,20} & \makecell{0,06} & \makecell{2,9} & \makecell{0,1} & \makecell{0,57} & \makecell{0,04} & \makecell{0,5} & \makecell{0,1} \tabularnewline
\hline
\makecell{3,52} & \makecell{0,07} & \makecell{3,2} & \makecell{0,1} & \makecell{0,66} & \makecell{0,04} & \makecell{0,6} & \makecell{0,1} \tabularnewline
\hline
\end{tabular}
\end{table}
\end{document}
答案3
我重新设计了表格,还使用了makecell
列标题包,S
类型为列,以小数点逗号对齐(从 开始siunitx
),最后threeparttable
使标题具有与表格相同的宽度。没有垂直线,这是不好的印刷习惯:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\usepackage{array, tabularx}
\usepackage{booktabs}
\usepackage{ragged2e}
\newcolumntype{Y}{ >{\hsize=1.75\hsize}X}
\newcolumntype{Z}{ >{\hsize=.875\hsize\RaggedLeft}X}
\usepackage{caption}
\usepackage{makebox}
\captionsetup{font = small}
\usepackage{makecell}
\renewcommand{\theadfont}{\upshape\bfseries\footnotesize}
\setcellgapes{3pt}
\makegapedcells
\usepackage{threeparttable}
\usepackage{siunitx}
\usepackage[french]{babel}
\begin{document}
\begin{table}[h]
\begin{threeparttable}
\centering\sisetup{table-number-alignment = center, table-figures-integer=1, table-figures-decimal=2, locale = FR}
\caption{Variation de l'amplitude de la force électromotrice en fonction du courant circulant dans des bobines d'Helmholtz à une fréquence de rotation de la bobine d'induction constante ($(40\pm2)$ Hz)}
\label{tableau1}
\begin{tabular}{SSSSSSSS}
\Xhline{0.8pt}
\multicolumn{2}{c}{\thead{Courant}} & \multicolumn{2}{c}{\thead{Champ\\magnétique}} & \multicolumn{2}{c}{\thead{Force\\ électromotrice\\ expérimentale\\ (amplitude)}} & \multicolumn{2}{c}{\thead{Force\\ électromotrice\\ théorique\\ (amplitude)}} \\[-0.5ex]
\hline\noalign{\vskip3pt}
{$I_1 $} & {$Δ I_1$} & {$B$} & {$Δ B$} & \clap{$ϵ_\mathrm{Exp. 0}$} & \clap{$Δ ϵ_\mathrm{Exp. 0} $} & \clap{$ϵ_\mathrm{Th. 0}$} & \clap{$Δ ϵ_\mathrm{Th. 0}$} \\[-0.4ex]
\multicolumn{2}{c}{\small(A)} & \multicolumn{2}{c}{\small(mT)} & \multicolumn{2}{c}{\small(V)} & \multicolumn{2}{c}{\small(V)} \\[0.6ex]
\hline\noalign{\vskip1pt}
{0} & {0} & {0} & {0} & {0} & {0} & {0} & {0} \\[1pt]
0,55 & 0,04 & 0,50 & 0,04 & 0,10 & 0,04 & 0,90 & 0,02 \tabularnewline
1,00 & 0,04 & 0,91 & 0,05 & 0,20 & 0,04 & 0,16 & 0,04 \tabularnewline
1,50 & 0,05 & 1,36 & 0,07 & 0,28 & 0,04 & 0,25 & 0,05 \tabularnewline
2,00 & 0,05 & 1,81 & 0,08 & 0,39 & 0,04 & 0,32 & 0,07 \tabularnewline
2,50 & 0,06 & 2,3 & 0,1 & 0,47 & 0,04 & 0,41 & 0,09 \tabularnewline
3,20 & 0,06 & 2,9 & 0,1 & 0,57 & 0,04 & 0,5 & 0,1 \tabularnewline
3,52 & 0,07 & 3,2 & 0,1 & 0,66 & 0,04 & 0,6 & 0,1 \tabularnewline
\Xhline{0.8pt}
\end{tabular}
\end{threeparttable}
\end{table}
\end{document}