使用套件 colortbl 的 longtable 中 \hline\hline 之間的空格

使用套件 colortbl 的 longtable 中 \hline\hline 之間的空格

當我使用\usepackage{colortbl}之間的空格\hline\hline消失時\longtable。我還沒有找到任何解決方案如何將空間放回去,所以我希望你能幫我找到它。

\begin{longtable}{|l|l|l|l|c|r|r|r|}
        \caption{{ABD}}
        \label{tab:SO}\\
\hline
        \multicolumn{1}{|l|}{{SO} - 01} & \multicolumn{7}{ c| }{AD}\\
    \hline\hline
        \multicolumn{4}{|l|}{Popis} & MJ & AD & AD & CD\\
    \hline
        \multicolumn{4}{|l|}{AD }& $3$ & 37000 & 0,32& 11\,800   \\
    \hline
\end{longtable} 

答案1

在此輸入影像描述

colortbl\begin{document}在檢查 longtable 並確保相容性時載入大量程式碼。如果你停止這樣做,那麼事情會更好。我責怪colortbl和包包的包包作者longtable沒有溝通。

\documentclass{article}
\usepackage{color}
\makeatletter
\let\xx@begindocumenthook\@begindocumenthook
\let\xxhline\hline
\let\xx@xhline\@xhline
\usepackage{colortbl}
\let\hline\xxhline
\let\@xhline\xx@xhline
\let\@begindocumenthook\xx@begindocumenthook
\makeatother
\usepackage{longtable}
\begin{document}\color{black}
\begin{longtable}{|l|l|l|l|c|r|r|r|}
        \caption{{ABD}}
        \label{tab:SO}\\
\hline
        \multicolumn{1}{|l|}{{SO} - 01} & \multicolumn{7}{ c| }{AD}\\
    \hline\hline
        \multicolumn{4}{|l|}{Popis} & M J & AD & AD & CD\\
    \hline
        \multicolumn{4}{|l|}{AD }& $3$ & 37000 & 0,32& 11\,800   \\
    \hline
\end{longtable} 
\end{document}

答案2

colortbl套件\LT@@hline在 後重新定義了宏\begin{document},並且首先\ifx將宏\hline與宏進行比較\LT@next。但宏\hline(在「longtable」環境內)擴展為:

\noalign{\ifnum 0=‘}\fi\penalty\@M\futurelet\@let@token\LT@@hline

所以正確的是比較宏\hline\@let@token

解決方法是在, 之後加上 ,\let\LT@next\@let@token的定義。\LT@@hline\begin{document}

\documentclass{article}
\usepackage{colortbl,longtable}
\begin{document}
    \makeatletter
    \let\LT@@hline@bkp\LT@@hline
    \def\LT@@hline{\let\LT@next\@let@token\LT@@hline@bkp}
    \makeatother
    
    \begin{longtable}{|l|l|l|l|c|r|r|r|}
        \caption{{ABD}}
        \label{tab:SO}\\
        \hline
        \multicolumn{1}{|l|}{{SO} - 01} & \multicolumn{7}{ c| }{AD}\\
        \hline\hline
        \multicolumn{4}{|l|}{Popis} & M J & AD & AD & CD\\
        \hline
        \multicolumn{4}{|l|}{AD }& $3$ & 37000 & 0,32& 11\,800   \\
        \hline
    \end{longtable}
\end{document}

相關內容