取消设置 eqnarray 中的 rowcolor

取消设置 eqnarray 中的 rowcolor

我有一份定义好的文档\rowcolors

现在在数学环境中,case元素以与大括号重叠的表格背景呈现:

可以通过添加以下方法修复\rowcolors{1}{}{}

不幸的是,这在 eqnarray 环境中不起作用。

没有效果,并且将其放在 cases 语句中只会使两行都具有白色背景,仍然覆盖括号。

\documentclass[11pt, a4paper, titlepage, german, final]{scrreprt}

\usepackage[table]{xcolor}
\usepackage{color}
\usepackage{multirow}
\usepackage{colortbl}      %puts colors in tables

\definecolor{tr_color1}{HTML}{FFFFFF} %Weiß
\definecolor{tr_color2}{HTML}{E5F2FF} %Blau
\rowcolors{1}{tr_color1}{tr_color2}

\usepackage{amsmath, amssymb, amstext, amsfonts, mathrsfs} % Mathematische Symbole
\begin{document}
\[
    PD(t)= \begin{cases}
    1 : x \\
    0 : y
    \end{cases}
\]

\[\rowcolors{1}{}{}
    PD(t)= \begin{cases}
    1 : x \\
    0 : y
    \end{cases}
\]

\begin{eqnarray*}
    \rowcolors{}{}{}
    d & = & \begin{cases} 1 : PD(i)=1 \\ 0 : PD(i)=0 \end{cases}\\
    z & = & xx
\end{eqnarray*}

\begin{eqnarray*}
    d & = & \begin{cases}\rowcolors{}{}{} 1 : PD(i)=1 \\ 0 : PD(i)=0 \end{cases}\\
    z & = & xx
\end{eqnarray*}
\end{document}

来自这里\csname CT@everycr\endcsname{})也不起作用。

那么,如何取消设置 eqnarray 环境中的 rowcolors?

答案1

\@rowc@lors这似乎有效;基本上,我们在对齐中取消了 的操作amsmath。当然,我不会对eqnarray永远不应该使用的操作做任何事情。

\documentclass{article}

\usepackage{amsmath}
\usepackage[table]{xcolor}
\usepackage{etoolbox}

\makeatletter
\pretocmd\env@cases{\def\@rowc@lors{}}{}{}
\pretocmd\start@align{\def\@rowc@lors{}}{}{}
\makeatother

\definecolor{tr_color1}{HTML}{FFFFFF} %Weiß
\definecolor{tr_color2}{HTML}{E5F2FF} %Blau
\rowcolors{1}{tr_color1}{tr_color2}

\begin{document}

\begin{center}
\begin{tabular}{cc}
a & a \\
b & b \\
c & c
\end{tabular}
\end{center}

\[
    PD(t)= \begin{cases}
    1 : x \\
    0 : y
    \end{cases}
\]

\begin{align*}
    d & = \begin{cases} 1 : PD(i)=1 \\ 0 : PD(i)=0 \end{cases}\\
    z & = xx
\end{align*}

\begin{gather*}
a = b \\
c = d
\end{gather*}

\begin{multline*}
a + b \\
c + d
\end{multline*}

\end{document}

在此处输入图片描述

答案2

\@rowcolorsfalse您还可以使用(以及对所有显示数学使用)禁用行颜色(本地)\everydisplay{\@rowcolorsfalse}。但在我看来,更有趣的问题是如何在不覆盖括号的情况下为案例着色。改变悬垂并不容易,但这似乎有效:

\documentclass[11pt, a4paper, titlepage, german, final]{scrreprt}

\usepackage[table]{xcolor}%
\usepackage{multirow}

\definecolor{tr_color1}{HTML}{FFFFFF} %Weiß
\definecolor{tr_color2}{HTML}{E5F2FF} %Blau
\rowcolors{1}{tr_color1}{tr_color2}

\usepackage{amsmath}
\usepackage{etoolbox,array}

\begin{document}

\makeatletter

\[ \@rowcolorsfalse
    PD(t)=
    \begin{cases}
    1 : x \\
    0 : y
    \end{cases}
\]


\[
    PD(t)=
    \begin{cases}
    1 : x \\
    0 : y
    \end{cases}
\]

\patchcmd\env@cases{@{}l}{@{}>{\columncolor{white}[0.2pt][\tabcolsep]}l}{}{}%


\[
    PD(t)= 
    \begin{cases}
    1 : x \\
    0 : y
    \end{cases}
\]


\end{document}

在此处输入图片描述

答案3

感谢@david-carlisle 的回答。(看来他不需要答案声誉:D)

到目前为止,原始问题尚未得到解答。但问题出现在语句中\cases\eqnarray其中到目前为止无法取消设置 rowcolor。

aligned可以通过使用正常数学环境(其中 rowcolor unset 有效)和使用amsmath-package 中的 -environment来绕过此问题。

\[
    \rowcolors{1}{}{}
    \begin{aligned}
        d & = \begin{cases} 1 : PD(i)=1 \\ 0 : PD(i)=0 \end{cases}\\
        z & = xx
    \end{aligned}
\]

我保留这个答案,以便有人也能回答实际问题。

相关内容