diff options
author | Karl Berry <karl@freefriends.org> | 2016-10-07 22:28:23 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-10-07 22:28:23 +0000 |
commit | afcd66d4175ca6bdf3f4d9463557583ceeac632e (patch) | |
tree | f9d5e7695409860ae28d375e0866020cd6e16357 /Master/texmf-dist/tex/xelatex/xepersian/xepersian-persiancal.sty | |
parent | 31231686b0b60fdcd0a2ca264ffbbe8a11c4cdb1 (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.sty | 210 |
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'. |