我经常来这里调试代码并寻找问题的解决方案。但这是我第一次找不到确切问题的解决方案或可以适应我的情况的解决方案。所以我在这里提出我的问题。如果我的措辞不完美,请提前致歉,我不是 TeX 专家,而是一名爱好者。
我目前正在编写 .cls 类文件来编写我的报告。我更新了 maketitle 命令来创建我的封面。有 2 个表格我想自动填充。一个 MWE 示例
我的主要 tex 文件构建如下:
\documentclass{MyClass}
\revision{
2015-03-31 & John Doe\\ \hline
2015-04-01 & Jane Doe\\ \hline
& \\ \hline
}
\diffusion{%
Company A & John Doe\\ \hline
Company B & Jane Doe\\ \hline
}
\begin{document}
\maketitle
\end{document}
我使用命令 \revision 和 \diffusion 将表格内容传递到我的类文件中。该类的构建如下:
% My class
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{MyClass}[my beautiful class]
\LoadClass[11pt]{article}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
% -- Some packages
\RequirePackage{lmodern}
\RequirePackage[T1]{fontenc}
\RequirePackage[utf8]{inputenc}
\RequirePackage[english,french]{babel}
\RequirePackage{array,tabularx,hhline}
\RequirePackage{graphicx,colortbl,import}
\RequirePackage[dvipsnames,table]{xcolor}
\RequirePackage{geometry}
\RequirePackage{nicematrix}
\RequirePackage{tabularray}
\RequirePackage{makecell}
\definecolor{softgray}{gray}{0.9}
\newcommand{\revision}[1]{\def\nt@revision{#1}}
\newcommand{\diffusion}[1]{\def\nt@diffusion{#1}}
\geometry{a4paper,twoside,pdftex,
lmargin=1.91cm,
rmargin=1.91cm,
tmargin=4cm,
headheight=24mm,
textheight=22cm,
headsep=0.5cm,
footskip=0.5cm
}
\renewcommand{\arraystretch}{1.5}
\renewcommand{\maketitle}{
\pagestyle{plain}
\section*{Revision}
\noindent
\begin{NiceTabularX}{\textwidth}{|l|X|}[colortbl-like]
\hline
\rowcolor{softgray} Date & Author \\ \hline
\nt@revision
\end{NiceTabularX}
% Not working starting from here
\section*{Diffusion}
\noindent
\begin{tblr}{
colspec = {|l|X|},
rowspec={Q[m]Q[m]Q[m]Q[m]Q[m]Q[m]Q[m]Q[m]Q[m]Q[m]},
rowsep = 3pt,
width = \textwidth,
}
\hline
\SetCell{bg=softgray}\textbf{Company} & \SetCell{bg=softgray}\textbf{Name} \\ \hline
\nt@revision
\end{tblr}
}
表格的第一行需要有灰色背景。我使用 pdf 查看器时遇到问题,表格的边框会消失(被背景颜色覆盖)。我可以找到部分解决方案这里。
- 我在这个网站上发现我可以使用 NiceTabularX 和选项 [colortbl-like] 来避免线条消失的问题。它有效(参见 \section*{Revision} 中构建的表格)。但是,我必须调用 pdfLaTeX 3 或 4 次才能让表格最终正确显示。这是正常的吗?有解决方法吗?
- 我发现它与 tabularray 配合使用效果更好。但是,我遇到了错误。不知何故,参数 \nt@revision 未正确传递。我不明白发生了什么?
- 我是否遗漏了什么?有没有更好的解决方案来做我想做的事情?
在此先感谢您的帮助。
答案1
你必须告诉tblr
扩展\nt@revision
:
\begin{tblr}[expand=\nt@revision]{
colspec = {|l|X|},
rowspec={Q[m]Q[m]Q[m]Q[m]Q[m]Q[m]Q[m]Q[m]Q[m]Q[m]},
rowsep = 3pt,
width = \textwidth,
}
\hline
\SetCell{bg=softgray}\textbf{Company} & \SetCell{bg=softgray}\textbf{Name} \\ \hline
\nt@revision
\end{tblr}