表格环境中使用虚线代替 \hline

表格环境中使用虚线代替 \hline

我试图在表格中得到一条虚线而不是\hline,但我无法得到输出。

arydshln并且dashrule可以使用包来获取虚线,但我找不到任何可以在表中获取虚线的包。

有适合这种风格的包装吗?

答案1

包裹芳基化物由 Hiroshi Nakashima 提供的虚线,但可以通过减少虚线长度并稍微增加间隙(默认为4pt)将它们更改为看起来像点

最终相应地改变长度\dashlinedash\dashlinegap\arrayrulewidth

\documentclass{book}

\usepackage{arydshln}

\setlength{\dashlinedash}{0.2pt}
\setlength{\dashlinegap}{4.5pt}
\setlength{\arrayrulewidth}{0.2pt}

\begin{document}
\begin{tabular}{ll}
\hline
& \\
This is a & nice table \\
& \\
\hdashline
& \\
\end{tabular}


% Another combination of values
\setlength\dashlinedash{0.2pt}
\setlength\dashlinegap{1.5pt}
\setlength\arrayrulewidth{0.3pt}

\begin{tabular}{ll}
\hline
This is yet & another nice table \\
\hdashline
\end{tabular}


\end{document}  

在此处输入图片描述

编辑:在我之前的版本中\usepackage{array}——这个包是不需要的,所以我把它从代码中删除了。

答案2

只是玩玩而已,我想到了一种向tabular实体添加虚线和 [真] 点状水平线的方法。它可以变得更强大,因为它假设\tabcolsep列的每一侧都有边框(当然可以通过@{}宏覆盖)。除此之外,它会自动适用于不同的字体大小和不同的 值\arraystretch

它提供了\tabdashline和,\tabdotline它们有点类似\hline,但只能在单列上使用(这意味着它可以从一列更改为另一列)。参数包括\rulewidth虚线的粗细、\replength线上每个虚线/点的重复长度,以及\dashfrac{}用于将虚线长度设置为的分数的宏\replength。请注意,\rulewidth\dashfrac{}对没有影响\tabdotline,因为它使用句点作为重复的字形。但是,点的间距由控制\replength

\documentclass[10pt]{article}
\newlength\replength
\newcommand\repfrac{.33}
\newcommand\dashfrac[1]{\renewcommand\repfrac{#1}}
\setlength\replength{1.5pt}
\newcommand\rulewidth{.6pt}
\newcommand\tdashfill[1][\repfrac]{\cleaders\hbox to \replength{%
  \smash{\rule[\arraystretch\ht\strutbox]{\repfrac\replength}{\rulewidth}}}\hfill}
\newcommand\tabdashline{%
  \makebox[0pt][r]{\makebox[\tabcolsep]{\tdashfill\hfil}}\tdashfill\hfil%
  \makebox[0pt][l]{\makebox[\tabcolsep]{\tdashfill\hfil}}%
  \\[-\arraystretch\dimexpr\ht\strutbox+\dp\strutbox\relax]%
}
\newcommand\tdotfill[1][\repfrac]{\cleaders\hbox to \replength{%
  \smash{\raisebox{\arraystretch\dimexpr\ht\strutbox-.1ex\relax}{.}}}\hfill}
\newcommand\tabdotline{%
  \makebox[0pt][r]{\makebox[\tabcolsep]{\tdotfill\hfil}}\tdotfill\hfil%
  \makebox[0pt][l]{\makebox[\tabcolsep]{\tdotfill\hfil}}%
  \\[-\arraystretch\dimexpr\ht\strutbox+\dp\strutbox\relax]%
}
\begin{document}

Compare tabdashline to tabdotline to hline

\begin{tabular}{|c|}
\hline
top\\
\tabdashline
bottom\\
\hline
\end{tabular}
 vs.
\begin{tabular}{|c|}
\hline
top\\
\tabdotline
bottom\\
\hline
\end{tabular}
 vs.
\begin{tabular}{|c|}
\hline
top\\
\hline
bottom\\
\hline
\end{tabular}

Compare multiple columns:

\begin{tabular}{|c|c|}
\hline
top & column with 0.7 dashfrac\\
\tabdashline & \replength=.4ex\relax\dashfrac{0.7}\tabdashline
bottom & and a replength of .4ex\\
\hline
\end{tabular}

With arraystretch of 1.3:

\def\arraystretch{1.3}
\begin{tabular}{|c|}
\hline
top\\
\tabdashline
bottom\\
\hline
\end{tabular}
 vs.
\begin{tabular}{|c|}
\hline
top\\
\hline
bottom\\
\hline
\end{tabular}

\end{document}

在此处输入图片描述

答案3

环境{NiceTabular}提供nicematrix(除其他功能外)一个\hdottedline用于绘制水平虚线的命令和一个:用于垂直规则的前言中的说明符。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}
\renewcommand{\arraystretch}{1.3}
\begin{NiceTabular}{|c:c|}
\hline
first & second \\
\hdottedline
third & last \\
\hline
\end{NiceTabular}
\end{document}

nicematrix因为使用 PGF/Tikz 节点,所以您需要多次编译。

上述代码的输出

答案4

tblr环境的替代解决方案tabularray包裹:

\documentclass{article}

\usepackage{tabularray}

\begin{document}


\begin{tblr}{|c|[dotted]c|[dotted]c|}
  \hline
    Alpha   & Beta & Gamma   \\
  \hline[dotted]
    Epsilon & Zeta & Eta     \\
  \hline[dotted]
    Iota    & Kapp & Lambdaa \\
  \hline
\end{tblr}

\end{document}

在此处输入图片描述

相关内容