\pgfmathdeclarefunction{DayNoYear} berechnet die Tagesnummer zu einem gegebenen Datum.

alt text

Die erste Zahl 91 ist richtig, doch zeigt es auch noch das ganze Datum an.

Was muss ich einstellen, damit nur die 91 angezeigt wird?

Öffne in Overleaf
\documentclass[margin=5mm, varwidth]{standalone}
\usepackage{tikz}

\begin{document}
\pgfmathdeclarefunction{DayNoYear}{3}{
%\begingroup   % Braucht man das?
\pgfmathtruncatemacro{\a}{#2<3 ? #1-1 : #1}%
\pgfmathtruncatemacro{\b}{floor(\a/4)-floor(\a/100)+floor(\a/400)}%
\pgfmathtruncatemacro{\c}{floor((\a-1)/4)-floor((\a-1)/100)+floor((\a-1)/400)}%
\pgfmathtruncatemacro{\s}{\b-\c}%
\pgfmathtruncatemacro{\e}{#2<3 ? 0 : \s+1}%
\pgfmathtruncatemacro{\f}{#2<3 ? 
\day-1+31*(\month-1) : #3+floor((153*(#2-3)+2)/5)+58+\s}%
\pgfmathtruncatemacro{\Dayno}{\f+1}\Dayno
%\pgfmathreturn\f+1
%\pgfmathreturn\Dayno
%    \endgroup%
}
Test: \pgfmathparse{DayNoYear(2018,4,1)}\pgfmathresult

\end{document}

gefragt 01 Nov, 14:07

cis's gravatar image

cis
8.3k16171267
Akzeptiert: 68%

bearbeitet 01 Nov, 14:09

1

Die Zahl kommt von Dayno, das Datum von pgfmathresult. pgfmathreturn erwartet etwas, dass man einer Dimension zuweisen kann, also z.B. \pgfmathreturn\Dayno pt (und ja, das sieht schrecklich aus).

(01 Nov, 14:46) Ulrike Fischer

Alternativ geht auch \pgfmathparse{int(\f+1)}%, um das Ergebnis an \pgfmathresult zu übergeben. Dann kannst Du die Definition von \Dayno weglassen.

Du fügst übrigens ein zusätzliches Leerzeichen durch das nicht auskommentierte Zeilenende zu Beginn des Funktionscodes ein.

(01 Nov, 15:02) esdd

@esdd: Aber wenn ich das mache "\pgfmathparse{int(\f+1)}" steht nur noch das Datum da "201841", ich will ja nur die Tagesnummer "91". Kannst Du bitte posten, wie Du das meinst?

(01 Nov, 15:41) cis

Eine Möglichkeit:

Öffne in Overleaf
\documentclass[margin=5mm, varwidth]{standalone}
\usepackage{tikz}

\pgfmathdeclarefunction{DayNoYear}{3}{% <- Zeilenende auskommentiert
  \pgfmathtruncatemacro{\a}{#2<3 ? #1-1 : #1}%
  \pgfmathtruncatemacro{\b}{floor(\a/4)-floor(\a/100)+floor(\a/400)}%
  \pgfmathtruncatemacro{\c}{floor((\a-1)/4)-floor((\a-1)/100)+floor((\a-1)/400)}%
  \pgfmathtruncatemacro{\s}{\b-\c}%
  \pgfmathtruncatemacro{\e}{#2<3 ? 0 : \s+1}%
  \pgfmathtruncatemacro{\f}{#2<3 ? 
  \day-1+31*(\month-1) : #3+floor((153*(#2-3)+2)/5)+58+\s}%
  \pgfmathparse{int(\f+1)}% <- geändert
}

\begin{document}
Test: \pgfmathparse{DayNoYear(2018,4,1)}\pgfmathresult
\end{document}

alt text

Permanenter link

beantwortet 01 Nov, 17:47

esdd's gravatar image

esdd
16.9k83854

Oh, dieses group musste weg. Dann gehts.

(01 Nov, 18:47) cis
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

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:

×7

Frage gestellt: 01 Nov, 14:07

Frage wurde angeschaut: 118 Mal

Zuletzt aktualisiert: 01 Nov, 18:47