Färben bestimmter Zeilen in (automatisch erzeugter) tikz-Matrix
[![alt text][1]][1]
Wie kann ich in folgender Matrix Zeilen, die nur Brüche, also keine Ganzzahlen, enthalten blau färben? Möglichst automatisch (falls nicht zu aufwendig bzw. nur noch mit Lua o.ä. möglich).
Die manuelle Methode
MakeBlue/.style={row #1/.style={nodes={text=blue}}}
MakeBlue/.list={2,3,4,6},
funktioniert hier auch nicht, da die Zellen nachträglich nach Berechnung gesetzt werden.
%\documentclass[11pt]{scrartcl}
\documentclass[border=3mm, varwidth]{standalone}
\usepackage[ngerman]{babel}
\usepackage{pgf, pgffor, tikz, amsmath, amssymb}
\usetikzlibrary{math, matrix}
\begin{document}
$M_n(k) = (2k-1)\cdot 2^n - 1 \text{ mit } k,n \in \mathbb{N}_{\geq 1}$ \\
\tikzmath{
% Berechnung der Folgenglieder
function Mersenne(\k, \n) {return int((2*\k-1)*2^\n-1);};
% Bestimmung des Reduzierten Bruches
function RedZaehler(\zahler, \nenner) {return int(\zahler/gcd(\zahler,\nenner));};
function RedNenner(\zahler, \nenner) {return int(\nenner/gcd(\zahler,\nenner));};
}
% Ausgabe des reduzierten Bruches
\newcommand{\rfrac}[2]{%%%%%%%%%%%%%%%%%%
\pgfmathtruncatemacro{\RedZaehler}{RedZaehler(#1,#2)}
\pgfmathtruncatemacro{\RedNenner}{RedNenner(#1,#2)}
\pgfmathtruncatemacro{\Eins}{1}
\ifnum \RedNenner = \Eins
$\textcolor{red}{\RedZaehler}$ % ganz
\else
$\frac{\RedZaehler}{\RedNenner}$ % Bruch
\fi
}%%%%%%%%%%%%%%%%%%
%Test Mersenne: \pgfmathparse{Mersenne(1,3)} \pgfmathresult \\
%Test RedZaehler: \pgfmathparse{RedZaehler(6, 2)} \pgfmathresult \\
%Test reduzierter Bruch: \rfrac{6}{2} ~~ \rfrac{18}{11} ~~ \rfrac{4}{12} \\
%Test Mersenne Bruch: \rfrac{Mersenne(1,1)}{7}
\def\nMaxSpalte{3} % Länge der anzuzeigenden Mersenne Folge
\def\nMaxZeile{7}
\def\MatrixZeile{ \& \& \\ } % "nMaxSpalte-1 \&-Zeichen"
\def\MatrixZeilen{% % nMaxZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
}%
% Divisor der Divisormatrix
\pgfmathtruncatemacro{\Divisor}{7}
$M_{\text{di}}(\Divisor)=M_{\text{M}} \cdot \frac{1}{\Divisor}=
\begin{matrix} % normale Matrix damit angepasst an Rest
\begin{tikzpicture}
\matrix (m) [
ampersand replacement=\&,
matrix of math nodes,
nodes in empty cells,
row sep = 1.125em,
column sep = 1.25em,
left delimiter = (, right delimiter = ),
%nodes={},
% Blaue Zeilen
MakeBlue/.style={row #1/.style={nodes={text=blue}}}
MakeBlue/.list={2,3,4,6},
]
{%
\MatrixZeilen
};
% Matrixelemente hervorheben
% \nennerode[fill=red!50, \node[fill=red!50, minimum width = 1.5em, minimum height = 1.25em,
% rounded corners=1.5pt,
% align=right] at (m-1-3) {};
% Matrix füllen mit Zahlen
\foreach \k in {1,...,\nMaxZeile}
\foreach \n in {1,...,\nMaxSpalte}
\node[align=right] at (m-\k-\n) {\rfrac{Mersenne(\k,\n)}{\Divisor}};
\end{tikzpicture}
\end{matrix}$
\end{document}
[1]: http://texwelt.de/wissen/upfiles/55555555_81.png