当使用 `xltabular` 时,\toprule、\midrule 和 \bottomrule 不会超出第一列

当使用 `xltabular` 时,\toprule、\midrule 和 \bottomrule 不会超出第一列

我正在用 制作一个相关矩阵booktabs。但是,toprule当同时使用 时, 和类似命令不会超出第一列\usepackage{xltabular}。我尝试删除该xltabular包,这确实解决了问题,但我无法在项目中放弃这个包。我该如何解决这个问题?

附言:我正在使用 Overleaf,因此 Miktex 中的软件包不是最新的,这不是什么问题。

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{booktabs}
\usepackage{xltabular}

\begin{document}
\begin{table}[ht]
        \centering
        \caption{Correlation matrix}
        \label{tab:mwe_table}
        \begin{tabular}{lrrrrrrr}
            \toprule
                & A     & B        & C                & D            & E        & F            & G \\ 
            \midrule
            A   &          & 0.14     & 0.07             & 0.15         & -0.23    & 0.36         & 0.20 \\ 
            B   & 0.14     &          & 0.07             & 0.71         & -0.45 & 0.69         & -0.09 \\ 
            C   & 0.07     & 0.07     &                  & 0.11         & 0.19     & 0.02         & -0.09 \\ 
            D   & 0.15  & 0.71     & 0.11             &              & -0.02 & 0.64         & 0.18  \\ 
            E   & -0.23 & -0.45 & 0.19             & -0.02     &          & -0.40     & 0.13  \\ 
            F     & 0.36     & 0.69  & 0.02             & 0.64         & -0.40 &              & -0.02 \\ 
            G     & 0.20     & -0.09 & -0.09         & 0.18         & 0.13     & -0.02     &  \\ 
            \bottomrule
        \end{tabular}
    \end{table}
\end{document}

导入了 xltabular 的表

未导入 xltabular 的表

答案1

导入后在序言中添加以下内容booktabs可修复xltabular该问题:

\makeatletter
\def\@BTrule[#1]{%
  \ifx\longtable\undefined
    \let\@BTswitch\@BTnormal
  \else\ifx\hline\LT@hline
    \nobreak
    \let\@BTswitch\@BLTrule
  \else
     \let\@BTswitch\@BTnormal
  \fi\fi
  \global\@thisrulewidth=#1\relax
  \ifnum\@thisruleclass=\tw@\vskip\@aboverulesep\else
  \ifnum\@lastruleclass=\z@\vskip\@aboverulesep\else
  \ifnum\@lastruleclass=\@ne\vskip\doublerulesep\fi\fi\fi
  \@BTswitch}
\makeatother

来源:xltabular 打破书页

相关内容