表格的 rowcolor 命令也会改变矩阵行的颜色

表格的 rowcolor 命令也会改变矩阵行的颜色

我正在准备一个投影仪演示文稿,其中我想在表格中使用彩色行,我\rowcolors{2}{green!20}{blue!20}在乳胶代码的序言中使用它。

该命令适用于表格,但是,不知何故它也影响了 pmatrix(如下所示)。有什么办法可以避免这种情况吗?我想要具有纯色背景的矩阵。

\documentclass[xcolor=table,10pt]{beamer}
\usetheme{Frankfurt}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\rowcolors{2}{green!20}{blue!20}

\begin{document}
\begin{frame}   
\begin{tabular}{cc}
\hline
\rowcolor{yellow} Column 1  & Column 2 \\
\hline
23      & 234 \\
234     & 56  \\
\hline
\end{tabular}

$$\lambda= \left( \begin{matrix}
        \lambda_1   & 0         &\hdots   & 0  \\
            0       & \lambda_2 &\hdots   & 0    \\
            0       &   0       & \ddots  & 0 \\
            0       &   0       &  \hdots &\lambda_n
        \end{matrix}      \right) $$.       
\end{frame}
\end{document}

在此处输入图片描述

编辑 1:根据 @Warner 的建议,我尝试\rowcolors在 Table 环境中定义命令,并且成功了。它不再影响矩阵。

每次添加新表时,Warner 的方法都要求我添加一些额外的行。我正在准备一组讲座,希望有一个全局设置(如果可能的话)。这将减少代码长度并使其始终保持一致。

答案1

tblr有了新的 LaTeX3 包环境,一切都变得轻而易举tabularray

\documentclass[10pt]{beamer}

\usetheme{Frankfurt}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

\usepackage{tabularray}
\SetTblrInner{row{odd}={blue9},row{even}={green9},row{1}={yellow9}}

\begin{document}

\begin{frame}

\begin{tblr}{cc}
\hline
  Column 1  & Column 2 \\
\hline
  23      & 234 \\
  234     & 56  \\
\hline
\end{tblr}

$$\lambda= \left( \begin{matrix}
        \lambda_1   & 0         &\hdots   & 0  \\
            0       & \lambda_2 &\hdots   & 0    \\
            0       &   0       & \ddots  & 0 \\
            0       &   0       &  \hdots &\lambda_n
        \end{matrix}      \right) $$.
      
\end{frame}

\end{document}

在此处输入图片描述

答案2

我看到了你的帖子,遇到了完全相同的问题,刚刚为我的文件解决了这个问题。我强烈建议你创建一个新的表环境,你只能在其中配置这样的表。

(由于 [H] ,需要 \usepackage{float})

\documentclass[xcolor=table,10pt]{beamer}
\usetheme{Frankfurt}
\usepackage[utf8x]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

\usepackage{float}

%------------Custom table--------------------------------------
\newenvironment{MyTabular}[1]{% #1 = column types
    \setlength{\intextsep}{3pt} %Space between text and table
    \rowcolors{2}{green!20}{blue!20} %Color config
    \begin{table}[H]
    \centering
    \renewcommand{\arraystretch}{1.1}
    \begin{tabular}{#1} \rowcolor{yellow} %First row color
}{%
    \end{tabular}
    \end{table}
}
%--------------------------------------------------------------


\begin{document}
\begin{frame}   
\begin{MyTabular}{cc}
\hline
Column 1  & Column 2 \\
\hline
23      & 234 \\
234     & 56  \\
\hline
\end{MyTabular}

$$\lambda= \left( \begin{matrix}
        \lambda_1   & 0         &\hdots   & 0  \\
            0       & \lambda_2 &\hdots   & 0    \\
            0       &   0       & \ddots  & 0 \\
            0       &   0       &  \hdots &\lambda_n
        \end{matrix}      \right) $$.       
\end{frame}
\end{document}

在此处输入图片描述

答案3

您可以尝试以下操作;

\documentclass[xcolor=table,10pt]{beamer}
\usetheme{Frankfurt}
\usepackage{amsmath,amssymb}

\usepackage{etoolbox}        % <---
\AtBeginEnvironment{tabular}{% <---
    \rowcolors{2}{green!20}{blue!20}
                            }

\begin{document}
\begin{frame}
\frametitle{Coloring only \texttt{tabular}s}
\begin{tabular}{cc}
\hline
\rowcolor{yellow} Column 1  & Column 2 \\
\hline
23      & 234 \\
234     & 56  \\
\hline
\end{tabular}

\[
\lambda= \begin{pmatrix}
        \lambda_1   & 0         &\hdots   & 0  \\
            0       & \lambda_2 &\hdots   & 0    \\
            0       &   0       & \ddots  & 0 \\
            0       &   0       &  \hdots &\lambda_n
        \end{pmatrix}
\].
\end{frame}
\end{document}

如果您给出了其他表的环境,您也可以为它们添加颜色定义。

在此处输入图片描述

相关内容