PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Arithmetische Tests: Paket etoolbox statt ifthen?



lockstep
18-02-2010, 21:27
Vor einigen Tagen wurde in diesem (http://www.golatex.de/includegraphics-und-ifthenelse-t3954.html) Thread des golatex-Forums ein scheinbares Kompatibilitätsproblem zwischen den Paketen ifthen und graphicx gemeldet. In einem Folgepost wurde die Meinung vertreten, dass der Befehl \ifthenelse problematisch sei, da er nicht expandierbar sei, jedoch sein Argument expandiere. Stattdessen wurden "expandierbare Tests aus moderneren Paketen wie etoolbox oder expl3 oder primitive TeX-Tests wie \ifnum" empfohlen. Der Original-Poster, dessen Anfrage einen arithmetischen Test betraf, berichtete etwas später, dass sein Problem durch Verwendung eines Tests aus dem Paket etoolbox behoben werden konnte. Ich habe daraufhin in diesem (http://www.mrunix.de/forums/showthread.php?t=52211) Thread dieses Forums das Paket ifthen als veraltet (mit dem Zusatz "für arithmetische Tests") gemeldet. Herbert Voss hat vor kurzem die Meinung vertreten, dass ifthen "definitiv nicht veraltet" sei.

Ich ersuche - wie gewünscht in einem separaten Thread - um Aufklärung, warum nicht.

lockstep

voss
18-02-2010, 21:32
Vor einigen Tagen wurde in diesem (http://www.golatex.de/includegraphics-und-ifthenelse-t3954.html) Thread des golatex-Forums ein scheinbares Kompatibilitätsproblem zwischen den Paketen ifthen und graphicx gemeldet. In einem Folgepost wurde die Meinung vertreten, dass der Befehl \ifthenelse problematisch sei, da er nicht expandierbar sei, jedoch sein Argument expandiere. Stattdessen wurden "expandierbare Tests aus moderneren Paketen wie etoolbox oder expl3 oder primitive TeX-Tests wie \ifnum" empfohlen. Der Original-Poster, dessen Anfrage einen arithmetischen Test betraf, berichtete etwas später, dass sein Problem durch Verwendung eines Tests aus dem Paket etoolbox behoben werden konnte. Ich habe daraufhin in diesem (http://www.mrunix.de/forums/showthread.php?t=52211) Thread dieses Forums das Paket ifthen als veraltet (mit dem Zusatz "für arithmetische Tests") gemeldet. Herbert Voss hat vor kurzem die Meinung vertreten, dass ifthen "definitiv nicht veraltet" sei.


Als veraltet bezeichnen wir grundsätzlich Pakete, die durch neuere mit gleicher
Funktionalität (glossery->glossaries} ersetzt wurden oder ein negatives
Verhalten auf den Textsatz haben (a4wide). Ist dies nicht gegeben, so ist
ein Paket auch nicht veraltet.
Statt etoolbox zu verwenden, kann ich auch mit einem der bekannten \if...
Konstrukte arbeiten, wenn ich auf die Expansion angewiesen bin. Was man
wiederum nur dann ist, wenn ein \ifthen-Konstrukt Teil eines Arguments ist.
Ansonsten kann jeder das verwenden, was er persönlich bevorzugt.

Herbert

lockstep
18-02-2010, 21:49
Danke für die Erläuterungen! Ich selbst verwende etoolbox, das einen großen Teil der Funktionalität von ifthen abdeckt, aber (zumindest auf den ersten Blick) kein Pendant zu den ifthen-Befehlen \isodd und \whiledo aufweist.

lockstep

voss
18-02-2010, 21:59
Danke für die Erläuterungen! Ich selbst verwende etoolbox, das einen großen Teil der Funktionalität von ifthen abdeckt, aber (zumindest auf den ersten Blick) kein Pendant zu den ifthen-Befehlen \isodd und \whiledo aufweist.


ich mache fast alles mit einem der vielen \ifxxx ... \else ... \fi

Herbert

mechanicus
18-02-2010, 22:17
kein Pendant zu den ifthen-Befehlen \isodd und \whiledo aufweist.


\documentclass{minimal}
\def\test#1{%
\ifodd#1 Ist gerade\else Ist ungerade\fi}
\newcount\n
\def\testI#1{%
\n=0
\loop
bla~
\advance\n by 1
\ifnum\n<#1
\repeat
}
\begin{document}
\test{3}

\test{4}

\testI{3}

\testI{4}
\end{document}
wenn du auf ifthen verzichten willst. ;)

