PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vergleich von zwei strings mit ifthenelse



Llarian
11-12-2014, 11:07
Hallo allerseits,

ich versuche, zwei strings mittels ifthenelse miteinander zu vergleichen. Leider entsteht bei der expansion der Variable, in der der eine string steht, ein Fehler, den ich nicht nachvollziehen kann. Hier mein Minimalbeispiel:



\documentclass{article}
\usepackage{xifthen}
\usepackage{datetime}
\usepackage{pgf}

\def\year{1906}
\def\xmasday{\dayofweekname{24}{12}{\year}}


\begin{document}

\ifthenelse{\equal{\xmasday}{Monday}}{\pgfmathsetm acro{\FirstSunday}{27}}{}

Christmas Day is \xmasday.

\end{document}



Als Fehlermeldung bekomme ich
! Incomplete \iffalse; all text was ignored after line x.
Ersetzte ich
\def\xmasday{\dayofweekname{24}{12}{\year}} durch
\def\xmasday{Monday} funktioniert es.

Bin für jede Idee dankbar!

klops
11-12-2014, 13:17
\dayofweekname ist nicht voll expandierbar. Daher kann der Vergleich nicht funktionieren.

Llarian
11-12-2014, 13:30
Danke für die Erklärung! Die Fehlermeldung hat ja schon sowas angedeutet :( Hast Du auch eine Idee für eine Variante, die funktioniert?

klops
11-12-2014, 13:47
Probier mal:

\documentclass{article}
\usepackage{scrdate}
\usepackage{pgf}

\def\year{1906}
\def\xmasday{\DayName{\year}{12}{24}}


\begin{document}

\ifnum \DayNumber{\year}{12}{24}=1 % 1 = Montag, siehe KOMA-Script-Anleitung
\pgfmathsetmacro{\FirstSunday}{27}
\fi
Christmas Day is \xmasday.

\end{document}

Llarian
11-12-2014, 14:01
Läuft, vielen Dank :)
Aber: \DayName behauptet, der 24.12.1906 wäre ein Dienstag gewesen. \dayofweekname und Tante google sagen beide, es war ein Montag ??? Was gibt dein Code denn bei dir zurück?

u_fischer
11-12-2014, 14:28
Nun, da auch beim 24.12.2014 der falsche Wochentag rauskommt (und da brauche ich kein Google), ist es wohl ein Bug und du solltest mal Markus Kohm anschreiben. Wenn du übrigens eine Sprache lädst (\usepackage[ngerman]{babel}), passt es wieder, das heißt nur die Defaultdefinition vertut sich.

klops
11-12-2014, 14:31
Interessanter Weise gibt \DayNumber die richtige Nummer, nämlich 1 zurück. \DayName oder auch \DayNameByNumber macht daraus aber einen Dienstag. Für heute wird ebenfalls ein Freitag gemeldet. Sieht mir nach einem Bug bei der Umwandlung von Zahl in String aus …

Bis dahin vielleicht:
\documentclass{article}
\usepackage{scrdate}
\usepackage{pgf}
\usepackage[english]{babel}

\def\year{1906}
\def\xmasday{\DayName{\year}{12}{24}}%

\begin{document}

\ifnum \DayNumber{\year}{12}{24}=1 % 1 = Montag, siehe KOMA-Script-Anleitung
\pgfmathsetmacro{\FirstSunday}{27}
\fi
Christmas Day is \xmasday.

\end{document}

Llarian
11-12-2014, 16:38
Ist alles genau so, wie ihr sagt! Vielen Dank für Eure Hilfe. Ich werde erstmal einfach eine Sprache laden und mir einen Kommentar ranmachen :)

esdd
11-12-2014, 18:42
Siehe Bekannte Probleme und Änderungen in KOMA-Script 3.14 (http://www.komascript.de/release3.14). In der nächsten KOMA-Script Version dürfte das also behoben sein.