diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/polyglossia/farsical.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/polyglossia/farsical.sty | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/polyglossia/farsical.sty b/Master/texmf-dist/tex/latex/polyglossia/farsical.sty new file mode 100644 index 00000000000..b78d29809c3 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/farsical.sty @@ -0,0 +1,202 @@ +\ProvidesPackage{farsical} + [2008/07/02 v0.1 % + Farsi (jalali) calendar] +\RequirePackage{bidi,calc,arabicnumbers} + +%TODO - rewrite completely using calc +%% - use Reingold & Dershowitz ME +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Modified from Arabiftoday.sty which is part of the Arabi package: +%%% Copyright (C) 2006 Youssef Jabri +%%% itself a modification of the code in the FarsiTeX system: +%%% Copyright (C) 1996 Hassan Abolhassani +%%% Copyright (C) 1996-2001 Roozbeh Pournader <roozbeh@sharif.edu> +%%% Copyright (C) 2000-2001 Behdad Esfahbod <behdad@bamdad.org> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newif\ifJALALI@leap \newif\ifJALALI@kabiseh +\newcount\JALALI@i \newcount\JALALI@y \newcount\JALALI@m \newcount\JALALI@d +\newcount\JALALI@latini \newcount\JALALI@farsii +\newcount\JALALI@latinii \newcount\JALALI@farsiii +\newcount\JALALI@latiniii \newcount\JALALI@farsiiii +\newcount\JALALI@latiniv \newcount\JALALI@farsiiv +\newcount\JALALI@latinv \newcount\JALALI@farsiv +\newcount\JALALI@latinvi \newcount\JALALI@farsivi +\newcount\JALALI@latinvii \newcount\JALALI@farsivii +\newcount\JALALI@latinviii \newcount\JALALI@farsiviii +\newcount\JALALI@latinix \newcount\JALALI@farsiix +\newcount\JALALI@latinx \newcount\JALALI@farsix +\newcount\JALALI@latinxi \newcount\JALALI@farsixi +\newcount\JALALI@latinxii \newcount\JALALI@farsixii + \newcount\JALALI@farsixiii + +\newcount\JALALI@temp +\newcount\JALALI@temptwo +\newcount\JALALI@tempthree +\newcount\JALALI@yModHundred +\newcount\JALALI@thirtytwo +\newcount\JALALI@dn +\newcount\JALALI@sn +\newcount\JALALI@mminusone + +% \ftoday renamed to \Jalalitoday - FC +\def\Jalalitoday{% +\JALALI@y=\year \JALALI@m=\month \JALALI@d=\day +% +\JALALI@temp=\JALALI@y +\divide\JALALI@temp by 100\relax +\multiply\JALALI@temp by 100\relax +\JALALI@yModHundred=\JALALI@y +\advance\JALALI@yModHundred by -\JALALI@temp\relax +% +\ifodd\JALALI@yModHundred + \JALALI@leapfalse +\else + \JALALI@temp=\JALALI@yModHundred + \divide\JALALI@temp by 2\relax + \ifodd\JALALI@temp\JALALI@leapfalse + \else + \ifnum\JALALI@yModHundred=0% + \JALALI@temp=\JALALI@y + \divide\JALALI@temp by 400\relax + \multiply\JALALI@temp by 400\relax + \ifnum\JALALI@y=\JALALI@temp\JALALI@leaptrue\else\JALALI@leapfalse\fi + \else\JALALI@leaptrue + \fi + \fi +\fi +% +\JALALI@latini=31\relax +\ifJALALI@leap + \JALALI@latinii = 29\relax +\else + \JALALI@latinii = 28\relax +\fi +\JALALI@latiniii = 31\relax +\JALALI@latiniv = 30\relax +\JALALI@latinv = 31\relax +\JALALI@latinvi = 30\relax +\JALALI@latinvii = 31\relax +\JALALI@latinviii = 31\relax +\JALALI@latinix = 30\relax +\JALALI@latinx = 31\relax +\JALALI@latinxi = 30\relax +\JALALI@latinxii = 31\relax +% +\JALALI@thirtytwo=32\relax +% +\JALALI@temp=\JALALI@y +\advance\JALALI@temp by -17\relax +\JALALI@temptwo=\JALALI@temp +\divide\JALALI@temptwo by 33\relax +\multiply\JALALI@temptwo by 33\relax +\advance\JALALI@temp by -\JALALI@temptwo +\ifnum\JALALI@temp=\JALALI@thirtytwo\JALALI@kabisehfalse +\else + \JALALI@temptwo=\JALALI@temp + \divide\JALALI@temptwo by 4\relax + \multiply\JALALI@temptwo by 4\relax + \advance\JALALI@temp by -\JALALI@temptwo + \ifnum\JALALI@temp=\z@\JALALI@kabisehtrue\else\JALALI@kabisehfalse\fi +\fi +% +% --BE +% In fact farsii is equal to the Leap years from a fixed year to the last +% year minus the Kabise years from a fixed year to the last year plus a const. +% +\JALALI@tempthree=\JALALI@y % Number of Leap years +\advance\JALALI@tempthree by -1 +\JALALI@temp=\JALALI@tempthree % T := (MY-1) div 4 +\divide\JALALI@temp by 4\relax +\JALALI@temptwo=\JALALI@tempthree % T := T - ((MY-1) div 100) +\divide\JALALI@temptwo by 100\relax +\advance\JALALI@temp by -\JALALI@temptwo +\JALALI@temptwo=\JALALI@tempthree % T := T + ((MY-1) div 400) +\divide\JALALI@temptwo by 400\relax +\advance\JALALI@temp by \JALALI@temptwo +\advance\JALALI@tempthree by -611 % Number of Kabise years +\JALALI@temptwo=\JALALI@tempthree % T := T - ((SY+10) div 33) * 8 +\divide\JALALI@temptwo by 33\relax +\multiply\JALALI@temptwo by 8\relax +\advance\JALALI@temp by -\JALALI@temptwo +\JALALI@temptwo=\JALALI@tempthree % +\divide\JALALI@temptwo by 33\relax +\multiply\JALALI@temptwo by 33\relax +\advance\JALALI@tempthree by -\JALALI@temptwo +\ifnum\JALALI@tempthree=32\advance\JALALI@temp by 1\fi % if (SY+10) mod 33=32 then Inc(T); +\divide\JALALI@tempthree by 4\relax % T := T - ((SY+10) mod 33) div 4 +\advance\JALALI@temp by -\JALALI@tempthree +\advance\JALALI@temp by -137 % T := T - 137 Adjust the value +\JALALI@farsii=31 +\advance\JALALI@farsii by -\JALALI@temp % now 31 - T is the farsii +% +\JALALI@farsiii = 30\relax +\ifJALALI@kabiseh + \JALALI@farsiiii = 30\relax +\else + \JALALI@farsiiii = 29\relax +\fi +\JALALI@farsiiv = 31\relax +\JALALI@farsiv = 31\relax +\JALALI@farsivi = 31\relax +\JALALI@farsivii = 31\relax +\JALALI@farsiviii= 31\relax +\JALALI@farsiix = 31\relax +\JALALI@farsix = 30\relax +\JALALI@farsixi = 30\relax +\JALALI@farsixii = 30\relax +\JALALI@farsixiii= 30\relax +% +\JALALI@dn= 0\relax +\JALALI@sn= 0\relax +\JALALI@mminusone=\JALALI@m +\advance\JALALI@mminusone by -1\relax +% +\JALALI@i=0\relax +\ifnum\JALALI@i < \JALALI@mminusone +\loop +\advance \JALALI@i by 1\relax +\advance\JALALI@dn by \csname JALALI@latin\romannumeral\the\JALALI@i\endcsname +\ifnum\JALALI@i<\JALALI@mminusone \repeat +\fi +\advance \JALALI@dn by \JALALI@d +% +\JALALI@i=1\relax +\JALALI@sn = \JALALI@farsii +\ifnum \JALALI@sn<\JALALI@dn +\loop +\advance \JALALI@i by 1\relax +\advance\JALALI@sn by \csname JALALI@farsi\romannumeral\the\JALALI@i\endcsname +\ifnum \JALALI@sn<\JALALI@dn \repeat +\fi +\ifnum \JALALI@i < 4 + \JALALI@m = 9 \advance\JALALI@m by \JALALI@i + \advance \JALALI@y by -622\relax +\else + \JALALI@m = \JALALI@i \advance \JALALI@m by -3\relax + \advance \JALALI@y by -621\relax +\fi +\advance\JALALI@sn by -\csname JALALI@farsi\romannumeral\the\JALALI@i% +\endcsname +\ifnum\JALALI@i = 1 + \JALALI@d = \JALALI@dn \advance \JALALI@d by 30 \advance\JALALI@d by -\JALALI@farsii +\else + \JALALI@d = \JALALI@dn \advance \JALALI@d by -\JALALI@sn +\fi +%% DATE FORMATTING +\if@RTL{\farsidigits{\number\JALALI@d}\space% +\Jalalimonth{\JALALI@m}\space\farsidigits{\number\JALALI@y}}% +\else +\number\JALALI@d\space\JalalimonthEnglish{\JALALI@m}% +\space\number\JALALI@y% +\fi} +%%% +\def\Jalalimonth#1{\ifcase#1\or فروردین\or +اردیبهشت\or خرداد\or تیر\or مرداد\or شهریور% +\or مهر\or آبان\or آذر\or دی\or بهمن\or اسفند% +\fi} +\def\JalalimonthEnglish#1{\ifcase#1% +\or Farvardīn\or Ordībehesht\or Khordād\or Tīr +\or Mordād\or Shahrīvar\or Mihr\or Ābān\or Āzar +\or Dai\or Bahman\or Esfand\fi} +\endinput |