Gruß
Marco

lockstep
18-02-2010, 22:24
Und so wär's noch besser:



\def\test#1{%
\ifodd#1 Ist ungerade\else Ist gerade\fi}


:D

lockstep

mechanicus
18-02-2010, 22:26
Und so wär's noch besser:



\def\test#1{%
\ifodd#1 Ist ungerade\else Ist gerade\fi}


:D

lockstep

Ist schon spät. :p:p

Gruß
Marco

lockstep
10-04-2010, 20:51
Ich selbst verwende etoolbox, das einen großen Teil der Funktionalität von ifthen abdeckt, aber (zumindest auf den ersten Blick) kein Pendant zu den ifthen-Befehlen \isodd und \whiledo aufweist.

etoolbox liegt nummehr in der Version 1.9 (http://www.tex.ac.uk/tex-archive/macros/latex/contrib/etoolbox/etoolbox.pdf) vor - u.a. wurden die Befehle \ifnumodd, \whileboolexpr und \unlessboolexpr hinzugefügt, die auf den ersten Blick die oben genannten ifthen-Befehle ersetzen. Damit wäre die gesamte Funktionalität des Paketes ifthen abgedeckt.

Wäre ifthen in diesem Fall "veraltet", oder bezieht sich die mrunix-Definition von "veraltet" auf Nachfolgepakete des gleichen Autors (glossary -> glossaries)?

lockstep

rais
11-04-2010, 11:30
Moin moin,

etoolbox liegt nummehr in der Version 1.9 (http://www.tex.ac.uk/tex-archive/macros/latex/contrib/etoolbox/etoolbox.pdf) vor - u.a. wurden die Befehle \ifnumodd, \whileboolexpr und \unlessboolexpr hinzugefügt, die auf den ersten Blick die oben genannten ifthen-Befehle ersetzen. Damit wäre die gesamte Funktionalität des Paketes ifthen abgedeckt.

die Doku ist ja quasi noch druckfrisch;-)

Wäre ifthen in diesem Fall "veraltet", oder bezieht sich die mrunix-Definition von "veraltet" auf Nachfolgepakete des gleichen Autors (glossary -> glossaries)?

Imho weder noch. Bestenfalls hielte ich `ifthen sei veraltet' für verfrüht ... und dann gibt's ja noch Pakete, die intern ifthen bereits verwenden, z.B. (bei der mir vorliegenden Version 0.9a) biblatex.;-)
Aber selbst dann, wenn Philipp in seinem biblatex-Paket komplett von ifthen auf seine eigenen etoolbox-Routinen umschwenken sollte (wovon ja fast schon auszugehen ist, wenn er sich bereits entsprechende Befehle definiert hat), hieße das ja nicht zwangsläufig, daß ifthen veraltet sei, nur daß er eine für sich bessere Lösung gefunden hat, das eine oder andere Problem anzugehen.
Für jemand anderen mag ifthen genau die richtige Lösung für sein Problem bieten (nicht, daß es mit etoolbox nicht lösbar wäre).

Das soll natürlich niemanden davon abhalten, etoolbox weiter zu empfehlen.:cool:

MfG

lockstep
11-04-2010, 11:47
Bestenfalls hielte ich `ifthen sei veraltet' für verfrüht ... und dann gibt's ja noch Pakete, die intern ifthen bereits verwenden, z.B. (bei der mir vorliegenden Version 0.9a) biblatex.;-)

:D Gutes Argument. Solange der etoolbox-Macher selbst ifthen verwendet, ist es jedenfalls nicht veraltet.


Für jemand anderen mag ifthen genau die richtige Lösung für sein Problem bieten (nicht, daß es mit etoolbox nicht lösbar wäre).

Bis vor kurzem gab es Fälle, in denen ifthen gegenüber etoolbox eindeutig unterlegen war (siehe den Link in meinem ersten Beitrag), aber auch Dinge, die mit etoolbox-Bordmitteln nicht bewältigbar waren. Letztere Dinge gibt es jetzt offenbar nicht mehr.


Das soll natürlich niemanden davon abhalten, etoolbox weiter zu empfehlen.:cool:

Tue ich hiermit. Ich sage nur: \patchcmd - ein Segen, wenn man längere Makrodefinitionen selektiv abändern möchte.

lockstep