|
Autor |
Code mit diversen if's funktioniert nicht |
|
Ex_Senior
 | Themenstart: 2018-01-06
|
http://matheplanet.de/matheplanet/nuke/html/uploads/b/477_82_55555555.png
Hallo!
Kann jmd. ungefähr abschätzen, wieso dieser Code hier nicht funktioniert?
Laut Testanwendung example2 werden alle benötigten Sachen (tikz.sty und Bibliothek math) korrekt geladen.
Am eigenen PC funktioniert es (siehe unten).
Hinweis: Der Code soll eine (Mersenne-)Matrix erstellen, bei der Ganzzahlen rot gesetzt werden, aber Zeilen, die keine Ganzzahlen enthalten, blau gesetzt werden.
$
\usetikzlibrary{matrix}
%%%%%%%%%%%%%
% EINGABEN! %%%%%%
%%%%%%%%%%%%%
% 1. Lege den Divisior der Divisormatrix fest.
\pgfmathtruncatemacro{\Divisor}{7} % Divisor der Divisormatrix
%
\newcommand\Einleitungstext{%
M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} =
}% wahlweise leer lassen / auskommentieren...
% 2a. Lege die Dimensionen der Divisormatrix fest.
\def\nMaxZeile{7} % Länge der Mersenne Folge in Zeilen
\def\nMaxSpalte{3} % Länge der Mersenne Folge in Spalten
% 2b. Passe die Syntax für die spätere tikz-Matrix an.
\def\MatrixZeile{ \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen
\def\MatrixZeilen{% % "nMaxZeile" Stück eintragen
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
}%
%%%%%%%%%%%%%
%%% fertig! %%%%%
%%%%%%%%%%%%%
% 3. Passe evtl. noch row sep = ****em, column sep = ****em,
% in der späteren tikz-Matrix optisch an.
%%%%%%%%%%%%%
%%%%%%%%%%%%%
\tikzmath{
% Berechnung der Folgenglieder
function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);};
% Bestimmung des Reduzierten Bruches
function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));};
function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));};
% Bestimmung von Zähler und Nenner im MersenneBruch
function MersenneNenner(\K,\N,\d) {return int(RedNenner(Mersenne(\K,\N),\d) );};
function MersenneZaehler(\K,\N,\d) {return int(RedZaehler(Mersenne(\K,\N),\d) );};
}
% Farbige Ausgabe des reduzierten Mersenne Bruches
% \MersenneBruch{}{}
\newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%%
\begingroup
\pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator
% Zähler und Nenner des Mersenne-Bruches festlegen
\pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}%
\pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}%
%
\pgfmathsetmacro{\y}{0}
\foreach \Spalte in {1,...,\nMaxSpalte}{%
\pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}%
\ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner
\global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner}
\else
\let\y=0%
\fi
}%
\ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner...
\ifx \Nenner\Eins%
\textcolor{red}{\Zaehler}%
\else
$\frac{\Zaehler}{\Nenner}$%
\fi
\else
$\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$%
\fi
\endgroup
}%%%%%%%%%%%%%%%%%%%%%%%%%
%Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1}
% Mersenne-Matrix setzen
\Einleitungstext
\begin{matrix} % normale Matrix damit angepasst an Rest
\begin{tikzpicture}
\matrix (m) [ % tikz-Matrix
ampersand replacement=\&,
matrix of math nodes,
nodes in empty cells,
row sep = 1.125em, % Zeilenabstand optisch anpassen!
column sep = 1.25em, % Spaletenabstand optisch anpassen!
left delimiter = (, right delimiter = ), % Klammern
]
{%
\MatrixZeilen
};
% Matrixelemente hervorheben
% \nennerode[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=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}};
% Test:
%\node[align=right, text=blue] at (m-2-1) {};
\end{tikzpicture}
\end{matrix}
$
\sourceon Latex auf dem MP
$
\usetikzlibrary{matrix}
%%%%%%%%%%%%%
% EINGABEN! %%%%%%
%%%%%%%%%%%%%
% 1. Lege den Divisior der Divisormatrix fest.
\pgfmathtruncatemacro{\Divisor}{7} % Divisor der Divisormatrix
%
\newcommand\Einleitungstext{%
M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} =
}% wahlweise leer lassen / auskommentieren...
% 2a. Lege die Dimensionen der Divisormatrix fest.
\def\nMaxZeile{7} % Länge der Mersenne Folge in Zeilen
\def\nMaxSpalte{3} % Länge der Mersenne Folge in Spalten
% 2b. Passe die Syntax für die spätere tikz-Matrix an.
\def\MatrixZeile{ \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen
\def\MatrixZeilen{% % "nMaxZeile" Stück eintragen
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
}%
%%%%%%%%%%%%%
%%% fertig! %%%%%
%%%%%%%%%%%%%
% 3. Passe evtl. noch row sep = ****em, column sep = ****em,
% in der späteren tikz-Matrix optisch an.
%%%%%%%%%%%%%
%%%%%%%%%%%%%
\tikzmath{
% Berechnung der Folgenglieder
function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);};
% Bestimmung des Reduzierten Bruches
function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));};
function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));};
% Bestimmung von Zähler und Nenner im MersenneBruch
function MersenneNenner(\K,\N,\d) {return int(RedNenner(Mersenne(\K,\N),\d) );};
function MersenneZaehler(\K,\N,\d) {return int(RedZaehler(Mersenne(\K,\N),\d) );};
}
% Farbige Ausgabe des reduzierten Mersenne Bruches
% \MersenneBruch{}{}
\newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%%
\begingroup
\pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator
% Zähler und Nenner des Mersenne-Bruches festlegen
\pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}%
\pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}%
%
\pgfmathsetmacro{\y}{0}
\foreach \Spalte in {1,...,\nMaxSpalte}{%
\pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}%
\ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner
\global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner}
\else
\let\y=0%
\fi
}%
\ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner...
\ifx \Nenner\Eins%
\textcolor{red}{\Zaehler}%
\else
$\frac{\Zaehler}{\Nenner}$%
\fi
\else
$\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$%
\fi
\endgroup
}%%%%%%%%%%%%%%%%%%%%%%%%%
%Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1}
% Mersenne-Matrix setzen
\Einleitungstext
\begin{matrix} % normale Matrix damit angepasst an Rest
\begin{tikzpicture}
\matrix (m) [ % tikz-Matrix
ampersand replacement=\&,
matrix of math nodes,
nodes in empty cells,
row sep = 1.125em, % Zeilenabstand optisch anpassen!
column sep = 1.25em, % Spaletenabstand optisch anpassen!
left delimiter = (, right delimiter = ), % Klammern
]
{%
\MatrixZeilen
};
% Matrixelemente hervorheben
% \nennerode[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=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}};
% Test:
%\node[align=right, text=blue] at (m-2-1) {};
\end{tikzpicture}
\end{matrix}
$
\sourceoff
\sourceon latex
%\documentclass[11pt]{scrartcl}
\documentclass[border=3mm, varwidth]{standalone}
\usepackage[ngerman]{babel}
\usepackage{tikz, amsmath, amssymb}
\usetikzlibrary{math, matrix}
% Muss auf dem MP angegeben werden!
\usetikzlibrary{matrix}
\begin{document}
$M(k,n) = (2k-1)\cdot 2^n - 1 \text{ mit } k,n \in \mathbb{N}_{> 0}$ \\
%%%%%%%%%%%%%
% EINGABEN! %%%%%%
%%%%%%%%%%%%%
% 1. Lege den Divisior der Divisormatrix fest.
\pgfmathtruncatemacro{\Divisor}{7} % Divisor der Divisormatrix
%
\newcommand\Einleitungstext{%
M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} =
}% wahlweise leer lassen / auskommentieren...
% 2a. Lege die Dimensionen der Divisormatrix fest.
\def\nMaxZeile{7} % Länge der Mersenne Folge in Zeilen
\def\nMaxSpalte{3} % Länge der Mersenne Folge in Spalten
% 2b. Passe die Syntax für die spätere tikz-Matrix an.
\def\MatrixZeile{ \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen
\def\MatrixZeilen{% % "nMaxZeile" Stück eintragen
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
}%
%%%%%%%%%%%%%
%%% fertig! %%%%%
%%%%%%%%%%%%%
% 3. Passe evtl. noch row sep = ****em, column sep = ****em,
% in der späteren tikz-Matrix optisch an.
%%%%%%%%%%%%%
%%%%%%%%%%%%%
\tikzmath{
% Berechnung der Folgenglieder
function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);};
% Bestimmung des Reduzierten Bruches
function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));};
function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));};
% Bestimmung von Zähler und Nenner im MersenneBruch
function MersenneNenner(\K,\N,\d) {return int(RedNenner(Mersenne(\K,\N),\d) );};
function MersenneZaehler(\K,\N,\d) {return int(RedZaehler(Mersenne(\K,\N),\d) );};
}
% Farbige Ausgabe des reduzierten Mersenne Bruches
% \MersenneBruch{}{}
\newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%%
\begingroup
\pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator
% Zähler und Nenner des Mersenne-Bruches festlegen
\pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}%
\pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}%
%
\pgfmathsetmacro{\y}{0}
\foreach \Spalte in {1,...,\nMaxSpalte}{%
\pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}%
\ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner
\global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner}
\else
\let\y=0%
\fi
}%
\ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner...
\ifx \Nenner\Eins%
\textcolor{red}{\Zaehler}%
\else
$\frac{\Zaehler}{\Nenner}$%
\fi
\else
$\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$%
\fi
\endgroup
}%%%%%%%%%%%%%%%%%%%%%%%%%
%Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1}
% Mersenne-Matrix setzen
$\Einleitungstext
\begin{matrix} % normale Matrix damit angepasst an Rest
\begin{tikzpicture}
\matrix (m) [ % tikz-Matrix
ampersand replacement=\&,
matrix of math nodes,
nodes in empty cells,
row sep = 1.125em, % Zeilenabstand optisch anpassen!
column sep = 1.25em, % Spaletenabstand optisch anpassen!
left delimiter = (, right delimiter = ), % Klammern
]
{%
\MatrixZeilen
};
% Matrixelemente hervorheben
% \nennerode[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=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}};
% Test:
%\node[align=right, text=blue] at (m-2-1) {};
\end{tikzpicture}
\end{matrix}$
\end{document}
\sourceoff
|
Profil
|
Ex_Senior
 | Beitrag No.1, vom Themenstarter, eingetragen 2018-01-06
