使用 colortbl 和/或 [table]{xcolor} 为每个 \\ 添加一个 \hline

使用 colortbl 和/或 [table]{xcolor} 为每个 \\ 添加一个 \hline

我正在创建自己的表格环境以加快我的工作并让其他人能够快速使用我的样式和模板。

我做的一件事是强制\hline在每一行上执行。我使用以下代码实现此目的

\let\tabc@oldnewline\@tabularcr
\def\tabc@newline{\tabc@oldnewline \hline}
\def\@tabularcr{\tabc@newline}

改变 的行为\\以自动放置\hline。这在使用 包colortblxcolor选项之前工作正常table。此时\hlines 就消失了。我将当前代码精简为一个相当简单的工作示例:

\documentclass{standalone}

\usepackage[table]{xcolor}
\usepackage{colortbl}

\makeatletter

\newenvironment{tabularc}[2][ll]{%
     \let\tabc@oldnewline\tabularcr
     \def\tabc@newline{\tabc@oldnewline \hline}
     \def\tabularcr{\tabc@newline}
  \expandafter\tabular\expandafter{#1}
  \hline
  #2 \\
}{%
  \endtabular
}

\makeatother

\begin{document}

\begin{tabularc}[llcr]{
  Timmy&
  Timmy&
  Timmy&
  Timmy
}
G & G & G & G \\
obbles & obbles & obbles & obbles \\
\end{tabularc}
\end{document}

只要其中任何\usepackage一行存在,\\就不会产生。删除这两行,所有行之间和表格底部\hline都会有。我怎样才能将和包放在一起?\hline\\\hlinecolortbl

答案1

尝试以下补丁:

\documentclass[border=2pt]{standalone}
\usepackage[table]{xcolor}
\usepackage{etoolbox}

\newenvironment{tabularc}[1]
 {\patchcmd{\ialign}{\everycr{}}{}{}{}%
  \everycr{#1}%
  \tabular}
 {\endtabular}

\newcommand\addhr{\noalign{\hrule height 0.2mm }}

\begin{document}
\rowcolors{1}{red!50}{blue!50}
\begin{tabularc}{\addhr}{llcr}
Timmy &  Timmy &  Timmy &  Timmy\\
G & G & G & G \\
obbles & obbles & obbles & obbles\\
\end{tabularc}

\end{document}

在此处输入图片描述

相关内容