%% %% 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-2004 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 -- 2004 Boris Lavva. %% Babel package for LaTeX version 2e %% Copyright (C) 1989 -- 2004 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} [2004/02/20 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'.