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, 09:41

cis's gravatar image

cis
8.2k15167263
Akzeptiert: 71%

bearbeitet 14 Okt, 08:16

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

(14 Okt, 10: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, 11:17

moewe's gravatar image

moewe
2764

bearbeitet 14 Okt, 12: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, 11: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, 11: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, 11: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

showpolyremainder

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, 12: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, 15: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, 15: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, 17:00) moewe
Ergebnis 5 von 7 Alle anzeigen
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×62
×4

Frage gestellt: 10 Okt, 09:41

Frage wurde angeschaut: 149 Mal

Zuletzt aktualisiert: 14 Okt, 17:00