* Jalali Calendar for MKIv
@ 2009-02-21 16:07 Ilda Khaki
2009-02-23 9:22 ` Hans Hagen
0 siblings, 1 reply; 2+ messages in thread
From: Ilda Khaki @ 2009-02-21 16:07 UTC (permalink / raw)
To: ntg-context
[-- Attachment #1.1: Type: text/plain, Size: 5592 bytes --]
Hi,
This is the macro for Jalali Calendar taken from xepersian
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif\ifFT@leap \newif\ifFT@kabiseh
\newcount\FT@i \newcount\FT@y \newcount\FT@m \newcount\FT@d
\newcount\FT@latini \newcount\FT@persiani
\newcount\FT@latinii \newcount\FT@persianii
\newcount\FT@latiniii \newcount\FT@persianiii
\newcount\FT@latiniv \newcount\FT@persianiv
\newcount\FT@latinv \newcount\FT@persianv
\newcount\FT@latinvi \newcount\FT@persianvi
\newcount\FT@latinvii \newcount\FT@persianvii
\newcount\FT@latinviii \newcount\FT@persianviii
\newcount\FT@latinix \newcount\FT@persianix
\newcount\FT@latinx \newcount\FT@persianx
\newcount\FT@latinxi \newcount\FT@persianxi
\newcount\FT@latinxii \newcount\FT@persianxii
\newcount\FT@persianxiii
\newcount\FT@temp
\newcount\FT@temptwo
\newcount\FT@tempthree
\newcount\FT@yModHundred
\newcount\FT@thirtytwo
\newcount\FT@dn
\newcount\FT@sn
\newcount\FT@mminusone
\def\ftoday{%
\FT@y=\year \FT@m=\month \FT@d=\day
%
\FT@temp=\FT@y
\divide\FT@temp by 100\relax
\multiply\FT@temp by 100\relax
\FT@yModHundred=\FT@y
\advance\FT@yModHundred by -\FT@temp\relax
%
\ifodd\FT@yModHundred
\FT@leapfalse
\else
\FT@temp=\FT@yModHundred
\divide\FT@temp by 2\relax
\ifodd\FT@temp\FT@leapfalse
\else
\ifnum\FT@yModHundred=0%
\FT@temp=\FT@y
\divide\FT@temp by 400\relax
\multiply\FT@temp by 400\relax
\ifnum\FT@y=\FT@temp\FT@leaptrue\else\FT@leapfalse\fi
\else\FT@leaptrue
\fi
\fi
\fi
%
\FT@latini=31\relax
\ifFT@leap
\FT@latinii = 29\relax
\else
\FT@latinii = 28\relax
\fi
\FT@latiniii = 31\relax
\FT@latiniv = 30\relax
\FT@latinv = 31\relax
\FT@latinvi = 30\relax
\FT@latinvii = 31\relax
\FT@latinviii = 31\relax
\FT@latinix = 30\relax
\FT@latinx = 31\relax
\FT@latinxi = 30\relax
\FT@latinxii = 31\relax
%
\FT@thirtytwo=32\relax
%
\FT@temp=\FT@y
\advance\FT@temp by -17\relax
\FT@temptwo=\FT@temp
\divide\FT@temptwo by 33\relax
\multiply\FT@temptwo by 33\relax
\advance\FT@temp by -\FT@temptwo
\ifnum\FT@temp=\FT@thirtytwo\FT@kabisehfalse
\else
\FT@temptwo=\FT@temp
\divide\FT@temptwo by 4\relax
\multiply\FT@temptwo by 4\relax
\advance\FT@temp by -\FT@temptwo
\ifnum\FT@temp=\z@\FT@kabisehtrue\else\FT@kabisehfalse\fi
\fi
%
% --VK
% In fact persiani 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.
%
\FT@tempthree=\FT@y % Number of Leap years
\advance\FT@tempthree by -1
\FT@temp=\FT@tempthree % T := (MY-1) div 4
\divide\FT@temp by 4\relax
\FT@temptwo=\FT@tempthree % T := T - ((MY-1) div 100)
\divide\FT@temptwo by 100\relax
\advance\FT@temp by -\FT@temptwo
\FT@temptwo=\FT@tempthree % T := T + ((MY-1) div 400)
\divide\FT@temptwo by 400\relax
\advance\FT@temp by \FT@temptwo
\advance\FT@tempthree by -611 % Number of Kabise years
\FT@temptwo=\FT@tempthree % T := T - ((SY+10) div 33) * 8
\divide\FT@temptwo by 33\relax
\multiply\FT@temptwo by 8\relax
\advance\FT@temp by -\FT@temptwo
\FT@temptwo=\FT@tempthree %
\divide\FT@temptwo by 33\relax
\multiply\FT@temptwo by 33\relax
\advance\FT@tempthree by -\FT@temptwo
\ifnum\FT@tempthree=32\advance\FT@temp by 1\fi % if (SY+10) mod 33=32 then
Inc(T);
\divide\FT@tempthree by 4\relax % T := T - ((SY+10) mod 33) div 4
\advance\FT@temp by -\FT@tempthree
\advance\FT@temp by -137 % T := T - 137 Adjust the value
\FT@persiani=31
\advance\FT@persiani by -\FT@temp % now 31 - T is the
persiani
%
\FT@persianii = 30\relax
\ifFT@kabiseh
\FT@persianiii = 30\relax
\else
\FT@persianiii = 29\relax
\fi
\FT@persianiv = 31\relax
\FT@persianv = 31\relax
\FT@persianvi = 31\relax
\FT@persianvii = 31\relax
\FT@persianviii= 31\relax
\FT@persianix = 31\relax
\FT@persianx = 30\relax
\FT@persianxi = 30\relax
\FT@persianxii = 30\relax
\FT@persianxiii= 30\relax
%
\FT@dn= 0\relax
\FT@sn= 0\relax
\FT@mminusone=\FT@m
\advance\FT@mminusone by -1\relax
%
\FT@i=0\relax
\ifnum\FT@i < \FT@mminusone
\loop
\advance \FT@i by 1\relax
\advance\FT@dn by \csname FT@latin\romannumeral\the\FT@i\endcsname
\ifnum\FT@i<\FT@mminusone \repeat
\fi
\advance \FT@dn by \FT@d
%
\FT@i=1\relax
\FT@sn = \FT@persiani
\ifnum \FT@sn<\FT@dn
\loop
\advance \FT@i by 1\relax
\advance\FT@sn by \csname FT@persian\romannumeral\the\FT@i\endcsname
\ifnum \FT@sn<\FT@dn \repeat
\fi
\ifnum \FT@i < 4
\FT@m = 9 \advance\FT@m by \FT@i
\advance \FT@y by -622\relax
\else
\FT@m = \FT@i \advance \FT@m by -3\relax
\advance \FT@y by -621\relax
\fi
\advance\FT@sn by -\csname FT@persian\romannumeral\the\FT@i%
\endcsname
\ifnum\FT@i = 1
\FT@d = \FT@dn \advance \FT@d by 30 \advance\FT@d by -\FT@persiani
\else
\FT@d = \FT@dn \advance \FT@d by -\FT@sn
\fi
\beginL\number\FT@d\endL\space%
%Changedc from here YJ
\persianmonth{\FT@m}\space\beginL\number\FT@y\endL%
}
% added \persianmonth YJ
\def\persianmonth#1{\ifcase#1\or فروردین\or
اردیبهشت\or
خرداد\or تیر\or
مرداد\or
شهریور\or مهر\or
آبان\or آذر\or
دی\or بهمن\or
اسفند\fi}
\let\originaltoday=\today
\def\today{\lr{\originaltoday}}
\let\romantoday\today
\def\today{\rl{\ftoday}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
can you include this in MKIV? Is there copyright issues?
[-- Attachment #1.2: Type: text/html, Size: 7279 bytes --]
[-- Attachment #2: Type: text/plain, Size: 487 bytes --]
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://tex.aanhet.net
archive : https://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Jalali Calendar for MKIv
2009-02-21 16:07 Jalali Calendar for MKIv Ilda Khaki
@ 2009-02-23 9:22 ` Hans Hagen
0 siblings, 0 replies; 2+ messages in thread
From: Hans Hagen @ 2009-02-23 9:22 UTC (permalink / raw)
To: mailing list for ConTeXt users
Ilda Khaki wrote:
> Hi,
>
> This is the macro for Jalali Calendar taken from xepersian
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> \newif\ifFT@leap \newif\ifFT@kabiseh
> \newcount\FT@i \newcount\FT@y \newcount\FT@m \newcount\FT@d
> \newcount\FT@latini \newcount\FT@persiani
> \newcount\FT@latinii \newcount\FT@persianii
> \newcount\FT@latiniii \newcount\FT@persianiii
> \newcount\FT@latiniv \newcount\FT@persianiv
> \newcount\FT@latinv \newcount\FT@persianv
> \newcount\FT@latinvi \newcount\FT@persianvi
> \newcount\FT@latinvii \newcount\FT@persianvii
> \newcount\FT@latinviii \newcount\FT@persianviii
> \newcount\FT@latinix \newcount\FT@persianix
> \newcount\FT@latinx \newcount\FT@persianx
> \newcount\FT@latinxi \newcount\FT@persianxi
> \newcount\FT@latinxii \newcount\FT@persianxii
> \newcount\FT@persianxiii
>
> \newcount\FT@temp
> \newcount\FT@temptwo
> \newcount\FT@tempthree
> \newcount\FT@yModHundred
> \newcount\FT@thirtytwo
> \newcount\FT@dn
> \newcount\FT@sn
> \newcount\FT@mminusone
>
> \def\ftoday{%
> \FT@y=\year \FT@m=\month \FT@d=\day
> %
> \FT@temp=\FT@y
> \divide\FT@temp by 100\relax
> \multiply\FT@temp by 100\relax
> \FT@yModHundred=\FT@y
> \advance\FT@yModHundred by -\FT@temp\relax
> %
> \ifodd\FT@yModHundred
> \FT@leapfalse
> \else
> \FT@temp=\FT@yModHundred
> \divide\FT@temp by 2\relax
> \ifodd\FT@temp\FT@leapfalse
> \else
> \ifnum\FT@yModHundred=0%
> \FT@temp=\FT@y
> \divide\FT@temp by 400\relax
> \multiply\FT@temp by 400\relax
> \ifnum\FT@y=\FT@temp\FT@leaptrue\else\FT@leapfalse\fi
> \else\FT@leaptrue
> \fi
> \fi
> \fi
> %
> \FT@latini=31\relax
> \ifFT@leap
> \FT@latinii = 29\relax
> \else
> \FT@latinii = 28\relax
> \fi
> \FT@latiniii = 31\relax
> \FT@latiniv = 30\relax
> \FT@latinv = 31\relax
> \FT@latinvi = 30\relax
> \FT@latinvii = 31\relax
> \FT@latinviii = 31\relax
> \FT@latinix = 30\relax
> \FT@latinx = 31\relax
> \FT@latinxi = 30\relax
> \FT@latinxii = 31\relax
> %
> \FT@thirtytwo=32\relax
> %
> \FT@temp=\FT@y
> \advance\FT@temp by -17\relax
> \FT@temptwo=\FT@temp
> \divide\FT@temptwo by 33\relax
> \multiply\FT@temptwo by 33\relax
> \advance\FT@temp by -\FT@temptwo
> \ifnum\FT@temp=\FT@thirtytwo\FT@kabisehfalse
> \else
> \FT@temptwo=\FT@temp
> \divide\FT@temptwo by 4\relax
> \multiply\FT@temptwo by 4\relax
> \advance\FT@temp by -\FT@temptwo
> \ifnum\FT@temp=\z@\FT@kabisehtrue\else\FT@kabisehfalse\fi
> \fi
> %
> % --VK
> % In fact persiani 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.
> %
> \FT@tempthree=\FT@y % Number of Leap years
> \advance\FT@tempthree by -1
> \FT@temp=\FT@tempthree % T := (MY-1) div 4
> \divide\FT@temp by 4\relax
> \FT@temptwo=\FT@tempthree % T := T - ((MY-1) div 100)
> \divide\FT@temptwo by 100\relax
> \advance\FT@temp by -\FT@temptwo
> \FT@temptwo=\FT@tempthree % T := T + ((MY-1) div 400)
> \divide\FT@temptwo by 400\relax
> \advance\FT@temp by \FT@temptwo
> \advance\FT@tempthree by -611 % Number of Kabise years
> \FT@temptwo=\FT@tempthree % T := T - ((SY+10) div 33) * 8
> \divide\FT@temptwo by 33\relax
> \multiply\FT@temptwo by 8\relax
> \advance\FT@temp by -\FT@temptwo
> \FT@temptwo=\FT@tempthree %
> \divide\FT@temptwo by 33\relax
> \multiply\FT@temptwo by 33\relax
> \advance\FT@tempthree by -\FT@temptwo
> \ifnum\FT@tempthree=32\advance\FT@temp by 1\fi % if (SY+10) mod 33=32 then
> Inc(T);
> \divide\FT@tempthree by 4\relax % T := T - ((SY+10) mod 33) div 4
> \advance\FT@temp by -\FT@tempthree
> \advance\FT@temp by -137 % T := T - 137 Adjust the value
> \FT@persiani=31
> \advance\FT@persiani by -\FT@temp % now 31 - T is the
> persiani
> %
> \FT@persianii = 30\relax
> \ifFT@kabiseh
> \FT@persianiii = 30\relax
> \else
> \FT@persianiii = 29\relax
> \fi
> \FT@persianiv = 31\relax
> \FT@persianv = 31\relax
> \FT@persianvi = 31\relax
> \FT@persianvii = 31\relax
> \FT@persianviii= 31\relax
> \FT@persianix = 31\relax
> \FT@persianx = 30\relax
> \FT@persianxi = 30\relax
> \FT@persianxii = 30\relax
> \FT@persianxiii= 30\relax
> %
> \FT@dn= 0\relax
> \FT@sn= 0\relax
> \FT@mminusone=\FT@m
> \advance\FT@mminusone by -1\relax
> %
> \FT@i=0\relax
> \ifnum\FT@i < \FT@mminusone
> \loop
> \advance \FT@i by 1\relax
> \advance\FT@dn by \csname FT@latin\romannumeral\the\FT@i\endcsname
> \ifnum\FT@i<\FT@mminusone \repeat
> \fi
> \advance \FT@dn by \FT@d
> %
> \FT@i=1\relax
> \FT@sn = \FT@persiani
> \ifnum \FT@sn<\FT@dn
> \loop
> \advance \FT@i by 1\relax
> \advance\FT@sn by \csname FT@persian\romannumeral\the\FT@i\endcsname
> \ifnum \FT@sn<\FT@dn \repeat
> \fi
> \ifnum \FT@i < 4
> \FT@m = 9 \advance\FT@m by \FT@i
> \advance \FT@y by -622\relax
> \else
> \FT@m = \FT@i \advance \FT@m by -3\relax
> \advance \FT@y by -621\relax
> \fi
> \advance\FT@sn by -\csname FT@persian\romannumeral\the\FT@i%
> \endcsname
> \ifnum\FT@i = 1
> \FT@d = \FT@dn \advance \FT@d by 30 \advance\FT@d by -\FT@persiani
> \else
> \FT@d = \FT@dn \advance \FT@d by -\FT@sn
> \fi
> \beginL\number\FT@d\endL\space%
> %Changedc from here YJ
> \persianmonth{\FT@m}\space\beginL\number\FT@y\endL%
> }
> % added \persianmonth YJ
> \def\persianmonth#1{\ifcase#1\or فروردین\or
> اردیبهشت\or
> خرداد\or تیر\or
> مرداد\or
> شهریور\or مهر\or
> آبان\or آذر\or
> دی\or بهمن\or
> اسفند\fi}
> \let\originaltoday=\today
> \def\today{\lr{\originaltoday}}
> \let\romantoday\today
> \def\today{\rl{\ftoday}}
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>
> can you include this in MKIV? Is there copyright issues?
i have no problem with adding a conversion routine to mkiv, but not in
this form; what is the official formula? the original so to say? maybe
in pseudo c-code
Hans
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
| www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage : http://www.pragma-ade.nl / http://tex.aanhet.net
archive : https://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-02-23 9:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-02-21 16:07 Jalali Calendar for MKIv Ilda Khaki
2009-02-23 9:22 ` Hans Hagen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).