编辑:我正在使用这个模板:PoPET(科学).这对于失败来说很重要。
下面是一些简单的代码来演示哪些使用了上述模板中的 dgruyter_NEW 包:
\documentclass[USenglish,oneside,twocolumn]{article}
\usepackage[big]{dgruyter_NEW}
\usepackage{pifont}
\usepackage{amsfonts}
\usepackage[table]{xcolor}
\usepackage{booktabs,array}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.8}
\definecolor{tableheadcolor}{gray}{0.92}
\begin{document}
\begin{table*}[t]
\begin{tabularx}{\linewidth}{l}
\rowcolor{tableheadcolor} A \\
\end{tabularx}
\end{table*}
\end{document}
结果:
作为参考,我使用这个模板:PoPET(科学)。 有任何想法吗?
答案1
(我的回答给出了同样的建议@shaananc 的回答,但有一个完整的例子并附带一些解释。)
dgruyter_NEW.sty
修补了许多内部宏,包括\@array
。正如@shaananc 指出的那样,\expandafter\ifx\d@llarbegin\begingroup\hskip-\col@sep\fi
在的定义中添加了两个\@preamble
,据我所知,这用于删除表格中第一列之前和最后一列之后的空格。似乎这个更改与不兼容\rowcolor
。
在下面的例子中,从的定义中删除了这两行\@array
(通过\xpatchcmd
fromxpatch
命令),并给出了表格示例来说明发生了哪些变化以及如何dgruyter_NEW.sty
手动恢复的效果。
\documentclass[USenglish,oneside,twocolumn]{article}
\usepackage[big]{dgruyter_NEW}
\usepackage{pifont}
\usepackage{amsfonts}
\usepackage[table]{xcolor}
\usepackage{booktabs,array}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.8}
\definecolor{tableheadcolor}{gray}{0.92}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\@array
{\expandafter\ifx\d@llarbegin\begingroup\hskip-\col@sep\fi}
{}
{}{\fail}
\xpatchcmd\@array
{\expandafter\ifx\d@llarbegin\begingroup\hskip-\col@sep\fi}
{}
{}{\fail}
\makeatother
\begin{document}
\subsection*{With \texttt{\string\rowcolor}}
\begin{tabularx}{\linewidth}{c}
\rowcolor{tableheadcolor} A \\
B \\
C \\
\end{tabularx}
\subsection*{Without \texttt{\string\rowcolor}}
\begin{tabular}{c}
A \\
B \\
C \\
\end{tabular}\smallskip
Note the space of width \verb|\tabcolsep| is inserted before first column and after last column by default (again).
\subsection*{Without \texttt{\string\rowcolor}, use \texttt{@\{\}} to remove that space}
\begin{tabular}{@{}c@{}}
A \\
B \\
C \\
\end{tabular}\smallskip
Note this emulates the original effect of \verb|dgruyter_NEW.sty|.
\end{document}
答案2
模板中的这段代码导致了以下问题:
\def\@array[#1]#2{%
\@tempdima \ht \strutbox
\advance \@tempdima by\extrarowheight
\setbox \@arstrutbox \hbox{\vrule
\@height \arraystretch \@tempdima
\@depth \arraystretch \dp \strutbox
\@width \z@}%
\begingroup
\@mkpream{#2}%
\xdef\@preamble{\noexpand \ialign \@halignto
\bgroup
\expandafter\ifx\d@llarbegin\begingroup\hskip-\col@sep\fi
\@arstrut \@preamble
\expandafter\ifx\d@llarbegin\begingroup\hskip-\col@sep\fi
\tabskip \z@ \cr}%
\endgroup
\@arrayleft
\if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
\bgroup
\let \@sharp ##\let \protect \relax
\lineskip \z@
\baselineskip \z@
\m@th
\let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble}
它用于修改模板的框大小,但我不知道该如何解释确切的问题或提供解决方案。
编辑:我怀疑这里的长度不应该是这样的\expandafter\ifx\d@llarbegin\begingroup\hskip-\col@sep\fi