Anzeige:
Ergebnis 1 bis 10 von 10

Thema: Arithmetische Tests: Paket etoolbox statt ifthen?

  1. #1
    Registrierter Benutzer Avatar von lockstep
    Registriert seit
    31.08.2008
    Beiträge
    1.487

    Arithmetische Tests: Paket etoolbox statt ifthen?

    Vor einigen Tagen wurde in diesem 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 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
    idxlayout - Konfigurierbares Index-Layout, kompatibel mit KOMA-Script und memoir

  2. #2
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von lockstep Beitrag anzeigen
    Vor einigen Tagen wurde in diesem 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 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

  3. #3
    Registrierter Benutzer Avatar von lockstep
    Registriert seit
    31.08.2008
    Beiträge
    1.487
    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
    idxlayout - Konfigurierbares Index-Layout, kompatibel mit KOMA-Script und memoir

  4. #4
    Registrierter Benutzer Avatar von voss
    Registriert seit
    10.04.2005
    Beiträge
    5.045
    Zitat Zitat von lockstep Beitrag anzeigen
    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

  5. #5
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Zitat Zitat von lockstep Beitrag anzeigen
    kein Pendant zu den ifthen-Befehlen \isodd und \whiledo aufweist.
    Code:
    \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

  6. #6
    Registrierter Benutzer Avatar von lockstep
    Registriert seit
    31.08.2008
    Beiträge
    1.487
    Und so wär's noch besser:

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


    lockstep
    idxlayout - Konfigurierbares Index-Layout, kompatibel mit KOMA-Script und memoir

  7. #7
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Zitat Zitat von lockstep Beitrag anzeigen
    Und so wär's noch besser:

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


    lockstep
    Ist schon spät.

    Gruß
    Marco

  8. #8
    Registrierter Benutzer Avatar von lockstep
    Registriert seit
    31.08.2008
    Beiträge
    1.487
    Zitat Zitat von lockstep Beitrag anzeigen
    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 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
    idxlayout - Konfigurierbares Index-Layout, kompatibel mit KOMA-Script und memoir

  9. #9
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.858
    Moin moin,
    Zitat Zitat von lockstep Beitrag anzeigen
    etoolbox liegt nummehr in der Version 1.9 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;-)
    Zitat Zitat von lockstep Beitrag anzeigen
    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.

    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  10. #10
    Registrierter Benutzer Avatar von lockstep
    Registriert seit
    31.08.2008
    Beiträge
    1.487
    Zitat Zitat von rais Beitrag anzeigen
    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.;-)
    Gutes Argument. Solange der etoolbox-Macher selbst ifthen verwendet, ist es jedenfalls nicht veraltet.

    Zitat Zitat von rais Beitrag anzeigen
    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.

    Zitat Zitat von rais Beitrag anzeigen
    Das soll natürlich niemanden davon abhalten, etoolbox weiter zu empfehlen.
    Tue ich hiermit. Ich sage nur: \patchcmd - ein Segen, wenn man längere Makrodefinitionen selektiv abändern möchte.

    lockstep
    idxlayout - Konfigurierbares Index-Layout, kompatibel mit KOMA-Script und memoir

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •