From 9bca6550cfe2de5380ebe394480ccb24126f2863 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Sat, 12 Jul 2008 18:23:29 +0000
Subject: new xetex package polyglossia (11jul08)

git-svn-id: svn://tug.org/texlive/trunk@9485 c570f23f-e606-0410-a88d-b1316a301751
---
 .../tex/xelatex/polyglossia/hebrewcal.sty          | 331 +++++++++++++++++++++
 1 file changed, 331 insertions(+)
 create mode 100644 Master/texmf-dist/tex/xelatex/polyglossia/hebrewcal.sty

(limited to 'Master/texmf-dist/tex/xelatex/polyglossia/hebrewcal.sty')

diff --git a/Master/texmf-dist/tex/xelatex/polyglossia/hebrewcal.sty b/Master/texmf-dist/tex/xelatex/polyglossia/hebrewcal.sty
new file mode 100644
index 00000000000..d4f53fccd48
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/polyglossia/hebrewcal.sty
@@ -0,0 +1,331 @@
+\ProvidesPackage{hebrewcal}
+        [2008/07/01 v2.4 %
+         Hebrew calendar for polyglossia (adapted from hebcal.sty in Babel)]
+\RequirePackage{bidi}
+
+%% TODO rewrite this on the basis of Reingold & Dershowitz 
+%%      on the model of hijrical (using calc)
+
+\@ifundefined{@Remainder}{\input{cal-util.def}}{}
+
+\define@boolkey{hebrew}[@hebrew@]{fullyear}[false]{}
+\setkeys{hebrew}{fullyear}
+
+\newcount\hebrewday  \newcount\hebrewmonth \newcount\hebrewyear
+\def\hebrewdate#1#2#3{%
+    \HebrewFromGregorian{#1}{#2}{#3}%
+                        {\hebrewday}{\hebrewmonth}{\hebrewyear}%
+    \if@rl%
+      \@FormatForHebrew{\hebrewday}{\hebrewmonth}{\hebrewyear}%
+    \else%
+      \@FormatForEnglish{\hebrewday}{\hebrewmonth}{\hebrewyear}%
+    \fi}
+\def\hebrewtoday{\hebrewdate{\day}{\month}{\year}}
+\def\hebrewsetreg{%
+    \HebrewFromGregorian{\day}{\month}{\year}%
+                        {\hebrewday}{\hebrewmonth}{\hebrewyear}}
+\def\HebrewYearName#1{{%
+   \@tempcnta=#1\divide\@tempcnta by 1000\multiply\@tempcnta by 1000
+   \ifnum#1=\@tempcnta\relax % divisible by 1000: disambiguate
+     \hebrewnumeral{#1}\ (לפ"ג)%
+   \else % not divisible by 1000
+     \ifnum#1<1000\relax     % first millennium: disambiguate
+       \hebrewnumeral{#1}\ (לפ"ג)%
+     \else 
+       \ifnum#1<5000
+         \hebrewnumeral{#1}%
+       \else
+         \ifnum#1<6000 % current millenium, print without thousands
+           \@tempcnta=#1\relax
+           \if@hebrew@fullyear\else\advance\@tempcnta by -5000\fi
+           \hebrewnumeral{\@tempcnta}%
+         \else % #1>6000
+           \hebrewnumeral{#1}%
+         \fi
+       \fi
+     \fi
+   \fi}}
+\def\HebrewMonthName#1#2{%
+    \ifnum #1 = 7 %
+    \@CheckLeapHebrewYear{#2}%
+        \if@HebrewLeap אדר\ ב'%
+           \else אדר%
+        \fi%
+    \else%
+        \ifcase#1%
+           % nothing for 0
+           \or תשרי%
+           \or השון%
+           \or כסלו%
+           \or טבת%
+           \or שבט%
+           \or אדר\ א'%
+           \or אדר\ ב'%
+           \or ניסן%
+           \or אייר%
+           \or סיון%
+           \or תמוז%
+           \or אב%
+           \or אלול%
+        \fi%
+    \fi}
+\def\@FormatForHebrew#1#2#3{%
+  \hebrewnumeral{#1}~ב\HebrewMonthName{#2}{#3}~%
+  \HebrewYearName{#3}}
+\def\HebrewMonthNameInEnglish#1#2{%
+    \ifnum #1 = 7%
+    \@CheckLeapHebrewYear{#2}%
+        \if@HebrewLeap Adar II\else Adar\fi%
+    \else%
+        \ifcase #1%
+            % nothing for 0
+            \or Tishrei%
+            \or Heshvan%
+            \or Kislev%
+            \or Tebeth%
+            \or Shebat%
+            \or Adar I%
+            \or Adar II%
+            \or Nisan%
+            \or Iyar%
+            \or Sivan%
+            \or Tammuz%
+            \or Av%
+            \or Elul%
+        \fi
+    \fi}
+\def\@FormatForEnglish#1#2#3{%
+    \HebrewMonthNameInEnglish{#2}{#3} \number#1,\ \number#3}
+\newcount\@common
+\newif\if@HebrewLeap
+\def\@CheckLeapHebrewYear#1{%
+    {%
+        \countdef\tmpa = 0%       % \tmpa==\count0
+        \countdef\tmpb = 1%       % \tmpb==\count1
+        \tmpa = #1%
+        \multiply \tmpa by 7%
+        \advance \tmpa by 1%
+        \@Remainder{\tmpa}{19}{\tmpb}%
+        \ifnum \tmpb < 7%         % \tmpb = (7*year+1)%19
+            \global\@HebrewLeaptrue%
+        \else%
+            \global\@HebrewLeapfalse%
+        \fi}}
+\def\@HebrewElapsedMonths#1#2{%
+    {%
+        \countdef\tmpa = 0%       % \tmpa==\count0
+        \countdef\tmpb = 1%       % \tmpb==\count1
+        \countdef\tmpc = 2%       % \tmpc==\count2
+        \tmpa = #1%               %
+        \advance \tmpa by -1%     %
+        #2 = \tmpa%               % #2 = \tmpa = year-1
+        \divide #2 by 19%         % Number of complete Meton cycles
+        \multiply #2 by 235%      % #2 = 235*((year-1)/19)
+        \@Remainder{\tmpa}{19}{\tmpb}% \tmpa = years%19-years this cycle
+        \tmpc = \tmpb%            %
+        \multiply \tmpb by 12%    %
+        \advance #2 by \tmpb%     % add regular months this cycle
+        \multiply \tmpc by 7%     %
+        \advance \tmpc by 1%      %
+        \divide \tmpc by 19%      % \tmpc = (1+7*((year-1)%19))/19 -
+        \advance #2 by \tmpc%     %  add leap months
+        \global\@common = #2}%
+    #2 = \@common}
+\def\@HebrewElapsedDays#1#2{%
+    {%
+        \countdef\tmpa = 0%       % \tmpa==\count0
+        \countdef\tmpb = 1%       % \tmpb==\count1
+        \countdef\tmpc = 2%       % \tmpc==\count2
+        \@HebrewElapsedMonths{#1}{#2}%
+        \tmpa = #2%               %
+        \multiply \tmpa by 13753% %
+        \advance \tmpa by 5604%   % \tmpa=MonthsElapsed*13758 + 5604
+        \@Remainder{\tmpa}{25920}{\tmpc}% \tmpc == ConjunctionParts
+        \divide \tmpa by 25920%
+        \multiply #2 by 29%
+        \advance #2 by 1%
+        \advance #2 by \tmpa%     %  #2 = 1 + MonthsElapsed*29 +
+        \@Remainder{#2}{7}{\tmpa}% %  \tmpa == DayOfWeek
+        \ifnum \tmpc < 19440%
+            \ifnum \tmpc < 9924%
+            \else%                % New moon at 9 h. 204 p. or later
+                \ifnum \tmpa = 2% % on Tuesday ...
+                    \@CheckLeapHebrewYear{#1}% of a common year
+                    \if@HebrewLeap%
+                    \else%
+                        \advance #2 by 1%
+                    \fi%
+                \fi%
+            \fi%
+            \ifnum \tmpc < 16789%
+            \else%                 % New moon at 15 h. 589 p. or later
+                \ifnum \tmpa = 1%  % on Monday ...
+                    \advance #1 by -1%
+                    \@CheckLeapHebrewYear{#1}% at the end of leap year
+                    \if@HebrewLeap%
+                        \advance #2 by 1%
+                    \fi%
+                \fi%
+            \fi%
+        \else%
+            \advance #2 by 1%      %  new moon at or after midday
+        \fi%
+        \@Remainder{#2}{7}{\tmpa}%  %  \tmpa == DayOfWeek
+        \ifnum \tmpa = 0%          %  if Sunday ...
+            \advance #2 by 1%
+        \else%                     %
+            \ifnum \tmpa = 3%      %  Wednesday ...
+                \advance #2 by 1%
+            \else%
+                \ifnum \tmpa = 5%  %  or Friday
+                     \advance #2 by 1%
+                \fi%
+            \fi%
+        \fi%
+        \global\@common = #2}%
+    #2 = \@common}
+\def\@DaysInHebrewYear#1#2{%
+    {%
+        \countdef\tmpe = 12%   % \tmpe==\count12
+        \@HebrewElapsedDays{#1}{\tmpe}%
+        \advance #1 by 1%
+        \@HebrewElapsedDays{#1}{#2}%
+        \advance #2 by -\tmpe%
+        \global\@common = #2}%
+    #2 = \@common}
+\def\@HebrewDaysInPriorMonths#1#2#3{%
+    {%
+        \countdef\tmpf= 14%    % \tmpf==\count14
+        #3 = \ifcase #1%       % Days in prior month of regular year
+               0 \or%          % no month number 0
+               0 \or%          % Tishri
+              30 \or%          % Heshvan
+              59 \or%          % Kislev
+              89 \or%          % Tebeth
+             118 \or%          % Shebat
+             148 \or%          % Adar I
+             148 \or%          % Adar II
+             177 \or%          % Nisan
+             207 \or%          % Iyar
+             236 \or%          % Sivan
+             266 \or%          % Tammuz
+             295 \or%          % Av
+             325 \or%          % Elul
+             400%              % Dummy
+        \fi%
+        \@CheckLeapHebrewYear{#2}%
+        \if@HebrewLeap%            % in leap year
+            \ifnum #1 > 6%         % if month after Adar I
+                \advance #3 by 30% % add  30 days
+            \fi%
+        \fi%
+        \@DaysInHebrewYear{#2}{\tmpf}%
+        \ifnum #1 > 3%
+            \ifnum \tmpf = 353%    %
+                \advance #3 by -1% %
+            \fi%                   %  Short Kislev
+            \ifnum \tmpf = 383%    %
+                \advance #3 by -1% %
+            \fi%                   %
+        \fi%
+        \ifnum #1 > 2%
+            \ifnum \tmpf = 355%    %
+                \advance #3 by 1%  %
+            \fi%                   %  Long Heshvan
+            \ifnum \tmpf = 385%    %
+                \advance #3 by 1%  %
+            \fi%                   %
+        \fi%
+        \global\@common = #3}%
+    #3 = \@common}
+\def\@FixedFromHebrew#1#2#3#4{%
+    {%
+        #4 = #1%
+        \@HebrewDaysInPriorMonths{#2}{#3}{#1}%
+        \advance #4 by #1%         % Add days in prior months this year
+        \@HebrewElapsedDays{#3}{#1}%
+        \advance #4 by #1%         % Add days in prior years
+        \advance #4 by -1373429%   % Subtract days before Gregorian
+        \global\@common = #4}%     %   01.01.0001
+    #4 = \@common}
+\def\@GregorianDaysInPriorMonths#1#2#3{%
+    {%
+        #3 = \ifcase #1%
+               0 \or%             % no month number 0
+               0 \or%
+              31 \or%
+              59 \or%
+              90 \or%
+             120 \or%
+             151 \or%
+             181 \or%
+             212 \or%
+             243 \or%
+             273 \or%
+             304 \or%
+             334%
+        \fi%
+        \if@GregorianLeap{#2}%
+            \ifnum #1 > 2%        % if month after February
+                \advance #3 by 1% % add leap day
+            \fi%
+        \fi%
+        \global\@common = #3}%
+    #3 = \@common}
+\def\@GregorianDaysInPriorYears#1#2{%
+     {%
+         \countdef\tmpc = 4%      % \tmpc==\count4
+         \countdef\tmpb = 2%      % \tmpb==\count2
+         \tmpb = #1%              %
+         \advance \tmpb by -1%    %
+         \tmpc = \tmpb%           % \tmpc = \tmpb = year-1
+         \multiply \tmpc by 365%  % Days in prior years =
+         #2 = \tmpc%              % = 365*(year-1) ...
+         \tmpc = \tmpb%           %
+         \divide \tmpc by 4%      % \tmpc = (year-1)/4
+         \advance #2 by \tmpc%    % ... plus Julian leap days ...
+         \tmpc = \tmpb%           %
+         \divide \tmpc by 100%    % \tmpc = (year-1)/100
+         \advance #2 by -\tmpc%   % ... minus century years ...
+         \tmpc = \tmpb%           %
+         \divide \tmpc by 400%    % \tmpc = (year-1)/400
+         \advance #2 by \tmpc%    % ... plus 4-century years.
+         \global\@common = #2}%
+    #2 = \@common}
+\def\@AbsoluteFromGregorian#1#2#3#4{%
+    {%
+        \countdef\tmpd = 0%       % \tmpd==\count0
+        #4 = #1%                  % days so far this month
+        \@GregorianDaysInPriorMonths{#2}{#3}{\tmpd}%
+        \advance #4 by \tmpd%     % add days in prior months
+        \@GregorianDaysInPriorYears{#3}{\tmpd}%
+        \advance #4 by \tmpd%     % add days in prior years
+        \global\@common = #4}%
+    #4 = \@common}
+\def\HebrewFromGregorian#1#2#3#4#5#6{%
+    {%
+        \countdef\tmpx= 17%        % \tmpx==\count17
+        \countdef\tmpy= 18%        % \tmpy==\count18
+        \countdef\tmpz= 19%        % \tmpz==\count19
+        #6 = #3%                   %
+        \global\advance #6 by 3761%  approximation from above
+        \@AbsoluteFromGregorian{#1}{#2}{#3}{#4}%
+        \tmpz = 1  \tmpy = 1%
+        \@FixedFromHebrew{\tmpz}{\tmpy}{#6}{\tmpx}%
+        \ifnum \tmpx > #4%              %
+            \global\advance #6 by -1% Hyear = Gyear + 3760
+            \@FixedFromHebrew{\tmpz}{\tmpy}{#6}{\tmpx}%
+        \fi%                            %
+        \advance #4 by -\tmpx%     % Days in this year
+        \advance #4 by 1%          %
+        #5 = #4%                   %
+        \divide #5 by 30%          % Approximation for month from below
+        \loop%                     % Search for month
+            \@HebrewDaysInPriorMonths{#5}{#6}{\tmpx}%
+            \ifnum \tmpx < #4%
+                \advance #5 by 1%
+                \tmpy = \tmpx%
+        \repeat%
+        \global\advance #5 by -1%
+        \global\advance #4 by -\tmpy}}
+\endinput
-- 
cgit v1.2.3

