我正在尝试将颜色渐变应用于 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
)。