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, 09:25

micneu's gravatar image

micneu
2514
Akzeptiert: 100%

bearbeitet 09 Jan '15, 11:55

saputello's gravatar image

saputello
18.4k22352

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

(09 Jan '15, 09:37) Johannes

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

(09 Jan '15, 11:51) saputello
2
(10 Jan '15, 05: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:

Open in writeLaTeX
\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\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:

Open in writeLaTeX
\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\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, 10:05

esdd's gravatar image

esdd
14.2k53251

bearbeitet 09 Jan '15, 15:59

saputello's gravatar image

saputello
18.4k22352

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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

Zugeordnete Themen:

×73
×17
×8
×4

Frage gestellt: 09 Jan '15, 09:25

Frage wurde angeschaut: 2,137 Mal

Zuletzt aktualisiert: 10 Jan '15, 05:25