|
Das ist der Code, der auf dem MP erzeugt wird.
Er liefert die Fehlermeldungen:
\sourceon
180
Argument of \XC@definec@lor has an extra }.
\par
l.180 ...r] at (m-\x-\y) {\MersenneBruch{\x}{\y}};
14
Package pgf Warning: Snakes have been superseded by decorations. Please use the decoration libraries instead of the snakes library on input line 14.
LaTeX Warning: Unused global option(s): [10.5pt].
\sourceoff
\sourceon latex
\numberson
\documentclass[10.5pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[paperheight=100cm,top=1cm]{geometry}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{cancel}
\usepackage{color}
\usepackage{relsize}
\usepackage{tikz}
\usetikzlibrary{mindmap,trees}
\usetikzlibrary{arrows}
\usetikzlibrary{automata}
\usetikzlibrary{backgrounds}
\usetikzlibrary{calc}
\usetikzlibrary{calendar}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{er}
\usetikzlibrary{intersections}
\usetikzlibrary{mindmap}
\usetikzlibrary{folding}
\usetikzlibrary{patterns}
\usetikzlibrary{petri}
\usetikzlibrary{plothandlers}
\usetikzlibrary{plotmarks}
\usetikzlibrary{positioning}
\usetikzlibrary{shadows}
\usetikzlibrary{shapes}
\usetikzlibrary{snakes}
\usetikzlibrary{topaths}
\usetikzlibrary{trees}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{math}
\usepackage{dsfont}
\usepackage{tabularx}
\usepackage{stmaryrd}
\pagestyle{empty}
\newcommand{\IR}[0]{\mathbb{R}}
\newcommand{\IN}[0]{\mathbb{N}}
\newcommand{\IQ}{\mathbb{Q}}
\newcommand{\IC}{\mathbb{C}}
\newcommand{\abs}[1]{\left\lvert#1\right\rvert}
\newcommand{\norm}[1]{\left\lVert#1\right\rVert}
\newcommand{\IZ}{\mathbb{Z}}
\newcommand{\eps}{\varepsilon}
\newcommand{\w}{\omega}
\newcommand{\z}{\zeta}
\newcommand{\G}{\Gamma}
\newcommand{\g}{\gamma}
\newcommand{\IF}{\mathbb{F}}
\DeclareMathOperator{\const}{const}
\DeclareMathOperator{\id}{id}
\DeclareMathOperator{\grad}{grad}
\DeclareMathOperator{\coker}{coker}
\DeclareMathOperator{\colim}{colim}
\renewcommand{\d}{\operatorname{d}}
\renewcommand{\Re}{\operatorname{Re}}
\renewcommand{\Im}{\operatorname{Im}}
\let\originalleft\left
\let\originalright\right
\renewcommand{\left}{\mathopen{}\mathclose\bgroup\originalleft}
\renewcommand{\right}{\aftergroup\egroup\originalright}
\begin{document}
\parindent 0pt
\usetikzlibrary{matrix}
%%%%%%%%%%%
% EINGABEN! %%%%%%
%%%%%%%%%%%%%
% 1. Lege den Divisior der Divisormatrix fest.
\pgfmathtruncatemacro{\Divisor}{7} % Divisor der Divisormatrix
%
\newcommand\Einleitungstext{%
%M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} =
}% wahlweise leer lassen / auskommentieren...
% 2a. Lege die Dimensionen der Divisormatrix fest.
\def\nMaxZeile{7} % Länge der Mersenne Folge in Zeilen
\def\nMaxSpalte{3} % Länge der Mersenne Folge in Spalten
% 2b. Passe die Syntax für die spätere tikz-Matrix an.
\def\MatrixZeile{ \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen
\def\MatrixZeilen{% % "nMaxZeile" Stück eintragen
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
}%
%%%%%%%%%%%%%
%%% fertig! %%%%%
%%%%%%%%%%%%%
% 3. Passe evtl. noch row sep = ****em, column sep = ****em,
% in der späteren tikz-Matrix optisch an.
%%%%%%%%%%%%%
%%%%%%%%%%%%%
\tikzmath{
% Berechnung der Folgenglieder
function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);};
% Bestimmung des Reduzierten Bruches
function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));};
function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));};
% Bestimmung von Zähler und Nenner im MersenneBruch
function MersenneNenner(\K,\N,\d) {return int(RedNenner(Mersenne(\K,\N),\d));};
function MersenneZaehler(\K,\N,\d) {return int(RedZaehler(Mersenne(\K,\N),\d));};
}
% Farbige Ausgabe des reduzierten Mersenne Bruches
% \MersenneBruch{}{}
\newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%%
\pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator
% Zähler und Nenner des Mersenne-Bruches festlegen
\pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}%
\pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}%
%
\pgfmathsetmacro{\y}{0}
\foreach \Spalte in {1,...,\nMaxSpalte}{%
\pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}%
\ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner
\global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner}
\else
\let\y=0%
\fi
}%
\ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner...
\ifx \Nenner\Eins%
{red}{\Zaehler}%
\else
$\frac{\Zaehler}{\Nenner}$%
\fi
\else
${blue}{\frac{\Zaehler}{\Nenner}}$%
\fi
}%%%%%%%%%%%%%%%%%%%%%%%%%
%Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1}
% Mersenne-Matrix setzen
$\Einleitungstext
\begin{matrix} % normale Matrix damit angepasst an Rest
\begin{tikzpicture}
\matrix (m) [ % tikz-Matrix
ampersand replacement=\&,
matrix of math nodes,
nodes in empty cells,
row sep = 1.125em, % Zeilenabstand optisch anpassen!
column sep = 1.25em, % Spaletenabstand optisch anpassen!
left delimiter = (, right delimiter = ), % Klammern
]
{%
\MatrixZeilen
};
% Matrixelemente hervorheben
% \nennerode[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=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}};
% Test:
%\node[align=right, text=blue] at (m-2-1) {};
\end{tikzpicture}
\end{matrix}$
\end{document}
\sourceoff
|
Profil
|
Ex_Senior
 | Beitrag No.2, vom Themenstarter, eingetragen 2018-01-06
