下面的代码产生下面的图像。
\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 似乎存在问题。这里有一个解决方法,使用\cmidrule
booktabs。我不得不中和规则下方的垂直填充。我稍微简化了代码:我没有加载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}