[cstex] Velikonoce

Va'clav Studeny' Vclv at centrum.cz
Fri Feb 6 14:56:00 CET 2009


Zrovna jsme se zaèal probírat svou pozùstalostí z 
roku 1995. Budou velikonoce a napadlo mne, že by 
se nìkomu mohlo hodit, nebo líbit makro, kterému 
se pøedá jeden argument: rok, a ono vysází datum 
hodu Božího velikonoèního (první nedìle po prvním 
jarním úplòku na Jeruzalémském poledníku). 
Algoritmus je od známeho pøedknutovského 
uživatele TeXu Fridricha Gause,  a tady to je 
implementován (pro obecné použití asi trochu 
nešikovnì) tak, že èíslo roku gregoriánkého 
kalendáøe se dosadí do promìnné \rok a datum 
Božího hodu je pak v promìnných \den \mìsíc, ale 
pøepat to na makro s parametrem je už malikost.

Zdravím s blížícím  svátkem lampiónù svátku 
lampiónù (9. 2., 15. den, tj. (pøibl.) první úplnìk v novém, roce)

Václav Studený

% Master: Kalendarkun(19).TeX
\newcount\i
\newcount\j
\newcount\k
\newcount\l
\newcount\m\m=24
\newcount\n\n=5% do roku 2099(vcetne)
\newcount\Den
\newcount\Mesic
\newcount\Rok
\newcount\pom

\def\mod#1#2#3{\pom=#1\divide\pom by #2 \multiply 
\pom by #2 \advance\pom by -#1\multiply
\pom by -1\relax #3=\pom}


\def\Velikonoce{%
\ifnum \Rok>1899  \m=24\n=5   \fi%\fi \ifnum\Rok<2200
\ifnum \Rok>2199  \m=25\n=0   \fi%\fi \ifnum\Rok<2300
\ifnum \Rok>2299  \m=26\n=1   \fi%\fi \ifnum\Rok<2400
\ifnum \Rok>2399 \ifnum\Rok<2500 \m=25\n=1   \fi\fi
\mod\Rok {19}\i\relax
\mod\Rok {4}\j\relax
\mod\Rok {7}\k\relax
\multiply\i by 19\relax% 19*\i
\multiply\j by 2\relax
\multiply \k by 4\relax
\advance\m by \i\relax  %\m=19*\i+\m
\mod\m{30}\m%\m=(19*\i+m) mod 30
\l=\m
\multiply\l by 6\relax
\advance\n by\l\relax%\n=\n+6*\m
\advance\n by\j\relax%\n=\n+6*\m+2*\j
\advance\n by\k\relax%\n=\n+2*\j+4*\k+6*\m
\mod\n 7\n%\n=(\n+2*\j+\4*\k+6*\m) mod 7
\divide\l by 6\relax
\advance\l by \n\relax
\ifnum \l<10\relax \advance\l by 22\relax  \Den=\l \Mesic=3\relax
         \else
                 \advance\l by -9 
\relax\ifnum\l>25 \advance\l by -7\fi  \Den=\l \Mesic=4\relax
\fi
\ifnum\m=28 \ifnum\n=6 \ifnum\i>10 \Den=18\relax 
\Mesic=4\relax \fi\fi\fi %vyjimky
\ifnum\m=29 \ifnum\n=6             \Den=19\relax \Mesic=4\relax \fi\fi %vyjimky
}


\Rok=2008

\Velikonoce
\number\Den. \number\Mesic. \number\Rok

\end





More information about the csTeX mailing list