在表格中绘制彩色虚线

在表格中绘制彩色虚线

我正在尝试在表格中绘制彩色虚线。这是代码。

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{dashrule}
\usepackage{ehhline}

\newcommand{\mycdl}[4]{\leaders\hbox{\textcolor{#1}{\hdashrule[0ex][c]{#3}{#2}{#4}}}\hfil}
\newcommand\dasheda[1]{\mycdl{#1}{\arrayrulewidth}{15pt}{1.5pt 3pt 6pt 3pt 1.5pt 0pt}}
\newcommand\dashedb[1]{\mycdl{#1}{\arrayrulewidth}{15pt}{3pt 3pt 3pt 3pt 3pt 0pt}}

\begin{document}
\begin{tabular}{!{\vrule width 1pt}p{2cm}!{\vrule width 1pt}}
\hhline{!{\dasheda{red}}} \\
\hhline{!{\dashedb{red}}} \\
\end{tabular}
\end{document}

在此处输入图片描述

虚线无法到达右边界。

我发现一个与此相关的问题:将虚线改为直线。但我不知道如何使用这个答案中的方法来实现。

答案1

您可以使用以下技巧:

\input opmac

\localcolor
\def\rul#1{\vrule height.5pt width#1pt}
\def\ker#1{\kern#1pt}
\def\dashbox{\hbox to15pt{\rul3\ker3\rul6\hfil}}
\def\reddashrule{\Red\leaders\dashbox\hfil\kern-15pt\White\vrule width15pt\kern-15pt}

\vbox{\offinterlineskip
\hbox to2cm{\reddashrule}
\hbox to2cm{\strut\vrule width1pt \hfil \vrule width1pt}
\hbox to2cm{\reddashrule}
}

\bye

红色虚线

这个想法是使用\leaders比您明确需要的长 15pt ,因为重复框的宽度为 15 pt 。然后我们确保虚线至少绘制到框边界的末尾,但它可以重叠。因此,我们返回\kern-15pt,用白色绘制 15pt 的线(它会擦除重叠的线),最后我们返回第二个\kern-15pt

我将我们的示例重新编码为纯 TeX(使用 OPmac 来显示颜色),因为我不使用 LaTeX。如果您使用 LaTeX,那么您可以毫无问题地将这个想法重新编码为 LaTeX。

答案2

使用{NiceTabular}ofnicematrix及其内置命令\Hline

\documentclass{article}
\usepackage{nicematrix,tikz}

\begin{document}

\begin{NiceTabular}{|w{c}{2cm}|}
\Hline[tikz={dashed,red}] 
\\
\Hline[tikz={dashed,red}] 
\\
\Hline[tikz={dashed,red}] 
\end{NiceTabular}

\end{document}

上述代码的输出

相关内容