From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 graphics/pgf/base/tex/tikzlibrarycalendar.code.tex | 458 +++++++++++++++++++++
 1 file changed, 458 insertions(+)
 create mode 100644 graphics/pgf/base/tex/tikzlibrarycalendar.code.tex

(limited to 'graphics/pgf/base/tex/tikzlibrarycalendar.code.tex')

diff --git a/graphics/pgf/base/tex/tikzlibrarycalendar.code.tex b/graphics/pgf/base/tex/tikzlibrarycalendar.code.tex
new file mode 100644
index 0000000000..f3e8439491
--- /dev/null
+++ b/graphics/pgf/base/tex/tikzlibrarycalendar.code.tex
@@ -0,0 +1,458 @@
+% Copyright 2006 by Till Tantau
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+%
+% See the file doc/generic/pgf/licenses/LICENSE for more details.
+
+\ProvidesFileRCS{tikzlibrarycalendar.code.tex}
+
+
+\pgfutil@usemodule{pgfcalendar}
+
+
+%
+% General options (these options affect all calendars typeset unsind \calendar):
+%
+% Start, end, and code executed for each current date
+%
+
+\tikzoption{dates}{\tikz@lib@cal@parse#1\relax}
+\def\tikz@lib@cal@parse#1to#2\relax{%
+  \def\tikz@lib@cal@start{#1}
+  \def\tikz@lib@cal@end{#2}%
+}
+\tikzoption{execute at begin day scope}{\expandafter\def\expandafter\tikz@atbegin@day\expandafter{\tikz@atbegin@day#1}}
+\tikzoption{execute at end day scope}{%
+  \def\pgf@temp{#1}%
+  \expandafter\expandafter\expandafter\def%
+  \expandafter\expandafter\expandafter\tikz@atend@day%
+  \expandafter\expandafter\expandafter{\expandafter\pgf@temp\tikz@atend@day}}
+\tikzoption{execute before day scope}{\expandafter\def\expandafter\tikz@before@day\expandafter{\tikz@before@day#1}}
+\tikzoption{execute after day scope}{\expandafter\def\expandafter\tikz@after@day\expandafter{\tikz@after@day#1}}
+
+\let\tikz@atbegin@day=\pgfutil@empty
+\let\tikz@atend@day=\pgfutil@empty
+\let\tikz@before@day=\pgfutil@empty
+\let\tikz@after@day=\pgfutil@empty
+
+
+
+%
+% Options affecting some calendars:
+%
+
+%
+% Shifts and skips
+%
+
+% Shift between days
+
+\tikzoption{day xshift}{\def\tikz@lib@cal@xshift{#1}}
+\tikzoption{day yshift}{\def\tikz@lib@cal@yshift{#1}}
+
+\def\tikz@lib@cal@yshift{3ex}
+\def\tikz@lib@cal@xshift{3.5ex}
+
+
+% Shift between months
+
+\tikzoption{month xshift}{\def\tikz@lib@cal@month@xshift{#1}}
+\tikzoption{month yshift}{\def\tikz@lib@cal@month@yshift{#1}}
+
+\def\tikz@lib@cal@month@yshift{9ex}
+\def\tikz@lib@cal@month@xshift{9ex}
+
+
+
+
+% Templates for typesetting days, month, years
+
+\tikzoption{day code}{\def\tikzdaycode{#1}}
+\tikzoption{day text}{\def\tikzdaytext{#1}}
+\tikzoption{days}{\tikzset{every day/.append style={#1}}}
+\tikzset{every day/.style={anchor=base east}}
+
+\tikzoption{month code}{\def\tikzmonthcode{#1}}
+\tikzoption{month text}{\def\tikzmonthtext{#1}}
+\tikzset{every month/.style={}}
+
+\tikzoption{year code}{\def\tikzyearcode{#1}}
+\tikzoption{year text}{\def\tikzyeartext{#1}}
+\tikzset{every year/.style={}}
+
+\def\tikzdaycode{\node[name=\pgfcalendarsuggestedname,every day]{\tikzdaytext};}
+\def\tikzmonthcode{\node[every month]{\tikzmonthtext};}
+\def\tikzyearcode{\node[every year]{\tikzyeartext};}
+
+\def\tikzdaytext{\%d-}
+\def\tikzmonthtext{\%mt}
+\def\tikzyeartext{\%y0}
+
+
+% Internal option for storing the "width" of a calendar as a number of
+% days
+
+\tikzoption{tikz@lib@cal@width}{\def\tikz@lib@cal@width{#1}}
+
+\def\tikz@lib@cal@width{1}
+
+%
+% Days on a line
+%
+
+\tikzset{day list downward/.style={%
+  execute before day scope={
+    \ifdate{day of month=1}{\ifdate{equals=\pgfcalendarbeginiso}{}
+      {%
+        % On first of month, except when first date in calendar.
+        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@month@yshift}%
+        \pgftransformyshift{-\pgf@y}
+      }%
+    }{}%
+  },
+  execute after day scope={\pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}\pgftransformyshift{-\pgf@y}},
+  tikz@lib@cal@width=1
+}}
+\tikzset{day list upward/.style={%
+  execute before day scope={
+    \ifdate{day of month=1}{\ifdate{equals=\pgfcalendarbeginiso}{}
+      {%
+        % On first of month, except when first date in calendar.
+        \pgftransformyshift{\tikz@lib@cal@month@yshift}%
+      }%
+    }{}%
+  },
+  execute after day scope={\pgftransformyshift\tikz@lib@cal@yshift},
+  tikz@lib@cal@width=1
+}}
+\tikzset{day list right/.style={%
+  execute before day scope={
+    \ifdate{day of month=1}{\ifdate{equals=\pgfcalendarbeginiso}{}
+      {%
+        % On first of month, except when first date in calendar.
+        \pgftransformxshift{\tikz@lib@cal@month@xshift}%
+      }%
+    }{}%
+  },
+  execute after day scope={\pgftransformxshift\tikz@lib@cal@xshift},
+  tikz@lib@cal@width=30% not quite right, but close enough in most cases...
+}}
+
+\tikzset{day list left/.style={%
+  execute before day scope={
+    \ifdate{day of month=1}{\ifdate{equals=\pgfcalendarbeginiso}{}
+      {%
+        % On first of month, except when first date in calendar.
+        \pgfmathsetlength{\pgf@x}{\tikz@lib@cal@month@xshift}
+        \pgftransformxshift{-\pgf@x}%
+      }%
+    }{}%
+  },
+  execute after day scope={
+    \pgfmathsetlength{\pgf@x}{\tikz@lib@cal@xshift}
+    \pgftransformxshift{-\pgf@x}%
+  },
+  tikz@lib@cal@width=30% not quite right, but close enough in most cases...
+}}
+
+
+
+%
+% Week list
+%
+
+\tikzset{week list/.style={%
+  execute before day scope={%
+    \ifdate{day of month=1}{\ifdate{equals=\pgfcalendarbeginiso}{}
+      {%
+        % On first of month, except when first date in calendar.
+        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@month@yshift}%
+        \pgftransformyshift{-\pgf@y}
+      }%
+    }{}%
+  },
+  execute at begin day scope={%
+    \pgfmathsetlength\pgf@x{\tikz@lib@cal@xshift}%
+    \pgf@x=\pgfcalendarcurrentweekday\pgf@x%
+    \pgftransformxshift{\pgf@x}%
+  },
+  execute after day scope={%
+    \ifdate{Sunday}{%
+      \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}%
+      \pgftransformyshift{-\pgf@y}
+    }{}%
+  },
+  tikz@lib@cal@width=7
+}}
+
+
+
+%
+% Month list
+%
+
+\tikzset{month list/.style={%
+  execute before day scope={%
+    \ifdate{day of month=1}{\ifdate{equals=\pgfcalendarbeginiso}{}
+      {%
+        % On first of month, except when first date in calendar.
+        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@month@yshift}%
+        \pgftransformyshift{-\pgf@y}
+      }%
+    }{}%
+    \ifdate{day of month=1}
+    {%
+      \edef\tikz@lib@cal@month@list@start{\pgfcalendarcurrentweekday}%
+    }{}%
+    \ifdate{equals=\pgfcalendarbeginiso}%
+    {%
+      % Computer day of week for start of month
+      {%
+        \c@pgf@counta=\pgfcalendarcurrentjulian%
+        \advance\c@pgf@counta by-\pgfcalendarcurrentday%
+        \advance\c@pgf@counta by1\relax%
+        \pgfcalendarjuliantoweekday{\c@pgf@counta}{\c@pgf@countb}%
+        \xdef\pgf@temp{\the\c@pgf@countb}%
+      }%
+      \let\tikz@lib@cal@month@list@start=\pgf@temp%
+    }{}%
+  },
+  execute at begin day scope={%
+    \pgfmathsetlength\pgf@xa{\tikz@lib@cal@xshift}%
+    \pgf@xb=\pgfcalendarcurrentday\pgf@xa%
+    \advance\pgf@xb by\tikz@lib@cal@month@list@start\pgf@xa%
+    \advance\pgf@xb by-\pgf@xa\relax%
+    \pgftransformxshift{\pgf@xb}%
+  },
+  tikz@lib@cal@width=37
+}}
+
+
+
+
+%
+% Month labels
+%
+
+\tikzset{month label left/.style={%
+  execute before day scope={\ifdate{day of month=1}{\tikzmonthcode}{}},
+  every month/.append style={anchor=base east,xshift=-3.5ex}
+}}
+
+\tikzset{month label left vertical/.style={%
+  execute before day scope={\ifdate{day of month=1}{\tikzmonthcode}{}},
+  every month/.append style={anchor=base east,xshift=-4.5ex,yshift=2.25ex,rotate=90}
+}}
+
+\tikzset{month label right/.style={%
+execute before day scope={\ifdate{day of month=1}{%
+    {%
+      \pgfmathsetlength{\pgf@xa}{\tikz@lib@cal@xshift}%
+      \pgftransformxshift{\tikz@lib@cal@width\pgf@xa}%
+      \pgftransformxshift{-\pgf@xa}%
+      \tikzmonthcode%
+    }}{}},
+  every month/.append style={anchor=base west,xshift=1ex}
+}}
+
+\tikzset{month label right vertical/.style={%
+  execute before day scope={\ifdate{day of month=1}{%
+    {%
+      \pgfmathsetlength{\pgf@xa}{\tikz@lib@cal@xshift}%
+      \pgftransformxshift{\tikz@lib@cal@width\pgf@xa}%
+      \pgftransformxshift{-\pgf@xa}%
+      \tikzmonthcode%
+    }}{}},
+  every month/.append style={anchor=base west,xshift=2ex,yshift=2.25ex,rotate=-90}
+}}
+
+\tikzset{month label above centered/.style={%
+  execute before day scope={%
+    \ifdate{day of month=1}{%
+      {
+        \pgfmathsetlength{\pgf@xa}{\tikz@lib@cal@xshift}%
+        \pgf@xb=\tikz@lib@cal@width\pgf@xa%
+        \advance\pgf@xb by-\pgf@xa%
+        \pgf@xb=.5\pgf@xb%
+        \pgftransformxshift{\pgf@xb}%
+        \pgftransformxshift{-1.5ex}%
+        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}%
+        \pgftransformyshift{1.25\pgf@y}
+        \tikzmonthcode%
+      }
+    }{}},
+  every month/.append style={anchor=base}
+}}
+
+\tikzset{month label above left/.style={%
+  execute before day scope={%
+    \ifdate{day of month=1}{%
+      {
+        \pgftransformxshift{-3.25ex}%
+        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}%
+        \pgftransformyshift{1.25\pgf@y}
+        \tikzmonthcode%
+      }
+    }{}},
+  every month/.append style={anchor=base west}
+}}
+
+
+
+\tikzset{month label above right/.style={%
+  execute before day scope={%
+    \ifdate{day of month=1}{%
+      {
+        \pgfmathsetlength{\pgf@xa}{\tikz@lib@cal@xshift}%
+        \pgf@xb=\tikz@lib@cal@width\pgf@xa%
+        \advance\pgf@xb by-\pgf@xa%
+        \pgftransformxshift{\pgf@xb}%
+        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}%
+        \pgftransformyshift{1.25\pgf@y}
+        \tikzmonthcode%
+      }
+    }{}},
+  every month/.append style={anchor=base east}
+}}
+
+\tikzset{month label below centered/.style={%
+  execute before day scope={%
+    \ifdate{day of month=1}{%
+      {
+        \pgfmathsetlength{\pgf@xa}{\tikz@lib@cal@xshift}%
+        \pgf@xb=\tikz@lib@cal@width\pgf@xa%
+        \advance\pgf@xb by-\pgf@xa%
+        \pgf@xb=.5\pgf@xb%
+        \pgftransformxshift{\pgf@xb}%
+        \pgftransformxshift{-1.5ex}%
+        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}%
+        \pgftransformyshift{-1.25\pgf@y}
+        \tikzmonthcode%
+      }
+    }{}},
+  every month/.append style={anchor=base}
+}}
+
+\tikzset{month label below left/.style={%
+  execute before day scope={%
+    \ifdate{day of month=1}{%
+      {
+        \pgftransformxshift{-3.25ex}%
+        \pgfmathsetlength{\pgf@y}{\tikz@lib@cal@yshift}%
+        \pgftransformyshift{-1.25\pgf@y}
+        \tikzmonthcode%
+      }
+    }{}},
+  every month/.append style={anchor=base west}
+}}
+
+
+
+%
+% Code of the actual \calendar command (tikz.code.tex contains \let\calendar=\tikz@lib@cal@calendar):
+%
+
+\def\tikz@lib@cal@calendar{%
+  \begingroup%
+    \let\tikz@lib@cal@ifs=\pgfutil@empty%
+    \tikz@expandcount=1000\relax%
+    \tikzset{name=,at={(0,0)}}%
+    \let\%=\pgfcalendarshorthand%
+    \tikzset{every calendar/.try}%
+    \tikz@lib@cal@scanner%
+}
+
+\def\tikz@lib@cal@scanner{%
+  \afterassignment\tikz@lib@cal@handle\let\pgf@let@token=%
+}
+
+\def\tikz@lib@cal@handle{%
+  \let\pgfutil@next=\tikz@lib@cal@expand%
+  \ifx\pgf@let@token;%
+    \let\pgfutil@next=\tikz@lib@cal@stop%
+  \else%
+    \ifx\pgf@let@token(%)
+      \let\pgfutil@next=\tikz@lib@cal@name%
+    \else%
+      \ifx\pgf@let@token a%
+        \let\pgfutil@next=\tikz@lib@cal@at%
+      \else%
+        \ifx\pgf@let@token[%
+          \let\pgfutil@next=\tikz@lib@cal@option%
+        \else%
+          \ifx\pgf@let@token i%
+            \let\pgfutil@next=\tikz@lib@cal@if%
+          \fi%
+        \fi%
+      \fi%
+    \fi%
+  \fi%
+  \pgfutil@next%
+}
+\def\tikz@lib@cal@expand{%
+  \advance\tikz@expandcount by -1%
+  \ifnum\tikz@expandcount<0\relax%
+    \tikzerror{Giving up on this calendar}%
+    \let\pgfutil@next=\tikz@lib@cal@end%
+  \else%
+    \let\pgfutil@next=\tikz@lib@cal@@expand
+  \fi%
+  \pgfutil@next}
+
+\def\tikz@lib@cal@@expand{\expandafter\tikz@lib@cal@scanner\pgf@let@token}
+
+
+\def\tikz@lib@cal@name#1){%
+  \tikzset{name=#1}%
+  \tikz@lib@cal@scanner%
+}
+\def\tikz@lib@cal@at t#1(#2){%
+  \tikzset{at={(#2)}}%
+  \tikz@lib@cal@scanner%
+}
+\def\tikz@lib@cal@option#1]{%
+  \tikzset{#1}%
+  \tikz@lib@cal@scanner%
+}
+\def\tikz@lib@cal@if f#1(#2){%
+  \pgfutil@ifnextchar[{\tikz@lib@cal@if@opt{#2}}{\tikz@lib@cal@if@code{#2}}}%}
+
+\def\tikz@lib@cal@if@opt#1[#2]{\tikz@lib@cal@if@code{#1}{\tikzset{#2}}}
+\def\tikz@lib@cal@if@code#1#2{%
+  \pgfutil@ifnextchar e{\tikz@lib@cal@if@else{#1}{#2}}{\tikz@lib@cal@if@else{#1}{#2}else{}}}
+
+\def\tikz@lib@cal@if@else#1#2else{%
+  \pgfutil@ifnextchar[{\tikz@lib@cal@if@else@opt{#1}{#2}}{\tikz@lib@cal@if@else@code{#1}{#2}}}%}
+\def\tikz@lib@cal@if@else@opt#1#2[#3]{\tikz@lib@cal@if@else@code{#1}{#2}{\tikzset{#3}}}
+\def\tikz@lib@cal@if@else@code#1#2#3{%
+  \expandafter\def\expandafter\tikz@lib@cal@ifs\expandafter{\tikz@lib@cal@ifs\ifdate{#1}{#2}{#3}}%
+  \tikz@lib@cal@scanner%
+}
+\def\tikz@lib@cal@stop{%
+    \pgftransformshift{\tikz@node@at}%
+    \expandafter\pgfcalendar\expandafter{\tikz@fig@name}{\tikz@lib@cal@start}{\tikz@lib@cal@end}%
+    {%
+      \tikz@before@day%
+      \scope%
+        \tikz@atbegin@day%
+        \tikz@lib@cal@ifs%
+        \tikzdaycode%
+        \tikz@atend@day%
+      \endscope%
+      \tikz@after@day%
+    }%
+  \endgroup%
+}
+
+\tikzoption{if}{%
+  \let\tikz@lib@cal@scanner@orig=\tikz@lib@cal@scanner%
+  \let\tikz@lib@cal@scanner=\relax%
+  \tikz@lib@cal@if f#1\relax%
+  \let\tikz@lib@cal@scanner=\tikz@lib@cal@scanner@orig}
+
+
+
+\endinput
-- 
cgit v1.2.3

