如何使表格单元格中的文本垂直和水平居中?

如何使表格单元格中的文本垂直和水平居中?

由于某种原因,我的文本没有正确居中,而是在垂直方向上偏移了一点点。

这是该表的代码:

\documentclass{article}
\usepackage{makecell}
\usepackage{textcomp,gensymb}
\usepackage{siunitx}
\usepackage{multirow}
\usepackage{chemfig}
\usepackage{geometry}
\geometry{margin=120pt}
\begin{document}

\begin{center}
\begin{tabular}{| c | c | c | c | c | c | c | c | c | c | c |}
    \hline
    \multirow{3}{*}{\thead{Temperature \\ (\degree\si{C} $\pm$ 0.1 \degree\si{C})}} & \multicolumn{10}{ c |}{\thead{Volume of \chemfig{MgCl_2} solution added \\ (\si{cm^3} $\pm$ 0.05 \si{cm^3})}} \\ \cline{2-11}
    & \multicolumn{2}{ c |}{\thead{Trial 1}}  & \multicolumn{2}{ c |}{\thead{Trial 2}}  & \multicolumn{2}{ c |}{\thead{Trial 3}} & \multicolumn{2}{ c |}{\thead{Trial 4}}  & \multicolumn{2}{ c |}{\thead{Trial 5}} \\ \cline{2-11}
    & \thead{Start} & \thead{End} & \thead{Start} & \thead{End} & \thead{Start} & \thead{End} & \thead{Start} & \thead{End} & \thead{Start} & \thead{End} \\ \hline

    \thead{20} & & & & & & & & & & \\ \hline
    \thead{35} & & & & & & & & & & \\ \hline
    \thead{50} & & & & & & & & & & \\ \hline
    \thead{65} & & & & & & & & & & \\ \hline
    \thead{80} & & & & & & & & & & \\ \hline

\end{tabular}
\end{center}
\end{document}

此代码输出此表: 桌子

如您所见,第一个单元格(温度(°C ± 0.1 °C))在垂直方向上略微偏离中心。我正在利用该makecell包来格式化文本。我应该如何更改它以使其正确居中?

答案1

您需要将multirow单元格稍微向下移动,例如使用跨行中的十进制文本行数:

\multirow{4.4}{*}{\thead{Temperature\\ ($\si{\celsius} \pm\SI{0.1}{\celsius}$)}} 

完成 MWE:

\documentclass{article}
\usepackage{geometry}
\geometry{margin=120pt}

%\usepackage{textcomp,gensymb}
\usepackage{siunitx}
\usepackage{makecell, multirow}
\usepackage{chemfig}

\usepackage{xparse}
\NewExpandableDocumentCommand\mcc{O{1}m}
    {\multicolumn{#1}{c |}{#2}}

\begin{document}
    \begin{center}
\begin{tabular}{| c | c | c | c | c | c | c | c | c | c | c |}
    \hline
\multirow{4.4}{*}{\thead{Temperature\\ ($\si{\celsius} \pm\SI{0.1}{\celsius}$)}} 
    &   \mcc[10]{%
        \thead{Volume of \chemfig{MgCl_2} solution added \\ 
               ($\si{\per\centi\metre\cubed} \pm\SI{0.05}{\per\centi\metre\cubed}$)}} \\
    \cline{2-11}
    & \mcc[2]{\thead{Trial 1}}  
        & \mcc[2]{\thead{Trial 2}}  
            & \mcc[2]{\thead{Trial 3}} 
                & \mcc[2]{\thead{Trial 4}}  
                    & \mcc[2]{\thead{Trial 5}} \\ 
    \cline{2-11}
    & \thead{Start} & \thead{End} & \thead{Start} & \thead{End} & \thead{Start} & \thead{End} 
    & \thead{Start} & \thead{End} & \thead{Start} & \thead{End} \\
    \hline

    \thead{20} & & & & & & & & & & \\ \hline
    \thead{35} & & & & & & & & & & \\ \hline
    \thead{50} & & & & & & & & & & \\ \hline
    \thead{65} & & & & & & & & & & \\ \hline
    \thead{80} & & & & & & & & & & \\ \hline

\end{tabular}
    \end{center}
\end{document}

完成 MWE,更正确地使用siunitx单位并添加新的单元格命令\multicolumn(当然,机器人是离题的 :-) )

在此处输入图片描述

答案2

使用时\multirow,您必须提供文本的行数(这并不完全是表格的行数)。

{NiceTabular}nicematrix一个命令\Block,对于这个命令,你给出的参数是表格和内容以数学方式绘制在合并单元格矩形的中心(\Block可用于垂直合并单元格,也可用于水平合并单元格)。

就您而言,使用{NiceTabular}还有一个好处,那就是提供一个密钥hvlines,该密钥可以绘制块(由 创建的)中排除的所有规则\Block。这就是您想要的。

\documentclass{article}
\usepackage{textcomp,gensymb}
\usepackage{siunitx}
\usepackage{chemfig}
\usepackage{geometry}
\usepackage{nicematrix}
\geometry{margin=120pt}
\begin{document}

\begin{center}
\NiceMatrixOptions{cell-space-top-limit=3pt}
\begin{NiceTabular}{*{11}{c}}[hvlines]
    \Block{3-1}{Temperature \\ (\degree\si{C} $\pm$ 0.1 \degree\si{C})} & \Block{1-10}{Volume of \chemfig{MgCl_2} solution added \\ (\si{cm^3} $\pm$ 0.05 \si{cm^3})} \\ 
    & \Block{1-2}{Trial 1}&  & \Block{1-2}{Trial 2}&  & \Block{1-2}{Trial 3}& & \Block{1-2}{Trial 4}&  & \Block{1-2}{Trial 5} \\ 
    & Start & End & Start & End & Start & End & Start & End & Start & End \\ 
    20 \\ 
    35 \\ 
    50 \\ 
    65 \\ 
    80 \\ 
\end{NiceTabular}
\end{center}
\end{document}

您需要多次编译(因为nicematrix使用 PGF/Tikz 节点)。

上述代码的输出

相关内容