将颜色渐变应用于 tabularx 的线条

将颜色渐变应用于 tabularx 的线条

我正在尝试将颜色渐变应用于 tabularx 环境的水平线。我有一个两列的 tabularx,我希望第二列用从左到右的颜色渐变水平线排列(如下图所示)。

有没有简单的方法可以做到这一点?

请参阅下面的 MWE。

% !TEX TS-program = xelatex
\documentclass{article}

\usepackage{fontspec}
    \newfontfamily\greekfont[Script=Greek]{Arial}
    \newfontfamily{\greekfonttt}{Arial}
\usepackage{polyglossia}
    \setdefaultlanguage{greek}

\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{colortbl}
\usepackage{color}

\begin{document}    
    {\setlength\arrayrulewidth{1pt}
        \renewcommand{\arraystretch}{1.5}
            \begin{tabularx}{\textwidth}{rX}
                ΙΔΡΥΜΑ & First line \\ \arrayrulecolor{red} \cline{2-2}
                ΣΧΟΛΗ & Second line \\ \arrayrulecolor{red} \cline{2-2}
            \end{tabularx}
    }
\end{document}

答案1

使用。该包提供的环境类似于经典环境和,但它会在单元格、行和列下创建 PGF/Tikz 节点。在构造数组({NiceTabular}在中)后,可以使用这些节点使用 Tikz 绘制您想要的任何规则。nicematrix{tabular}{tabularx}\CodeAfter

\documentclass{article}

\usepackage{fontspec}
    \newfontfamily\greekfont[Script=Greek]{Arial}
    \newfontfamily{\greekfonttt}{Arial}
\usepackage{polyglossia}
    \setdefaultlanguage{greek}

\usepackage{color}
\usepackage{nicematrix,tikz}

\begin{document}    
{
\setlength\arrayrulewidth{1pt}
\renewcommand{\arraystretch}{1.5}
\begin{NiceTabularX}{\textwidth}{rX}
    ΙΔΡΥΜΑ & First line \\ 
    ΣΧΟΛΗ & Second line \\ 
\CodeAfter
    \begin{tikzpicture}
    \path [left color = red]
           ([yshift=0.5\arrayrulewidth]2-|2) rectangle 
           ([yshift=-0.5\arrayrulewidth]2-|last) ; 
    \path [left color = red]
           ([yshift=0.5\arrayrulewidth]3-|2) rectangle 
           ([yshift=-0.5\arrayrulewidth]3-|last) ; 
    \end{tikzpicture}
\end{NiceTabularX}
}
\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

第一个代码的输出


事实上,使用nicematrix,也可以\MyHrule在 的行首写入要使用的命令{NiceTabular}。该命令将写入\CodeAfter正确的指令以根据需要绘制规则。

\documentclass{article}

\usepackage{fontspec}
    \newfontfamily\greekfont[Script=Greek]{Arial}
    \newfontfamily{\greekfonttt}{Arial}
\usepackage{polyglossia}
    \setdefaultlanguage{greek}

\usepackage{color}
\usepackage{nicematrix,tikz}


\ExplSyntaxOn

\cs_new_protected:Nn \__AlexSt_MyRule:n
  {
    \tikz \path [left~color = red]
               ([yshift=0.5\arrayrulewidth]#1-|2) rectangle 
               ([yshift=-0.5\arrayrulewidth]#1-|last) ; 
  }

\NewExpandableDocumentCommand \MyRule { }
 {
   \noalign 
     { 
       \skip_vertical:N \arrayrulewidth 
       \tl_gput_right:Nx \g_nicematrix_code_after_tl 
         { \__AlexSt_MyRule:n { \int_eval:n { \int_use:c { c@iRow } + 1 } } }
     }
 }

\ExplSyntaxOff

\begin{document}    
{
\setlength\arrayrulewidth{1pt}
\renewcommand{\arraystretch}{1.5}
\begin{NiceTabularX}{\textwidth}{rX}
  ΙΔΡΥΜΑ & First line \\ 
  \MyRule
  ΣΧΟΛΗ & Second line \\ 
  \MyRule
\end{NiceTabularX}
}
\end{document}

此外,通过该编程,垂直空间被保留用于规则(就像\hline的经典一样array)。

第二段代码的输出

相关内容