添加 arrayrulecolor 命令删除顶部规则

添加 arrayrulecolor 命令删除顶部规则

下面的代码产生下面的图像。

\documentclass{beamer}
\usetheme{Montpellier}
\usecolortheme[named=gray]{structure}
\usepackage{colortbl}
\usepackage{array}
\newcommand{\gr}[1]{\textcolor{gray}{#1}}
\begin{document}
\definecolor{light-gray}{gray}{0.92}
\frame{
%\arrayrulecolor{light-gray}
\renewcommand{\arraystretch}{1.2}
\begin{tabular}{|>{\raggedright}m{2.45cm}|>{\raggedright\arraybackslash}m{3.4cm}
|>{\raggedright\arraybackslash}m{3.63cm}|}\cline{2-3}
\multicolumn{1}{c|}{} & \multicolumn{1}{c|}{\gr{short}} & \multicolumn{1}{c|}{\gr{short}}\\\hline
\gr{short text} & very, very long text here & very, very long text here\\\hline
\end{tabular}
}
\end{document}

黑色规则

当我尝试将 arrayrulecolor 更改为浅灰色(通过删除第 10 行开头的百分号)时,我得到了下面的图像。请注意,顶部规则已消失。 浅灰

我尝试使用 hhline 包并替换,\cline{2-3}\hhline{~|-|-|}得到相同的结果。

如何获取第一张图片中的表格,但将规则颜色设置为浅灰色?我正在使用 pdfLaTeX。

答案1

beamer 中的彩色 \clines 似乎存在问题。这里有一个解决方法,使用\cmidrulebooktabs。我不得不中和规则下方的垂直填充。我稍微简化了代码:我没有加载colortbl,而是将table选项添加到 beamer ,后者将其传递给xcolor,然后加载colortbl

\documentclass[table]{beamer}
\usetheme{Montpellier}
\usecolortheme[named=gray]{structure}
\usepackage{array, booktabs}
\newcommand{\gr}[1]{\textcolor{gray}{#1}}

\begin{document}

\definecolor{light-gray}{gray}{0.92}
\frame{\arrayrulecolor{light-gray}
\renewcommand{\arraystretch}{1.2}
\begin{tabular}{|>{\raggedright}m{2.45cm}|>{\raggedright\arraybackslash}m{3.4cm}
|>{\raggedright\arraybackslash}m{3.63cm}|}
 \cmidrule{2-3}\noalign{\vskip -\belowrulesep}
\multicolumn{1}{c|}{} & \multicolumn{1}{c|}{\gr{short}} & \multicolumn{1}{c|}{\gr{short}}\\\hline
\gr{short text} & very, very long text here & very, very long text here\\\hline
\end{tabular}
}

\end{document} 

在此处输入图片描述

答案2

{NiceTabular}你可以直接用 来得到你想要的nicematrix。一个键hvlines绘制除角落之外的所有预期规则(由 指定corners)。

\documentclass{beamer}
\usetheme{Montpellier}
\usecolortheme[named=gray]{structure}

\usepackage{nicematrix}

\begin{document}

\begin{frame}
\renewcommand{\arraystretch}{1.2}
\begin{NiceTabular} [ rules/color=gray!20 , corners = NW , hvlines ]
  {wl{2.45cm}m[l]{3.4cm}m[l]{3.63cm}}
\RowStyle{\color{gray}\centering}
                & short & short \\
short text & very, very long text here & very, very long text here\\
\end{NiceTabular}
\end{frame}

\end{document}

上述代码的输出

答案3

根据本文提供的信息问题,这里有一个补丁\cline(实际上\@cline是 使用的\cline),可以解决这个问题。

该命令\cline在标准 LaTeX 中定义。它不会被包覆盖array,但会被包覆盖colortbl

在下面的代码中,我添加了kern \z@重新定义colortbl

\documentclass{beamer}
\usetheme{Montpellier}
\usecolortheme[named=gray]{structure}
\usepackage{colortbl}
\usepackage{array}
\newcommand{\gr}[1]{\textcolor{gray}{#1}}

\makeatletter
\def\@cline#1-#2\@nil{%
\omit
\@multicnt#1%
\advance\@multispan\m@ne
\ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
\@multicnt#2%
\advance\@multicnt-#1%
\advance\@multispan\@ne
{\CT@arc@ \leaders\hrule\@height\arrayrulewidth\hfill\kern\z@}%
\cr
\noalign{\vskip-\arrayrulewidth}}
\makeatother

\begin{document}
\definecolor{light-gray}{gray}{0.92}
\frame{
\arrayrulecolor{light-gray}
\renewcommand{\arraystretch}{1.2}
\begin{tabular}{|>{\raggedright}m{2.45cm}|>{\raggedright\arraybackslash}m{3.4cm}
|>{\raggedright\arraybackslash}m{3.63cm}|}\cline{2-3}
\multicolumn{1}{c|}{} & \multicolumn{1}{c|}{\gr{short}} & \multicolumn{1}{c|}{\gr{short}}\\\hline
\gr{short text} & very, very long text here & very, very long text here\\\hline
\end{tabular}
}
\end{document}

上述代码的输出

相关内容