我正在创建自己的表格环境以加快我的工作并让其他人能够快速使用我的样式和模板。
我做的一件事是强制\hline
在每一行上执行。我使用以下代码实现此目的
\let\tabc@oldnewline\@tabularcr
\def\tabc@newline{\tabc@oldnewline \hline}
\def\@tabularcr{\tabc@newline}
改变 的行为\\
以自动放置\hline
。这在使用 包colortbl
或xcolor
选项之前工作正常table
。此时\hline
s 就消失了。我将当前代码精简为一个相当简单的工作示例:
\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
\\
\hline
colortbl
答案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}