Discussion:
Probleme mit numprint und datenumber?
(zu alt für eine Antwort)
Thomas Kosch
2004-11-19 09:12:23 UTC
Permalink
Hi,


gegeben ist folgendes Beispiel

,----
\documentclass{scrartcl}
\usepackage[nosepfour]{numprint}
\usepackage[ngerman]{datenumber}

\setdatetoday
\addtocounter{datenumber}{num}%
\setdatebynumber{\thedatenumber}%

\begin{document}
\datedate
\end{document}
`----

*File List*
scrartcl.cls 2004/09/16 v2.9t LaTeX2e KOMA document class
scrlfile.sty 2004/09/16 v2.9t LaTeX2e KOMA package
size11.clo 2001/04/21 v1.4e Standard LaTeX file (size option)
typearea.sty 2004/09/16 v2.9t LaTeX2e KOMA package
numprint.sty 2004/09/13 v1.32 Print numbers (HH)
calc.sty 1998/07/07 v4.1b Infix arithmetic (KKT,FJ)
array.sty 1998/05/13 v2.3m Tabular extension package (FMi)
datenumber.sty 2001/08/06v0.02
***********

Ist num so klein das ich im aktuellen Monat bleibe, ist alles ok
Ist num so groß das ich im übernächsten Monat lande ist ebenfalls alles ok.
Ist num so groß das ich im nächsten Monat lande steigt latex mit
folgendem aus:

(/usr/local/share/texmf/tex/latex/datenumber/datenumbergerman.ldf))

! Package calc Error: `' invalid at this point.

See the calc package documentation for explanation.
Type H <return> for immediate help.
...

l.15 \setdatebynumber{\thedatenumber}
%
?

Da ich dafür keine Erklärung finde, muß ich mal her fragen, ob mich
jemand erleuchten kann.


