Ich möchte wenn \ifstr zutrifft einen Wert in einer Variable speichern.

Ich habe das versucht nur leider funktioniert es nicht.

Open in writeLaTeX
\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{scrdate}
\usepackage{pgffor}

\newcommand\jahr{2016}
\begin{document}
\huge{Jahr: \jahr, \\ Neujahr: \DayName{\jahr}{1}{1}, erster Montag:}
\foreach \tag in {1,...,7}{%
    \ifstr{\DayName{\jahr}{1}{\tag}}
        {\DayNameByNumber{1}}
        {\tag.\,Januar~\jahr
        \newcommand[\firstmonday]{\tag.\,Januar~\jahr}}% HIER
    {}%
    Der erste Montag im Jahr \firstmonday.
}
\end{document}

gefragt 09 Jan '15, 15:25

micneu's gravatar image

micneu
25124
Akzeptiert-Rate: 0%

bearbeitet 09 Jan '15, 17:55

saputello's gravatar image

saputello
11.1k174365

Code markieren und <strg>+<k> drücken um Code zu markieren. Ich war anfangs auch von Markdown verwirrt. ;-)

(09 Jan '15, 15:37) Johannes

@micneu: Bitte beachte meinen Kommentar und meine Änderungen zu Deiner anderen Frage.

(09 Jan '15, 17:51) saputello
2
(10 Jan '15, 11:25) esdd

Neben mindestens einem Klammerfehler besteht eines der Probleme darin, dass die Definition von \firstmonday mit \newcommand in einer \foreach Schleife nicht global ist. Verwende statt dessen \xdef:

\documentclass{scrreprt}
%\providecommand*\Ifstr{\ifstr}% nötig bis einschließlich KOMA-Script version 3.27, see https://komascript.de/faq_deprecatedif
\usepackage[ngerman]{babel}
%\usepackage[utf8]{inputenc}% nur bei veralteten TeX-Distributionen nötig
\usepackage[T1]{fontenc}

\usepackage{scrdate}
\usepackage{pgffor}
\newcommand\firstmonday{}% Kontrolle, dass \firstmonday noch nicht definiert

\newcommand\jahr{2016}

\begin{document}
{\raggedright
  {\huge 
    Jahr: \jahr,\par
    Neujahr: \DayName{\jahr}{1}{1},\par
    erster Montag:
      \foreach \tag in {1,...,7}{%
        \Ifstr{\DayName{\jahr}{1}{\tag}}{\DayNameByNumber{1}}{%
          \xdef\firstmonday{\tag.\,Januar~\jahr}\firstmonday\breakforeach%
        }{}%
      }\par
  }
  \bigskip
  Gespeichert ist der \firstmonday\par
}
\end{document}

alt text

Das gleiche Ergebnis erreichst Du übrigens auch, wenn Du in dem Vorschlag von @Ulrike ebenfalls \jahr definierst und die Berechnung entsprechend dem Kommentar von @saputello änderst:

\documentclass{scrreprt}
%\providecommand*\Ifstr{\ifstr}% nötig bis einschließlich KOMA-Script version 3.27, see https://komascript.de/faq_deprecatedif
\usepackage[ngerman]{babel}
%\usepackage[utf8]{inputenc}% nur bei veralteten TeX-Distributionen nötig
\usepackage[T1]{fontenc}

\usepackage{scrdate}

\newcommand\jahr{2007}
\newcommand\erstermontag{%
  \the\numexpr\XmodY{8-\DayNumber{\jahr}{1}{1}}{7}+1\relax.\,Januar~\jahr}

\begin{document}
{\raggedright
  {\huge 
    Jahr: \jahr,\par
    Neujahr: \DayName{\jahr}{1}{1},\par
    erster Montag: \erstermontag
  \par}
  \bigskip
  Gespeichert ist der \erstermontag\par
}
\end{document}

alt text

Permanenter link

beantwortet 09 Jan '15, 16:05

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 16 Jan '20, 14:12

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

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

Frage-Themen:

×131
×27
×19
×5

gestellte Frage: 09 Jan '15, 15:25

Frage wurde gesehen: 9,250 Mal

zuletzt geändert: 10 Jan '15, 11:25