单元格内有垂直线

单元格内有垂直线

我正在尝试使用 booktabs 在 LaTeX 中复制下表:

原来的

但是,我很难画出垂直线。以下是我目前所得到的:

\begin{tabularx}{\textwidth}{l | c c c c c c c c c c c c}
\toprule
    & \ce{NH4^{+}} & \ce{Na+} & \ce{K+} & \ce{Mg^{2+}} & \ce{Zn^{2+}} & \ce{Cu^{2+}} & \ce{Fe^{2+}} & \ce{Fe^{3+}} & \ce{Ca^{2+}} & \ce{Ba^{2+}} & \ce{Pb^{2+}} & \ce{Ag^{+}} \\
\midrule
    \ce{NO3^{-}} & L & L & L & L & L & L & L & L & L & L & L & L \\ \cmidrule(r){12-13}
    \ce{Cl-} & L & L & L & L & L & L & L & L & L & L & T & T \\ 
    \ce{Br-} & L & L & L & L & L & L & L & L & L & L & T & T \\ 
    \ce{I-} & L & L & L & L & L & L & L & L & L & L & T & T \\
\bottomrule
\end{tabularx}

由此得出:

在此处输入图片描述

有一个用红色圆圈突出显示的小间隙,我不想出现这种情况。

我如何 a) 像在原始表格中那样制作垂直线以及 b) 防止由于“局部”水平线而导致的小间隙,最好使用booktabs

答案1

booktabs不适用于垂直线。因此,我会将它们去掉,只\multicolumn在需要分隔线的地方使用一些 s。这可能看起来像这样。

% arara: pdflatex

\documentclass{article}
\usepackage{booktabs}
\usepackage{mhchem}

\begin{document}    
\begin{tabular}{l *{12}c}
    \toprule
    & \ce{NH4^{+}} & \ce{Na+} & \ce{K+} & \ce{Mg^{2+}} & \ce{Zn^{2+}} & \ce{Cu^{2+}} & \ce{Fe^{2+}} & \ce{Fe^{3+}} & \ce{Ca^{2+}} & \ce{Ba^{2+}} & \ce{Pb^{2+}} & \ce{Ag^{+}} \\
    \midrule
    \ce{NO3^{-}} & L & L & L & L & L & L & L & L & L & L & L & L \\ \cline{12-13}
    \ce{Cl-} & L & L & L & L & L & L & L & L & L & L & \multicolumn{1}{|c}{T} & T \\ 
    \ce{Br-} & L & L & L & L & L & L & L & L & L & L & \multicolumn{1}{|c}{T} & T \\ 
    \ce{I-} & L & L & L & L & L & L & L & L & L & L & \multicolumn{1}{|c}{T} & T \\ \cline{10-11}
    \ce{SO4^{2-}} & L & L & L & L & L & L & L & L & \multicolumn{1}{|c}{T} & T & T & T\\
    \bottomrule
\end{tabular}
\end{document}

请注意,您必须减小尺寸,因为它大于文本宽度。您可以旋转它或使用您在此主页上找到的其他技巧。tabularx不使用X列时,使用是没有用的。正如您在 MWE 中看到的那样,行以 结尾\textwidth,但表格内容不是。

在此处输入图片描述

答案2

正如其他答案所述,垂直规则根本不符合 的精神booktabs。但是,如果您确实想使用垂直规则(与 的规则兼容booktabs),则可以{NiceTabular}使用nicematrix

此外,使用该环境可以轻松绘制分离规则。该环境{NiceTabular}在单元格、行和列下创建 PGF/Tikz 节点,您可以使用这些节点在 中使用 Tikz 绘制您想要的任何规则\CodeAfter

\documentclass{article}
\usepackage{booktabs}
\usepackage{mhchem}
\usepackage{nicematrix,tikz}

\begin{document}    
\begin{NiceTabular}{l|*{12}c}
    \toprule
    & \ce{NH4^{+}} & \ce{Na+} & \ce{K+} & \ce{Mg^{2+}} & \ce{Zn^{2+}} & \ce{Cu^{2+}} & \ce{Fe^{2+}} & \ce{Fe^{3+}} & \ce{Ca^{2+}} & \ce{Ba^{2+}} & \ce{Pb^{2+}} & \ce{Ag^{+}} \\
    \midrule
    \ce{NO3^{-}} & L & L & L & L & L & L & L & L & L & L & L & L \\ 
    \ce{Cl-} & L & L & L & L & L & L & L & L & L & L & T & T \\ 
    \ce{Br-} & L & L & L & L & L & L & L & L & L & L & T & T \\ 
    \ce{I-} & L & L & L & L & L & L & L & L & L & L & T & T \\ 
    \ce{SO4^{2-}} & L & L & L & L & L & L & L & L & T & T & T & T\\
    \bottomrule
\CodeAfter
    \tikz \draw (3-|last) -| (6-|12) -| (last-|10) ; 
\end{NiceTabular}
\end{document}

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

上述代码的输出

相关内容