ttyl8er, tk.
--
Klein bottle for rent -- inquire within.
Harald Harders
2004-11-19 18:13:29 UTC
Permalink
Post by Thomas Kosch
gegeben ist folgendes Beispiel
,----
\documentclass{scrartcl}
\usepackage[nosepfour]{numprint}
\usepackage[ngerman]{datenumber}
\setdatetoday
\addtocounter{datenumber}{num}%
\setdatebynumber{\thedatenumber}%
\begin{document}
\datedate
\end{document}
`----
Ist num so klein das ich im aktuellen Monat bleibe, ist alles ok
Ist num so gro� das ich im �bern�chsten Monat lande ist ebenfalls alles ok.
Ist num so gro� das ich im n�chsten Monat lande steigt latex mit
Das Problem ist eine Unvertraeglichkeit zwischen calc.sty und
datenumber.sty. Es gab schon Vorschlaege, wie calc verbessert werden
koennte, so dass solche Faelle nicht auftreten. Die Entwickler von
LaTeX sahen aber keinen Handlungsbedarf, weil ja angeblich die Pakete
den Fehler enthalten. Demnach ist also datenumber.sty buggy. Diese Probleme
mit calc.sty kotzen mich langsam an.

Wenn ich mal Zeit finde, werde ich alle meine Pakete (also auch numprint)
so umstricken, dass sie ohne das immer vorhandene calc auskommen. Weil
also calc Argumente nicht verarbeiten kann, die Standard-LaTeX versteht
und viele Pakete darauf (verstaendlicherweise) keine Ruecksicht nehmen,
ist man als Paketautor nahezu gezwungen, calc.sty zu vermeiden.

Es wuerde sich vielleicht lohnen, wenn auch du einen Bugreport
bezueglich dem Problem in calc.sty absetzen wuerdest. Vielleicht sehen
es die LaTeX-Entwickler dann doch irgendwann ein.

Gruss
Harald
--
Harald Harders
***@tu-bs.de
http://www.harald-harders.de
Harald Harders
2004-11-19 20:18:09 UTC
Permalink
Post by Harald Harders
Das Problem ist eine Unvertraeglichkeit zwischen calc.sty und
datenumber.sty. Es gab schon Vorschlaege, wie calc verbessert werden
koennte, so dass solche Faelle nicht auftreten. Die Entwickler von
LaTeX sahen aber keinen Handlungsbedarf, weil ja angeblich die Pakete
den Fehler enthalten. Demnach ist also datenumber.sty buggy. Diese Probleme
mit calc.sty kotzen mich langsam an.
Wenn ich mal Zeit finde, werde ich alle meine Pakete (also auch numprint)
so umstricken, dass sie ohne das immer vorhandene calc auskommen. Weil
also calc Argumente nicht verarbeiten kann, die Standard-LaTeX versteht
und viele Pakete darauf (verstaendlicherweise) keine Ruecksicht nehmen,
ist man als Paketautor nahezu gezwungen, calc.sty zu vermeiden.
Es wuerde sich vielleicht lohnen, wenn auch du einen Bugreport
bezueglich dem Problem in calc.sty absetzen wuerdest. Vielleicht sehen
es die LaTeX-Entwickler dann doch irgendwann ein.
So, calc ist jetzt rausgeschmissen aus numprint (und aus isodate). Sobald
sie auf CTAN installiert sind, koennt ihr die neuen Versionen bekommen.

Gruss
Harald
--
Harald Harders
***@tu-bs.de
http://www.harald-harders.de
Heiko Oberdiek
2004-11-19 20:57:43 UTC
Permalink
Post by Harald Harders
Das Problem ist eine Unvertraeglichkeit zwischen calc.sty und
datenumber.sty. Es gab schon Vorschlaege, wie calc verbessert werden
koennte, so dass solche Faelle nicht auftreten. Die Entwickler von
LaTeX sahen aber keinen Handlungsbedarf, weil ja angeblich die Pakete
den Fehler enthalten. Demnach ist also datenumber.sty buggy. Diese Probleme
mit calc.sty kotzen mich langsam an.
Wenn ich mal Zeit finde, werde ich alle meine Pakete (also auch numprint)
so umstricken, dass sie ohne das immer vorhandene calc auskommen. Weil
also calc Argumente nicht verarbeiten kann, die Standard-LaTeX versteht
Hast du gerade mal ein Beispiel?

Viele Gruesse
Heiko <***@uni-freiburg.de>
Harald Harders
2004-11-20 00:39:52 UTC
Permalink
Post by Heiko Oberdiek
Post by Harald Harders
Das Problem ist eine Unvertraeglichkeit zwischen calc.sty und
datenumber.sty. Es gab schon Vorschlaege, wie calc verbessert werden
koennte, so dass solche Faelle nicht auftreten. Die Entwickler von
LaTeX sahen aber keinen Handlungsbedarf, weil ja angeblich die Pakete
den Fehler enthalten. Demnach ist also datenumber.sty buggy. Diese Probleme
mit calc.sty kotzen mich langsam an.
Wenn ich mal Zeit finde, werde ich alle meine Pakete (also auch numprint)
so umstricken, dass sie ohne das immer vorhandene calc auskommen. Weil
also calc Argumente nicht verarbeiten kann, die Standard-LaTeX versteht
Hast du gerade mal ein Beispiel?
Zum Beispiel datenumber. Wenn du in dem Beispiel, das in diesem Thread
genannt wurde, verwendest:

\documentclass{scrartcl}
%\usepackage{calc}
\usepackage[ngerman]{datenumber}
\setdatetoday
\addtocounter{datenumber}{30}%
\setdatebynumber{\thedatenumber}%
\begin{document}
\datedate
\end{document}

Ohne calc.sty geht es, mit nicht. Wir hatten vor kurzem schon mal eine
Diskussion, ich glaube auf ctt. Da ging es um isodate (das calc laedt
bzw. geladen hat) und HA-prosper.
Meines Wissens wurde auch ein Bugreport erstellt, der aber abgewiesen
wurde, weil die anderen Pakete "natuerlich" Schuld seien, dass der
\setcounter-Befehl (und \setlength) mit calc hoehere Ansprueche an das
Argument haben als normales LaTeX. Es war der Thread
"HA-prosper and isodate conflict" auf ctt.

Zu dem Thread hast du uebrigens auch beigetragen und sinngemaess gesagt,
dass ein Paketautor, der \setlength mit einem Argument fuettert, das
LaTeX verarbeiten kann, sich unter Umstaenden ausserhalb von LaTeX
befindet und nicht erwarten kann, dass das nach dem Laden von calc
immer noch geht. Ich sehe das uebrigens anders. Meines Erachtens muesste
calc.sty alles fressen, was LaTeX ohne das Paket auch korrekt verarbeiten
kann. Ein Standardpaket, das nicht ausdruecklich zum Einschraenken auf
einem Gebiet gedacht ist, darf solche Seiteneffekte nicht haben.

Gruss
Harald
--
Harald Harders
***@tu-bs.de
http://www.harald-harders.de
Heiko Oberdiek
2004-11-20 01:17:27 UTC
Permalink
Post by Harald Harders
Post by Heiko Oberdiek
Hast du gerade mal ein Beispiel?
Zum Beispiel datenumber. Wenn du in dem Beispiel, das in diesem Thread
\documentclass{scrartcl}
%\usepackage{calc}
\usepackage[ngerman]{datenumber}
\setdatetoday
\addtocounter{datenumber}{30}%
\setdatebynumber{\thedatenumber}%
\begin{document}
\datedate
\end{document}
Ohne calc.sty geht es, mit nicht. Wir hatten vor kurzem schon mal eine
Diskussion, ich glaube auf ctt. Da ging es um isodate (das calc laedt
bzw. geladen hat) und HA-prosper.
Meines Wissens wurde auch ein Bugreport erstellt, der aber abgewiesen
wurde, weil die anderen Pakete "natuerlich" Schuld seien, dass der
\setcounter-Befehl (und \setlength) mit calc hoehere Ansprueche an das
Argument haben als normales LaTeX. Es war der Thread
"HA-prosper and isodate conflict" auf ctt.
Zu dem Thread hast du uebrigens auch beigetragen und sinngemaess gesagt,
dass ein Paketautor, der \setlength mit einem Argument fuettert, das
LaTeX verarbeiten kann, sich unter Umstaenden ausserhalb von LaTeX
befindet und nicht erwarten kann, dass das nach dem Laden von calc
immer noch geht. Ich sehe das uebrigens anders. Meines Erachtens muesste
calc.sty alles fressen, was LaTeX ohne das Paket auch korrekt verarbeiten
kann. Ein Standardpaket, das nicht ausdruecklich zum Einschraenken auf
einem Gebiet gedacht ist, darf solche Seiteneffekte nicht haben.
In dem Beispiel ist genau dasselbe passiert wie im Thread, es bleibt
ein \fi uebrig. So muss datenumber lediglich dafuer sorgen, dass das
\fi vor dem Ende der Zahl wegexpandiert wird. Ziemlich trivial sogar
in diesem Fall:

\addtocounter{@dayscnt}{%
\ifcase #3%
\or 0\or 31\or 59
\or 90\or 120\or 151
\or 181\or 212\or 243
\or 273\or 304\or 334
\fi
}%

Einfach die Zeilenenden auskommentiert, das haette schon gereicht,
der Code verbraucht dann sogar weniger Tokens:

\addtocounter{@dayscnt}{%
\ifcase #3%
\or 0\or 31\or 59%
\or 90\or 120\or 151%
\or 181\or 212\or 243%
\or 273\or 304\or 334%
\fi
}%

TeX weiss ja am Ende der Zahl noch nicht, ob sie wirklich
fertig ist und beim Nachschauen, ob noch Ziffern folgen,
wird das \fi gleich mitentsorgt.

Uebrigens habe ich als Ergebnis dieses von dir erwaehnten Threads
ein Paket geschrieben, das calc um ein paar Features erweitert:
* \totalheightof
* Min- und Max-Operatoren
* Die Expansionsverbesserung von David Carlisle, durch den dann
auch ein nicht rechtzeitig entsorgtes \fi nicht mehr stoert.
(Bis das in ein LaTeX-Release einfliesst, dauert das ja wohl noch
eine Weile.)

Es fehlt noch etwas an der Dokumentation und am DTX-Framework
wollte ich noch etwas basteln und die naechsten Tage werde ich
nicht dazukommen, aber ich plane das Paket Ende November/Anfang
Dezember herauszubringen.

Viele Gruesse
Heiko <***@uni-freiburg.de>
Harald Harders
2004-11-20 11:54:27 UTC
Permalink
Post by Heiko Oberdiek
In dem Beispiel ist genau dasselbe passiert wie im Thread, es bleibt
ein \fi uebrig. So muss datenumber lediglich dafuer sorgen, dass das
\fi vor dem Ende der Zahl wegexpandiert wird.
[...]
Post by Heiko Oberdiek
TeX weiss ja am Ende der Zahl noch nicht, ob sie wirklich
fertig ist und beim Nachschauen, ob noch Ziffern folgen,
wird das \fi gleich mitentsorgt.
Man lernt ja nie aus. Darauf waere ich nicht gekommen.
Post by Heiko Oberdiek
Uebrigens habe ich als Ergebnis dieses von dir erwaehnten Threads
* \totalheightof
* Min- und Max-Operatoren
* Die Expansionsverbesserung von David Carlisle, durch den dann
auch ein nicht rechtzeitig entsorgtes \fi nicht mehr stoert.
(Bis das in ein LaTeX-Release einfliesst, dauert das ja wohl noch
eine Weile.)
Es fehlt noch etwas an der Dokumentation und am DTX-Framework
wollte ich noch etwas basteln und die naechsten Tage werde ich
nicht dazukommen, aber ich plane das Paket Ende November/Anfang
Dezember herauszubringen.
Ist das ein Zusatzpaket zu calc oder eine Erweiterung zu calc, die einige
Probleme mit calc gleich behebt? Oder verstehe ich das richtig, dass du
ein Extrapaket schreibst und trotzdem in calc irgendwann die
Expansionsverbesserung von David einfliessen wird?

Irgendwie werde ich mich wohl nie richtig damit abfinden koennen, dass
es calc die Anwendbarkeit von \setcounter einschraenkt, auch wenn das
normale Verhalten vielleicht Argumente "am Rande der Legalitaet"
versteht. Aber die Diskussion wurde ja schon in ctt abgeschmettert. Meine
Konsequenz ist jetzt ganz einfach: Meine Pakete werden auf keinen Fall
mehr calc.sty verwenden.

Gruss
Harald
--
Harald Harders
***@tu-bs.de
http://www.harald-harders.de
Heiko Oberdiek
2004-11-20 15:39:42 UTC
Permalink
Post by Harald Harders
Ist das ein Zusatzpaket zu calc oder eine Erweiterung zu calc, die einige
Probleme mit calc gleich behebt?
Es laedt selber calc.sty und fuegt die drei genannten Features hinzu.
Post by Harald Harders
Oder verstehe ich das richtig, dass du
ein Extrapaket schreibst und trotzdem in calc irgendwann die
Expansionsverbesserung von David einfliessen wird?
Als der Thread lief, hatte ich mir noch keine Handschuhe gekauft,
daher habe ich mich nicht getraut, mich mit Fragen an den
tiefgekuehlten Zustand von LaTeX heranzutasten.
Post by Harald Harders
Irgendwie werde ich mich wohl nie richtig damit abfinden koennen, dass
es calc die Anwendbarkeit von \setcounter einschraenkt,
Nein, mit \fi und Konsorten bewegst du dich klar ausserhalb der
Spezifikation von \setcounter.
Post by Harald Harders
auch wenn das
normale Verhalten vielleicht Argumente "am Rande der Legalitaet"
versteht. Aber die Diskussion wurde ja schon in ctt abgeschmettert. Meine
Konsequenz ist jetzt ganz einfach: Meine Pakete werden auf keinen Fall
mehr calc.sty verwenden.
Es gibt Argumente dafuer, ob man auf Paketimplementierungsebene
leichter wartbaren Code mit calc verwendet oder ihn zu einfacheren
Anweisungen heruntercompiliert, die dann vielleicht schneller
ausgefuehrt werden und eine Paketabhaengigkeit entfernen.
Wirklich wichtig finde ich eigentlich nur, dass man bei Argumenten
von Benutzerbefehlen, die Zahlen, Laengen etc. verwenden, man
intern ueber die LaTeX-Interfaces \setcounter, \addtolength etc.
arbeitet, so dass der Benutzer spaeter die Freiheit hat, Zusatzpakete
wie calc zu laden.

Viele Gruesse
Heiko <***@uni-freiburg.de>
Harald Harders
2004-11-20 20:28:06 UTC
Permalink
On Sat, 20 Nov 2004 16:39:42 +0100, Heiko Oberdiek wrote:
[...]
Post by Heiko Oberdiek
Post by Harald Harders
Oder verstehe ich das richtig, dass du
ein Extrapaket schreibst und trotzdem in calc irgendwann die
Expansionsverbesserung von David einfliessen wird?
Als der Thread lief, hatte ich mir noch keine Handschuhe gekauft,
daher habe ich mich nicht getraut, mich mit Fragen an den
tiefgekuehlten Zustand von LaTeX heranzutasten.
Ja, LaTeX ist manchmal schon sehr traege.
Post by Heiko Oberdiek
Post by Harald Harders
Irgendwie werde ich mich wohl nie richtig damit abfinden koennen, dass
es calc die Anwendbarkeit von \setcounter einschraenkt,
Nein, mit \fi und Konsorten bewegst du dich klar ausserhalb der
Spezifikation von \setcounter.
Das sehe ich ja auch ein. Aber die meisten Paketautoren machen es
sicherlich wie ich. Sie schreiben etwas und testen es in einigen
Konfigurationen, und wenn es dann funktioniert, sieht man es als
korrekt an. Und calc verhindert halt die Verwendung von Dingen, die
ohne calc gehen. Und da ist es egal, ob das Argument ausserhalb einer
Spezifikation ist.
Post by Heiko Oberdiek
Wirklich wichtig finde ich eigentlich nur, dass man bei Argumenten
von Benutzerbefehlen, die Zahlen, Laengen etc. verwenden, man
intern ueber die LaTeX-Interfaces \setcounter, \addtolength etc.
arbeitet, so dass der Benutzer spaeter die Freiheit hat, Zusatzpakete
wie calc zu laden.
Das ist aber den meisten Paketautoren nicht bewusst. Gibt es eigentlich
auch einen LaTeX-Befehl zum Multiplizieren und Dividieren von Countern?
Ich habe nichts gefunden und dann so etwas wie

\divide \***@zaehler 3

verwendet. Das ist recht unschoen, finde ich.

Gruss
Harald
--
Harald Harders
***@tu-bs.de
http://www.harald-harders.de
Heiko Oberdiek
2004-11-20 22:54:30 UTC
Permalink
Post by Harald Harders
Das ist aber den meisten Paketautoren nicht bewusst. Gibt es eigentlich
auch einen LaTeX-Befehl zum Multiplizieren und Dividieren von Countern?
\usepackage{calc} ;-)
Post by Harald Harders
Ich habe nichts gefunden und dann so etwas wie
e-TeX: \numexpr\***@zaehler/3\relax
Aber Achtung, es wird gerundet!

Viele Gruesse
Heiko <***@uni-freiburg.de>
Harald Harders
2004-11-21 14:19:15 UTC
Permalink
Post by Heiko Oberdiek
Post by Harald Harders
Das ist aber den meisten Paketautoren nicht bewusst. Gibt es eigentlich
auch einen LaTeX-Befehl zum Multiplizieren und Dividieren von Countern?
\usepackage{calc} ;-)
:-)
Post by Heiko Oberdiek
Post by Harald Harders
Ich habe nichts gefunden und dann so etwas wie
Aber Achtung, es wird gerundet!
Nee, das will ich nicht. Ich brauche genau das Abschneiden der
Nachkommastellen, wie es mit \divide ist. Trotzdem danke.

Gruss
Harald
--
Harald Harders
***@tu-bs.de
http://www.harald-harders.de
Loading...