我使用长表和 \nobreakhline 变通方法。如果两行应该接在一起,那么变通方法实际上并不像真正的 \hline 那样有效。因此,我希望使用 \hline\hline 获得与第一个表相同的外观,但使用 \nobreakhline。
\documentclass{article}
\usepackage{longtable}
\makeatletter
\def\nobreakhline{%
\multispan\LT@cols\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
\noalign{\penalty10000}}
\makeatother
\begin{document}
\begin{longtable}{p{2cm}|p{3cm}|p{3cm}}
\caption{Blabla} \\
\hline\hline
8,8 &85,3 &1,4 \\\hline
8,8 &85,3 &1,4 \\\hline
\hline
\end{longtable}
\begin{longtable}{p{2cm}|p{3cm}|p{3cm}}
\caption{Blabla} \\
\nobreakhline\nobreakhline
8,8 &85,3 &1,4 \\*\nobreakhline
8,8 &85,3 &1,4 \\*\nobreakhline
\nobreakhline
\end{longtable}
\end{document}
如何实现这一点? `longtable` 中 \hline\hline 之间的空格
答案1
展望未来,make \hline\hline
是 hline 迄今为止最复杂的部分,它可以复制到 nobreakhline,但如果你想支持类似的事情,情况\hline\nobreakhline
会变得更糟,所以我只需定义第二个命令来制定双重规则,比如
\def\nobreakhhline{%
\multispan\LT@cols\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
\noalign{\penalty10000\vskip\doublerulesp}%
\multispan\LT@cols\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
\noalign{\penalty10000}%
}
答案2
这就是你要找的东西吗?@DavidCarlisle 已经给出了解决方案。https://tex.stackexchange.com/a/107566/197451
\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}
\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}
\begin{longtable}{p{2cm}|p{3cm}|p{3cm}}
\caption{Blabla} \\
\hline\hline
8,8 &85,3 &1,4 \\\hline
8,8 &85,3 &1,4 \\\hline
\hline
\end{longtable}
\begin{longtable}{p{2cm}|p{3cm}|p{3cm}}
\caption{Blabla} \\
\hline\hline
8,8 &85,3 &1,4 \\*\hline
8,8 &85,3 &1,4 \\*\hline
\hline
\end{longtable}
\end{document}
答案3
在 David Carlisle 的帮助下解决此问题:
\documentclass{article}
\usepackage{longtable}
\makeatletter
\def\nobreakhline{%
\multispan\LT@cols\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
\noalign{\penalty10000}}
\makeatother
\makeatletter
\def\nobreakhlinedouble{%
\multispan\LT@cols\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
\noalign{\penalty10000\vskip\doublerulesep}
\multispan\LT@cols\unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
\noalign{\penalty10000}}
\makeatother
\begin{document}
\begin{longtable}{p{2cm}|p{3cm}|p{3cm}}
\caption{Blabla} \\
\hline\hline
8,8 &85,3 &1,4 \\\hline
8,8 &85,3 &1,4 \\\hline
\hline
\end{longtable}
\begin{longtable}{p{2cm}|p{3cm}|p{3cm}}
\caption{Blabla} \\
\nobreakhlinedouble
8,8 &85,3 &1,4 \\*\nobreakhline
8,8 &85,3 &1,4 \\*\nobreakhline
\nobreakhlinedouble
\end{longtable}
\end{document}
最后,它会在一行中生成双线,然后在另一行中生成双线。这对于编码行输入来说更好。