Folgender Code berechnet einen reduzierten Bruch. Wie kann ich das, für mehr Flexibilität, mit der Bibliothek math umsetzen?

Öffne in Overleaf
%\documentclass[varwidth, margin=10mm]{standalone}
\documentclass{article}
\usepackage[ngerman]{babel}

\usepackage{amsmath, amsfonts, amssymb}
\usepackage{tikz}
%\usepackage{pgf, pgffor, tikz, amsmath, amssymb}
\usetikzlibrary{math}
%\usetikzlibrary{calc}

\begin{document}

% Bestimmung von Zähler und Nenner 
% des reduzierten Bruches von Z/N, das ist (Z / gcd(Z,N)) / (N / gcd(Z,N))
\pgfmathtruncatemacro{\Z}{42}
\pgfmathtruncatemacro{\N}{21}
\pgfmathtruncatemacro{\Eins}{1}
\pgfmathtruncatemacro{\Numerator}{\Z/gcd(\Z,\N)} 
\pgfmathtruncatemacro{\Denominator}{\N/gcd(\Z,\N)}

\ifnum \Denominator  = \Eins
    $\dfrac{\Z}{\N} = \Numerator$
\else
    $\dfrac{\Z}{\N} = \dfrac{\Numerator}{\Denominator}$ 
\fi

%Tut nicht:
%\tikzmath{ 
%function GCD(\x, \y) {return gcd(x,y);};
%int \G;
%\G = GCD(\x, \y);
%}
%\G(42,21)

\end{document}

gefragt 02 Jan '18, 16:52

cis's gravatar image

cis
9.5k95459491
Akzeptiert-Rate: 29%

bearbeitet 02 Jan '18, 17:51


Hab es hinbekommen:

Öffne in Overleaf
\documentclass[varwidth, margin=10mm]{standalone}
%\documentclass{article}
\usepackage[ngerman]{babel}

\usepackage{amsmath, amsfonts, amssymb}
\usepackage{tikz}
%\usepackage{pgf, pgffor, tikz, amsmath, amssymb}
\usetikzlibrary{math}
%\usetikzlibrary{calc}

\begin{document}

Mit pgf: \\
% Bestimmung von Zähler und Nenner 
% des reduzierten Bruches von Z/N, das ist (Z / gcd(Z,N)) / (N / gcd(Z,N))
\pgfmathtruncatemacro{\Z}{42}
\pgfmathtruncatemacro{\N}{21}
\pgfmathtruncatemacro{\Eins}{1}
\pgfmathtruncatemacro{\Numerator}{\Z/gcd(\Z,\N)} 
\pgfmathtruncatemacro{\Denominator}{\N/gcd(\Z,\N)}

\ifnum \Denominator  = \Eins
    $\dfrac{\Z}{\N} = \Numerator$
\else
    $\dfrac{\Z}{\N} = \dfrac{\Numerator}{\Denominator}$ 
\fi
\bigskip

Mit tikz-math: \\
\tikzmath{%==================
int \Zaehler, \Nenner, \ggt, \Numerator, \Denominator;
\Zaehler = 6;           
\Nenner = 2;        
function GCD(\x,\y) {return gcd(\x,\y);};
\ggt = GCD(\Zaehler, \Nenner);
\Numerator = \Zaehler/\ggt;
\Denominator = \Nenner/\ggt;
if \Denominator == 1 then {
    print { $\dfrac{\Zaehler}{\Nenner} = \Numerator$};
}
else { 
    print { $\dfrac{\Zaehler}{\Nenner} = \dfrac{\Numerator}{\Denominator}  $}; 
};
}%==================

\end{document}
Permanenter link

beantwortet 02 Jan '18, 18:43

cis's gravatar image

cis
9.5k95459491
Akzeptiert-Rate: 29%

bearbeitet 02 Jan '18, 18:43

Sehr ähnlich mit Lua:

Öffne in Overleaf
\documentclass{article}
\usepackage{amsmath}
\usepackage{luacode}

\begin{luacode*}
-- https://de.wikipedia.org/wiki/Euklidischer_Algorithmus
local function gcd(a,b)
   return (b ~= 0) and gcd(b,a%b) or a
end

function reduce(a,b)
   local c = gcd(a,b)
   local a = a/c
   local b = b/c
   if (b == 1) then
      tex.sprint(a)
   else
      tex.sprint("\\frac{" .. a .. "}{" .. b .. "}")
   end
end
\end{luacode*}

\newcommand\rfrac[2]{\directlua{reduce(#1,#2)}}

\begin{document}

$\rfrac{6}{2}$
$\rfrac{17}{11}$
$\rfrac{4}{12}$

\end{document}

alt text

Permanenter link

beantwortet 03 Jan '18, 00:08

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 03 Jan '18, 00:10

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×731
×5
×4

gestellte Frage: 02 Jan '18, 16:52

Frage wurde gesehen: 6,497 Mal

zuletzt geändert: 03 Jan '18, 00:10