summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-10-07 22:28:23 +0000
committerKarl Berry <karl@freefriends.org>2016-10-07 22:28:23 +0000
commitafcd66d4175ca6bdf3f4d9463557583ceeac632e (patch)
treef9d5e7695409860ae28d375e0866020cd6e16357 /Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty
parent31231686b0b60fdcd0a2ca264ffbbe8a11c4cdb1 (diff)
xepersian is back (6oct16)
git-svn-id: svn://tug.org/texlive/trunk@42230 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty')
-rw-r--r--Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty210
1 files changed, 210 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty
new file mode 100644
index 00000000000..ed6a1ca4422
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty
@@ -0,0 +1,210 @@
+%%
+%% This is file `xepersian-persiancal.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% xepersian.dtx (with options: `table,xepersian-persiancal.sty')
+%%
+%% __________________________________________________
+%% Copyright (c) 2008--2016 Vafa Khalighi <persian-tex@tug.org>
+%%
+%% It may be distributed and/or modified under the LaTeX Project Public License,
+%% version 1.3c or higher (your choice). The latest version of
+%% this license is at: http://www.latex-project.org/lppl.txt
+%%
+%% This work is “author-maintained” (as per LPPL maintenance status)
+%% by Vafa Khalighi.
+%%
+%%
+%% \CheckSum{10112}
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{xepersian-persiancal}[2012/07/25 v0.2 provides Persian calendar]
+
+\newif\ifXePersian@leap \newif\ifXePersian@kabiseh
+\newcount\XePersian@i \newcount\XePersian@y \newcount\XePersian@m \newcount\XePersian@d
+\newcount\XePersian@latini \newcount\XePersian@persiani
+\newcount\XePersian@latinii \newcount\XePersian@persianii
+\newcount\XePersian@latiniii \newcount\XePersian@persianiii
+\newcount\XePersian@latiniv \newcount\XePersian@persianiv
+\newcount\XePersian@latinv \newcount\XePersian@persianv
+\newcount\XePersian@latinvi \newcount\XePersian@persianvi
+\newcount\XePersian@latinvii \newcount\XePersian@persianvii
+\newcount\XePersian@latinviii \newcount\XePersian@persianviii
+\newcount\XePersian@latinix \newcount\XePersian@persianix
+\newcount\XePersian@latinx \newcount\XePersian@persianx
+\newcount\XePersian@latinxi \newcount\XePersian@persianxi
+\newcount\XePersian@latinxii \newcount\XePersian@persianxii
+ \newcount\XePersian@persianxiii
+
+\newcount\XePersian@temp
+\newcount\XePersian@temptwo
+\newcount\XePersian@tempthree
+\newcount\XePersian@yModHundred
+\newcount\XePersian@thirtytwo
+\newcount\XePersian@dn
+\newcount\XePersian@sn
+\newcount\XePersian@mminusone
+
+\XePersian@y=\year \XePersian@m=\month \XePersian@d=\day
+\XePersian@temp=\XePersian@y
+\divide\XePersian@temp by 100\relax
+\multiply\XePersian@temp by 100\relax
+\XePersian@yModHundred=\XePersian@y
+\advance\XePersian@yModHundred by -\XePersian@temp\relax
+\ifodd\XePersian@yModHundred
+ \XePersian@leapfalse
+\else
+ \XePersian@temp=\XePersian@yModHundred
+ \divide\XePersian@temp by 2\relax
+ \ifodd\XePersian@temp\XePersian@leapfalse
+ \else
+ \ifnum\XePersian@yModHundred=0%
+ \XePersian@temp=\XePersian@y
+ \divide\XePersian@temp by 400\relax
+ \multiply\XePersian@temp by 400\relax
+ \ifnum\XePersian@y=\XePersian@temp\XePersian@leaptrue\else\XePersian@leapfalse\fi
+ \else\XePersian@leaptrue
+ \fi
+ \fi
+\fi
+\XePersian@latini=31\relax
+\ifXePersian@leap
+ \XePersian@latinii = 29\relax
+\else
+ \XePersian@latinii = 28\relax
+\fi
+\XePersian@latiniii = 31\relax
+\XePersian@latiniv = 30\relax
+\XePersian@latinv = 31\relax
+\XePersian@latinvi = 30\relax
+\XePersian@latinvii = 31\relax
+\XePersian@latinviii = 31\relax
+\XePersian@latinix = 30\relax
+\XePersian@latinx = 31\relax
+\XePersian@latinxi = 30\relax
+\XePersian@latinxii = 31\relax
+\XePersian@thirtytwo=32\relax
+\XePersian@temp=\XePersian@y
+\advance\XePersian@temp by -17\relax
+\XePersian@temptwo=\XePersian@temp
+\divide\XePersian@temptwo by 33\relax
+\multiply\XePersian@temptwo by 33\relax
+\advance\XePersian@temp by -\XePersian@temptwo
+\ifnum\XePersian@temp=\XePersian@thirtytwo\XePersian@kabisehfalse
+\else
+ \XePersian@temptwo=\XePersian@temp
+ \divide\XePersian@temptwo by 4\relax
+ \multiply\XePersian@temptwo by 4\relax
+ \advance\XePersian@temp by -\XePersian@temptwo
+ \ifnum\XePersian@temp=\z@\XePersian@kabisehtrue\else\XePersian@kabisehfalse\fi
+\fi
+\XePersian@tempthree=\XePersian@y % Number of Leap years
+\advance\XePersian@tempthree by -1
+\XePersian@temp=\XePersian@tempthree % T := (MY-1) div 4
+\divide\XePersian@temp by 4\relax
+\XePersian@temptwo=\XePersian@tempthree % T := T - ((MY-1) div 100)
+\divide\XePersian@temptwo by 100\relax
+\advance\XePersian@temp by -\XePersian@temptwo
+\XePersian@temptwo=\XePersian@tempthree % T := T + ((MY-1) div 400)
+\divide\XePersian@temptwo by 400\relax
+\advance\XePersian@temp by \XePersian@temptwo
+\advance\XePersian@tempthree by -611 % Number of Kabise years
+\XePersian@temptwo=\XePersian@tempthree % T := T - ((SY+10) div 33) * 8
+\divide\XePersian@temptwo by 33\relax
+\multiply\XePersian@temptwo by 8\relax
+\advance\XePersian@temp by -\XePersian@temptwo
+\XePersian@temptwo=\XePersian@tempthree %
+\divide\XePersian@temptwo by 33\relax
+\multiply\XePersian@temptwo by 33\relax
+\advance\XePersian@tempthree by -\XePersian@temptwo
+\ifnum\XePersian@tempthree=32\advance\XePersian@temp by 1\fi % if (SY+10) mod 33=32 then Inc(T);
+\divide\XePersian@tempthree by 4\relax % T := T - ((SY+10) mod 33) div 4
+\advance\XePersian@temp by -\XePersian@tempthree
+\advance\XePersian@temp by -137 % T := T - 137 Adjust the value
+\XePersian@persiani=31
+\advance\XePersian@persiani by -\XePersian@temp % now 31 - T is the persiani
+\XePersian@persianii = 30\relax
+\ifXePersian@kabiseh
+ \XePersian@persianiii = 30\relax
+\else
+ \XePersian@persianiii = 29\relax
+\fi
+\XePersian@persianiv = 31\relax
+\XePersian@persianv = 31\relax
+\XePersian@persianvi = 31\relax
+\XePersian@persianvii = 31\relax
+\XePersian@persianviii= 31\relax
+\XePersian@persianix = 31\relax
+\XePersian@persianx = 30\relax
+\XePersian@persianxi = 30\relax
+\XePersian@persianxii = 30\relax
+\XePersian@persianxiii= 30\relax
+\XePersian@dn= 0\relax
+\XePersian@sn= 0\relax
+\XePersian@mminusone=\XePersian@m
+\advance\XePersian@mminusone by -1\relax
+\XePersian@i=0\relax
+\ifnum\XePersian@i < \XePersian@mminusone
+\loop
+\advance \XePersian@i by 1\relax
+\advance\XePersian@dn by \csname XePersian@latin\romannumeral\the\XePersian@i\endcsname
+\ifnum\XePersian@i<\XePersian@mminusone \repeat
+\fi
+\advance \XePersian@dn by \XePersian@d
+\XePersian@i=1\relax
+\XePersian@sn = \XePersian@persiani
+\ifnum \XePersian@sn<\XePersian@dn
+\loop
+\advance \XePersian@i by 1\relax
+\advance\XePersian@sn by \csname XePersian@persian\romannumeral\the\XePersian@i\endcsname
+\ifnum \XePersian@sn<\XePersian@dn \repeat
+\fi
+\ifnum \XePersian@i < 4
+ \XePersian@m = 9 \advance\XePersian@m by \XePersian@i
+ \advance \XePersian@y by -622\relax
+\else
+ \XePersian@m = \XePersian@i \advance \XePersian@m by -3\relax
+ \advance \XePersian@y by -621\relax
+\fi
+\advance\XePersian@sn by -\csname XePersian@persian\romannumeral\the\XePersian@i%
+\endcsname
+\ifnum\XePersian@i = 1
+ \XePersian@d = \XePersian@dn \advance \XePersian@d by 30 \advance\XePersian@d by -\XePersian@persiani
+\else
+ \XePersian@d = \XePersian@dn \advance \XePersian@d by -\XePersian@sn
+\fi
+\newcommand*{\persiantoday}{%
+\number\XePersian@d\space%
+\XePersian@persian@month{\XePersian@m}\space\number\XePersian@y%
+}
+\let\persianyear\XePersian@y
+\let\persianmonth\XePersian@m
+\let\persianday\XePersian@d
+\def\XePersian@persian@month#1{\ifcase#1\or فروردین\or
+اردیبهشت\or
+خرداد\or تیر\or
+مرداد\or
+شهریور\or مهر\or
+آبان\or آذر\or
+دی\or بهمن\or
+اسفند\fi}
+\endinput
+%%
+%% End of file `xepersian-persiancal.sty'.