summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/babel-hebrew/hebcal.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel-hebrew/hebcal.sty')
-rw-r--r--Master/texmf-dist/tex/generic/babel-hebrew/hebcal.sty441
1 files changed, 441 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/babel-hebrew/hebcal.sty b/Master/texmf-dist/tex/generic/babel-hebrew/hebcal.sty
new file mode 100644
index 00000000000..2f89eec3eb3
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel-hebrew/hebcal.sty
@@ -0,0 +1,441 @@
+%%
+%% This is file `hebcal.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% hebrew.dtx (with options: `calendar')
+%%
+%% This is a generated file.
+%%
+%% Copyright 1997-2004 Boris Lavva and any individual authors
+%% listed elsewhere in this file. All rights reserved.
+%%
+%% This is a generated file.
+%%
+%% Copyright 1989-2005 Johannes L. Braams and any individual authors
+%% listed elsewhere in this file. All rights reserved.
+%%
+%% This file was generated from file(s) of the Babel system.
+%% ---------------------------------------------------------
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainer of this work is Johannes Braams.
+%%
+%% This file may only be distributed together with a copy of the Babel
+%% system. You may however distribute the Babel system without
+%% such generated files.
+%%
+%% The list of all files belonging to the Babel distribution is
+%% given in the file `manifest.bbl'. See also `legal.bbl for additional
+%% information.
+%%
+%% The list of derived (unpacked) files belonging to the distribution
+%% and covered by LPPL is defined by the unpacking scripts (with
+%% extension .ins) which are part of the distribution.
+%% Hebrew language definition and additional packages.
+%% Copyright (C) 1997 -- 2005 Boris Lavva.
+%% Babel package for LaTeX version 2e
+%% Copyright (C) 1989 -- 2005 by Johannes Braams,
+%% TeXniek
+%% All rights reserved.
+%% TeX & LaTeX macros for computing Hebrew date from Gregorian one
+%% Copyright (C) 1991 by Michail Rozman, misha@iop.tartu.ew.su
+%%
+\ProvidesPackage{hebcal}
+ [2005/03/30 v2.3h %
+ Hebrew calendar
+ Hebrew language support from the babel system]
+\newif\if@full@hebrew@year
+\@full@hebrew@yearfalse
+\DeclareOption{full}{\@full@hebrew@yeartrue}
+\ProcessOptions
+\newcount\Hebrewday \newcount\Hebrewmonth \newcount\Hebrewyear
+\def\Hebrewdate#1#2#3{%
+ \HebrewFromGregorian{#1}{#2}{#3}
+ {\Hebrewday}{\Hebrewmonth}{\Hebrewyear}%
+ \ifundefined{if@rl}%
+ \FormatForEnglish{\Hebrewday}{\Hebrewmonth}{\Hebrewyear}%
+ \else%
+ \FormatDate{\Hebrewday}{\Hebrewmonth}{\Hebrewyear}%
+ \fi}
+\def\Hebrewtoday{\Hebrewdate{\day}{\month}{\year}}
+\let\hebrewtoday=\Hebrewtoday
+\def\Hebrewsetreg{%
+ \HebrewFromGregorian{\day}{\month}{\year}
+ {\Hebrewday}{\Hebrewmonth}{\Hebrewyear}}
+\def\FormatDate#1#2#3{%
+ \if@rl%
+ \FormatForHebrew{#1}{#2}{#3}%
+ \else%
+ \FormatForEnglish{#1}{#2}{#3}
+ \fi}
+\def\HebrewYearName#1{{%
+ \@tempcnta=#1\divide\@tempcnta by 1000\multiply\@tempcnta by 1000
+ \ifnum#1=\@tempcnta\relax % divisible by 1000: disambiguate
+ \Hebrewnumeralfinal{#1}\ )\heblamed\hebpe"\hebgimel(%
+ \else % not divisible by 1000
+ \ifnum#1<1000\relax % first millennium: disambiguate
+ \Hebrewnumeralfinal{#1}\ )\heblamed\hebpe"\hebgimel(%
+ \else
+ \ifnum#1<5000
+ \Hebrewnumeralfinal{#1}%
+ \else
+ \ifnum#1<6000 % current millenium, print without thousands
+ \@tempcnta=#1\relax
+ \if@full@hebrew@year\else\advance\@tempcnta by -5000\fi
+ \Hebrewnumeralfinal{\@tempcnta}%
+ \else % #1>6000
+ \Hebrewnumeralfinal{#1}%
+ \fi
+ \fi
+ \fi
+ \fi}}
+\def\HebrewMonthName#1#2{%
+ \ifnum #1 = 7 %
+ \CheckLeapHebrewYear{#2}%
+ \if@HebrewLeap \hebalef\hebdalet\hebresh\ \hebbet'%
+ \else \hebalef\hebdalet\hebresh%
+ \fi%
+ \else%
+ \ifcase#1%
+ % nothing for 0
+ \or\hebtav\hebshin\hebresh\hebyod%
+ \or\hebhet\hebshin\hebvav\hebfinalnun%
+ \or\hebkaf\hebsamekh\heblamed\hebvav%
+ \or\hebtet\hebbet\hebtav%
+ \or\hebshin\hebbet\hebtet%
+ \or\hebalef\hebdalet\hebresh\ \hebalef'%
+ \or\hebalef\hebdalet\hebresh\ \hebbet'%
+ \or\hebnun\hebyod\hebsamekh\hebfinalnun%
+ \or\hebalef\hebyod\hebyod\hebresh%
+ \or\hebsamekh\hebyod\hebvav\hebfinalnun%
+ \or\hebtav\hebmem\hebvav\hebzayin%
+ \or\hebalef\hebbet%
+ \or\hebalef\heblamed\hebvav\heblamed%
+ \fi%
+ \fi}
+\def\HebrewDayName#1{\Hebrewnumeral{#1}}
+\def\FormatForHebrew#1#2#3{%
+ \HebrewDayName{#1}~\hebbet\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
+\def\Remainder#1#2#3{%
+ #3 = #1% % c = a
+ \divide #3 by #2% % c = a/b
+ \multiply #3 by -#2% % c = -b(a/b)
+ \advance #3 by #1}% % c = a - b(a/b)
+\newif\if@Divisible
+\def\CheckIfDivisible#1#2{%
+ {%
+ \countdef\tmp = 0% \tmp == \count0 - temporary variable
+ \Remainder{#1}{#2}{\tmp}%
+ \ifnum \tmp = 0%
+ \global\@Divisibletrue%
+ \else%
+ \global\@Divisiblefalse%
+ \fi}}
+\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}
+\newif\if@GregorianLeap
+\def\IfGregorianLeap#1{%
+ \CheckIfDivisible{#1}{4}%
+ \if@Divisible%
+ \CheckIfDivisible{#1}{100}%
+ \if@Divisible%
+ \CheckIfDivisible{#1}{400}%
+ \if@Divisible%
+ \@GregorianLeaptrue%
+ \else%
+ \@GregorianLeapfalse%
+ \fi%
+ \else%
+ \@GregorianLeaptrue%
+ \fi%
+ \else%
+ \@GregorianLeapfalse%
+ \fi%
+ \if@GregorianLeap}
+\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%
+ \IfGregorianLeap{#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}
+\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\AbsoluteFromHebrew#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\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%
+ \AbsoluteFromHebrew{\tmpz}{\tmpy}{#6}{\tmpx}%
+ \ifnum \tmpx > #4% %
+ \global\advance #6 by -1% Hyear = Gyear + 3760
+ \AbsoluteFromHebrew{\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}}
+%%
+%% \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 \~}
+%%
+\endinput
+%%
+%% End of file `hebcal.sty'.