In der Paketdatei polynom.sty finde ich zwischen Zeile 1012 und Zeile 1020

Öffne in Overleaf
    \ifx\pld@remainder\@empty\else
        +{}%
        \setbox\z@=\hbox{$\displaystyle
          \frac{\let\strut\@empty\pld@firsttrue \expandafter
                \pld@PrintRemain\expandafter{\pld@remainder}}%
               {\let\strut\@empty\pld@PrintPoly\pld@divisor}$}%
        \dp\z@=\z@\box\z@
    \fi
    $}%

Diese if-Unterscheidung macht Folgendes:

  • Ist der Rest gleich Null: mache nichts
  • Ist der Rest ungleich Null: gebe einen RestTerm (in Bruchform) aus.

Wie kann ich mir daraus ein Kommando machen, etwa \def\RestTerm{...} ?

Wegen diesen ganzen @ Symbolen usw. kann man das scheints nicht direkt verwenden.

alt text

Öffne in Overleaf
\documentclass[margin=15mm, varwidth]{standalone}
\usepackage{polynom, tikz}

\begin{document}
% Polynome abspeichern
\polyadd{\Zaehler}{3x^4 - 22x^3 + 39x^2 - \frac{41}{2}x + \frac{11}{2}}{0}
\polyadd{\Nenner}{x-5}{0}
\polydiv\QuotientOhneRest\Zaehler\Nenner

\newcommand\Rest{%
\ifnum\value{\polyremainder}=0{}% nichts tun
\else%
{+\frac{\polyprint{\polyremainder}}{\polyprint\Nenner}}%Rest ausgeben
\fi}

Polynomdivision lang: \\
\polylongdiv[style=C, div=:,vars=x]\Zaehler\Nenner   \\

Polynomdivision kurz: \\
$\displaystyle 
\left( \polyprint\Zaehler \right) :  \left( \polyprint\Nenner \right)
=
\polyprint\QuotientOhneRest
+
\frac{\polyprint{\polyremainder}}{\polyprint\Nenner}$

%\Rest %error
\end{document}

gefragt 10 Okt '18, 15:41

cis's gravatar image

cis
9.5k95459491
Akzeptiert-Rate: 29%

bearbeitet 14 Okt '18, 14:16

Ist doch jetzt bestimmt total einfach - irgendso ein mini Syntaxschliff...?

