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 |
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} beantwortet 02 Jan '18, 18:43 cis |
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} beantwortet 03 Jan '18, 00:08 Henri |