|
Konnte das Problem lösen.
Ich glaube, es hat was mit den diversen Kommandos zu tun, die der MP vornimmt.
$
\usetikzlibrary{matrix}
%%%%%%%%%%%
% EINGABEN! %%%%%%
%%%%%%%%%%%%%
% 1. Lege den Divisior der Divisormatrix fest.
\pgfmathtruncatemacro{\Divisor}{7} % Divisor der Divisormatrix
%
\newcommand\Einleitungstext{%
M_{\text{di}}(\Divisor) = M_{\text{M}} \cdot \dfrac{1}{\Divisor} =
}% wahlweise leer lassen / auskommentieren...
% 2a. Lege die Dimensionen der Divisormatrix fest.
\def\nMaxZeile{7} % Länge der Mersenne Folge in Zeilen
\def\nMaxSpalte{3} % Länge der Mersenne Folge in Spalten
% 2b. Passe die Syntax für die spätere tikz-Matrix an.
\def\MatrixZeile{ \& \& \\ } % "nMaxSpalte minus 1" \&-Zeichen setzen
\def\MatrixZeilen{% % "nMaxZeile" Stück eintragen
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
\MatrixZeile
}%
%%%%%%%%%%%%%
%%% fertig! %%%%%
%%%%%%%%%%%%%
% 3. Passe evtl. noch row sep = ****em, column sep = ****em,
% in der späteren tikz-Matrix optisch an.
%%%%%%%%%%%%%
%%%%%%%%%%%%%
\tikzmath{
% Berechnung der Folgenglieder
function Mersenne(\K, \N) {return int((2*\K-1)*2^\N-1);};
% Bestimmung des Reduzierten Bruches
function RedZaehler(\zaehler,\nenner) {return int(\zaehler/gcd(\zaehler,\nenner));};
function RedNenner(\zaehler,\nenner) {return int(\nenner/gcd(\zaehler,\nenner));};
% Bestimmung von Zähler und Nenner im MersenneBruch
function MersenneNenner(\K,\N,\divisor) {return int(RedNenner(Mersenne(\K,\N),\divisor));};
function MersenneZaehler(\K,\N,\divisor) {return int(RedZaehler(Mersenne(\K,\N),\divisor));};
}
% Farbige Ausgabe des reduzierten Mersenne Bruches
% \MersenneBruch{}{}
\newcommand\MersenneBruch[2]{%%%%%%%%%%%%%%%%%%
\pgfmathsetmacro{\Eins}{1} % als Vergleichsoperator
% Zähler und Nenner des Mersenne-Bruches festlegen
\pgfmathtruncatemacro{\Nenner}{MersenneNenner(#1,#2,\Divisor)}%
\pgfmathtruncatemacro{\Zaehler}{MersenneZaehler(#1,#2,\Divisor)}%
%
\pgfmathsetmacro{\y}{0}
\foreach \Spalte in {1,...,\nMaxSpalte}{%
\pgfmathtruncatemacro{\MNenner}{MersenneNenner(#1,\Spalte,\Divisor)}%
\ifx \MNenner\Eins%Prüfen,ob in 1,...,\nMaxSpalte eine 1 im Nenner
\global\let\y=\MNenner% %\pgfmathsetmacro{\y}{\MNenner}
\else
\let\y=0%
\fi
}%
\ifx \y\Eins% %Wenn in 1,...,\nMaxSpalte eine 1 im Nenner...
\ifx \Nenner\Eins%
\textcolor{red}{\Zaehler}%
\else
$\frac{\Zaehler}{\Nenner}$%
\fi
\else
$\textcolor{blue}{\frac{\Zaehler}{\Nenner}}$%
\fi
}%%%%%%%%%%%%%%%%%%%%%%%%%
Test: \MersenneBruch{1}{1}, \MersenneBruch{1}{4}, \MersenneBruch{6}{1},\MersenneBruch{2}{1}
% Mersenne-Matrix setzen
$\Einleitungstext
\begin{matrix} % normale Matrix damit angepasst an Rest
\begin{tikzpicture}
\matrix (m) [ % tikz-Matrix
ampersand replacement=\&,
matrix of math nodes,
nodes in empty cells,
row sep = 1.125em, % Zeilenabstand optisch anpassen!
column sep = 1.25em, % Spaletenabstand optisch anpassen!
left delimiter = (, right delimiter = ), % Klammern
]
{%
\MatrixZeilen
};
% Matrixelemente hervorheben
% \nennerode[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=center] at (m-\k-\n) {\MersenneBruch{\k}{\n}};
% Test:
%\node[align=right, text=blue] at (m-2-1) {};
\end{tikzpicture}
\end{matrix}$
$
|
Profil
|
Ex_Senior hat selbst das Ok-Häkchen gesetzt. |
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen,
die Distanzierung,
die Datenschutzerklärung und das Impressum.
[Seitenanfang]
|