我正在编写 LaTeX 代码以使用 longtable 包生成长表,并且我希望第一列颜色为灰色
这是我的代码:
\documentclass[a4paper,11pt,english]{report}
\usepackage{longtable}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage[table,xcdraw]{xcolor}
\usepackage{lipsum} % just for dummy text- not needed for a longtable
\begin{document}
\lipsum[1]
\lipsum[1]
\lipsum[1]
\definecolor{lightgray}{HTML}{EFEFEF}
\begin{longtable}[H]{|
>{\columncolor{lightgray}}p{0.2\linewidth} | p{0.175\linewidth} |}
\hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
foo & bar \\ \hline
\caption{Your caption here} % needs to go inside longtable environment
\label{tab:myfirstlongtable}
\end{longtable}
Table \ref{tab:myfirstlongtable} shows my first longtable.
\end{document}
生成的表格的问题在于,彩色区域中没有出现水平线。这是我的输出:
我知道问题与 pdf 查看器有关,并且我的代码可以与其他 pdf 查看器配合使用,但我必须使用此 pdf 查看器
注意:我之前使用 NiceTabular 在其他表中解决了这个问题,但是 NiceTabular 与长表不兼容,所以我不知道如何在长表环境中解决这个问题
有什么帮助吗?
答案1
这是一个longtblr
环境的解决方案tabularray
包装:水平线不会被彩色单元格覆盖。
最好在长表格前加上标题。
\documentclass[a4paper,11pt,english]{report}
\usepackage{lipsum}
\usepackage{xcolor}
\usepackage{tabularray}
\begin{document}
\lipsum[1]
\lipsum[1]
\lipsum[1]
\begin{longtblr}[
caption = {Your caption here},
label = {tab:myfirstlongtable},
]{
colspec = {|Q[0.25\linewidth,gray9]|Q[0.25\linewidth]|},
hlines,
}
foo & bar \\
foo & bar \\
foo & bar \\
foo & bar \\
foo & bar \\
foo & bar \\
foo & bar \\
foo & bar \\
foo & bar \\
foo & bar \\
foo & bar \\
\end{longtblr}
Table \ref{tab:myfirstlongtable} shows my first longtable.
\end{document}
答案2
很难确定,因为效果取决于 pdf 阅读器,但你可以安排 hlines 位于彩色面板上方而不是旁边,也可以让它们更厚,你可能需要尝试精确的间距
\documentclass[a4paper,11pt,english]{report}
\usepackage{longtable}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage[table,xcdraw]{xcolor}
\usepackage{lipsum} % just for dummy text- not needed for a longtable
\begin{document}
\lipsum[1]
\lipsum[1]
\lipsum[1]
\definecolor{lightgray}{HTML}{EFEFEF}
\setlength\arrayrulewidth{.5pt}
\begin{longtable}{|
>{\columncolor{lightgray}}p{0.2\linewidth} | p{0.175\linewidth} |}
\hline
foo & bar \\[.5pt]\noalign{\nobreak\vskip-.5pt} \hline\noalign{\nobreak\vskip.5pt}
foo & bar \\[.5pt]\noalign{\nobreak\vskip-.5pt} \hline\noalign{\nobreak\vskip.5pt}
foo & bar \\[.5pt]\noalign{\nobreak\vskip-.5pt} \hline\noalign{\nobreak\vskip.5pt}
foo & bar \\[.5pt]\noalign{\nobreak\vskip-.5pt} \hline\noalign{\nobreak\vskip.5pt}
foo & bar \\[.5pt]\noalign{\nobreak\vskip-.5pt} \hline\noalign{\nobreak\vskip.5pt}
foo & bar \\[.5pt]\noalign{\nobreak\vskip-.5pt} \hline\noalign{\nobreak\vskip.5pt}
foo & bar \\[.5pt]\noalign{\nobreak\vskip-.5pt} \hline\noalign{\nobreak\vskip.5pt}
foo & bar \\[.5pt]\noalign{\nobreak\vskip-.5pt} \hline\noalign{\nobreak\vskip.5pt}
foo & bar \\[.5pt]\noalign{\nobreak\vskip-.5pt} \hline\noalign{\nobreak\vskip.5pt}
foo & bar \\[.5pt]\noalign{\nobreak\vskip-.5pt} \hline\noalign{\nobreak\vskip.5pt}
foo & bar \\[.5pt]\noalign{\nobreak\vskip-.5pt} \hline\noalign{\nobreak\vskip.5pt}
\caption{Your caption here} % needs to go inside longtable environment
\label{tab:myfirstlongtable}
\end{longtable}
Table \ref{tab:myfirstlongtable} shows my first longtable.
\end{document}
答案3
\endfirsthead,\endhead
使用和部分,我可以使用正确的代码,这没有问题\endfoot, \endlastfoot
。通常,我使用加载包的彩色单元格来解决问题hhline
。
请注意,传统上,表格顶部都有标题,专门用于表格分布在多页上的情况。
\documentclass[a4paper,11pt,english]{report}
\usepackage{babel}
\usepackage{longtable}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage[table,xcdraw]{xcolor}
\usepackage{hhline}
\usepackage{lipsum} % just for dummy text- not needed for a longtable
\begin{document}
\lipsum[1]
\lipsum[1]
\lipsum[1]
\definecolor{lightgray}{HTML}{EFEFEF}
\begin{longtable}{|>{\columncolor{lightgray}}p{0.2\linewidth} | p{0.175\linewidth} |}
\caption{Your caption here}% needs to go inside longtable environment
\label{tab:myfirstlongtable}
\endfirsthead
\caption{Your caption here (continued)}\\
\hhline{|--|}
\endhead
\multicolumn{2}{r@{}}{\scriptsize (to be continued)}
\endfoot
\hhline{|--|}
\endlastfoot
\hhline{|--|}
foo & bar \\ \hhline{|--|}
foo & bar \\ \hhline{|--|}
foo & bar \\ \hhline{|--|}
foo & bar \\ \hhline{|--|}
foo & bar \\ \hhline{|--|}
foo & bar \\ \hhline{|--|}
foo & bar \\ \hhline{|--|}
foo & bar \\ \hhline{|--|}
foo & bar \\ \hhline{|--|}
foo & bar \\ \hhline{|--|}
foo & bar \\
\end{longtable}
Table \ref{tab:myfirstlongtable} shows my first longtable.
\end{document}