longtable、rowcolor 和 makecell 组合的颜色问题

longtable、rowcolor 和 makecell 组合的颜色问题

我正在尝试将元素列表添加到longtable单元格中。
我尝试了几种解决方案,唯一被证明真正适用的是我在下面介绍的解决方案平均能量损失
主要问题是我想用我定义的颜色(称为)来为表格(交替行)着色lightblue
以下是示例:

\documentclass[a4paper]{article}
\usepackage[table]{xcolor}
\usepackage{longtable}
\usepackage{makecell}

\definecolor{lightblue}{rgb}{0.93,0.95,1.0}

\begin{document}

\subsection{Tracciamento} \label{subsec:tracciamento}
\rowcolors{1}{lightblue}{white}
    \begin{longtable}[c]{|c|c|}
        \hline
            \textbf{Fonte} &
            \textbf{Requisiti} \\
        \hline
            Capitolato & \makecell[t]{RF02\\RFD3\\RFD4} \\
        \hline
            Interno & \makecell[t]{RQO1\\RQO2\\RQD8} \\
        \hline
            UC 1 &
            RF01 \\
        \hline
            UC 2 &
            RF01.1 \\
        \hline
        \caption{Tracciamento fonte - requisiti} \label{tab:fonte_requisiti}
    \end{longtable}
\end{document}

这是编译后的输出:
在此处输入图片描述

现在,问题在于颜色似乎无法正常工作。
我感谢任何能帮助我解决这个问题的人!

答案1

longtblr您可以使用tabularray 包来避免此问题:

\documentclass[a4paper]{article}

\usepackage[table]{xcolor}
\definecolor{lightblue}{rgb}{0.93,0.95,1.0}
\usepackage{tabularray}

\begin{document}

\subsection{Tracciamento} 
\label{subsec:tracciamento}

    \begin{longtblr}[
      caption={Tracciamento fonte - requisiti}, 
      label={tab:fonte_requisiti}
    ]{
      colspec={cc},
      row{odd}={lightblue},
      row{1}={font=\bfseries},
      vlines,
      hlines
    }
      Fonte & Requisiti \\
      Capitolato & {RF02\\RFD3\\RFD4} \\
      Interno & {RQO1\\RQO2\\RQD8} \\
      UC 1 & RF01 \\
      UC 2 & RF01.1 \\
    \end{longtblr}
\end{document}

在此处输入图片描述

答案2

这是一个{NiceTabular}带有 的解决方案nicematrix。我已将您的代码替换{longtable}为 ,{NiceTabular}并将您的指令\rowcolors{1}{lightblue}{white}放在所谓的\CodeBefore环境中{NiceTabular}

\usepackage{xcolor}
\usepackage{makecell}
\usepackage{nicematrix}

\definecolor{lightblue}{rgb}{0.93,0.95,1.0}

\begin{document}

\subsection{Tracciamento} \label{subsec:tracciamento}

    \begin{NiceTabular}[c]{|c|c|}
    \CodeBefore
        \rowcolors{1}{lightblue}{white}
    \Body
        \hline
            \textbf{Fonte} &
            \textbf{Requisiti} \\
        \hline
            Capitolato & \makecell[t]{RF02\\RFD3\\RFD4} \\
        \hline
            Interno & \makecell[t]{RQO1\\RQO2\\RQD8} \\
        \hline
            UC 1 &
            RF01 \\
        \hline
            UC 2 &
            RF01.1 \\
        \hline
    \end{NiceTabular}
\end{document}

与往常一样nicematrix,您需要进行多次编译。

上述代码的输出

答案3

Innertabular可以帮你搞定。你也可以创建一个宏来方便使用:

\documentclass[a4paper]{article}
\usepackage[table]{xcolor}
\usepackage{longtable}
\usepackage{makecell}

\definecolor{lightblue}{rgb}{0.93,0.95,1.0}

\NewDocumentCommand\TB{O{c}O{c}m}{%
  \renewcommand\arraystretch{1}%
  \begin{tabular}[#1]{@{}#2@{}}#3\end{tabular}}


\begin{document}
\renewcommand*{\arraystretch}{1.25}

\subsection{Tracciamento} \label{subsec:tracciamento}
\rowcolors{1}{lightblue}{white}
\begin{longtable}[c]{|c|c|}
  \hline
  \textbf{Fonte} & \textbf{Requisiti} \\
  \hline
  Capitolato     & \TB[t]{RF02\\RFD3\\RFD4} \\
  \hline
  Interno        & \TB[t]{RQO1\\RQO2\\RQD8} \\
  \hline
  UC 1           & RF01 \\
  \hline UC 2    & RF01.1 \\
  \hline
  \caption{Tracciamento fonte - requisiti} \label{tab:fonte_requisiti}
\end{longtable}
\end{document}

在此处输入图片描述

相关内容