(14 Okt '18, 16:20) cis

Da \polyremainder einfach nur \pld@remainder ist, kannst Du den Code am Anfang Deiner Frage einfach übernehmen, wenn Du ihn etwas anpasst.

Öffne in Overleaf
\documentclass{article}
\usepackage{polynom}

\newcommand\Rest{%
  \ifx\polyremainder\empty\else
    \ensuremath{\frac{\polyprint{\polyremainder}}{{\polyprint\Nenner}}}
  \fi}

\begin{document}
\polyadd{\Zaehler}{x^2-1+6}{0}
\polyadd{\Nenner}{x-1}{0}
\polydiv\QuotientOhneRest\Zaehler\Nenner

A \Rest A

\polyadd{\Zaehler}{x^2-1}{0}
\polyadd{\Nenner}{x-1}{0}
\polydiv\QuotientOhneRest\Zaehler\Nenner

B \Rest B

\polyadd{\Zaehler}{x^2-1-\frac{1}{2}}{0}
\polyadd{\Nenner}{x-1}{0}
\polydiv\QuotientOhneRest\Zaehler\Nenner

C \Rest C
\end{document}

edit: Antwort komplett umgeschrieben, da etoolbox nicht gewünscht und der Extratest nicht wirklich sinnvoll war.

Permanenter link

beantwortet 14 Okt '18, 17:17

moewe's gravatar image

moewe
3.7k36
Akzeptiert-Rate: 42%

bearbeitet 14 Okt '18, 18:28

Oha... Auf die Frage: Der Rest kann alles oder nichts sein.

> "weiß noch nicht einmal, ob immer garantiert ist, dass das erste Argument eine Zahl ist"

--> Auch das ist im Allgemeinen keineswegs gegeben; teste als Bsp.

\polyadd{\ZaehlerSpeziell}{(x + 3) (x^2 - x - 3)}{0}% \polyadd{\NennerSpeziell}{x^2-5}{0}% \polylongdiv[style=C]\ZaehlerSpeziell\NennerSpeziell

alt text

PS: OMG! In dem Fall geht scheints nichtmal \show\polyremainder ...

(14 Okt '18, 17:45) cis

> Dieses Low-Level-Rumgehacke macht ja niemanden froh und ist auch extrem fehler- und änderungsanfällig.

Ja, da hast Du durchaus recht. Ich hatte gehofft, man kann das irgendwie geschickt aus dem Paket selbst rausfiltern, ohne Einsatz etoolbox o.ä.

(14 Okt '18, 17:49) cis

> dann ist es sicher keine schlechte Idee, sich mal bei den Entwicklern des Paketes nach einer offiziellen Schnittstelle zu fragen.

Das Paket ist von 2006, dann werde ich mal mal die Mumie aus dem Grab holen und (mit schlechtem Englisch) die Autoren (es sind mehrere) anschreiben.

Ich habe ja schon zwei Autoren zu höchst-sinnvollen Ergänzungen übererdet. Den einen von thumbs.sty (o.s.ä.); also denkt an mich, wenn ihr Daumenregister verwendet, was ihr eh (nie) macht.

(14 Okt '18, 17:49) cis

@cis An den Rest mit x hätte ich denken sollen, naja ...

Öffne in Overleaf
\polyadd{\Zaehler}{(x + 3) (x^2 - x - 3)}{0}%
\polyadd{\Nenner}{x^2-5}{0}%
\polydiv\QuotientOhneRest\Zaehler\Nenner

\show\polyremainder

gibt

Öffne in Overleaf
> \polyremainder=macro:
->\pld@R {-1}{1}\pld@V {x}{1}+\pld@R {1}{1}.

In meiner Version von polynom.sty steht 2017/07/17 0.19 (CH,HA) das klingt doch gar nicht so veraltet. So weit ich sehe, sollte man sich an Hendri Adriaens wenden. Auf die Schnelle konnte ich aber keine Mailadresse finden. Da müsstest Du also auf die Suche gehen.

(14 Okt '18, 18:20) moewe

Ach, das wird schon... Vielleicht finde ich Hendri Adriaens ja im LaTeX-Chat. Wobei ich hier den LaTeX-Chat selbst erst wieder finden muss. (Ich hab eh mal wieder Lust, mit den Amis zu quatschen.) Du kennst nicht zufällig die Webseite?

(14 Okt '18, 21:25) cis

Hä, aber an und für sich hast Du es doch mit

\newcommand\Rest{% \ifx\polyremainder\empty\else \ensuremath{\frac{\polyprint{\polyremainder}}{{\polyprint\Nenner}}} \fi}

gelöst?

Es liefert bloß mitunter eine unschöne Darstellung

\polyadd{\ZaehlerSpeziell}{(x + 3) (x^2 - x - 3)}{0}% \polyadd{\NennerSpeziell}{x^2-5}{0}% \polydiv\QuotientOhneRest\ZaehlerSpeziell\NennerSpeziell D \Rest D, \polyprint{\polyremainder}\\ \polylongdiv[style=C]\ZaehlerSpeziell\NennerSpeziell

Im Normalfall (letzte Zeile) ist es wieder schön.

Also doch mal den Autor kontaktieren...

(14 Okt '18, 21:39) cis

@cis Ich weiß nicht genau, welchen LaTeX-Chat Du meinst, tut mir leid. Ich kenne nur den Chat von TeX Stackexchange. Ich weiß auch nicht, ob Dir die "Amis" hier weiterhelfen können, dem Namen nach hätte ich Herrn Adriaens im Niederländischen oder Belgischen angesiedelt. Ob ich Dein Problem gelöst habe, kannst nur Du mir sagen, da ich mir über die genauen Desiderata nicht ganz im Klaren bin.

(14 Okt '18, 23:00) moewe
Ergebnis 5 von 7 show 2 more comments
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:

×76
×4

gestellte Frage: 10 Okt '18, 15:41

Frage wurde gesehen: 5,921 Mal

zuletzt geändert: 14 Okt '18, 23:00