summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/babel-contrib/hebrew
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/babel-contrib/hebrew
Initial commit
Diffstat (limited to 'macros/latex/contrib/babel-contrib/hebrew')
-rw-r--r--macros/latex/contrib/babel-contrib/hebrew/00readme.heb605
-rw-r--r--macros/latex/contrib/babel-contrib/hebrew/heb209.dtx165
-rw-r--r--macros/latex/contrib/babel-contrib/hebrew/heb209.pdfbin0 -> 152604 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/hebrew/hebinp.dtx550
-rw-r--r--macros/latex/contrib/babel-contrib/hebrew/hebinp.pdfbin0 -> 199654 bytes
-rw-r--r--macros/latex/contrib/babel-contrib/hebrew/hebrew.dtx3329
-rw-r--r--macros/latex/contrib/babel-contrib/hebrew/hebrew.fdd1297
-rw-r--r--macros/latex/contrib/babel-contrib/hebrew/hebrew.ins215
-rw-r--r--macros/latex/contrib/babel-contrib/hebrew/hebrew.pdfbin0 -> 418939 bytes
9 files changed, 6161 insertions, 0 deletions
diff --git a/macros/latex/contrib/babel-contrib/hebrew/00readme.heb b/macros/latex/contrib/babel-contrib/hebrew/00readme.heb
new file mode 100644
index 0000000000..b4ae253092
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/hebrew/00readme.heb
@@ -0,0 +1,605 @@
+% \iffalse meta-comment
+%
+% Copyright 1989-2005 Johannes L. Braams and any individual authors
+% listed elsewhere in this file. All rights reserved.
+%
+% This file is part 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.
+%
+% The list of all files belonging to the Babel system 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.
+% \fi
+ Hebrew Package for babel system and LaTeX2e
+
+This new support package for Hebrew language is based on the old LaTeX 2.09
+hebrew.sty and is backward compatible with it. A new babel-based language
+switching interface is also supported.
+
+Bi-directional support uses TeX--XeT or newer e-TeX engine.
+
+The package is available on-line at http://www.dsg.technion.ac.il/heblatex/
+or at ftp://tochna.technion.ac.il/pub/staff/lavva/heblatex/. It consists of:
+
+ 1. Hebrew package for babel/LaTeX 2e: heblatex.tar.gz or heblatex.zip.
+ 2. Hebrew fonts (available also on CTAN or ftp.cc.huji.ac.il):
+ hebfonts.tar.gz or hebfonts.zip.
+ 3. Examples of hebrew documents: hebexmpl.tar.gz or hebexmpl.zip.
+ 4. This README.html file, available also in plain text format as
+ README.txt.
+
+The babel/LaTeX 2e edition of the hebrew package, as well as documentation
+(including this README file) was developed and will be supported by Boris
+Lavva, lavva@tx.technion.ac.il. Please direct your additions, modifications,
+bug fixes and comments to this address.
+
+------------------------------------------------------
+Table of contents
+
+ Acknowledgement
+ Copyright
+ Installation
+ Hebrew package usage
+ Input code pages
+ Font encodings
+ Bi-directional sectioning commands
+ Table of contents, List of figures, List of tables
+ Hebrew calendar
+ Document class for preparing Hebrew/English or English/Hebrew thesis
+ Compatibility with LaTeX 2.09 style
+ Future work
+
+------------------------------------------------------
+Acknowledgment
+
+The following people have contributed to Hebrew package in one way or
+another, knowingly or unknowingly. In alphabetical order:
+Irina Abramovici, Yaniv Bargury, Yael Dubinsky, Sergio Fogel, Dan Haran,
+Rama Porrat, Michail Rozman, Alon Ziv.
+
+Johannes Braams is the author of babel - a multilingual support for LaTeX.
+
+Tatiana Samoilov and Vitaly Surazhsky found a number of serious bugs in
+preliminary version of Hebrew package.
+
+A number of other people have contributed comments and information. Specific
+contributions are acknowledged within the documentation.
+
+I want to thank my wife, Vita, and son, Mishka, for their infinite love and
+patience.
+
+If you made a contribution and I haven't mentioned it, don't worry, it was
+an accident. I'm sorry. Just tell me and I will add you to the next version.
+
+------------------------------------------------------
+Copyright
+
+The copyright similar to other LaTeX 2e packages is added to prevent
+inconsistency in version numbers and wide-spread distribution of unsupported
+macro files (which was common with the old distributions).
+
+Changes, bug fixes and additions are always welcome, but they should be or
+distributed under other name, or incorporated in this package (by mailing
+me).
+
+ --------------------------------------------------
+
+ Copyright 1997-1998 Boris Lavva and any individual authors listed
+ elsewhere in this file. All rights reserved.
+
+ For further copyright information, and conditions for modification and
+ distribution, see any other copyright notices in this file.
+
+ This file is contributed to the Babel system, release 3.6.
+
+ --------------------------------------------------
+ This system is distributed in the hope that
+ it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ For error reports concerning UNCHANGED versions of this file no more
+ than one year old, see bugs.txt.
+
+ Please do not request updates from me directly. Primary distribution
+ will be through the CTAN archives.
+
+ IMPORTANT COPYRIGHT NOTICE:
+
+ You are NOT ALLOWED to distribute this file alone.
+
+ You are allowed to distribute this file under the condition that it
+ is distributed together with all the files listed in manifest.txt.
+
+ If you receive only some of these files from someone, complain!
+
+ Permission is granted to customize the declarations in this file to
+ serve the needs of your installation, provided that you comply with the
+ conditions in the file legal.txt.
+
+ However, NO PERMISSION is granted to distribute a modified version of
+ this file under its original name.
+
+ MODIFICATION ADVICE:
+ If you want to customize this file, it is best to make a copy of the
+ source file(s) from which it was produced. Use a different name for your
+ copy(ies) and modify the copy(ies); this will ensure that your modifications
+ do not get overwritten when you install a new release of the standard system.
+
+ You can then easily distribute your modifications by distributing the
+ modified and renamed copy of the source file, together with a suitable
+ .ins file, taking care to observe the conditions in legal.txt; this will
+ ensure that other users can safely use your modifications.
+
+------------------------------------------------------
+Installation
+
+ 1. Full LaTeX 2e distribution should be installed, including TeX--XeT or
+ e-TeX. Known such distributions include:
+ o teTeX 0.9 for UNIX with e-TeX
+ (ftp://ftp.informatik.uni-hannover.de/home/te/private/.0.9/)
+ o NTeX for UNIX with TeX--XeT
+ (http://darfnix.mathematik.uni-stuttgart.de/pub/tex/ntex/)
+ o Web2C for Windows 95 and NT (see at CTAN:systems/win32, for
+ example, ftp://ftp.dante.de/tex-archive/systems/win32/)
+ o TeX Live CD-ROMs distributed by TeX Users Group (TUG), see details
+ at http://www.tug.org.
+ 2. If e-TeX is installed, check if its format is available in extended
+ mode, by running elatex or latex on some .tex file:
+ -----------------------------------------------------------------------
+
+ This is e-TeX, Version 3.14159-1.1 (Web2c 7.0)
+ entering extended mode
+ -----------------------------------------------------------------------
+
+ The second line should be "entering extended mode".
+ 3. If TeX--XeT is installed, it will use a LaTeX 2e format file, called
+ laxet.fmt from the formats directory. This directory is commonly
+ located at texmf/web2c or texmf/web2c/ini subdirectories. To produce
+ format file, run initexxet program on the following laxet.ini file:
+ -----------------------------------------------------------------------
+
+ % Prevent dumping of LaTeX2e
+ \let\xxdump=\dump
+ \let\dump=\endinput
+ % LaTeX2e format
+ \input latex.ltx
+ % Read latex2e.add
+ \openin1=latex2e.add
+ \ifeof1\closein1\message{latex2e.add not found}
+ \else\closein1\input latex2e.add
+ \fi
+ % dump
+ \let\dump=\xxdump
+ \let\xxdump=\undefined
+ \dump
+ -----------------------------------------------------------------------
+
+ Put the resulting file laxet.fmt to the formats directory and link (or
+ copy) the virtexxet program as laxet.
+ 4. Download the babel sources from the CTAN sites, directory
+ macros/latex/packages/babel. This version of Hebrew package is tested
+ with babel version 3.6.
+ 5. Apply the following changes to the standard babel sources:
+ o babel.dtx -- after the line 916 (greek) add:
+ \DeclareOption{hebrew}{\input{rlbabel.def}\input{hebrew.ldf}}
+ o bbcompat.dtx -- after the line 134 (welsh) add:
+ %<+hebrew>\input rlbabel.def\input hebrew.ldf\relax
+ o babel.ins -- after the line 346 (bahasa) add:
+ \generate{\compatfile{hebrew}}
+ 6. Download the hebrew package, fonts and examples from the above
+ mentioned place.
+ 7. Open heblatex to the babel sources directory.
+ 8. Run latex babel.ins and then latex hebrew.ins.
+ 9. Move all *.cls, *.sty, *.def, *.fd, *.ldf to the babel directory
+ searchable by TeX (run MakeTeXls-R or similar program). Usually, babel
+ is located at TEXROOT/share/texmf/tex/latex/packages/babel or
+ TEXROOT/share/texmf/tex/generic/babel.
+ 10. Install hebrew fonts from hebfonts as following:
+ o Find your public font sources directory, it is usually:
+ TEXROOT/share/texmf/fonts/source/public.
+ o Unpack hebfonts file into the abovenamed public directory. It will
+ create a new directory called hebrew inside public.
+ o Find your special.map file - it is usually found at
+ TEXROOT/share/texmf/fontname/special.map and add the following
+ lines at the end of this file:
+ @c Hebrew fonts
+ jerus10 public hebrew
+ deads10 public hebrew
+ oldjaf10 public hebrew
+ telav10 public hebrew
+ crml10 public hebrew
+ crmlsl10 public hebrew
+ fr public hebrew
+ frbx public hebrew
+ frsl public hebrew
+ hclassic public hebrew
+ hcaption public hebrew
+ redis7 public hebrew
+ redis8 public hebrew
+ redis9 public hebrew
+ redis10 public hebrew
+ redis12 public hebrew
+ redis17 public hebrew
+ redisb10 public hebrew
+ rediss8 public hebrew
+ rediss9 public hebrew
+ rediss10 public hebrew
+ rediss12 public hebrew
+ shold10 public hebrew
+ shscr10 public hebrew
+ shstk10 public hebrew
+ o Run REHASH from texconfig utility or program MakeTeXls-R or newer
+ mktexlsr (if available) to build a new ls-R database in
+ TEXROOT/share/texmf directory. You can add inserted file names
+ manually to ls-R if you cannot find abovenamed programs.
+ o Note that only 7-bit (old code) fonts are used by new Hebrew
+ package.
+ 11. You can check if your installation succeed by LaTeXing examples from
+ hebexmpl file.
+
+Finally, you can prepare the LaTeX documentation of all components of the
+new Hebrew package by running:
+
+ ------------------------------------
+
+ latex hebrew.dtx
+ makeindex -s bbind.ist hebrew.idx
+ makeindex -s bbglo.ist -o hebrew.gls hebrew.glo
+ latex hebrew.dtx
+ latex hebrew.dtx
+
+ ------------------------------------
+
+The same procedure can be applied on babel.dtx (or babel.drv) to create the
+babel documentation. Files bbind.ist and bbglo.ist are included with babel
+installation.
+
+------------------------------------------------------
+Hebrew package usage
+
+The usage is simple, for example:
+
+\documentclass[12pt,twoside]{book}
+\usepackage[hebrew,english,russian,danish,greek,...]{babel}
+
+LaTeX 2.09 style is also supported (in compatibility mode) to process
+existing documents, for example:
+
+\documentstyle[12pt,hebrew_newcode]{article}
+
+Languages can be switched by the following macros:
+
+ 1. \sethebrew or \unsethebrew
+ 2. \selectlanguage{hebrew}, \selectlanguage{english}, etc.
+ 3. \begin{otherlanguage}{hebrew} ... \end{otherlanguage}, or any other
+ language
+ 4. \R{hebrew text} inside the latin text
+ 5. \L{latin text} inside the hebrew text
+
+First three commands are equivalent: first one provides switching interface,
+compatible with LaTeX 2.09 hebrew style, while second and third ---
+babel-based interface.
+
+Last two commands are used for language and direction switching inside
+paragraph.
+
+hmbox and embox macros should be used for inserting Hebrew and English text
+(respectively) inside a mathematical formula.
+
+------------------------------------------------------
+Input code pages
+
+Hebrew package supports the following input code pages:
+
+ 1. 7-bit hebrew encoding, also known as old code, defined by Israeli
+ Standard 960 (si960)
+ 2. IBM PC code page also known as pc code (cp862)
+ 3. WINDOWS code page also known as new code (cp1255)
+ 4. ISO 8859-8 Hebrew/Latin code page commonly used in UNIX, also known as
+ new code (8859-8 also known as new code)
+
+The default input encoding can be set using option defined above in
+parentheses with inputenc style (but *before* babel), for example :
+
+\usepackage[cp1255]{inputenc}
+
+Input encoding can be changed also inside the document by the \inputencoding
+command, for example:
+
+\inputencoding{cp862}
+
+------------------------------------------------------
+Font encodings
+
+Various font encodings can be used, including, of course, Local Hebrew
+Encoding (LHE), with the aid of fontenc style (but *before* babel), for
+example:
+
+\usepackage[LHE,OT2,LCY,T1]{fontenc}
+
+Many useful font-switching commands are provided in hebfont package which
+can be included *after* the babel:
+
+\usepackage{hebfont}
+
+These commands are in format \text<font>{Hebrew text}, for example:
+\textoj{Text printed with Old Jaffa font}, \textredis{Text printed with
+redis font}.
+
+In addition, for backward compatibility in LaTeX 2.09 documents, the four
+old font-switching commands are supported:
+{\jm ...}, {\oj ...}, {\ds ...} and {\ta ...} for Jerusalem, Old Jaffa, Dead
+Sea and Tel-Aviv fonts respectively.
+
+The following TeX fonts are supported:
+
+ * Jerusalem (used as default font)
+ * Dead Sea (used as bold font)
+ * Tel-Aviv (used as sans-serif or typewriter font)
+ * Old Jaffa (used as italic or slanted font and for emphasize)
+ * Hebrew classic normal and slanted (command \textclas)
+ * Shalom Old Style (command \textshold)
+ * Shalom Script (command \textshscr)
+ * Shalom Stick (command \textshstk)
+ * Carmel normal and slanted (command \textcrml)
+ * Frank Ruehl normal, bold and slanted (command \textfr)
+ * Redis normal, bold and slanted (command \textredis)
+
+------------------------------------------------------
+Bi-directional sectioning commands
+
+These commands inserts both Hebrew title to the RL table of contents or list
+of figures/tables, and English (or other LR language) title to the LR table
+of contents or list of figures/tables.
+
+ 1. \bpart{hebrew}{english}
+ 2. \bchapter{hebrew}{english}
+ 3. \bsection{hebrew}{english}
+ 4. \bsubsection{hebrew}{english}
+ 5. \bsubsubsection{hebrew}{english}
+ 6. \bcaption{hebrew}{english}
+ 7. \bchapternn{hebrew}{english} - replaces \chapter*
+ 8. \bsectionnn{hebrew}{english} - replaces \section*
+
+A number of additional bi-directional commands are defined in the
+hebtech.cls - thesis document class file, described below.
+
+------------------------------------------------------
+Table of contents, List of figures, List of tables
+
+Both Right-to-Left and Left-to-Right versions of the tables (toc, lof and
+lot) can be generated simultaneously. The LR files have the default
+extensions (.toc, .lof and .lot), while the RL files have reversed
+extensions (.cot, .fol and .tol). For example, to include RL tables at the
+beginning and LR tables before the end of the document:
+
+ ------------------------------------
+
+ \begin{document}
+ \sethebrew
+ \tableofcontents % Generates .cot file
+ \listoffigures % Generates .fol file
+ \listoftables % Generates .tol file
+ ...
+ \unsethebrew
+ \tableofcontents % Generates .toc file
+ \listoffigures % Generates .lof file
+ \listoftables % Generates .lot file
+ \end{document}
+
+ ------------------------------------
+
+All 6 files are generated simultaneously in two latex passes !
+
+------------------------------------------------------
+Hebrew calendar
+
+Original Hebrew calendar style was created by Michail Rozman, and corrected
+by Rama Porrat, Michail Rozman and Dan Haran.
+
+This style was adjusted to LaTeX 2e by Boris Lavva, and provided in hebcal
+package. It can be included *after* the babel:
+
+\usepackage{hebcal}
+
+The following 2 user-level commands are provided with the package:
+
+\newcount\hd \newcount\hm \newcount\hy
+
+\hd=10 \hm=3 \hy=1992
+
+\HebrewDate{\hd}{\hm}{\hy}
+
+which converts the requested Gregorian date to Hebrew calendar date and
+prints it in Hebrew or English (depends on the current language) and:
+
+\HebrewToday or \hebrewtoday
+
+which prints the current Hebrew date (today) .
+
+------------------------------------------------------
+Document class for preparing Hebrew/English or English/Hebrew thesis
+
+A useful document class file hebtech for preparing M.Sc. and Ph.D. theses
+for the Technion (English/Hebrew and Hebrew/English) is included with this
+package too. I believe that it can be adjusted for the needs of other
+academic institutions in Israel too. This class automatically includes babel
+with hebrew and english option, hebfont and hebcal packages.
+
+The original version for LaTeX 2.09 and old code Hebrew was created in 1994
+by Irina Abramovici, at Taub Computer Center, Technion.
+
+How to use this document class?
+
+\documentclass[12pt]{hebtech}
+
+The following parameters should be included in thesis preamble (before
+\begin{document}):
+
+ 1. Thesis title
+ \title{hebrew}{english}
+ 2. Thesis author
+ \author{hebrew}{english}
+ 3. Department name, e.g. Electrical Engineering Department
+ \dept{hebrew}{english}
+ 4. Domain of research, e.g. Food Processing
+ \dom{hebrew}{english}
+ 5. Main advisor
+ \advisori{hebrew}{english}
+ 6. Second advisor, if exists
+ \advisorii{hebrew}{english}
+ 7. Main sponsor
+ \donori{hebrew}{english}
+ 8. Additional sponsor, if exists
+ \donorii{hebrew}{english}
+ 9. Set thestype counter to:
+ o 1 --- for a research thesis
+ o 2 --- for a project thesis
+ o 3 --- for a final paper
+
+ \setcounter{thestype}{1}
+ 10. Set grade counter to:
+ o 1 --- for master of science
+ o 2 --- for master
+ o 3 --- for master of technology
+ o 4 --- for doctor of science
+
+ \setcounter{grade}{1}
+ 11. Date is optional, if not included, today's date will be used. The
+ Gregorian date entered will be printed and get converted the Jewish
+ date.
+ \date{28}{2}{1998}
+ 12. Page style is optional too, if not included, plain will be used.
+ \pagestyle{thesis}
+
+In the main document the following additional commands and environments can
+be used:
+
+ 1. \makecover - creates Hebrew or English cover page, depending on the
+ current language.
+ 2. \maketitle - creates Hebrew or English title page, depending on the
+ current language.
+ 3. \begin{acknowledgment} ... \end{acknowledgment} - builds the
+ acknowledgment page and adds inserted customized acknowledgment in
+ Hebrew or English, depending on the current language.
+ 4. \begin{dedication} ... \end{dedication} - builds the dedication page in
+ Hebrew or English, depending on the current language.
+ 5. \tableofcontents, \listoffigures, \listoftables - builds tables
+ depending on the current language (all 6 tables can be used
+ simultaneously).
+ 6. \begin{abstract} ... \end{abstract} - builds the abstract pages in
+ Hebrew or English, depending on the current language, adds contents
+ line to the 2 tables of contents.
+ 7. \frontmatter, \mainmatter, \backmatter - should be inserted at the
+ beginning, before the main part, and at the ending of the thesis to
+ change numbering and other style parameters.
+ 8. \bibliography{...} - now adds "References" line to the 2 tables of
+ contents: English and Hebrew.
+
+Some useful bi-directional commands, for figures and tables provided in this
+file too:
+
+ 1. \bcaptionf{hebrew}{english} - similar to \bcaption but answers to
+ thesis formatting requirements at the Technion, used for figures.
+ 2. \bcaptionff{to RL lof}{to LR lof}{hebrew}{english} - a customized one
+ for figures.
+ 3. \bcaptiont{hebrew}{english} - similar to \bcaption but answers to
+ thesis formatting requirements at the Technion, used for tables.
+ 4. \bcaptiontt{to RL lot}{to LR lot}{hebrew}{english} - a customized one
+ for tables.
+
+------------------------------------------------------
+Compatibility with LaTeX 2.09 style
+
+Generally, the new package is compatible with LaTeX 2.09 style file
+hebrew.sty, i.e. in most cases one can use the new package on old documents
+without any errors. Howver, it does not support Plain TeX, please use
+heb_macros.tex, or other TeX macro file for Hebrew instead.
+
+A few incompatibilities are described below:
+
+ * The macros with Hebrew names are not provided, for example, macro
+ \hadgesh when the command name "hadgesh" is given in Hebrew is not
+ supported. The reason is that in new LaTeX 2e it is forbidden to use
+ 8-bit macros, because all characters 128-255 became to be "active".
+ However, the following English-coded equivalents are supported for
+ backward compatibility with LaTeX 2.09 style and can be used even in
+ the new documents:
+ 1. \hebday (replaced "hayom").
+ 2. \hebcopy (for use in letter style)
+ 3. \hebincl (for use in letter style)
+ 4. \hebpage (for use in letter style)
+ 5. \hebto (for use in letter style)
+ 6. \hadgesh (produces ``poor man's bold'' - heavy printout, it is
+ advisable to use real bold fonts, e.g. DeadSea instead)
+ 7. \piska (can be used only in compatibility mode)
+ 8. \piskapiska (can be used only in compatibility mode)
+ 9. \makafgadol (=\textendash)
+ 10. \makafanak (=\textemdash)
+ 11. \geresh (=\textquoteright)
+ 12. \opengeresh (=\textquoteright)
+ 13. \closegeresh (=\textquoteleft)
+ 14. \openquote (=\textquotedblright)
+ 15. \closequote (=\textquotedblleft)
+ 16. \leftquotation (=\textquotedblright)
+ 17. \rightquotation (=\textquotedblleft)
+ 18. \undertext (=\underline, can be used only in compatibility mode)
+ * In \documentstyle line the following 3 styles can be used in Hebrew
+ documents:
+ 1. \documentstyle[hebrew_oldcode,...]{...} in old 7-bit documents
+ (instead of "hebrew"!).
+ 2. \documentstyle[hebrew_newcode,...]{...} in 8-bit UNIX or Windows
+ documents.
+ 3. \documentstyle[hebrew_p,...]{...} in 8-bit DOS documents.
+ * hebcal style should always be used (instead of older hebcal_p and
+ hebcal_newcode).
+ * Font names for the included 7-bit fonts were renamed (for the sake of
+ multiplatform support) to lowercase names with no more than 8
+ characters as following:
+ o jerus10.mf - for Jerusalem (10pt)
+ o deads10.mf - for Dead Sea (10pt)
+ o telav10.mf - for TelAviv (10pt)
+ o oldjaf10.mf - for Old Jaffa (10pt)
+ o shold10.mf - for Shalom Old Style (10pt)
+ o shscr10.mf - for Shalom Script (10pt)
+ o shstk10.mf - for Shalom Stick (10pt)
+ o Some other font-related files were renamed too (to lowercase and <
+ 8 characters):
+ + frank_ruehl.mf became frruehl.mf
+ + redisfont.mf became redisfnt.mf
+ + redisbx10.mf became redisb10.mf
+ o All other font names remain unchanged
+
+------------------------------------------------------
+Future work
+
+ 1. Visual enviroments i.e. tabular, tabbing and array have to be supported
+ for hebrew. Now only left-to-right direction of lines is supported.
+ 2. Update hebrew package for the future babel-3.7 release.
+ 3. Hebrew points and dots ("nikud") support should be added, so it can be
+ used in font-independent way.
+ Currently, nikud can be used only on font-dependent way: only shalom
+ and classic families of fonts provide nikud, and hebrew point glyphs
+ are located in different places.
+ 4. Machintosh Hebrew/English input code page support should be added.
+ 5. Type1/TrueType Hebrew fonts should be supported.
+
+------------------------------------------------------
+Created by Boris Lavva, lavva@tx.technion.ac.il
+Last modified March 1, 1998
diff --git a/macros/latex/contrib/babel-contrib/hebrew/heb209.dtx b/macros/latex/contrib/babel-contrib/hebrew/heb209.dtx
new file mode 100644
index 0000000000..69101ca766
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/hebrew/heb209.dtx
@@ -0,0 +1,165 @@
+% \iffalse meta-comment
+%
+% Copyright 1989-2005 Johannes L. Braams and any individual authors
+% listed elsewhere in this file. All rights reserved.
+%
+% This file is part 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.
+%
+% The list of all files belonging to the Babel system 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.
+% \fi
+% \CheckSum{8}
+%
+% \iffalse meta-comment
+%% File `heb209.dtx' - obsolete LaTeX 2.09 compatible style files.
+%% Copyright (C) 1997 -- 2004 Boris Lavva.
+%
+%% Babel package for LaTeX version 2e
+%% Copyright (C) 1989 -- 2004 by Johannes Braams,
+%% TeXniek
+%% All rights reserved.
+%\fi
+% \providecommand\dst{\textsc{docstrip}}
+% \providecommand\babel{\textsf{babel}}
+% \GetFileInfo{heb209.dtx}
+%
+% \changes{heb209~1.0a}{1998/01/06}{%
+% Initial version. Provides hebrew\_newcode, hebrew\_oldcode and
+% hebrew\_p style files for \LaTeX~2.09 (by Boris Lavva)}
+%
+% \section{Hebrew in \LaTeX~2.09 compatibility mode}\label{sec:heb209}
+%
+% |\documentstyle| command in the preamble of \LaTeX\ document
+% indicates that it is a \LaTeX~2.09 document, and should be processed
+% in \emph{compatibility mode}. In such documents, one of the following
+% three Hebrew style options can be included:
+% \begin{enumerate}
+% \item \texttt{hebrew\_newcode} indicates that document will use UNIX
+% ISO 8859-8 or Windows cp1255 input encoding, i.e.\ \emph{Alef}
+% letter will be represented as 224.
+% \item \texttt{hebrew\_p} indicates that document is encoded with IBM
+% PC cp862 encoding, i.e.\ \emph{Alef} letter will be represented as
+% 128.
+% \item \texttt{hebrew\_oldcode} indicates that document uses old 7-bit
+% encoding, as defined in Israeli Standard 960, i.e.\ \emph{Alef} is
+% character number 96.
+% \end{enumerate}
+% Note, that other hebrew-related styles, such as \texttt{hebcal} can
+% be included \emph{after} the abovenamed Hebrew style option, for
+% example:
+% \begin{quote}
+% |\documentstyle[12pt,hebrew_p,hebcal]{report}|.
+% \end{quote}
+%
+% Any Hebrew document which compiled under \LaTeX~2.09 should compile
+% under compatibility mode, unless it uses low-level commands such as
+% |\tenrm|.
+%
+% \subsection{The {\normalfont\dst{}} modules}
+%
+% The following modules are used in the implementation to direct
+% \dst{} in generating the external files:
+% \begin{center}
+% \begin{tabular}{ll}
+% newcode & produce \texttt{hebrew\_newcode.sty} \\
+% pccode & produce \texttt{hebrew\_p.sty} \\
+% oldcode & produce \texttt{hebrew\_oldcode.sty}
+% \end{tabular}
+% \end{center}
+%
+% \StopEventually{}
+%
+% \iffalse
+% \subsection{A driver for this document}
+%
+% The next bit of code contains the documentation driver file for
+% \TeX{}, i.e., the file that will produce the documentation you
+% are currently reading. It will be extracted from this file by
+% the \dst{} program.
+%
+% \begin{macrocode}
+%<*driver>
+\documentclass{ltxdoc}
+\title{Hebrew \LaTeX~2.09 compatibility style files}
+\author{Boris Lavva}
+\date{Printed \today}
+\begin{document}
+ \maketitle
+ \DocInput{heb209.dtx}
+\end{document}
+%</driver>
+% \end{macrocode}
+% \fi
+%
+% \subsection{Obsolete style files}
+%
+% For each of the Hebrew \LaTeX~2.09 Hebrew styles, we produce a
+% file which uses correct input encoding and calls \babel\ with
+% Hebrew and English language options.
+% This means that any styles which say |\input hebrew_newcode.sty|
+% or |\documentstyle[|\ldots|hebrew_newcode|\ldots|]{|\ldots|}|
+% should still work.
+%
+% \begin{macrocode}
+%<*newcode|pccode|oldcode>
+\NeedsTeXFormat{LaTeX2e}
+%</newcode|pccode|oldcode>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*newcode>
+\@obsoletefile{hebrew.sty}{hebrew_newcode.sty}
+\RequirePackage[8859-8]{inputenc}
+%</newcode>
+%<*pccode>
+\@obsoletefile{hebrew.sty}{hebrew_p.sty}
+\RequirePackage[cp862]{inputenc}
+%</pccode>
+%<*oldcode>
+\@obsoletefile{hebrew.sty}{hebrew_oldcode.sty}
+\RequirePackage[si960]{inputenc}
+%</oldcode>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*newcode|pccode|oldcode>
+\RequirePackage[english,hebrew]{babel}
+%</newcode|pccode|oldcode>
+% \end{macrocode}
+%
+% \Finale
+%%
+%% \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
diff --git a/macros/latex/contrib/babel-contrib/hebrew/heb209.pdf b/macros/latex/contrib/babel-contrib/hebrew/heb209.pdf
new file mode 100644
index 0000000000..e55684275c
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/hebrew/heb209.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/hebrew/hebinp.dtx b/macros/latex/contrib/babel-contrib/hebrew/hebinp.dtx
new file mode 100644
index 0000000000..a6a9d60c39
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/hebrew/hebinp.dtx
@@ -0,0 +1,550 @@
+% \iffalse meta-comment
+%
+% Copyright 1989-2005 Johannes L. Braams and any individual authors
+% listed elsewhere in this file. All rights reserved.
+%
+% This file is part 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.
+%
+% The list of all files belonging to the Babel system 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.
+% \fi
+% \CheckSum{446}
+%
+% \iffalse
+%<si960> \ProvidesFile{si960.def}
+%<8859-8> \ProvidesFile{8859-8.def}
+%<cp862> \ProvidesFile{cp862.def}
+%<cp1255> \ProvidesFile{cp1255.def}
+%<*driver>
+\ProvidesFile{hebinp.drv}
+%</driver>
+% \fi
+% \ProvidesFile{hebinp.dtx}
+ [2004/02/20 v1.1b Hebrew input encoding file]
+% \iffalse meta-comment
+%% File `hebinp.dtx' for installing the input hebrew encodings.
+%% Copyright (C) 1997 -- 2005 Boris Lavva.
+%
+%% Babel package for LaTeX version 2e
+%% Copyright (C) 1989 -- 2005 by Johannes Braams,
+%% TeXniek
+%% All rights reserved.
+% \fi
+%
+% \providecommand\dst{\textsc{docstrip}}
+% \GetFileInfo{hebinp.dtx}
+%
+% \changes{hebinp~1.0a}{1997/12/07}{%
+% Initial version. Provides 8859-8, cp862, cp1255, and old 7-bit
+% input encodings (by Boris Lavva)}
+% \changes{hebinp~1.1}{2001/02/27}{%
+% Renamed hebrew letters: \cs{alef} to \cs{hebalef} etc.
+% (by Tzafrir Cohen)}
+% \changes{hebinp~1.1a}{2001/07/22}{%
+% Renamed CP1255 nikud \cs{patah} to \cs{hebpatah etc}.
+% Added the macro \cs{DisableNikud} - may not be a good idea
+% (by Tzafrir Cohen)}
+%
+% \section{Hebrew input encodings}\label{sec:hebinp}
+%
+% Hebrew input encodings defined in file |hebinp.dtx|\footnote{The
+% files described in this section have version number \fileversion\
+% and were last revised on \filedate.} should be used with |inputenc|
+% \LaTeXe{} package. This package allows the user
+% to specify an input encoding from this file (for example, ISO
+% Hebrew/Latin 8859-8, IBM Hebrew codepage 862 or MS Windows
+% Hebrew codepage 1255) by saying:
+% \begin{quote}
+% |\usepackage[|\emph{encoding name}|]{inputenc}|
+% \end{quote}
+% The encoding can also be selected in the document with:
+% \begin{quote}
+% |\inputencoding{|\emph{encoding name}|}|
+% \end{quote}
+% The only practical use of this command within a document is when
+% using text from several documents to build up a composite work such
+% as a volume of journal articles. Therefore this command will be
+% used only in vertical mode.
+%
+% The encodings provided by this package are:
+% \begin{itemize}
+% \item |si960| 7-bit Hebrew encoding for the range 32--127. This
+% encoding also known as ``old-code'' and defined by Israeli
+% Standard SI-960.
+% \item |8859-8| ISO 8859-8 Hebrew/Latin encoding commonly used in
+% UNIX systems. This encoding also known as ``new-code'' and
+% includes hebrew letters in positions starting from 224.
+% \item |cp862| IBM 862 code page commonly used by DOS on
+% IBM-compatible personal computers. This encoding also known as
+% ``pc-code'' and includes hebrew letters in positions starting
+% from 128.
+% \item |cp1255| MS Windows 1255 (hebrew) code page which is similar to
+% 8859-8. In addition to hebrew letters, this encoding contains
+% also hebrew vowels and dots (nikud).
+% \end{itemize}
+% Each encoding has an associated |.def| file, for example
+% |8859-8.def| which defines the behaviour of each input character,
+% using the commands:
+% \begin{quote}
+% |\DeclareInputText{|\emph{slot}|}{|\emph{text}|}| \\
+% |\DeclareInputMath{|\emph{slot}|}{|\emph{math}|}|
+% \end{quote}
+% This defines the input character \emph{slot} to be the
+% \emph{text} material or \emph{math} material respectively.
+% For example, |8859-8.def| defines slots |"EA| (letter hebalef)
+% and |"B5| ($\mu$) by saying:
+%\begin{verbatim}
+% \DeclareInputText{224}{\hebalef}
+% \DeclareInputMath{181}{\mu}
+%\end{verbatim}
+% Note that the \emph{commands} should be robust, and should not be
+% dependent on the output encoding. The same \emph{slot} should not
+% have both a text and a math declaration for it. (This restriction
+% may be removed in future releases of inputenc).
+%
+% The |.def| file may also define commands using the declarations:\\
+% |\providecommand| or |\ProvideTextCommandDefault|.
+% For example, |8859-8.def| defines:
+%\begin{verbatim}
+% \ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
+% \DeclareInputText{188}{\textonequarter}
+%\end{verbatim}
+% The use of the `provide' forms here will ensure that a
+% better definition will not be over-written; their use is
+% recommended since, in general, the best defintion depends on the
+% fonts available.
+%
+% See the documentation in |inputenc.dtx| for details of how to
+% declare input definitions for various encodings.
+%
+% \StopEventually{}
+%
+% \iffalse
+% \subsection{A driver for this document}
+%
+% The next bit of code contains the documentation driver file for
+% \TeX{}, i.e., the file that will produce the documentation you
+% are currently reading. It will be extracted from this file by
+% the \dst{} program.
+%
+% \begin{macrocode}
+%<*driver>
+\documentclass{ltxdoc}
+\title{Hebrew input encodings for use with \LaTeXe}
+\author{Boris Lavva}
+\date{Printed \today}
+\begin{document}
+ \maketitle
+ \DocInput{hebinp.dtx}
+\end{document}
+%</driver>
+% \end{macrocode}
+% \fi
+%
+% \subsection{Default definitions for characters}
+%
+% First, we insert a |\makeatletter| at the beginning of all |.def|
+% files to use |@| symbol in the macros' names.
+% \begin{macrocode}
+%<-driver>\makeatletter
+% \end{macrocode}
+%
+% Some input characters map to internal functions which are not in
+% either the |T1| or |OT1| font encoding. For this reason default
+% definitions are provided in the encoding file: these will be
+% used unless some other output encoding is used which supports
+% those glyphs. In some cases this default defintion has to be
+% simply an error message.
+%
+% Note that this works reasonably well only because the encoding
+% files for both |OT1| and |T1| are loaded in the standard LaTeX
+% format.
+%
+% \begin{macrocode}
+%<*8859-8|cp862|cp1255>
+\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
+\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
+\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
+%</8859-8|cp862|cp1255>
+%<*8859-8|cp1255>
+\ProvideTextCommandDefault{\textthreequarters}{\ensuremath{\frac34}}
+%</8859-8|cp1255>
+%<*cp862|cp1255>
+\ProvideTextCommandDefault{\textflorin}{\textit{f}}
+%</cp862|cp1255>
+%<*cp862>
+\ProvideTextCommandDefault{\textpeseta}{Pt}
+%</cp862>
+% \end{macrocode}
+%
+% The name |\textblacksquare| is derived from the AMS symbol name
+% since Adobe seem not to want this symbol. The default
+% definition, as a rule, makes no claim to being a good design.
+% \begin{macrocode}
+%<*cp862>
+\ProvideTextCommandDefault{\textblacksquare}
+ {\vrule \@width .3em \@height .4em \@depth -.1em\relax}
+%</cp862>
+% \end{macrocode}
+%
+% Some commands can't be faked, so we have them generate an error
+% message.
+% \begin{macrocode}
+%<*8859-8|cp862|cp1255>
+\ProvideTextCommandDefault{\textcent}
+ {\TextSymbolUnavailable\textcent}
+\ProvideTextCommandDefault{\textyen}
+ {\TextSymbolUnavailable\textyen}
+%</8859-8|cp862|cp1255>
+%<*8859-8>
+\ProvideTextCommandDefault{\textcurrency}
+ {\TextSymbolUnavailable\textcurrency}
+%</8859-8>
+%<*cp1255>
+\ProvideTextCommandDefault{\newsheqel}
+ {\TextSymbolUnavailable\newsheqel}
+%</cp1255>
+%<*8859-8|cp1255>
+\ProvideTextCommandDefault{\textbrokenbar}
+ {\TextSymbolUnavailable\textbrokenbar}
+%</8859-8|cp1255>
+%<*cp1255>
+\ProvideTextCommandDefault{\textperthousand}
+ {\TextSymbolUnavailable\textperthousand}
+%</cp1255>
+% \end{macrocode}
+%
+% Characters that are supposed to be used only in math will be defined
+% by |\providecommand| because \LaTeXe{} assumes that the font
+% encoding for math fonts is static.
+% \begin{macrocode}
+%<*8859-8|cp1255>
+\providecommand{\mathonesuperior}{{^1}}
+\providecommand{\maththreesuperior}{{^3}}
+%</8859-8|cp1255>
+%<*8859-8|cp862|cp1255>
+\providecommand{\mathtwosuperior}{{^2}}
+%</8859-8|cp862|cp1255>
+%<*cp862>
+\providecommand{\mathordmasculine}{{^o}}
+\providecommand{\mathordfeminine}{{^a}}
+%</cp862>
+% \end{macrocode}
+%
+% \subsection{The SI-960 encoding}
+%
+%% The SI-960 or ``old-code'' encoding only allows characters in the
+%% range 32--127, so we only need to provide an empty |si960.def| file.
+%
+% \subsection{The ISO 8859-8 encoding and the MS Windows cp1255 encoding}
+%
+% The |8859-8.def| encoding file defines the characters in the ISO
+% 8859-8 encoding.
+%
+% The MS Windows Hebrew character set incorporates the Hebrew
+% letter repertoire of ISO 8859-8, and uses the same code points
+% (starting from 224). It has also some important additions in the
+% 128--159 and 190--224 ranges.
+%
+% \begin{macrocode}
+%<*cp1255>
+\DeclareInputText{130}{\quotesinglbase}
+\DeclareInputText{131}{\textflorin}
+\DeclareInputText{132}{\quotedblbase}
+\DeclareInputText{133}{\dots}
+\DeclareInputText{134}{\dag}
+\DeclareInputText{135}{\ddag}
+\DeclareInputText{136}{\^{}}
+\DeclareInputText{137}{\textperthousand}
+\DeclareInputText{139}{\guilsinglleft}
+\DeclareInputText{145}{\textquoteleft}
+\DeclareInputText{146}{\textquoteright}
+\DeclareInputText{147}{\textquotedblleft}
+\DeclareInputText{148}{\textquotedblright}
+\DeclareInputText{149}{\textbullet}
+\DeclareInputText{150}{\textendash}
+\DeclareInputText{151}{\textemdash}
+\DeclareInputText{152}{\~{}}
+\DeclareInputText{153}{\texttrademark}
+\DeclareInputText{155}{\guilsinglright}
+%</cp1255>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*8859-8|cp1255>
+\DeclareInputText{160}{\nobreakspace}
+\DeclareInputText{162}{\textcent}
+\DeclareInputText{163}{\pounds}
+%<+8859-8>\DeclareInputText{164}{\textcurrency}
+%<+cp1255>\DeclareInputText{164}{\newsheqel}
+\DeclareInputText{165}{\textyen}
+\DeclareInputText{166}{\textbrokenbar}
+\DeclareInputText{167}{\S}
+\DeclareInputText{168}{\"{}}
+\DeclareInputText{169}{\textcopyright}
+%<+8859-8>\DeclareInputMath{170}{\times}
+\DeclareInputText{171}{\guillemotleft}
+\DeclareInputMath{172}{\lnot}
+\DeclareInputText{173}{\-}
+\DeclareInputText{174}{\textregistered}
+\DeclareInputText{175}{\@tabacckludge={}}
+\DeclareInputText{176}{\textdegree}
+\DeclareInputMath{177}{\pm}
+\DeclareInputMath{178}{\mathtwosuperior}
+\DeclareInputMath{179}{\maththreesuperior}
+\DeclareInputText{180}{\@tabacckludge'{}}
+\DeclareInputMath{181}{\mu}
+\DeclareInputText{182}{\P}
+\DeclareInputText{183}{\textperiodcentered}
+%<+8859-8>\DeclareInputText{184}{\c\ }
+\DeclareInputMath{185}{\mathonesuperior}
+%<+8859-8>\DeclareInputMath{186}{\div}
+\DeclareInputText{187}{\guillemotright}
+\DeclareInputText{188}{\textonequarter}
+\DeclareInputText{189}{\textonehalf}
+\DeclareInputText{190}{\textthreequarters}
+%</8859-8|cp1255>
+% \end{macrocode}
+%
+% Hebrew vowels and dots (nikud) are included only to MS Windows cp1255
+% page and start from the position 192.
+% \begin{macrocode}
+%<*cp1255>
+\DeclareInputText{192}{\hebsheva}
+\DeclareInputText{193}{\hebhatafsegol}
+\DeclareInputText{194}{\hebhatafpatah}
+\DeclareInputText{195}{\hebhatafqamats}
+\DeclareInputText{196}{\hebhiriq}
+\DeclareInputText{197}{\hebtsere}
+\DeclareInputText{198}{\hebsegol}
+\DeclareInputText{199}{\hebpatah}
+\DeclareInputText{200}{\hebqamats}
+\DeclareInputText{201}{\hebholam}
+\DeclareInputText{203}{\hebqubuts}
+\DeclareInputText{204}{\hebdagesh}
+\DeclareInputText{205}{\hebmeteg}
+\DeclareInputText{206}{\hebmaqaf}
+\DeclareInputText{207}{\hebrafe}
+\DeclareInputText{208}{\hebpaseq}
+\DeclareInputText{209}{\hebshindot}
+\DeclareInputText{210}{\hebsindot}
+\DeclareInputText{211}{\hebsofpasuq}
+\DeclareInputText{212}{\hebdoublevav}
+\DeclareInputText{213}{\hebvavyod}
+\DeclareInputText{214}{\hebdoubleyod}
+%</cp1255>
+% \end{macrocode}
+%
+% Hebrew letters start from the position 224 in both encodings.
+% \begin{macrocode}
+%<*8859-8|cp1255>
+\DeclareInputText{224}{\hebalef}
+\DeclareInputText{225}{\hebbet}
+\DeclareInputText{226}{\hebgimel}
+\DeclareInputText{227}{\hebdalet}
+\DeclareInputText{228}{\hebhe}
+\DeclareInputText{229}{\hebvav}
+\DeclareInputText{230}{\hebzayin}
+\DeclareInputText{231}{\hebhet}
+\DeclareInputText{232}{\hebtet}
+\DeclareInputText{233}{\hebyod}
+\DeclareInputText{234}{\hebfinalkaf}
+\DeclareInputText{235}{\hebkaf}
+\DeclareInputText{236}{\heblamed}
+\DeclareInputText{237}{\hebfinalmem}
+\DeclareInputText{238}{\hebmem}
+\DeclareInputText{239}{\hebfinalnun}
+\DeclareInputText{240}{\hebnun}
+\DeclareInputText{241}{\hebsamekh}
+\DeclareInputText{242}{\hebayin}
+\DeclareInputText{243}{\hebfinalpe}
+\DeclareInputText{244}{\hebpe}
+\DeclareInputText{245}{\hebfinaltsadi}
+\DeclareInputText{246}{\hebtsadi}
+\DeclareInputText{247}{\hebqof}
+\DeclareInputText{248}{\hebresh}
+\DeclareInputText{249}{\hebshin}
+\DeclareInputText{250}{\hebtav}
+%</8859-8|cp1255>
+% \end{macrocode}
+%
+% Special symbols which define the direction of symbols explicitly.
+% Currently, they are not used in \LaTeX.
+% \begin{macrocode}
+%<*cp1255>
+\DeclareInputText{253}{\lefttorightmark}
+\DeclareInputText{254}{\righttoleftmark}
+%</cp1255>
+% \end{macrocode}
+%
+% \subsection{The IBM code page 862}
+%
+% The |cp862.def| encoding file defines the characters in the IBM
+% codepage 862 encoding. The DOS graphics `letters' and a few
+% other positions are ignored (left undefined).
+%
+% Hebrew letters start from the position 128.
+% \begin{macrocode}
+%<*cp862>
+\DeclareInputText{128}{\hebalef}
+\DeclareInputText{129}{\hebbet}
+\DeclareInputText{130}{\hebgimel}
+\DeclareInputText{131}{\hebdalet}
+\DeclareInputText{132}{\hebhe}
+\DeclareInputText{133}{\hebvav}
+\DeclareInputText{134}{\hebzayin}
+\DeclareInputText{135}{\hebhet}
+\DeclareInputText{136}{\hebtet}
+\DeclareInputText{137}{\hebyod}
+\DeclareInputText{138}{\hebfinalkaf}
+\DeclareInputText{139}{\hebkaf}
+\DeclareInputText{140}{\heblamed}
+\DeclareInputText{141}{\hebfinalmem}
+\DeclareInputText{142}{\hebmem}
+\DeclareInputText{143}{\hebfinalnun}
+\DeclareInputText{144}{\hebnun}
+\DeclareInputText{145}{\hebsamekh}
+\DeclareInputText{146}{\hebayin}
+\DeclareInputText{147}{\hebfinalpe}
+\DeclareInputText{148}{\hebpe}
+\DeclareInputText{149}{\hebfinaltsadi}
+\DeclareInputText{150}{\hebtsadi}
+\DeclareInputText{151}{\hebqof}
+\DeclareInputText{152}{\hebresh}
+\DeclareInputText{153}{\hebshin}
+\DeclareInputText{154}{\hebtav}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareInputText{155}{\textcent}
+\DeclareInputText{156}{\pounds}
+\DeclareInputText{157}{\textyen}
+\DeclareInputText{158}{\textpeseta}
+\DeclareInputText{159}{\textflorin}
+\DeclareInputText{160}{\@tabacckludge'a}
+\DeclareInputText{161}{\@tabacckludge'\i}
+\DeclareInputText{162}{\@tabacckludge'o}
+\DeclareInputText{163}{\@tabacckludge'u}
+\DeclareInputText{164}{\~n}
+\DeclareInputText{165}{\~N}
+\DeclareInputMath{166}{\mathordfeminine}
+\DeclareInputMath{167}{\mathordmasculine}
+\DeclareInputText{168}{\textquestiondown}
+\DeclareInputMath{170}{\lnot}
+\DeclareInputText{171}{\textonehalf}
+\DeclareInputText{172}{\textonequarter}
+\DeclareInputText{173}{\textexclamdown}
+\DeclareInputText{174}{\guillemotleft}
+\DeclareInputText{175}{\guillemotright}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareInputMath{224}{\alpha}
+\DeclareInputText{225}{\ss}
+\DeclareInputMath{226}{\Gamma}
+\DeclareInputMath{227}{\pi}
+\DeclareInputMath{228}{\Sigma}
+\DeclareInputMath{229}{\sigma}
+\DeclareInputMath{230}{\mu}
+\DeclareInputMath{231}{\tau}
+\DeclareInputMath{232}{\Phi}
+\DeclareInputMath{233}{\Theta}
+\DeclareInputMath{234}{\Omega}
+\DeclareInputMath{235}{\delta}
+\DeclareInputMath{236}{\infty}
+\DeclareInputMath{237}{\phi}
+\DeclareInputMath{238}{\varepsilon}
+\DeclareInputMath{239}{\cap}
+\DeclareInputMath{240}{\equiv}
+\DeclareInputMath{241}{\pm}
+\DeclareInputMath{242}{\ge}
+\DeclareInputMath{243}{\le}
+\DeclareInputMath{246}{\div}
+\DeclareInputMath{247}{\approx}
+\DeclareInputText{248}{\textdegree}
+\DeclareInputText{249}{\textperiodcentered}
+\DeclareInputText{250}{\textbullet}
+\DeclareInputMath{251}{\surd}
+\DeclareInputMath{252}{\mathnsuperior}
+\DeclareInputMath{253}{\mathtwosuperior}
+\DeclareInputText{254}{\textblacksquare}
+\DeclareInputText{255}{\nobreakspace}
+%</cp862>
+% \end{macrocode}
+%
+% \begin{macro}{\DisableNikud}
+% A utility macro to ignore any nikud character that may appear in the
+% input. This allows you to ignore cp1255 nikud characters that happened to
+% appear in the input.
+% \end{macro}
+% \begin{macrocode}
+%<*8859-8>
+\newcommand{\DisableNikud}{%
+ \DeclareInputText{192}{}%
+ \DeclareInputText{193}{}%
+ \DeclareInputText{194}{}%
+ \DeclareInputText{195}{}%
+ \DeclareInputText{196}{}%
+ \DeclareInputText{197}{}%
+ \DeclareInputText{198}{}%
+ \DeclareInputText{199}{}%
+ \DeclareInputText{200}{}%
+ \DeclareInputText{201}{}%
+ \DeclareInputText{203}{}%
+ \DeclareInputText{204}{}%
+ \DeclareInputText{205}{}%
+ \DeclareInputText{206}{}%
+ \DeclareInputText{207}{}%
+ \DeclareInputText{208}{}%
+ \DeclareInputText{209}{}%
+ \DeclareInputText{210}{}%
+ \DeclareInputText{211}{}%
+ \DeclareInputText{212}{}%
+ \DeclareInputText{213}{}%
+ \DeclareInputText{214}{}%
+}
+%</8859-8>
+% \end{macrocode}
+%
+% Finally, we reset the category code of the |@| sign at the end of
+% all |.def| files.
+% \begin{macrocode}
+%<-driver>\makeatother
+% \end{macrocode}
+%
+% \Finale
+%%
+%% \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
diff --git a/macros/latex/contrib/babel-contrib/hebrew/hebinp.pdf b/macros/latex/contrib/babel-contrib/hebrew/hebinp.pdf
new file mode 100644
index 0000000000..3fd35427f1
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/hebrew/hebinp.pdf
Binary files differ
diff --git a/macros/latex/contrib/babel-contrib/hebrew/hebrew.dtx b/macros/latex/contrib/babel-contrib/hebrew/hebrew.dtx
new file mode 100644
index 0000000000..19f0fbf0fc
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/hebrew/hebrew.dtx
@@ -0,0 +1,3329 @@
+% \iffalse meta-comment
+%
+% Copyright 1989-2005 Johannes L. Braams and any individual authors
+% listed elsewhere in this file. All rights reserved.
+%
+% This file is part 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.
+%
+% The list of all files belonging to the Babel system 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.
+% \fi
+% \CheckSum{3345}
+%
+% \iffalse meta-comment
+%% 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.
+%<*calendar>
+%% TeX & LaTeX macros for computing Hebrew date from Gregorian one
+%% Copyright (C) 1991 by Michail Rozman, misha@iop.tartu.ew.su
+%%
+%</calendar>
+% \fi
+%
+%
+% \iffalse
+%<hebrew>\ProvidesFile{hebrew.ldf}
+%<rightleft>\ProvidesFile{rlbabel.def}
+%<calendar>\ProvidesPackage{hebcal}
+%<*driver>
+\ProvidesFile{hebrew.drv}
+%</driver>
+% \fi
+% \ProvidesFile{hebrew.dtx}
+ [2005/03/30 v2.3h %
+% \iffalse
+%<hebrew> Hebrew language definition from the babel system
+%<rightleft> Right-to-Left support from the babel system
+%<calendar> Hebrew calendar
+%<driver> Driver file for hebrew support
+% \fi
+ Hebrew language support from the babel system]
+%
+% \iffalse
+% \subsection{A driver for this document}
+%
+% The next bit of code contains the documentation driver file for
+% \TeX{}, i.e., the file that will produce the documentation you are
+% currently reading. It will be extracted from this file by the \dst{}
+% program.
+%
+% \begin{macrocode}
+%<*driver>
+\documentclass{ltxdoc}
+\providecommand\babel{\textsf{babel}}
+\providecommand\file[1]{\texttt{#1}}
+\makeatletter
+% \end{macrocode}
+%
+% The code lines are numbered within sections,
+% \begin{macrocode}
+\@addtoreset{CodelineNo}{section}
+\renewcommand\theCodelineNo{%
+ \reset@font\scriptsize\thesection.\arabic{CodelineNo}}
+% \end{macrocode}
+% which should also be visible in the index; hence this
+% redefinition of a macro from \file{doc.sty}.
+% \begin{macrocode}
+\renewcommand\codeline@wrindex[1]{\if@filesw
+ \immediate\write\@indexfile
+ {\string\indexentry{#1}%
+ {\number\c@section.\number\c@CodelineNo}}\fi}
+% \end{macrocode}
+%
+% The glossary environment is used or the change log, but its
+% definition needs changing for this document.
+% \begin{macrocode}
+\renewenvironment{theglossary}{%
+ \glossary@prologue%
+ \GlossaryParms \let\item\@idxitem \ignorespaces}%
+ {}
+\makeatother
+\DisableCrossrefs
+\CodelineIndex
+\RecordChanges
+\title{Hebrew language support from the \babel\ system}
+\author{Boris Lavva}
+\date{Printed \today}
+\begin{document}
+ \maketitle
+ \tableofcontents
+ \DocInput{hebrew.dtx}
+ \DocInput{hebinp.dtx}
+ \DocInput{hebrew.fdd}
+ \DocInput{heb209.dtx}
+ \clearpage
+ \def\filename{index}
+ \PrintIndex
+ \clearpage
+ \def\filename{changes}
+ \PrintChanges
+\end{document}
+%</driver>
+% \end{macrocode}
+% \fi
+%
+% \providecommand\babel{\textsf{babel}}
+% \providecommand\dst{\textsc{docstrip}}
+% \providecommand\file[1]{\texttt{#1}}
+% \providecommand\pkg[1]{\texttt{#1}}
+% \providecommand\XeT{X\kern-.125em\lower.5ex\hbox{E}\kern-.1667emT\@}
+% \providecommand\scrunch{\setlength{\itemsep}{-.05in}}
+% \GetFileInfo{hebrew.dtx}
+%
+% \changes{hebrew~0.1}{??/??/??}{%
+% Preliminary \LaTeX\ Hebrew option (by Sergio Fogel)}
+% \changes{hebrew~0.2}{??/??/??}{%
+% Corrections and additions (by Rama Porrat)}
+% \changes{hebrew~0.6}{??/??/??}{Additions (by Yael Dubinsky)}
+% \changes{hebrew~1.2}{??/??/??}{%
+% Bilingual tables, penalties, documentation and more changes
+% (by Yaniv Bargury)}
+% \changes{hebrew~1.30}{1992/05/15}{%
+% Font selection, various (by Alon Ziv)}
+% \changes{hebrew~1.31}{1993/02/22}{Bug fixes (by Alon Ziv)}
+% \changes{hebrew~1.32}{1993/03/10}{Made font-change command
+% for numbers `\cs{protect}'ed (by Alon Ziv)}
+% \changes{hebrew~1.33}{1993/03/11}{%
+% Made \cs{refstepcounter} work using \cs{@ltor} (by Alon Ziv)}
+% \changes{hebrew~1.34}{1993/03/22}{%
+% Moved font loading to another file. Added \cs{mainsec}.
+% Made all text strings be produced by control codes (similar to
+% \LaTeX 2.09 Mar '92). Fixed \cs{noindent} (by Alon Ziv)}
+% \changes{hebrew~1.35}{1993/03/22}{%
+% Moved the texts to a file selected by the current encoding
+% (by Alon Ziv)}
+% \changes{hebrew~1.36}{1993/03/24}{Use \TeX\ tricks to redefine
+% \cs{theXXXX} without keeping old definitions.
+% Use only \cs{@eng} for direction/font change (removed \cs{@ltor}).
+% Switched from use of \cs{mainsec} to code taken from \babel\
+% system (by Alon Ziv)}
+% \changes{hebrew~1.37}{1993/03/28}{%
+% Use \cs{add@around} in defining font size commands. Small bug
+% fixes (by Alon Ziv)}
+% \changes{hebrew~1.38}{1993/04/20}{%
+% \cs{everypar} changed so that \cs{noindent} works unmodified
+% (by Alon Ziv, thanks to Chris Rowley)}
+% \changes{hebrew~1.39}{1993/08/10}{%
+% Redefined primitive sectioning commands. Changed \cs{include} so
+% it finds \texttt{.h}, \texttt{.xet}, and \texttt{.ltx} files (no
+% extension needed). Reinstated use of \cs{@ltor} (by Alon Ziv)}
+% \changes{hebrew~1.40}{1993/09/01}{Added the \cs{@brackets} hack
+% (by Alon Ziv)}
+% \changes{hebrew~1.41}{1993/09/09}{%
+% Reworked towards using NFSS2. Changed some macro names to be more
+% logical: renamed \cs{@ltor} to \cs{@number}, \cs{@eng} to
+% \cs{@latin}, and (in \texttt{hebrew.ldf}) \cs{@heb} to
+% \cs{@hebrew} (by Alon Ziv)}
+% \changes{hebrew~1.42}{1993/09/22}{%
+% Made list environments work better. Fixed thebibliography
+% environment (by Alon Ziv)}
+% \changes{hebrew~2.0a}{1998/01/01}{%
+% Completely rewritten for \LaTeXe\ and \babel\ support. Various
+% input and font encodings (with NFSS2) are supported too. The
+% original \pkg{hebrew.sty} is divided to a number of packages and
+% definition files for better readability and extensibility. Added
+% some user- and code-level documentation inside the \texttt{.dtx}
+% and \texttt{.fdd} files, and \LaTeX -driven installation with
+% \pkg{hebrew.ins} (by Boris Lavva)}
+% \changes{hebrew~2.1}{2000/11/23}{%
+% corrections from Sivan Toledo: sender name in letter, and section name in
+% headings. (by Tzafrir Cohen)}
+% \changes{hebrew~2.2}{2000/12/11}{%
+% renamed hebrew letters to heb* (e.g.: alef renamed to hebalef)
+% (by Tzafrir Cohen)}
+% \changes{hebrew~2.3}{2001/02/27}{
+% added several \cs{@ifclassloaded}\{slides\} to allow the use of the
+% slides class. (by Tzafrir Cohen)}
+% \changes{hebrew~2.3a}{2001/07/09}{
+% The documentation should now be built fine (broken since at least
+% 2.1, and probably 2.0) (by Tzafrir Cohen)}
+% \changes{hebrew~2.3b}{2001/08/16}{
+% minor clean-ups. The documentation builds now with no warnings.
+% Also removed \cs{R} from the caption macro (added in 2.1)
+% Added internal \cs{@ensure@L} and \cs{@ensure@R}
+% (Is there a real need for them? Maybe should they be exposed?)
+% (by Tzafrir Cohen)}
+% \changes{hebrew~2.3c}{2001/10/05}{
+% a temporary fix to the \cs{gim} macro. Should be replaced by stuff
+% from hebcal.
+% (by Tzafrir Cohen)}
+% \changes{hebrew~2.3d}{2002/01/04}{
+% Initial support for the prosper class. Added \cs{arabicnorl} .
+% (by Tzafrir Cohen)}
+% \changes{hebrew~2.3e}{2002/08/09}{
+% Removing hebtech from this distriution (not relevant to babel),
+% added \cs{HeblatexEncoding}. some docs cleanup
+% (by Tzafrir Cohen)}
+% \changes{hebrew~2.3f}{2002/12/26}{
+% redefined \cs{list} instead of redefining every environment
+% that uses it. some pscolor handling, removed HeblatexEncoding
+% (don't use 2.3e) (by Tzafrir Cohen)}
+% \changes{hebrew~2.3g}{2003/06/05}{
+% Reimplemented the printing of Hebrew numerals and Hebrew
+% counters; modified \pkg{hebcal.sty} to use this implementation
+% when typesetting Hebrew dates; added option |full| to package
+% \pkg{hebcal}; also removed some gratuitous
+% spaces inserted by \pkg{hebcal.sty} by adding comment marks.
+% CAUTION: the changes to \pkg{hebcal.sty} make it dependent on
+% \pkg{babel} and not useable as a stand-alone package. Is this a
+% problem? (by Ron Artstein)}
+%
+% \section{The Hebrew language}\label{sec:hebrew}
+%
+% The file \file{\filename}\footnote{The Hebrew language support
+% files described in this section have version number \fileversion\
+% and were last revised on \filedate.} provides the following
+% packages and files for Hebrew language support:
+% \begin{description}
+% \item[\file{hebrew.ldf}] file defines all the language-specific
+% macros for the Hebrew language.
+% \item[\file{rlbabel.def}] file is used by |hebrew.ldf| for
+% bidirectional versions of the major \LaTeX{} commands and
+% environments. It is designed to be used with other right-to-left
+% languages, not only with Hebrew.
+% \item[\pkg{hebcal.sty}] package defines a set of macros for
+% computing Hebrew date from Gregorian one.
+% \end{description}
+%
+% Additional Hebrew input and font encoding definition files that
+% should be included and used with \file{hebrew.ldf} are:
+% \begin{description}
+% \item[\file{hebinp.dtx}] provides Hebrew input encodings, such as
+% ISO 8859-8, MS Windows codepage 1255 or IBM PC codepage 862
+% (see Section~\ref{sec:hebinp} on page~\pageref{sec:hebinp}).
+% \item[\file{hebrew.fdd}] contains Hebrew font encodings, related
+% font definition files and \pkg{hebfont} package that
+% provides Hebrew font switching commands (see
+% Section~\ref{sec:hebfdd} on page~\pageref{sec:hebfdd} for
+% further details).
+% \end{description}
+%
+% \LaTeX~2.09 compatibility files are included with
+% \file{heb209.dtx} and gives possibility to compile existing
+% \LaTeX~2.09 Hebrew documents with small (if any) changes (see
+% Section~\ref{sec:heb209} on page~\pageref{sec:heb209} for
+% details).
+%
+% Finally, optional document class \pkg{hebtech} may be useful for
+% writing theses and dissertations in both Hebrew and English (and
+% any other languages included with \babel). It designed to meet
+% requirements of the Graduate School of the Technion --- Israel
+% Institute of Technology.
+%
+% \emph{As of version 2.3e hebtech is no longer distributed together
+% with heblatex. It should be part of a new "hebclasses" package}
+%
+% \subsection{Acknowledgement}
+%
+% The following people have contributed to Hebrew package in one
+% way or another, knowingly or unknowingly. In alphabetical order:
+% Irina Abramovici, Yaniv Bargury, Yael Dubinsky, Sergio Fogel,
+% Dan Haran, Rama Porrat, Michail Rozman, Alon Ziv.
+%
+% Tatiana Samoilov and Vitaly Surazhsky found a number of serious
+% bugs in preliminary version of Hebrew package.
+%
+% A number of other people have contributed comments and
+% information. Specific contributions are acknowledged within the
+% document.
+%
+% I want to thank my wife, Vita, and son, Mishka, for their
+% infinite love and patience.
+%
+% If you made a contribution and I haven't mentioned it, don't
+% worry, it was an accident. I'm sorry. Just tell me and I will add
+% you to the next version.
+%
+% \StopEventually{}
+%
+% \subsection{The {\normalfont\dst{}} modules}
+%
+% The following modules are used in the implementation to direct
+% \dst{} in generating external files:
+% \begin{center}
+% \begin{tabular}{@{}ll}
+% driver & produce a documentation driver file \\[4pt]
+% hebrew & produce Hebrew language support file\\
+% rightleft & create right-to-left support file\\
+% calendar & create Hebrew calendar package
+% \end{tabular}
+% \end{center}
+% A typical \dst{} command file would then have entries like:
+% \begin{quote}
+% |\generateFile{hebrew.ldf}{t}{\from{hebrew.dtx}{hebrew}}|
+% \end{quote}
+%
+% \subsection{Hebrew language definitions}
+%
+% The macro |\LdfInit| takes care of preventing that this file is
+% loaded more than once, checking the category code of the |@|
+% sign, etc.
+% \begin{macrocode}
+%<*hebrew>
+\LdfInit{hebrew}{captionshebrew}
+% \end{macrocode}
+%
+% When this file is read as an option, i.e., by the |\usepackage|
+% command, |hebrew| will be an `unknown' language, in which case we
+% have to make it known. So we check for the existence of
+% |\l@hebrew| to see whether we have to do something here.
+%
+% \begin{macrocode}
+\ifx\l@hebrew\@undefined
+ \@nopatterns{Hebrew}%
+ \adddialect\l@hebrew0
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\hebrewencoding}
+% \emph{FIX DOCS REGARDING 8BIT}
+%
+% Typesetting Hebrew texts implies that a special input and output
+% encoding needs to be used. Generally, the user may choose
+% between different available Hebrew encodings provided. The
+% current support for Hebrew uses all available fonts from the
+% Hebrew University of Jerusalem encoded in `old-code' 7-bit
+% encoding also known as Israeli Standard SI-960. We define for
+% these fonts the Local Hebrew Encoding |LHE| (see the file
+% |hebrew.fdd| for more details), and the |LHE| encoding definition
+% file should be loaded by default.
+%
+% Other fonts are available in windows-cp1255 (a superset of ISO-8859-8
+% with nikud). For those, the encoding |HE8| should be used. Such fonts
+% are, e.g., windows' TrueType fonts (once cnverted to Type1 or MetaFont)
+% and IBM's Type1 fonts.
+%
+% However, if an user wants to use another font encoding, for
+% example, cyrillic encoding T2 and extended latin encoding T1, ---
+% he/she has to load the corresponding file \emph{before} the
+% \pkg{hebrew} package. This may be done in the following way:
+% \begin{quote}
+% |\usepackage[LHE,T2,T1]{fontenc}|\\
+% |\usepackage[hebrew,russian,english]{babel}|
+% \end{quote}
+% We make sure that the |LHE| encoding is known to \LaTeX{} at end
+% of this package.
+%
+% Also note that if you want to use the encoding |HE8| , you should define
+% the following in your document, \emph{before loading babel}:
+% \begin{quote}
+% |\def\HeblatexEncoding{HE8}|\\
+% |\def\HeblatexEncodingFile{he8enc}|
+% \end{quote}
+% \changes{hebrew-2.3h}{2004/02/20}{Make LHE the default encoding for
+% compatibility reasons}
+% \begin{macrocode}
+\providecommand{\HeblatexEncoding}{LHE}%
+\providecommand{\HeblatexEncodingFile}{lheenc}%
+\newcommand{\heblatex@set@encoding}[2]{
+}
+\AtEndOfPackage{%
+ \@ifpackageloaded{fontenc}{%
+ \@ifl@aded{def}{%
+ \HeblatexEncodingFile}{\def\hebrewencoding{\HeblatexEncoding}}{}%
+ }{%
+ \input{\HeblatexEncodingFile.def}%
+ \def\hebrewencoding{\HeblatexEncoding}%
+ }}
+% \end{macrocode}
+% \end{macro}
+%
+% We also need to load inputenc package with one of the Hebrew
+% input encodings. By default, we set up the |8859-8| codepage.
+% If an user wants to use many input encodings in the same
+% document, for example, the MS Windows Hebrew codepage |cp1255|
+% and the standard IBM PC Russian codepage |cp866|, he/she has to
+% load the corresponding file \emph{before} the hebrew package
+% too. This may be done in the following way:
+% \begin{quote}
+% |\usepackage[cp1255,cp866]{inputenc}|\\
+% |\usepackage[hebrew,russian,english]{babel}|
+% \end{quote}
+%
+% An user can switch input encodings in the document using the
+% command |\inputencoding|, for example, to use the |cp1255|:
+% \begin{quote}
+% |\inputencoding{cp1255}|
+% \end{quote}
+% \begin{macrocode}
+\AtEndOfPackage{%
+ \@ifpackageloaded{inputenc}{}{\RequirePackage[8859-8]{inputenc}}}
+% \end{macrocode}
+%
+% The next step consists of defining commands to switch to (and
+% from) the Hebrew language.
+%
+% \begin{macro}{\hebrewhyphenmins}
+% This macro is used to store the correct values of the hyphenation
+% parameters |\lefthyphenmin| and |\righthyphenmin|. They are set
+% to~2.
+% \changes{hebrew~2.0b}{2000/09/22}{Now use \cs{providehyphenmins} to
+% provide a default value}
+% \begin{macrocode}
+\providehyphenmins{\CurrentOption}{\tw@\tw@}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\captionshebrew}
+% The macro |\captionshebrew| replaces all captions used in the four
+% standard document classes provided with \LaTeXe with their Hebrew
+% equivalents.
+% \changes{hebrew-2.0b}{2000/09/20}{Added \cs{glossaryname}}
+% \begin{macrocode}
+\addto\captionshebrew{%
+ \def\prefacename{\@ensure@R{\hebmem\hebbet\hebvav\hebalef}}%
+ \def\refname{\@ensure@R{\hebresh\hebshin\hebyod\hebmem\hebtav\ %
+ \hebmem\hebqof\hebvav\hebresh\hebvav\hebtav}}%
+ \def\abstractname{\@ensure@R{\hebtav\hebqof\hebtsadi\hebyod\hebresh}}%
+ \def\bibname{\@ensure@R{\hebbet\hebyod\hebbet\heblamed\hebyod\hebvav%
+ \hebgimel\hebresh\hebpe\hebyod\hebhe}}%
+ \def\chaptername{\@ensure@R{\hebpe\hebresh\hebqof}}%
+ \def\appendixname{\@ensure@R{\hebnun\hebsamekh\hebpe\hebhet}}%
+ \def\contentsname{\@ensure@R{%
+ \hebtav\hebvav\hebkaf\hebfinalnun\ %
+ \hebayin\hebnun\hebyod\hebyod\hebnun\hebyod\hebfinalmem}}%
+ \def\listfigurename{\@ensure@R{%
+ \hebresh\hebshin\hebyod\hebmem\hebtav\ %
+ \hebalef\hebyod\hebvav\hebresh\hebyod\hebfinalmem}}%
+ \def\listtablename{\@ensure@R{%
+ \hebresh\hebshin\hebyod\hebmem\hebtav\
+ \hebtet\hebbet\heblamed\hebalef\hebvav\hebtav}}%
+ \def\indexname{\@ensure@R{\hebmem\hebpe\hebtav\hebhet}}%
+ \def\figurename{\@ensure@R{\hebalef\hebyod\hebvav\hebresh}}%
+ \def\tablename{\@ensure@R{\hebtet\hebbet\heblamed\hebhe}}%
+ \def\partname{\@ensure@R{\hebhet\heblamed\hebqof}}%
+ \def\enclname{\@ensure@R{\hebresh\hebtsadi"\hebbet}}%
+ \def\ccname{\@ensure@R{\hebhe\hebayin\hebtav\hebqof\hebyod%
+ \hebfinalmem}}%
+ \def\headtoname{\@ensure@R{\hebalef\heblamed}}%
+ \def\pagename{\@ensure@R{\hebayin\hebmem\hebvav\hebdalet}}%
+ \def\psname{\@ensure@R{\hebnun.\hebbet.}}%
+ \def\seename{\@ensure@R{\hebresh\hebalef\hebhe}}%
+ \def\alsoname{\@ensure@R{\hebresh\hebalef\hebhe \hebgimel%
+ \hebmemesof}}%
+ \def\proofname{\@ensure@R{\hebhe\hebvav\hebkaf\hebhet\hebhe}}
+ \def\glossaryname{\@ensure@L{Glossary}}% <-- Needs translation
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\slidelabel}
+% Here we fix the macro |slidelabel| of the seminar package. Note
+% that this still won't work well enough when overlays will be
+% involved
+% \begin{macrocode}
+\@ifclassloaded{seminar}{%
+ \def\slidelabel{\bf \if@rl\R{\hebshin\hebqof\hebfinalpe{} \theslide}%
+ \else\L{Slide \theslide}%
+ \fi}%
+}{}
+% \end{macrocode}
+% \end{macro}
+%
+% Here we provide an user with translation of Gregorian dates
+% to Hebrew. In addition, the \pkg{hebcal} package can be used
+% to create Hebrew calendar dates.
+%
+% \begin{macro}{\hebmonth}
+% The macro |\hebmonth{|\emph{month}|}| produces month names in
+% Hebrew.
+% \begin{macrocode}
+\def\hebmonth#1{%
+ \ifcase#1\or \hebyod\hebnun\hebvav\hebalef\hebresh\or %
+ \hebpe\hebbet\hebresh\hebvav\hebalef\hebresh\or %
+ \hebmem\hebresh\hebfinaltsadi\or %
+ \hebalef\hebpe\hebresh\hebyod\heblamed\or %
+ \hebmem\hebalef\hebyod\or \hebyod\hebvav\hebnun\hebyod\or %
+ \hebyod\hebvav\heblamed\hebyod\or %
+ \hebalef\hebvav\hebgimel\hebvav\hebsamekh\hebtet\or %
+ \hebsamekh\hebpe\hebtet\hebmem\hebbet\hebresh\or %
+ \hebalef\hebvav\hebqof\hebtet\hebvav\hebbet\hebresh\or %
+ \hebnun\hebvav\hebbet\hebmem\hebbet\hebresh\or %
+ \hebdalet\hebtsadi\hebmem\hebbet\hebresh\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hebdate}
+% The macro |\hebdate{|\emph{day}|}{|\emph{month}|}{|\emph{year}|}|
+% translates a given Gregorian date to Hebrew.
+% \begin{macrocode}
+\def\hebdate#1#2#3{%
+ \beginR\beginL\number#1\endL\ \hebbet\hebmonth{#2}
+ \beginL\number#3\endL\endR}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hebday}
+% The macro |\hebday| will replace |\today| command when in Hebrew
+% mode.
+% \begin{macrocode}
+\def\hebday{\hebdate{\day}{\month}{\year}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\datehebrew}
+% The macro |\datehebrew| redefines the command |\today| to produce
+% Gregorian dates in Hebrew. It uses the macro |\hebday|.
+% \begin{macrocode}
+\def\datehebrew{\let\today=\hebday}
+% \end{macrocode}
+% \end{macro}
+%
+% The macro |\extrashebrew| will perform all the extra definitions
+% needed for the Hebrew language. The macro |\noextrashebrew|
+% is used to cancel the actions of |\extrashebrew|.
+%
+% \begin{macro}{\extrashebrew}
+% We switch font encoding to Hebrew and direction to
+% right-to-left. We cannot use the regular language switching
+% commands (for example, |\sethebrew| and |\unsethebrew| or
+% |\selectlanguage{hebrew}|), when in restricted horizontal mode,
+% because it will result in \emph{unbalanced} |\beginR| or
+% |\beginL| primitives.
+% Instead, in \TeX 's restricted horizontal mode, the
+% |\L{|\emph{latin text}|}| and |\R{|\emph{hebrew text}|}|, or
+% |\embox{|\emph{latin text}|}| and |\hmbox{|\emph{hebrew text}|}|
+% should be used.
+%
+% Hence, we use |\beginR| and |\beginL| switching commands only
+% when not in restricted horizontal mode.
+% \begin{macrocode}
+\addto\extrashebrew{%
+ \tohebrew%
+ \ifhmode\ifinner\else\beginR\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\noextrashebrew}
+% The macro |\noextrashebrew| is used to cancel the actions of
+% |\extrashebrew|. We switch back to the previous font encoding and
+% restore left-to-right direction.
+% \begin{macrocode}
+\addto\noextrashebrew{%
+ \fromhebrew%
+ \ifhmode\ifinner\else\beginL\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% Generally, we can switch to- and from- Hebrew by means of
+% standard \babel -defined commands, for example,
+% \begin{quote}
+% |\selectlanguage{hebrew}|
+% \end{quote}
+% or
+% \begin{quote}
+% |\begin{otherlanguage}{hebrew}|\\
+% \hspace*{1.5em} some Hebrew text\\
+% |\end{otherlanguage}|
+% \end{quote}
+% Now we define two additional commands that offer the possibility
+% to switch to and from Hebrew language. These commands are
+% backward compatible with the previous versions of
+% \pkg{hebrew.sty}.
+%
+% \begin{macro}{\sethebrew}
+% \begin{macro}{\unsethebrew}
+% The command |\sethebrew| will switch from the current font encoding
+% to the hebrew font encoding, and from the current direction of
+% text to the right-to-left mode. The command |\unsethebrew| switches
+% back.
+%
+% Both commands use standard right-to-left switching macros
+% |\setrllanguage{|\emph{ r2l language name}|}| and
+% |\unsetrllanguage{|\emph{r2l language name}|}|, that
+% defined in the \file{rlbabel.def} file.
+% \begin{macrocode}
+\def\sethebrew{\setrllanguage{hebrew}}
+\def\unsethebrew{\unsetrllanguage{hebrew}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\hebrewtext}
+% \begin{macro}{\nohebrewtext}
+% The following two commands are \emph{obsolete} and work only
+% in \LaTeX 2.09 compatibility mode. They are synonyms of
+% |\sethebrew| and |\unsethebrew| defined above.
+% \begin{macrocode}
+\if@compatibility
+ \let\hebrewtext=\sethebrew
+ \let\nohebrewtext=\unsethebrew
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\tohebrew}
+% \begin{macro}{\fromhebrew}
+% These two commands change only the current font encoding to- and
+% from- Hebrew encoding. Their implementation uses
+% |\@torl{|\emph{language name}|}| and |\@fromrl| macros defined in
+% \file{rlbabel.def} file. Both commands may be useful \emph{only}
+% for package and class writers, not for regular users.
+% \begin{macrocode}
+\def\tohebrew{\@torl{hebrew}}%
+\def\fromhebrew{\@fromrl}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@hebrew}
+% Sometimes we need to preserve Hebrew mode without knowing in
+% which environment we are located now. For these cases, the
+% |\@hebrew{|\emph{hebrew text}|}| macro will be useful. Not that
+% this macro is similar to the |\@number| and |\@latin| macros
+% defined in \file{rlbabel.def} file.
+% \begin{macrocode}
+\def\@@hebrew#1{\beginR{{\tohebrew#1}}\endR}
+\def\@hebrew{\protect\@@hebrew}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Hebrew numerals}
+%
+% We provide commands to print numbers in the traditional
+% notation using Hebrew letters. We need commands that print
+% a Hebrew number from a decimal input, as well as commands
+% to print the value of a counter as a Hebrew number.
+% \begin{macro}{\if@gim@apost}
+% \begin{macro}{\if@gim@final}
+% Hebrew numbers can be written in various styles: with or without
+% apostrophes, and with the letters kaf, mem, nun, pe, tsadi as either
+% final or initial forms when they are the last letters in the
+% sequence. We provide two flags to set the style options.
+% \begin{macrocode}
+\newif\if@gim@apost % whether we print apostrophes
+\newif\if@gim@final % whether we use final or initial letters
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\hebrewnumeral}
+% \begin{macro}{\Hebrewnumeral}
+% \begin{macro}{\Hebrewnumeralfinal}
+% The commands that print a Hebrew number
+% must specify the style locally: relying on a global style
+% option could cause a counter to
+% print in an inconsistent manner---for instance, page numbers
+% might appear in different styles if the global style option
+% changed mid-way through a document.
+% The commands only allow three of the four possible flag
+% combinations (I do not know of a use that requires the
+% combination of final letters and no apostrophes --RA).
+%
+% Each command sets the style flags and calls |\@hebrew@numeral|.
+% Double braces are used in order to protect the values of
+% |\@tempcnta| and |\@tempcntb|, which are changed by this call;
+% they also keep the flag assignments local (this is not important
+% because the global values are never used).
+% \begin{macrocode}
+\newcommand*{\hebrewnumeral}[1] % no apostrophe, no final letters
+ {{\@gim@finalfalse\@gim@apostfalse\@hebrew@numeral{#1}}}
+\newcommand*{\Hebrewnumeral}[1] % apostrophe, no final letters
+ {{\@gim@finalfalse\@gim@aposttrue\@hebrew@numeral{#1}}}
+\newcommand*{\Hebrewnumeralfinal}[1] % apostrophe, final letters
+ {{\@gim@finaltrue\@gim@aposttrue\@hebrew@numeral{#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\alph}
+% \begin{macro}{\@alph}
+% \begin{macro}{\Alph}
+% \begin{macro}{\@Alph}
+% \begin{macro}{\Alphfinal}
+% \begin{macro}{\@Alphfinal}
+% Counter-printing commands are based on the above commands. The
+% natural name for the counter-printing commands is |\alph|, because
+% Hebrew numerals are the only way to represent numbers with
+% Hebrew letters (kaf always means~20, never~11). Hebrew has no
+% uppercase letters, hence no need for the familiar meaning of |\Alph|;
+% we therefore define |\alph| to print counters as Hebrew numerals
+% without apostrophes, and |\Alph| to print with apostrophes. A third
+% form, |\Alphfinal|, is provided to print with apostrophes and final
+% letters, as is required for Hebrew year designators. The commands
+% |\alph| and |\Alph| are defined in \pkg{latex.ltx}, and we only
+% need to redefine the internal commands |\@alph| and
+% |\@Alph|; for |\Alphfinal| we need to provide both a wrapper and
+% an internal command.
+% The counter printing commands are made semi-robust: without the
+% |\protect|, commands like |\theenumii| break (I'm not quite clear
+% on why this happens, --RA); at the same time, we cannot make the
+% commands too robust (e.g.~with |\DeclareRobustCommand|) because
+% this would enter the command name rather than its value into
+% files like |.aux|, |.toc| etc\@.
+% The old meanings of meaning of |\@alph| and |\@Alph| are saved
+% upon entering Hebrew mode and restored upon exiting it.
+% \begin{macrocode}
+\addto\extrashebrew{%
+ \let\saved@alph=\@alph%
+ \let\saved@Alph=\@Alph%
+ \renewcommand*{\@alph}[1]{\protect\hebrewnumeral{\number#1}}%
+ \renewcommand*{\@Alph}[1]{\protect\Hebrewnumeral{\number#1}}%
+ \def\Alphfinal#1{\expandafter\@Alphfinal\csname c@#1\endcsname}%
+ \providecommand*{\@Alphfinal}[1]{\protect\Hebrewnumeralfinal{\number#1}}}
+\addto\noextrashebrew{%
+ \let\@alph=\saved@alph%
+ \let\@Alph=\saved@Alph}
+% \end{macrocode}
+% Note that |\alph| (without apostrophes) is already the
+% appropriate choice for the second-level enumerate label, and
+% |\Alph| (with apostrophes) is an appropriate choice for appendix;
+% however, the default \LaTeX\ labels need to be redefined for
+% appropriate cross-referencing, see below.
+% \LaTeX\ default class files specify |\Alph| for
+% the fourth-level enumerate level, this should probably be changed.
+% Also, the way labels get flushed left by default looks inappropriate
+% for Hebrew numerals, so we should redefine |\labelenumii| as well
+% as |\labelenumiv| (presently not implemented).
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\theenumii}
+% \begin{macro}{\theenumiv}
+% \begin{macro}{\label}
+% Cross-references to counter labels need to be printed according
+% to the language environment in which a label was issued, not
+% the environment in which it is called: for example, a label~(1b)
+% issued in a Latin environment should be referred to as~(1b) in a
+% Hebrew text, and label~(2dalet) issued in a Hebrew environment
+% should be referred to as~(2dalet) in a Latin text. This was the
+% unanimous opinion in a poll sent to the Ivri\TeX\ list.
+% We therefore redefine |\theenumii| and |\theenumiv|, so that an
+% explicit language instruction gets written to the |.aux| file.
+% \begin{macrocode}
+\renewcommand{\theenumii}
+ {\if@rl\protect\hebrewnumeral{\number\c@enumii}%
+ \else\protect\L{\protect\@@alph{\number\c@enumii}}\fi}
+\renewcommand{\theenumiv}
+ {\if@rl\protect\Hebrewnumeral{\number\c@enumiv}%
+ \else\protect\L{\protect\@@Alph{\number\c@enumiv}}\fi}
+% \end{macrocode}
+% We also need to control for the font and direction in which a
+% counter label is printed. Direction is straightforward: a Latin
+% label like~(1b) should be written left-to-right when called in a
+% Hebrew text, and a Hebrew label like~(2dalet) should be written
+% right-to-left when called in a Latin text. The font question is
+% more delicate, because we should decide whether the numerals
+% should be typeset in the font of the language enviroment in which
+% the label was issued, or that of the environment in which it is
+% called.
+% \begin{itemize}
+% \item
+% A purely numeric label like~(23) looks best if it is set in the
+% font of the surrounding language.
+% \item
+% But a mixed alphanumeric label like~(1b) lookes weird if
+% the~`1' is taken from the Hebrew font; likewise, (2dalet) looks
+% weird if the~`2' is taken from a Latin font.
+% \item
+% Finally, mixing the two possibilities is worst, because a
+% single Hebrew sentence referring to examples~(1b) and~(2) would
+% take the~`1' from the Latin font and the~`2' from the Hebrew
+% font, and this looks really awful. (It is also very hard to
+% implement).
+% \end{itemize}
+% In light of the conflicting considerations it seems like there's
+% no perfect solution. I have chosen to implement the top option,
+% where numerals are taken from the font of the surrounding
+% language, because it seems to me that reference to purely numeric
+% labels is the most common, so this gives a good solution to the
+% majority of cases and a mediocre solution to the minority.
+%
+% We redefine the |\label| command which writes to the
+% |.aux| file. Depending on the language environment we issue
+% appropriate |\beginR/L|$\cdots$|\endR/L| commands to control the
+% direction without affecting the font. Since these commands do not
+% affect the value of |\if@rl|, we cannot use the macro
+% |\@brackets| to determine the correct brackets to be used with
+% |\p@enumiii|; instead, we let the language environment determine an
+% explicit definition.
+% \begin{macrocode}
+\def\label#1{\@bsphack
+ \if@rl
+ \def\p@enumiii{\p@enumii)\theenumii(}%
+ \protected@write\@auxout{}%
+ {\string\newlabel{#1}{{\beginR\@currentlabel\endR}{\thepage}}}%
+ \else
+ \def\p@enumiii{\p@enumii(\theenumii)}%
+ \protected@write\@auxout{}%
+ {\string\newlabel{#1}{{\beginL\@currentlabel\endL}{\thepage}}}%
+ \fi
+ \@esphack}
+% \end{macrocode}
+% NOTE: it appears that the definition of |\label| is
+% language-independent and thus belongs in \pkg{rlbabel.def}, but
+% this is not the case. The decision to typeset label numerals
+% in the font of the surrounding language is reasonable for Hebrew,
+% because mixed-font (1b) and (2dalet) are somewhat acceptable. The
+% same may not be acceptable for Arabic, whose numeral glyphs are
+% radically different from those in the Latin fonts. The decision
+% about the direction may also be different for Arabic, which is
+% more right-to-left oriented than Hebrew (two examples: dates like
+% 15/6/2003 are written left-to-right in Hebrew but right-to-left
+% in Arabic; equations like $1+2=3$ are written left-to-right in
+% Hebrew but right-to-left in Arabic elementary school textbooks
+% using Arabic numeral glyphs). My personal hunch is that a label
+% like~(1b) in an Arabic text would be typeset left-to-right if
+% the~`1' is a Western glyph, but right-to-left if the~`1' is an
+% Arabic glyph. But this is just a guess, I'd have to ask Arab
+% typesetters to find the correct answer. --RA.
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\appendix}
+% The following code provides for the proper printing of appendix
+% numbers in tables of contents. Section and chapter headings are
+% normally bilingual: regardless of the text language, the author
+% supplies each section/chapter with two headings---one for the
+% Hebrew table of contents and one for the Latin table of contents.
+% It makes sense that the label should be a Latin letter in the
+% Latin table of contents and a Hebrew letter in the Hebrew table
+% of contents. The definition is similar to that of |\theenumii|
+% and |\theenumiv| above, but additional |\protect| commands ensure
+% that the entire condition is written the |.aux| file. The
+% appendix number will therefore be typeset according to the
+% environment in which it is used rather than issued: a Hebrew
+% number (with apostrophes) in a Hebrew environment and a Latin
+% capital letter in a Latin environment (the command
+% |\@@Alph| is set in \pkg{rlbabel.def} to hold the default meaning
+% of \LaTeX\ [latin] |\@Alph|, regardless of the mode in which it is
+% issued). The net result is that
+% the second appendix will be marked with~`B' in the Latin table of
+% contents and with `bet' in the Hebrew table of contents; the mark
+% in the main text will depend on the language of the appendix itself.
+% \begin{macrocode}
+\@ifclassloaded{letter}{}{%
+\@ifclassloaded{slides}{}{%
+ \let\@@appendix=\appendix%
+ \@ifclassloaded{article}{%
+ \renewcommand\appendix{\@@appendix%
+ \renewcommand\thesection
+ {\protect\if@rl\protect\Hebrewnumeral{\number\c@section}%
+ \protect\else\@@Alph\c@section\protect\fi}}}
+ {\renewcommand\appendix{\@@appendix%
+ \renewcommand\thechapter
+ {\protect\if@rl\protect\Hebrewnumeral{\number\c@chapter}%
+ \protect\else\@@Alph\c@chapter\protect\fi}}}}}
+% \end{macrocode}
+% QUESTION: is this also the appropriate way to refer to an
+% appendix in the text, or should we retain the original label the
+% same way we did with |enumerate| labels?
+% ANOTHER QUESTION: are similar redefinitions needed for other
+% counters that generate texts in bilingual lists like |.lof/.fol|
+% and |.lot/.tol|? --RA.
+% \end{macro}
+% \begin{macro}{\@hebrew@numeral}
+% The command |\@hebrew@numeral| prints a Hebrew number. The groups
+% of thousands, millions, billions are separated by apostrophes and
+% typeset without apostrophes or final letters; the remainder
+% (under 1000) is typeset conventionally, with the selected styles
+% for apostrophes and final letters.
+% The function calls on |\gim@no@mil| to typeset each
+% three-digit block. The algorithm
+% is recursive, but the maximum recursion depth is~4 because \TeX\
+% only allows numbers up to $2^{31}-1 = 2{,}147{,}483{,}647$.
+% The typesetting routine is wrapped in |\@hebrew| in order to
+% ensure that numbers are always typeset in Hebrew mode.
+%
+% Initialize: |\@tempcnta| holds the value, |\@tempcntb| is used for
+% calculations.
+% \begin{macrocode}
+\newcommand*{\@hebrew@numeral}[1]
+{\@hebrew{\@tempcnta=#1\@tempcntb=#1\relax
+ \divide\@tempcntb by 1000
+% \end{macrocode}
+% If we're under 1000, call |\gim@nomil|
+% \begin{macrocode}
+ \ifnum\@tempcntb=0\gim@nomil\@tempcnta\relax
+% \end{macrocode}
+% If we're above 1000 then force no apostrophe and no final letter
+% styles for the value above~1000, recur for the value above~1000,
+% add an apostrophe, and call |\gim@nomil| for the remainder.
+% \begin{macrocode}
+ \else{\@gim@apostfalse\@gim@finalfalse\@hebrew@numeral\@tempcntb}'%
+ \multiply\@tempcntb by 1000\relax
+ \advance\@tempcnta by -\@tempcntb\relax
+ \gim@nomil\@tempcnta\relax
+ \fi
+}}
+% \end{macrocode}
+% NOTE: is it the case that 15,000 and 16,000 are written as
+% yod-he and yod-vav, rather than tet-vav and tet-zayin? This
+% vaguely rings a bell, but I'm not certain. If this is the case,
+% then the current behavior is incorrect and should be changed. --RA.
+% \end{macro}
+% \begin{macro}{\gim@nomil}
+% The command |\gim@nomil| typesets an integer between 0~and~999
+% (for~0 it typesets nothing). The code has been modified from the
+% old |hebcal.sty|
+% (appropriate credits---Boris Lavva and Michail Rozman ?).
+% |\@tempcnta| holds the total value that remains to be typeset.
+% At each stage we find the highest valued letter that is
+% less than or equal to |\@tempcnta|, and call on |\gim@print| to
+% subtract this value and print the letter.
+%
+% Initialize: |\@tempcnta| holds the value, there is no previous
+% letter.
+% \begin{macrocode}
+\newcommand*{\gim@nomil}[1]{\@tempcnta=#1\@gim@prevfalse
+% \end{macrocode}
+% Find the hundreds digit.
+% \begin{macrocode}
+ \@tempcntb=\@tempcnta\divide\@tempcntb by 100\relax % hundreds digit
+ \ifcase\@tempcntb % print nothing if no hundreds
+ \or\gim@print{100}{\hebqof}%
+ \or\gim@print{200}{\hebresh}%
+ \or\gim@print{300}{\hebshin}%
+ \or\gim@print{400}{\hebtav}%
+ \or\hebtav\@gim@prevtrue\gim@print{500}{\hebqof}%
+ \or\hebtav\@gim@prevtrue\gim@print{600}{\hebresh}%
+ \or\hebtav\@gim@prevtrue\gim@print{700}{\hebshin}%
+ \or\hebtav\@gim@prevtrue\gim@print{800}{\hebtav}%
+ \or\hebtav\@gim@prevtrue\hebtav\gim@print{900}{\hebqof}%
+ \fi
+% \end{macrocode}
+% Find the tens digit. The numbers 15 and 16 are traditionally
+% printed as tet-vav ($9+6$) and tet-zayin ($9+7$) to avoid
+% spelling the Lord's name.
+% \begin{macrocode}
+ \@tempcntb=\@tempcnta\divide\@tempcntb by 10\relax % tens digit
+ \ifcase\@tempcntb % print nothing if no tens
+ \or % number between 10 and 19
+ \ifnum\@tempcnta = 16 \gim@print {9}{\hebtet}% tet-zayin
+ \else\ifnum\@tempcnta = 15 \gim@print {9}{\hebtet}% tet-vav
+ \else \gim@print{10}{\hebyod}%
+ \fi % \@tempcnta = 15
+ \fi % \@tempcnta = 16
+% \end{macrocode}
+% Initial or final forms are selected according to the current
+% style option; |\gim@print| will force a non-final letter in
+% non-final position by means of a local style change.
+% \begin{macrocode}
+ \or\gim@print{20}{\if@gim@final\hebfinalkaf\else\hebkaf\fi}%
+ \or\gim@print{30}{\heblamed}%
+ \or\gim@print{40}{\if@gim@final\hebfinalmem\else\hebmem\fi}%
+ \or\gim@print{50}{\if@gim@final\hebfinalnun\else\hebnun\fi}%
+ \or\gim@print{60}{\hebsamekh}%
+ \or\gim@print{70}{\hebayin}%
+ \or\gim@print{80}{\if@gim@final\hebfinalpe\else\hebpe\fi}%
+ \or\gim@print{90}{\if@gim@final\hebfinaltsadi\else\hebtsadi\fi}%
+ \fi
+% \end{macrocode}
+% Print the ones digit.
+% \begin{macrocode}
+ \ifcase\@tempcnta % print nothing if no ones
+ \or\gim@print{1}{\hebalef}%
+ \or\gim@print{2}{\hebbet}%
+ \or\gim@print{3}{\hebgimel}%
+ \or\gim@print{4}{\hebdalet}%
+ \or\gim@print{5}{\hebhe}%
+ \or\gim@print{6}{\hebvav}%
+ \or\gim@print{7}{\hebzayin}%
+ \or\gim@print{8}{\hebhet}%
+ \or\gim@print{9}{\hebtet}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\gim@print}
+% \begin{macro}{\if@gim@prev}
+% The actual printing routine typesets a digit with the appropriate
+% apostrophes: if a number sequence consists of a
+% single letter then it is followed by a single apostrophe, and if
+% it consists of more than one letter then a double
+% apostrophe is inserted before the last letter.
+% We typeset the letters one at a time, keeping a flag that tells
+% us if any previous letters had been typeset.
+% \begin{macrocode}
+\newif\if@gim@prev % flag if a previous letter has been typeset
+% \end{macrocode}
+% For each letter, we
+% first subtract its value from the total. Then,
+% \begin{itemize}
+% \item
+% if the result is zero then this is the last letter; we check
+% the flag to see if this is the only letter and print it with
+% the appropriate apostrophe;
+% \item
+% if the result is not zero then there remain additional letters
+% to be typeset; we print without an apostrophe and set the
+% `previous letter' flag.
+% \end{itemize}
+% |\@tempcnta| holds the total value that remains to be typeset.
+% We first deduct the letter's value from |\@tempcnta|,
+% so |\@tempcnta| is zero if and only if this is the last letter.
+% \begin{macrocode}
+\newcommand*{\gim@print}[2]{% #2 is a letter, #1 is its value.
+ \advance\@tempcnta by -#1\relax% deduct the value from the remainder
+% \end{macrocode}
+% If this is the last letter, we print with the appropriate
+% apostrophe (depending on the style option):
+% if there is a preceding letter, print |"x| if the style calls for
+% apostrophes, |x| if it doesn't;
+% otherwise, this is the only letter: print |x'| if the style calls
+% for apostrophes, |x| if it doesn't.
+% \begin{macrocode}
+ \ifnum\@tempcnta=0% if this is the last letter
+ \if@gim@prev\if@gim@apost"\fi#2%
+ \else#2\if@gim@apost'\fi\fi%
+% \end{macrocode}
+% If this is not the last letter: print a non-final form (by
+% forcing a local style option) and set the `previous letter' flag.
+% \begin{macrocode}
+ \else{\@gim@finalfalse#2}\@gim@prevtrue\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\hebr}
+% \begin{macro}{\gim}
+% The older Hebrew counter commands |\hebr| and |\gim| are retained
+% in order to keep older documents from breaking. They are set to
+% be equivalent to |\alph|, and their use is deprecated. Note that
+% |\hebr| gives different results than it had in the past---it
+% now typesets 11 as yod-alef rather than kaf.
+% \begin{macrocode}
+\let\hebr=\alph
+\let\gim=\alph
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% For backward compatibility with `older' \pkg{hebrew.sty}
+% packages, we define Hebrew equivalents of some useful \LaTeX\
+% commands. Note, however, that 8-bit macros defined in Hebrew
+% are no longer supported.
+% \begin{macrocode}
+\def\hebcopy{\protect\R{\hebhe\hebayin\hebtav\hebqof}}
+\def\hebincl{\protect\R{\hebresh\hebtsadi"\hebbet}}
+\def\hebpage{\protect\R{\hebayin\hebmem\hebvav\hebdalet}}
+\def\hebto{\protect\R{\hebayin\hebdalet}}
+% \end{macrocode}
+% |\hadgesh| produce ``poor man's bold'' (heavy printout), when
+% used with normal font glyphs. It is advisable to use bold font
+% (for example, \emph{Dead Sea}) instead of this macro.
+% \begin{macrocode}
+\def\hadgesh#1{\leavevmode\setbox0=\hbox{#1}%
+ \kern-.025em\copy0\kern-\wd0
+ \kern.05em\copy0\kern-\wd0
+ \kern-.025em\raise.0433em\box0 }
+% \end{macrocode}
+% |\piska| and |\piskapiska| sometimes used in `older' hebrew
+% sources, and should not be used in \LaTeXe.
+% \begin{macrocode}
+\if@compatibility
+ \def\piska#1{\item{#1}\hangindent=-\hangindent}
+ \def\piskapiska#1{\itemitem{#1}\hangindent=-\hangindent}
+\fi
+% \end{macrocode}
+% The following commands are simply synonyms for the standard ones,
+% provided with \LaTeXe.
+% \begin{macrocode}
+\let\makafgadol=\textendash
+\let\makafanak=\textemdash
+\let\geresh=\textquoteright
+\let\opengeresh=\textquoteright
+\let\closegeresh=\textquoteleft
+\let\openquote=\textquotedblright
+\let\closequote=\textquotedblleft
+\let\leftquotation=\textquotedblright
+\let\rightquotation=\textquotedblleft
+% \end{macrocode}
+%
+% We need to ensure that Hebrew is used as the default
+% right-to-left language at |\begin{document}|. The mechanism of
+% defining the |\@rllanguagename| is the same as in \babel 's
+% |\languagename|: the last right-to-left language in the
+% |\usepackage{babel}| line is set as the default right-to-left
+% language at document beginning.
+%
+% For example, the following code:
+% \begin{quote}
+% |\usepackage[russian,hebrew,arabic,greek,english]{babel}|
+% \end{quote}
+% will set the Arabic language as the default right-to-left
+% language and the English language as the default language.
+% As a result, the commands |\L{}| and |\embox{}| will use English
+% and |\R{}| and |\hmbox{}| will use Arabic by default. These
+% defaults can be changed with the next |\sethebrew| or
+% |\selectlanguage{|\emph{language name}|}| command.
+% \begin{macrocode}
+\AtBeginDocument{\def\@rllanguagename{hebrew}}
+% \end{macrocode}
+%
+% The macro |\ldf@finish| takes care of looking for a configuration
+% file, setting the main language to be switched on at
+% |\begin{document}| and resetting the category code of |@| to its
+% original value.
+% \begin{macrocode}
+\ldf@finish{hebrew}
+%</hebrew>
+% \end{macrocode}
+%
+% \subsection{Right to left support}
+%
+% This file \pkg{rlbabel.def} defines necessary bidirectional macro
+% support for \LaTeXe. It is designed for use not only with Hebrew,
+% but with any Right-to-Left languages, supported by \babel. The
+% macros provided in this file are language and encoding
+% independent.
+%
+% Right-to-left languages will use \TeX\ extensions, namely \TeX\
+% primitives |\beginL|, |\endL| and |\beginR|, |\endR|, currently
+% implemented only in $\varepsilon$-\TeX\ and in \TeX{-}{-}\XeT.
+%
+% If $\varepsilon$-\TeX\ is used, we should switch it to the
+% \emph{enhanced} mode:
+% \begin{macrocode}
+%<*rightleft>
+\ifx\TeXXeTstate\undefined\else%
+ \TeXXeTstate=1
+\fi
+% \end{macrocode}
+%
+% Note, that $\varepsilon$-\TeX 's format file should be created
+% for \emph{extended} mode. Mode can be checked by running
+% $\varepsilon$-\TeX\ on some \TeX{} file, for example:
+% \begin{quote}
+% |This is e-TeX, Version 3.14159-1.1 (Web2c 7.0)|\\
+% |entering extended mode|
+% \end{quote}
+% The second line should be \texttt{entering extended mode}.
+%
+% We check if user uses Right-to-Left enabled engine instead of
+% regular Knuth's \TeX:
+% \begin{macrocode}
+\ifx\beginL\@undefined%
+ \newlinechar`\^^J
+ \typeout{^^JTo avoid this error message,^^J%
+ run TeX--XeT or e-TeX engine instead of regular TeX.^^J}
+ \errmessage{Right-to-Left Support Error: use TeX--XeT or e-TeX
+ engine}%
+\fi
+% \end{macrocode}
+%
+% \subsubsection{Switching from LR to RL mode and back}
+%
+% \cs{@torl} and \cs{@fromrl} are called each time the horizontal
+% direction changes. They do all that is necessary besides changing
+% the direction. Currently their task is to change the encoding
+% information and mode (condition \cs{if@rl}). They should not
+% normally be called by users: user-level macros, such as
+% \cs{sethebrew} and \cs{unsethebrew}, as well as \babel 's
+% \cs{selectlanguage} are defined in language-definition files and
+% should be used to change default language (and direction).
+%
+% Local direction changing commands (for small pieces of text):
+% |\L{}|, |\R{}|, |\embox{}| and |\hmbox{}| are defined below in
+% this file in language-independent manner.
+%
+% \begin{macro}{\if@rl}
+% \begin{description}\scrunch
+% \item[|\@rltrue|] means that the main mode is currently
+% Right-to-Left.
+% \item[|\@rlfalse|] means that the main mode is currently
+% Left-to-Right.
+% \end{description}
+% \begin{macrocode}
+\newif\if@rl
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@rlmain}
+% This is the main direction of the document. Unlike |\if@rl|
+% it is set once and never changes.
+% \begin{description}\scrunch
+% \item[|\@rltrue|] means that the document is Right-to-Left.
+% \item[|\@rlfalse|] means that the document is Left-to-Right.
+% \end{description}
+% Practically |\if@rlmain| is set according to the value of |\if@rl|
+% in the beginning of the run.
+% \begin{macrocode}
+\AtBeginDocument{% Here we set the main document direction
+ \newif\if@rlmain%
+ \if@rl% e.g: if the options to babel were [english,hebrew]
+ \@rlmaintrue%
+ \else% e.g: if the options to babel were [hebrew,english]
+ \@rlmainfalse%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@torl}
+% Switches current direction to Right-to-Left: saves current
+% Left-to-Right encoding in |\lr@encodingdefault|, sets required
+% Right-to-Left language name in |\@rllanguagename| (similar to
+% \babel 's |\languagename|) and changes derection.
+%
+% The Right-to-Left language encoding should be defined in |.ldf|
+% file as special macro created by concatenation of the language
+% name and string \texttt{encoding}, for example, for Hebrew it
+% will be |\hebrewencoding|.
+% \begin{macrocode}
+\DeclareRobustCommand{\@torl}[1]{%
+ \if@rl\else%
+ \let\lr@encodingdefault=\encodingdefault%
+ \fi%
+ \def\@rllanguagename{#1}%
+ \def\encodingdefault{\csname#1encoding\endcsname}%
+ \fontencoding{\encodingdefault}%
+ \selectfont%
+ \@rltrue}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@fromrl}
+% Opposite to |\@torl|, switches current direction to
+% Left-to-Right: restores saved Left-to-Right encoding
+% (|\lr@encodingdefault|) and changes direction.
+% \begin{macrocode}
+\DeclareRobustCommand{\@fromrl}{%
+ \if@rl%
+ \let\encodingdefault=\lr@encodingdefault%
+ \fi%
+ \fontencoding{\encodingdefault}%
+ \selectfont%
+ \@rlfalse}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\selectlanguage}
+% This standard \babel 's macro should be redefined to support
+% bidirectional tables. We divide |\selectlanguage| implementation
+% to two parts, and the first part calls the second
+% |\@@selectlanguage|.
+% \begin{macrocode}
+\expandafter\def\csname selectlanguage \endcsname#1{%
+ \edef\languagename{%
+ \ifnum\escapechar=\expandafter`\string#1\@empty
+ \else \string#1\@empty\fi}%
+ \@@selectlanguage{\languagename}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@selectlanguage}
+% This new internal macro redefines a final part of the standard
+% \babel 's |\select|\-|language| implementation.
+%
+% Standard \LaTeX\ provides us with 3 tables: Table of Contents
+% (|.toc|), List of Figures (|.lof|), and List of Tables
+% (|.lot|). In multi-lingual texts mixing Left-to-Right languages
+% with Right-to-Left ones, the use of various directions in one
+% table results in very ugly output. Therefore, these 3 standard
+% tables will be used now only for Left-to-Right languages, and we
+% will add 3 Right-to-Left tables (their extensions are simply
+% reversed ones): RL Table of Contents (|.cot|), RL List of Figures
+% (|.fol|), and RL List of Tables (|.lof|).
+% \begin{macrocode}
+\def\@@selectlanguage#1{%
+ \select@language{#1}%
+ \if@filesw
+ \protected@write\@auxout{}{\string\select@language{#1}}%
+ \if@rl%
+ \addtocontents{cot}{\xstring\select@language{#1}}%
+ \addtocontents{fol}{\xstring\select@language{#1}}%
+ \addtocontents{tol}{\xstring\select@language{#1}}%
+ \else%
+ \addtocontents{toc}{\xstring\select@language{#1}}%
+ \addtocontents{lof}{\xstring\select@language{#1}}%
+ \addtocontents{lot}{\xstring\select@language{#1}}%
+ \fi%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\setrllanguage}
+% \begin{macro}{\unsetrllanguage}
+% The |\setrllanguage| and |\unsetrllanguage| pair of macros is
+% proved to very useful in bilingual texts, for example, in
+% Hebrew-English texts. The language-specific commands, for example,
+% |\sethebrew| and |\unsethebrew| use these macros as basis.
+%
+% Implementation saves and restores other language in
+% |\other@languagename| variable, and uses internal macro
+% |\@@selectlanguage|, defined above, to switch between languages.
+% \begin{macrocode}
+\let\other@languagename=\languagename
+\DeclareRobustCommand{\setrllanguage}[1]{%
+ \if@rl\else%
+ \let\other@languagename=\languagename%
+ \fi%
+ \def\languagename{#1}%
+ \@@selectlanguage{\languagename}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\unsetrllanguage}[1]{%
+ \if@rl%
+ \let\languagename=\other@languagename%
+ \fi
+ \@@selectlanguage{\languagename}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\L}
+% \begin{macro}{\R}
+% \begin{macro}{\HeblatexRedefineL}
+% Macros for changing direction, originally taken from TUGboat.
+% Usage: |\L{|\emph{Left to Right text}|}| and |\R{|\emph{Right to
+% Left text}|}|. Numbers should also be enclosed in |\L{}|, as in
+% |\L{123}|.
+%
+% Note, that these macros do not receive language name as
+% parameter. Instead, the saved |\@rllanguagename| will be
+% used. We assume that each Right-to-Left language defines
+% |\to|\emph{languagename} and |\from|\emph{languagename} macros in
+% language definition file, for example, for Hebrew: |\tohebrew|
+% and |\fromhebrew| macros in \pkg{hebrew.ldf} file.
+%
+% The macros \cs{L} and \cs{R} include `protect' to to make them robust and
+% allow use, for example, in tables.
+%
+% Due to the fact that some packages have different definitions for \cs{L}
+% the macro |\HeblatexRedefineL| is provided to overide them. This may
+% be required with hyperref, for instance.
+% \begin{macrocode}
+\let\next=\
+\def\HeblatexRedefineL{%
+ \def\L{\protect\pL}%
+}
+\HeblatexRedefineL
+\def\pL{\protect\afterassignment\moreL \let\next= }
+\def\moreL{\bracetext \aftergroup\endL \beginL\csname
+ from\@rllanguagename\endcsname}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\R{\protect\pR}
+\def\pR{\protect\afterassignment\moreR \let\next= }
+\def\moreR{\bracetext \aftergroup\endR \beginR\csname
+ to\@rllanguagename\endcsname}
+\def\bracetext{\ifcat\next{\else\ifcat\next}\fi
+ \errmessage{Missing left brace has been substituted}\fi \bgroup}
+\everydisplay{\if@rl\aftergroup\beginR\fi }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@ensure@R}
+% \begin{macro}{\@ensure@L}
+% Two small internal macros, a-la |\ensuremath|
+% \begin{macrocode}
+\def\@ensure@R#1{\if@rl#1\else\R{#1}\fi}
+\def\@ensure@L#1{\if@rl\L{#1}\else#1\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Take care of Right-to-Left indentation in every paragraph.
+% Originally, \cs{noindent} was redefined for right-to-left by
+% Yaniv Bargury, then the implementation was rewritten by Alon Ziv
+% using an idea by Chris Rowley: \cs{noindent} now works
+% unmodified.
+% \begin{macrocode}
+\def\rl@everypar{\if@rl{\setbox\z@\lastbox\beginR\usebox\z@}\fi}
+\let\o@everypar=\everypar
+\def\everypar#1{\o@everypar{\rl@everypar#1}}
+% \end{macrocode}
+%
+% \begin{macro}{\hmbox}
+% \begin{macro}{\embox}
+% Useful vbox commands. All text in math formulas is best enclosed
+% in these: LR text in |\embox| and RL text in |\hmbox|. |\mbox{}|
+% is useless for both cases, since it typesets in Left-to-Right
+% even for Right-to-Left languages (additions by Yaniv Bargury).
+% \begin{macrocode}
+\newcommand{\hmbox}[1]{\mbox{\R{#1}}}
+\newcommand{\embox}[1]{\mbox{\L{#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@brackets}
+% When in Right-to-Left mode, brackets should be swapped. This
+% macro receives 3 parameters: left bracket, content, right
+% bracket. Brackets can be square brackets, braces, or
+% parentheses.
+% \begin{macrocode}
+\def\@brackets#1#2#3{\protect\if@rl #3#2#1\protect\else
+ #1#2#3\protect\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@number}
+% \begin{macro}{\@latin}
+% \cs{@number} preserves numbers direction from Left to Right.
+% \cs{@latin} in addition switches current encoding to the latin.
+% \begin{macrocode}
+\def\@@number#1{\ifmmode\else\beginL\fi#1\ifmmode\else\endL\fi}
+\def\@@latin#1{\@@number{{\@fromrl#1}}}
+\def\@number{\protect\@@number}
+\def\@latin{\protect\@@latin}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Counters}
+%
+% To make counter references work in Right to Left text, we need
+% to surround their original definitions with an
+% |\@number{|\ldots|}| or |\@latin{|\ldots|}|. Note, that
+% language-specific counters, such as \cs{hebr} or \cs{gim} are
+% provided with language definition file.
+%
+% We start with saving the original definitions:
+% \begin{macrocode}
+\let\@@arabic=\@arabic
+\let\@@roman=\@roman
+\let\@@Roman=\@Roman
+\let\@@alph=\@alph
+\let\@@Alph=\@Alph
+% \end{macrocode}
+%
+% \begin{macro}{\@arabic}
+% \begin{macro}{\@roman}
+% \begin{macro}{\@Roman}
+% Arabic and roman numbers should be from Left to Right. In
+% addition, roman numerals, both lower- and upper-case should be in
+% latin encoding.
+% \begin{macrocode}
+\def\@arabic#1{\@number{\@@arabic#1}}
+\def\@roman#1{\@latin{\@@roman#1}}
+\def\@Roman#1{\@latin{\@@Roman#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\arabicnorl}
+% This macro preserves the original definition of |\arabic|
+% (overrides the overriding of |\@arabic|)
+% \begin{macrocode}
+\def\arabicnorl#1{\expandafter\@@arabic\csname c@#1\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\make@lr}
+% In Right to Left documents all counters defined in the standard
+% document classes \emph{article}, \emph{report} and \emph{book}
+% provided with \LaTeXe, such as |\thesection|, |\thefigure|,
+% |\theequation| should be typed as numbers from left to right. To
+% ensure direction, we use the following
+% |\make@lr{|\emph{counter}|}| macro:
+% \begin{macrocode}
+\def\make@lr#1{\begingroup
+ \toks@=\expandafter{#1}%
+ \edef\x{\endgroup
+ \def\noexpand#1{\noexpand\@number{\the\toks@}}}%
+ \x}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@ifclassloaded{letter}{}{%
+ \@ifclassloaded{slides}{}{%
+ \make@lr\thesection
+ \make@lr\thesubsection
+ \make@lr\thesubsubsection
+ \make@lr\theparagraph
+ \make@lr\thesubparagraph
+ \make@lr\thefigure
+ \make@lr\thetable
+ }
+ \make@lr\theequation
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Preserving logos}
+%
+% Preserve \TeX, \LaTeX\ and \LaTeXe\ logos.
+% \begin{macro}{\TeX}
+% \begin{macrocode}
+\let\@@TeX\TeX
+\def\TeX{\@latin{\@@TeX}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LaTeX}
+% \begin{macrocode}
+\let\@@LaTeX\LaTeX
+\def\LaTeX{\@latin{\@@LaTeX}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\LaTeXe}
+% \begin{macrocode}
+\let\@@LaTeXe\LaTeXe
+\def\LaTeXe{\@latin{\@@LaTeXe}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{List environments}
+%
+% List environments in Right-to-Left languages, are ticked and
+% indented from the right instead of from the left. All the
+% definitions that caused indentation are revised for Right-to-Left
+% languages. \LaTeX\ keeps track on the indentation with the
+% \cs{leftmargin} and \cs{rightmargin} values.
+%
+% \begin{macro}{list}
+% Thus we need to override the definition of the |\list| macro: when
+% in RTL mode, the right margins are the begining of the line.
+% \begin{macrocode}
+\def\list#1#2{%
+ \ifnum \@listdepth >5\relax
+ \@toodeep
+ \else
+ \global\advance\@listdepth\@ne
+ \fi
+ \rightmargin\z@
+ \listparindent\z@
+ \itemindent\z@
+ \csname @list\romannumeral\the\@listdepth\endcsname
+ \def\@itemlabel{#1}%
+ \let\makelabel\@mklab
+ \@nmbrlistfalse
+ #2\relax
+ \@trivlist
+ \parskip\parsep
+ \parindent\listparindent
+ \advance\linewidth -\rightmargin
+ \advance\linewidth -\leftmargin
+% \end{macrocode}
+% The only change in the macro is the |\if@rl| case:
+% \begin{macrocode}
+ \if@rl
+ \advance\@totalleftmargin \rightmargin
+ \else
+ \advance\@totalleftmargin \leftmargin
+ \fi
+ \parshape \@ne \@totalleftmargin \linewidth
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\labelenumii}
+% \begin{macro}{\p@enumiii}
+% The \cs{labelenumii} and \cs{p@enumiii} commands use
+% \emph{parentheses}. They are revised to work Right-to-Left with
+% the help of \cs{@brackets} macro defined above.
+% \begin{macrocode}
+\def\labelenumii{\@brackets(\theenumii)}
+\def\p@enumiii{\p@enumii\@brackets(\theenumii)}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Tables of moving stuff}
+%
+% Tables of moving arguments: table of contents (|toc|), list of
+% figures (|lof|) and list of tables (|lot|) are handles here. These
+% three default \LaTeX\ tables will be used now exclusively for
+% Left to Right stuff.
+%
+% Three additional Right-to-Left tables: RL table of contents
+% (|cot|), RL list of figures (|fol|), and RL list of tables
+% (|tol|) are added.
+% These three tables will be used exclusively for Right to
+% Left stuff.
+%
+% \begin{macro}{\@tableofcontents}
+% \begin{macro}{\@listoffigures}
+% \begin{macro}{\@listoftables}
+% We define 3 new macros similar to the standard \LaTeX\ tables,
+% but with one parameter --- table file extension. These macros
+% will help us to define our additional tables below.
+% \begin{macrocode}
+\@ifclassloaded{letter}{}{% other
+\@ifclassloaded{slides}{}{% other
+ \@ifclassloaded{article}{% article
+ \newcommand\@tableofcontents[1]{%
+ \section*{\contentsname\@mkboth%
+ {\MakeUppercase\contentsname}%
+ {\MakeUppercase\contentsname}}%
+ \@starttoc{#1}}
+ \newcommand\@listoffigures[1]{%
+ \section*{\listfigurename\@mkboth%
+ {\MakeUppercase\listfigurename}%
+ {\MakeUppercase\listfigurename}}%
+ \@starttoc{#1}}
+ \newcommand\@listoftables[1]{%
+ \section*{\listtablename\@mkboth%
+ {\MakeUppercase\listtablename}%
+ {\MakeUppercase\listtablename}}%
+ \@starttoc{#1}}}%
+ {% else report or book
+ \newcommand\@tableofcontents[1]{%
+ \@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn%
+ \fi\chapter*{\contentsname\@mkboth%
+ {\MakeUppercase\contentsname}%
+ {\MakeUppercase\contentsname}}%
+ \@starttoc{#1}\if@restonecol\twocolumn\fi}
+ \newcommand\@listoffigures[1]{%
+ \@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn%
+ \fi\chapter*{\listfigurename\@mkboth%
+ {\MakeUppercase\listfigurename}%
+ {\MakeUppercase\listfigurename}}%
+ \@starttoc{#1}\if@restonecol\twocolumn\fi}
+ \newcommand\@listoftables[1]{%
+ \if@twocolumn\@restonecoltrue\onecolumn\else\@restonecolfalse\fi%
+ \chapter*{\listtablename\@mkboth%
+ {\MakeUppercase\listtablename}%
+ {\MakeUppercase\listtablename}}%
+ \@starttoc{#1}\if@restonecol\twocolumn\fi}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\lrtableofcontents}
+% \begin{macro}{\lrlistoffigures}
+% \begin{macro}{\lrlistoftables}
+% Left-to-Right tables are called now |\lr|\emph{xxx} and defined
+% with the aid of three macros defined above (extensions |toc|,
+% |lof|, and |lot|).
+% \begin{macrocode}
+ \newcommand\lrtableofcontents{\@tableofcontents{toc}}%
+ \newcommand\lrlistoffigures{\@listoffigures{lof}}%
+ \newcommand\lrlistoftables{\@listoftables{lot}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\rltableofcontents}
+% \begin{macro}{\rllistoffigures}
+% \begin{macro}{\rllistoftables}
+% Right-to-Left tables will be called |\rl|\emph{xxx} and defined
+% with the aid of three macros defined above (extensions |cot|,
+% |fol|, and |tol|).
+% \begin{macrocode}
+ \newcommand\rltableofcontents{\@tableofcontents{cot}}%
+ \newcommand\rllistoffigures{\@listoffigures{fol}}%
+ \newcommand\rllistoftables{\@listoftables{tol}}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\tableofcontents}
+% \begin{macro}{\listoffigures}
+% \begin{macro}{\listoftables}
+% Let |\|\emph{xxx} be |\rl|\emph{xxx} if the current direction is
+% Right-to-Left and |\lr|\emph{xxx} if it is Left-to-Right.
+% \begin{macrocode}
+ \renewcommand\tableofcontents{\if@rl\rltableofcontents%
+ \else\lrtableofcontents\fi}
+ \renewcommand\listoffigures{\if@rl\rllistoffigures%
+ \else\lrlistoffigures\fi}
+ \renewcommand\listoftables{\if@rl\rllistoftables%
+ \else\lrlistoftables\fi}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@dottedtocline}
+% The following makes problems when making a Right-to-Left tables,
+% since it uses \cs{leftskip} and \cs{rightskip} which are both
+% mode dependent.
+% \begin{macrocode}
+\def\@dottedtocline#1#2#3#4#5{%
+ \ifnum #1>\c@tocdepth \else
+ \vskip \z@ \@plus.2\p@
+ {\if@rl\rightskip\else\leftskip\fi #2\relax
+ \if@rl\leftskip\else\rightskip\fi \@tocrmarg \parfillskip
+ -\if@rl\leftskip\else\rightskip\fi
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax
+ \advance\if@rl\rightskip\else\leftskip\fi \@tempdima
+ \null\nobreak\hskip -\if@rl\rightskip\else\leftskip\fi
+ {#4}\nobreak
+ \leaders\hbox{$\m@th
+ \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
+ mu$}\hfill
+ \nobreak
+ \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor \beginL#5\endL}%
+ \par}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@part}
+% This standard macro was redefined for table of contents since it
+% uses \cs{rightskip} which is mode dependent.
+% \begin{macrocode}
+\@ifclassloaded{letter}{}{% other
+\@ifclassloaded{slides}{}{% other
+\renewcommand*\l@part[2]{%
+ \ifnum \c@tocdepth >-2\relax
+ \addpenalty{-\@highpenalty}%
+ \addvspace{2.25em \@plus\p@}%
+ \begingroup
+ \setlength\@tempdima{3em}%
+ \parindent \z@ \if@rl\leftskip\else\rightskip\fi \@pnumwidth
+ \parfillskip -\@pnumwidth
+ {\leavevmode
+ \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss#2}}\par
+ \nobreak
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}%
+ \endgroup
+ \fi}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@part}
+% Part is redefined to support new Right-to-Left table of contents
+% (|cot|) as well as the Left-to-Right one (|toc|).
+% \begin{macrocode}
+\@ifclassloaded{article}{% article class
+ \def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \addcontentsline{cot}{part}{\thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \addcontentsline{cot}{part}{#1}%
+ \fi
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \Large\bfseries \partname~\thepart
+ \par\nobreak
+ \fi
+ \huge \bfseries #2%
+ \markboth{}{}\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}%
+}{% report and book classes
+ \def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \addcontentsline{cot}{part}{\thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \addcontentsline{cot}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c@secnumdepth >-2\relax
+ \huge\bfseries \partname~\thepart
+ \par
+ \vskip 20\p@
+ \fi
+ \Huge \bfseries #2\par}%
+ \@endpart}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@sect}
+% Section was redefined from the \pkg{latex.ltx} file. It is
+% changed to support both Left-to-Right (|toc|) and Right-to-Left
+% (|cot|) table of contents simultaneously.
+% \begin{macrocode}
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #6{%
+ \@hangfrom{\hskip #3\relax\@svsec}%
+ \interlinepenalty \@M #8\@@par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}%
+ \addcontentsline{cot}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}%
+ \else
+ \def\@svsechd{%
+ #6{\hskip #3\relax
+ \@svsec #8}%
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}%
+ \addcontentsline{cot}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}}%
+ \fi
+ \@xsect{#5}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@caption}
+% Caption was redefined from the \pkg{latex.ltx} file. It is
+% changed to support Left-to-Right list of figures and list of
+% tables (|lof| and |lot|) as well as new Right-to-Left lists
+% (|fol| and |tol|) simultaneously.
+% \begin{macrocode}
+\long\def\@caption#1[#2]#3{%
+ \par
+ \addcontentsline{\csname ext@#1\endcsname}{#1}%
+ {\protect\numberline{\csname the#1\endcsname}%
+ {\ignorespaces #2}}%
+ \def\@fignm{figure}
+ \ifx#1\@fignm\addcontentsline{fol}{#1}%
+ {\protect\numberline{\csname the#1\endcsname}%
+ {\ignorespaces #2}}\fi%
+ \def\@tblnm{table}
+ \ifx#1\@tblnm\addcontentsline{tol}{#1}%
+ {\protect\numberline{\csname the#1\endcsname}%
+ {\ignorespaces #2}}\fi%
+ \begingroup
+ \@parboxrestore
+ \if@minipage
+ \@setminipage
+ \fi
+ \normalsize
+ \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@chapter}
+% This standard macro was redefined for table of contents since it
+% uses \cs{rightskip} which is mode dependent.
+% \begin{macrocode}
+\@ifclassloaded{letter}{}{%
+\@ifclassloaded{slides}{}{%
+ \@ifclassloaded{article}{}{%
+ \renewcommand*\l@chapter[2]{%
+ \ifnum \c@tocdepth >\m@ne
+ \addpenalty{-\@highpenalty}%
+ \vskip 1.0em \@plus\p@
+ \setlength\@tempdima{1.5em}%
+ \begingroup
+ \parindent \z@ \if@rl\leftskip\else\rightskip\fi \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \leavevmode \bfseries
+ \advance\if@rl\rightskip\else\leftskip\fi\@tempdima
+ \hskip -\if@rl\rightskip\else\leftskip\fi
+ #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss#2}\par
+ \penalty\@highpenalty
+ \endgroup
+ \fi}}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l@section}
+% \begin{macro}{\l@subsection}
+% \begin{macro}{\l@subsubsection}
+% \begin{macro}{\l@paragraph}
+% \begin{macro}{\l@subparagraph}
+% The toc entry for section did not work in article style.
+% Also it does not print dots, which is funny when most of your
+% work is divided into sections.
+%
+% It was revised to use |\@dottedtocline| as in \pkg{report.sty}
+% (by Yaniv Bargury) and was updated later for all kinds of
+% sections (by Boris Lavva).
+% \begin{macrocode}
+\@ifclassloaded{article}{%
+\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
+\renewcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}}
+\renewcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
+\renewcommand*\l@paragraph{\@dottedtocline{4}{10em}{5em}}
+\renewcommand*\l@subparagraph{\@dottedtocline{5}{12em}{6em}}}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Two-column mode}
+%
+% This is the support of \texttt{twocolumn} option for the standard
+% \LaTeXe\ classes.
+% The following code was originally borrowed from the Arab\TeX\
+% package, file \pkg{latexext.sty}, copyright by Klaus Lagally,
+% Institut fuer Informatik, Universitaet Stuttgart. It was updated
+% for this package by Boris Lavva.
+%
+% \begin{macro}{\@outputdblcol}
+% \begin{macro}{\set@outputdblcol}
+% \begin{macro}{rl@outputdblcol}
+% First column is \cs{@leftcolumn} will be shown at the right side,
+% Second column is \cs{@outputbox} will be shown at the left side.
+%
+% |\set@outputdblcol| IS CURRENTLY DISABLED. TODO: REMOVE IT [tzafrir]
+% \begin{macrocode}
+\let\@@outputdblcol\@outputdblcol
+%\def\set@outputdblcol{%
+% \if@rl\renewcommand{\@outputdblcol}{\rl@outputdblcol}%
+% \else\renewcommand{\@outputdblcol}{\@@outputdblcol}\fi}
+\renewcommand{\@outputdblcol}{%
+ \if@rlmain%
+ \rl@outputdblcol%
+ \else%
+ \@@outputdblcol%
+ \fi%
+}
+\newcommand{\rl@outputdblcol}{%
+ \if@firstcolumn
+ \global \@firstcolumnfalse
+ \global \setbox\@leftcolumn \box\@outputbox
+ \else
+ \global \@firstcolumntrue
+ \setbox\@outputbox \vbox {\hb@xt@\textwidth {%
+ \hskip\columnwidth%
+ \hfil\vrule\@width\columnseprule\hfil
+ \hb@xt@\columnwidth {%
+ \box\@leftcolumn \hss}%
+ \hb@xt@\columnwidth {%
+ \hskip-\textwidth%
+ \box\@outputbox \hss}%
+ \hskip\columnsep%
+ \hskip\columnwidth}}%
+ \@combinedblfloats
+ \@outputpage
+ \begingroup
+ \@dblfloatplacement
+ \@startdblcolumn
+ \@whilesw\if@fcolmade \fi
+ {\@outputpage
+ \@startdblcolumn}%
+ \endgroup
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Footnotes}
+%
+% \begin{macro}{\footnoterule}
+% The Right-to-Left footnote rule is simply reversed default
+% Left-to-Right one. Footnotes can be used in RL or LR main
+% modes, but changing mode while a footnote is pending is still
+% unsolved.
+% \begin{macrocode}
+\let\@@footnoterule=\footnoterule
+\def\footnoterule{\if@rl\hb@xt@\hsize{\hss\vbox{\@@footnoterule}}%
+ \else\@@footnoterule\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Headings and two-side support}
+%
+% When using \texttt{headings} or \texttt{myheadings} modes, we
+% have to ensure that the language and direction of heading is the
+% same as the whole chapter/part of the document. This is
+% implementing by setting special variable \cs{headlanguage} when
+% starting new chapter/part.
+%
+% In addition, when selecting the \texttt{twoside} option (default in
+% \texttt{book} document class), the LR and RL modes need to be set
+% properly for things on the heading and footing. This is done
+% here too.
+%
+% \begin{macro}{ps@headings}
+% \begin{macro}{ps@myheadings}
+% \begin{macro}{headeven}
+% \begin{macro}{headodd}
+% First, we will support the standard \pkg{letter} class:
+% \begin{macrocode}
+\@ifclassloaded{letter}{%
+ \def\headodd{\protect\if@rl\beginR\fi\headtoname{}
+ \ignorespaces\toname
+ \hfil \@date
+ \hfil \pagename{} \thepage\protect\if@rl\endR\fi}
+ \if@twoside
+ \def\ps@headings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@oddhead{\select@language{\headlanguage}\headodd}
+ \let\@evenhead\@oddhead}
+ \else
+ \def\ps@headings{%
+ \let\@oddfoot\@empty
+ \def\@oddhead{\select@language{\headlanguage}\headodd}}
+ \fi
+ \def\headfirst{\protect\if@rl\beginR\fi\fromlocation \hfill %
+ \telephonenum\protect\if@rl\endR\fi}
+ \def\ps@firstpage{%
+ \let\@oddhead\@empty
+ \def\@oddfoot{\raisebox{-45\p@}[\z@]{%
+ \hb@xt@\textwidth{\hspace*{100\p@}%
+ \ifcase \@ptsize\relax
+ \normalsize
+ \or
+ \small
+ \or
+ \footnotesize
+ \fi
+ \select@language{\headlanguage}\headfirst}}\hss}}
+%
+ \renewcommand{\opening}[1]{%
+ \let\headlanguage=\languagename%
+ \ifx\@empty\fromaddress%
+ \thispagestyle{firstpage}%
+ {\raggedleft\@date\par}%
+ \else % home address
+ \thispagestyle{empty}%
+ {\raggedleft
+ \if@rl\begin{tabular}{@{\beginR\csname%
+ to\@rllanguagename\endcsname}r@{\endR}}\ignorespaces
+ \fromaddress \\*[2\parskip]%
+ \@date \end{tabular}\par%
+ \else\begin{tabular}{l}\ignorespaces
+ \fromaddress \\*[2\parskip]%
+ \@date \end{tabular}\par%
+ \fi}%
+ \fi
+ \vspace{2\parskip}%
+ {\raggedright \toname \\ \toaddress \par}%
+ \vspace{2\parskip}%
+ #1\par\nobreak}
+}
+% \end{macrocode}
+% Then, the \pkg{article}, \pkg{report} and \pkg{book} document
+% classes are supported. Note, that in one-sided mode
+% \cs{markright} was changed to \cs{markboth}.
+% \begin{macrocode}
+{% article, report, book
+ \def\headeven{\protect\if@rl\beginR\thepage\hfil\rightmark\endR
+ \protect\else\thepage\hfil{\slshape\leftmark}
+ \protect\fi}
+ \def\headodd{\protect\if@rl\beginR\leftmark\hfil\thepage\endR
+ \protect\else{\slshape\rightmark}\hfil\thepage
+ \protect\fi}
+ \@ifclassloaded{article}{% article
+ \if@twoside % two-sided
+ \def\ps@headings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{\select@language{\headlanguage}\headeven}%
+ \def\@oddhead{\select@language{\headlanguage}\headodd}%
+ \let\@mkboth\markboth
+ \def\sectionmark##1{%
+ \markboth {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\z@
+ \thesection\quad
+ \fi
+ ##1}}{}}%
+ \def\subsectionmark##1{%
+ \markright{%
+ \ifnum \c@secnumdepth >\@ne
+ \thesubsection\quad
+ \fi
+ ##1}}}
+ \else % one-sided
+ \def\ps@headings{%
+ \let\@oddfoot\@empty
+ \def\@oddhead{\headodd}%
+ \let\@mkboth\markboth
+ \def\sectionmark##1{%
+ \markboth{\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne
+ \thesection\quad
+ \fi
+ ##1}}{\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne
+ \thesection\quad
+ \fi
+ ##1}}}}
+ \fi
+%
+ \def\ps@myheadings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{\select@language{\headlanguage}\headeven}%
+ \def\@oddhead{\select@language{\headlanguage}\headodd}%
+ \let\@mkboth\@gobbletwo
+ \let\sectionmark\@gobble
+ \let\subsectionmark\@gobble
+ }}{% report and book
+ \if@twoside % two-sided
+ \def\ps@headings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{\select@language{\headlanguage}\headeven}
+ \def\@oddhead{\select@language{\headlanguage}\headodd}
+ \let\@mkboth\markboth
+ \def\chaptermark##1{%
+ \markboth{\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne
+ \@chapapp\ \thechapter. \ %
+ \fi
+ ##1}}{}}%
+ \def\sectionmark##1{%
+ \markright {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\z@
+ \thesection. \ %
+ \fi
+ ##1}}}}
+ \else % one-sided
+ \def\ps@headings{%
+ \let\@oddfoot\@empty
+ \def\@oddhead{\select@language{\headlanguage}\headodd}
+ \let\@mkboth\markboth
+ \def\chaptermark##1{%
+ \markboth{\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne
+ \@chapapp\ \thechapter. \ %
+ \fi
+ ##1}}{\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne
+ \@chapapp\ \thechapter. \ %
+ \fi
+ ##1}}}}
+ \fi
+ \def\ps@myheadings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{\select@language{\headlanguage}\headeven}%
+ \def\@oddhead{\select@language{\headlanguage}\headodd}%
+ \let\@mkboth\@gobbletwo
+ \let\chaptermark\@gobble
+ \let\sectionmark\@gobble
+ }}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{Postscript Porblems}
+% Any command that is implemented by PostScript directives, e.g
+% commands from the ps-tricks package, needs to be fixed, because the
+% PostScript directives are being interpeted after the document has been
+% converted by \TeX to visual Hebrew (DVI, PostScript and PDF have visual
+% Hebrew).
+%
+% For instance: Suppose you wrote in your document:
+%
+% |\textcolor{cyan}{some ltr text}|
+%
+% This would be interpeted by \TeX to something like:
+%
+% |[postscript:make color cyan]some LTR text[postscript:make color black]|
+%
+%
+% However, with the bidirectionality support we get:
+%
+% |\textcolor{cyan}{\hebalef\hebbet}|
+%
+% Translated to:
+%
+% |[postscript:make color black]{bet}{alef}[postscript:make color cyan]|
+%
+% While we want:
+%
+% |[postscript:make color cyan]{bet}{alef}[postscript:make color black]|
+%
+% The following code will probably work at least with code that stays in the
+% same line:
+% \begin{macro}{@textcolor}
+% \begin{macrocode}
+\AtBeginDocument{%
+ %I assume that \@textcolor is only defined by the package color
+ \ifx\@textcolor\@undefined\else%
+ % If that macro was defined before the beginning of the document,
+ % that is: the package was loaded: redefine it with bidi support
+ \def\@textcolor#1#2#3{%
+ \if@rl%
+ \beginL\protect\leavevmode{\color#1{#2}\beginR#3\endR}\endL%
+ \else%
+ \protect\leavevmode{\color#1{#2}#3}%
+ \fi%
+ }%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\thetrueSlideCounter}
+% This macro probably needs to be overriden for when using |prosper|,
+% (waiting for feedback. Tzafrir)
+% \begin{macrocode}
+\@ifclassloaded{prosper}{%
+ \def\thetrueSlideCounter{\arabicnorl{trueSlideCounter}}
+}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Miscellaneous internal \LaTeX\ macros}
+%
+% \begin{macro}{\raggedright}
+% \begin{macro}{\raggedleft}
+% \cs{raggedright} was changed from \pkg{latex.ltx} file to support
+% Right-to-Left mode, because of the bug in its implementation.
+% \begin{macrocode}
+\def\raggedright{%
+ \let\\\@centercr
+ \leftskip\z@skip\rightskip\@flushglue
+ \parindent\z@\parfillskip\z@skip}
+% \end{macrocode}
+% Swap meanings of \cs{raggedright} and \cs{raggedleft} in
+% Right-to-Left mode.
+% \begin{macrocode}
+\let\@@raggedleft=\raggedleft
+\let\@@raggedright=\raggedright
+\renewcommand\raggedleft{\if@rl\@@raggedright%
+ \else\@@raggedleft\fi}
+\renewcommand\raggedright{\if@rl\@@raggedleft%
+ \else\@@raggedright\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\author}
+% \cs{author} is inserted with \texttt{tabular} environment, and
+% will be used in restricted horizontal mode. Therefore we have to
+% add explicit direction change command when in Right-to-Left
+% mode.
+% \begin{macrocode}
+\let\@@author=\author
+\renewcommand{\author}[1]{\@@author{\if@rl\beginR #1\endR\else #1\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\MakeUppercase}
+% \begin{macro}{\MakeLowercase}
+% There are no uppercase and lowercase letters in most
+% Right-to-Left languages, therefore we should redefine
+% \cs{MakeUppercase} and \cs{MakeLowercase} \LaTeXe\ commands.
+% \begin{macrocode}
+\let\@@MakeUppercase=\MakeUppercase
+\def\MakeUppercase#1{\if@rl#1\else\@@MakeUppercase{#1}\fi}
+\let\@@MakeLowercase=\MakeLowercase
+\def\MakeLowercase#1{\if@rl#1\else\@@MakeLowercase{#1}\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\underline}
+% We should explicitly use \cs{L} and \cs{R} commands in
+% \cs{underline}d text.
+% \begin{macrocode}
+\let\@@@underline=\underline
+\def\underline#1{\@@@underline{\if@rl\R{#1}\else #1\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \cs{undertext} was added for \LaTeX 2.09 compatibility mode.
+% \begin{macrocode}
+\if@compatibility
+ \let\undertext=\underline
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\@xnthm}
+% \begin{macro}{\@opargbegintheorem}
+% The following has been inserted to correct the appearance of the
+% number in \cs{newtheorem} to reorder theorem number components. A
+% similar correction in the definition of \cs{@opargbegintheorem}
+% was added too.
+% \begin{macrocode}
+\def\@xnthm#1#2[#3]{%
+ \expandafter\@ifdefinable\csname #1\endcsname
+ {\@definecounter{#1}\@addtoreset{#1}{#3}%
+ \expandafter\xdef\csname the#1\endcsname{\noexpand\@number
+ {\expandafter\noexpand\csname the#3\endcsname \@thmcountersep
+ \@thmcounter{#1}}}%
+ \global\@namedef{#1}{\@thm{#1}{#2}}%
+ \global\@namedef{end#1}{\@endtheorem}}}
+%
+\def\@opargbegintheorem#1#2#3{%
+ \trivlist
+ \item[\hskip \labelsep{\bfseries #1\ #2\
+ \@brackets({#3})}]\itshape}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@chapter}
+% \begin{macro}{\@schapter}
+% The following was added for pretty printing of the chapter
+% numbers, for supporting Right-to-Left tables (\texttt{cot},
+% \texttt{fol}, and \texttt{tol}), to save \cs{headlanguage}
+% for use in running headers, and to start two-column mode
+% depending on chapter's main language.
+% \begin{macrocode}
+\@ifclassloaded{article}{}{%
+ % For pretty priniting
+ \def\@@chapapp{Chapter}
+ \def\@@thechapter{\@@arabic\c@chapter}
+ \def\@chapter[#1]#2{%
+ \let\headlanguage=\languagename%
+ %\set@outputdblcol%
+ \ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{chapter}%
+ \typeout{\@@chapapp\space\@@thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter}#1}
+ \addcontentsline{cot}{chapter}%
+ {\protect\numberline{\thechapter}#1}
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \addcontentsline{cot}{chapter}{#1}%
+ \fi
+ \chaptermark{#1}
+ \addtocontents{lof}{\protect\addvspace{10\p@}}%
+ \addtocontents{fol}{\protect\addvspace{10\p@}}%
+ \addtocontents{lot}{\protect\addvspace{10\p@}}%
+ \addtocontents{tol}{\protect\addvspace{10\p@}}%
+ \if@twocolumn
+ \@topnewpage[\@makechapterhead{#2}]%
+ \else
+ \@makechapterhead{#2}%
+ \@afterheading
+ \fi}
+ %
+ \def\@schapter#1{%
+ \let\headlanguage=\languagename%
+ %\set@outputdblcol%
+ \if@twocolumn
+ \@topnewpage[\@makeschapterhead{#1}]%
+ \else
+ \@makeschapterhead{#1}%
+ \@afterheading
+ \fi}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\appendix}
+% Changed mainly for pretty printing of appendix numbers, and to
+% start two-column mode with the right language (if needed).
+% \begin{macrocode}
+\@ifclassloaded{letter}{}{% other
+\@ifclassloaded{slides}{}{% other
+ \@ifclassloaded{article}{% article
+ \renewcommand\appendix{\par
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \renewcommand\thesection{\@Alph\c@section}}
+ }{% report and book
+ \renewcommand\appendix{\par
+ %\set@outputdblcol%
+ \setcounter{chapter}{0}%
+ \setcounter{section}{0}%
+ \renewcommand\@chapapp{\appendixname}%
+ % For pretty priniting
+ \def\@@chapapp{Appendix}%
+ \def\@@thechapter{\@@Alph\c@chapter}
+ \renewcommand\thechapter{\@Alph\c@chapter}}}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Bibliography and citations}
+%
+% \begin{macro}{\@cite}
+% \begin{macro}{\@biblabel}
+% \begin{macro}{\@lbibitem}
+% Citations are produced by the macro
+% |\@cite{|\emph{LABEL}|}{|\emph{NOTE}|}|. Both the citation label
+% and the note is typeset in the current direction. We have to use
+% \cs{@brackets} macro in \cs{@cite} and \cs{@biblabel} macros. In
+% addition, when using \emph{alpha} or similar bibliography style,
+% the \cs{@lbibitem} is used and have to be update to support bot
+% Right-to-Left and Left-to-Right citations.
+%
+% \begin{macrocode}
+\def\@cite#1#2{\@brackets[{#1\if@tempswa , #2\fi}]}
+\def\@biblabel#1{\@brackets[{#1}]}
+\def\@lbibitem[#1]#2{\item[\@biblabel{#1}\hfill]\if@filesw
+ {\let\protect\noexpand
+ \immediate
+ \if@rl\write\@auxout{\string\bibcite{#2}{\R{#1}}}%
+ \else\write\@auxout{\string\bibcite{#2}{\L{#1}}}\fi%
+ }\fi\ignorespaces}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{thebibliography}
+% Use \cs{rightmargin} instead of \cs{leftmargin} when in RL mode.
+% \begin{macrocode}
+\@ifclassloaded{letter}{}{% other
+\@ifclassloaded{slides}{}{% other
+\@ifclassloaded{article}{%
+ \renewenvironment{thebibliography}[1]
+ {\section*{\refname\@mkboth%
+ {\MakeUppercase\refname}%
+ {\MakeUppercase\refname}}%
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \if@rl\leftmargin\else\rightmargin\fi\labelwidth
+ \advance\if@rl\leftmargin\else\rightmargin\fi\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy
+ \clubpenalty4000
+ \@clubpenalty \clubpenalty
+ \widowpenalty4000%
+ \sfcode`\.\@m}
+ {\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}}%
+{\renewenvironment{thebibliography}[1]{%
+ \chapter*{\bibname\@mkboth%
+ {\MakeUppercase\bibname}%
+ {\MakeUppercase\bibname}}%
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \if@rl\leftmargin\else\rightmargin\fi\labelwidth
+ \advance\if@rl\leftmargin\else\rightmargin\fi\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy
+ \clubpenalty4000
+ \@clubpenalty \clubpenalty
+ \widowpenalty4000%
+ \sfcode`\.\@m}
+ {\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}}}}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\@verbatim}
+% All kinds of verbs (\cs{verb},\cs{verb*},\texttt{verbatim} and
+% \texttt{verbatim*}) now can be used in Right-to-Left mode. Errors
+% in latin mode solved too.
+% \begin{macrocode}
+\def\@verbatim{%
+ \let\do\@makeother \dospecials%
+ \obeylines \verbatim@font \@noligs}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@makecaption}
+% Captions are set always centered. This allows us to use bilingual
+% captions, for example: |\caption{\R{RLtext} \\ \L{LRtext}}|,
+% which will be formatted as:
+% \begin{center}
+% Right to left caption here (RLtext) \\
+% Left to right caption here (LRtext)
+% \end{center}
+% See also \cs{bcaption} command below.
+% \begin{macrocode}
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip%
+ \begin{center}%
+ #1: #2%
+ \end{center} \par%
+ \vskip\belowcaptionskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Additional bidirectional commands}
+%
+% \begin{itemize}
+% \item Section headings are typeset with the default global
+% direction.
+% \item Text in section headings in the reverse language \emph{do
+% not} have to be protected for the reflection command, as in:
+% |\protect\L{|\emph{Latin Text}|}|, because \cs{L} and \cs{R} are
+% robust now.
+% \item Table of contents, list of figures and list of tables
+% should be typeset with the \cs{tableofcontents},
+% \cs{listoffigures} and \cs{listoftables} commands respectively.
+% \item The above tables will be typeset in the main direction (and
+% language) in effect where the above commands are placed.
+% \item Only 2 tables of each kind are supported: one for
+% Right-to-Left and another for Left-to-Right directions.
+% \end{itemize}
+%
+% How to include line to both tables? One has to use bidirectional
+% sectioning commands as following:
+% \begin{enumerate}
+% \item Use the |\b|\emph{xxx} version of the sectioning commands
+% in the text instead of the |\|\emph{xxx} version (\emph{xxx} is
+% one of: \texttt{part}, \texttt{chapter}, \texttt{section},
+% \texttt{subsection}, \texttt{subsubsection}, \texttt{caption}).
+% \item Syntax of the |\b|\emph{xxx} command is
+% |\b|\emph{xxx}|{|\emph{RL text}|}{|\emph{LR text}|}|.
+% Both arguments are typeset in proper direction by default (no
+% need to change direction for the text inside).
+% \item The section header inside the document will be typeset in
+% the global direction in effect at the time. i.e. The |{|\emph{RL
+% text}|}| will be typeset if Right-to-Left mode is in effect and
+% |{|\emph{LR text}|}| otherwise.
+% \end{enumerate}
+%
+% \begin{macro}{\bpart}
+% \begin{macrocode}
+\newcommand{\bpart}[2]{\part{\protect\if@rl%
+ #1 \protect\else #2 \protect\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bchapter}
+% \begin{macrocode}
+\newcommand{\bchapter}[2]{\chapter{\protect\if@rl%
+ #1 \protect\else #2 \protect\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsection}
+% \begin{macrocode}
+\newcommand{\bsection}[2]{\section{\protect\if@rl%
+ #1 \protect\else #2 \protect\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsubsection}
+% \begin{macrocode}
+\newcommand{\bsubsection}[2]{\subsection{\protect\if@rl%
+ #1 \protect\else #2 \protect\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsubsubsection}
+% \begin{macrocode}
+\newcommand{\bsubsubsection}[2]{\subsubsection{\protect\if@rl%
+ #1 \protect\else #2 \protect\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bcaption}
+% \begin{macrocode}
+\newcommand{\bcaption}[2]{%
+ \caption[\protect\if@rl \R{#1}\protect\else \L{#2}\protect\fi]{%
+ \if@rl\R{#1}\protect\\ \L{#2}
+ \else\L{#2}\protect\\ \R{#1}\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% The following definition is a modified version of \cs{bchapter}, meant
+% as a bilingual twin for \cs{chapter*} and \cs{section*}
+% (added by Irina Abramovici).
+%
+% \begin{macro}{\bchapternn}
+% \begin{macrocode}
+\newcommand{\bchapternn}[2]{\chapter*{\protect\if@rl%
+ #1 \protect\else #2 \protect\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bsectionnn}
+% \begin{macrocode}
+\newcommand{\bsectionnn}[2]{\section*{\protect\if@rl%
+ #1 \protect\else #2 \protect\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% Finally, at end of \babel\ package, the \cs{headlanguage} and
+% two-column mode will be initialized according to the current
+% language.
+% \begin{macrocode}
+\AtEndOfPackage{\rlAtEndOfPackage}
+%
+\def\rlAtEndOfPackage{%
+ \global\let\headlanguage=\languagename%\set@outputdblcol%
+}
+%</rightleft>
+% \end{macrocode}
+%
+% \subsection{Hebrew calendar}
+%
+% The original version of the package \pkg{hebcal.sty}\footnote{The
+% following description of \pkg{hebcal} package is based on the
+% comments included with original source by the author, Michail
+% Rozman.} for \TeX\ and \LaTeX2.09, entitled ``\TeX{} \& \LaTeX{}
+% macros for computing Hebrew date from Gregorian one'' was created
+% by Michail Rozman, |misha@iop.tartu.ew.su|\footnote{Please direct
+% any comments, bug reports, questions, etc. about the package to
+% this address.}
+%
+% \begin{tabular}{@{}lr@{}c@{}ll}
+% Released: &Tammuz 12, 5751&--&June 24, 1991 &\\
+% Corrected:&Shebat 10, 5752&--&January 15, 1992&by Rama Porrat\\
+% Corrected:&Adar II 5, 5752&--&March 10, 1992 &by Misha\\
+% Corrected:&Tebeth, 5756 &--&January 1996 &Dan Haran\\
+% &&&&(haran@math.tau.ac.il)
+% \end{tabular}
+%
+% The package was adjusted for \babel{} and \LaTeXe{} by Boris
+% Lavva.
+%
+% Changes to the printing routine (only) by Ron Artstein, June 1,
+% 2003.
+%
+% This package should be included \emph{after} the \pkg{babel} with
+% \pkg{hebrew} option, as following:
+% \begin{quote}
+% |\documentclass[|\ldots|]{|\ldots|}|\\
+% |\usepackage[hebrew,|\ldots|,|\emph{other languages}|,|
+% \ldots|]{babel}|\\
+% |\usepackage{hebcal}|
+% \end{quote}
+%
+% Two main user-level commands are provided by this package:
+%
+% \DescribeMacro{\Hebrewtoday}
+% Computes today's Hebrew date and prints it. If we are presently
+% in Hebrew mode, the date will be printed in Hebrew, otherwise ---
+% in English (like Shebat 10, 5752).
+%
+% \DescribeMacro{\Hebrewdate}
+% Computes the Hebrew date from the given Gregorian date and
+% prints it. If we are presently in Hebrew mode, the date will be
+% printed in Hebrew, otherwise --- in English (like Shebat 10,
+% 5752). An example of usage is shown below:
+% \begin{quote}
+% |\newcount\hd \newcount\hm \newcount\hy|\\
+% |\hd=10 \hm=3 \hy=1992|\\
+% |\Hebrewdate{\hd}{\hm}{\hy}|
+% \end{quote}
+%
+% \DescribeMacro{full}
+% The package option |full| sets the flag |\@full@hebrew@year|,
+% which causes years from the current millenium to be printed with
+% the thousands digit (he-tav-shin-samekh-gimel). Without this
+% option, thousands are not printed for the current millenium.
+% NOTE: should this be a command option rather than a package
+% option? --RA.
+%
+% \subsubsection{Introduction}
+%
+% The Hebrew calendar is inherently complicated: it is lunisolar --
+% each year starts close to the autumn equinox, but each month must
+% strictly start at a new moon. Thus Hebrew calendar must be
+% harmonized simultaneously with both lunar and solar events. In
+% addition, for reasons of the religious practice, the year cannot
+% start on Sunday, Wednesday or Friday.
+%
+% For the full description of Hebrew calendar and for the list of
+% references see:
+% \begin{quote}
+% Nachum Dershowitz and Edward M. Reingold,
+% \emph{``Calendarical Calculations''}, Software--Pract.Exper.,
+% vol. 20 (9), pp.899--928 (September 1990).
+% \end{quote}
+% |C| translation of |LISP| programs from the above article
+% available from Mr. Wayne Geiser, |geiser%pictel@uunet.uu.net|.
+%
+% The 4\textsuperscript{th} distribution (July 1989) of hdate/hcal
+% (Hebrew calendar programs similar to UNIX date/cal) by Mr. Amos
+% Shapir, |amos@shum.huji.ac.il|, contains short and very clear
+% description of algorithms.
+%
+% \subsubsection{Registers, Commands, Formatting Macros}
+%
+% The command |\Hebrewtoday| produces today's date for Hebrew
+% calendar. It is similar to the standard \LaTeXe{} command
+% |\today|. In addition three numerical registers |\Hebrewday|,
+% |\Hebrewmonth| and |\Hebrewyear| are set.
+% For setting this registers without producing of date string
+% command |\Hebrewsetreg| can be used.
+%
+% The command
+% |\Hebrewdate{|\emph{Gday}|}{|\emph{Gmonth}|}{|\emph{Gyear}|}|
+% produces Hebrew calendar date corresponding to Gregorian date
+% |Gday.Gmonth.Gyear|. Three numerical registers |\Hebrewday|,
+% |\Hebrewmonth| and |\Hebrewyear| are set.
+%
+% For converting arbitrary Gregorian date |Gday.Gmonth.Gyear|
+% to Hebrew date |Hday.Hmonth.Hyear| without producing date string
+% the command:
+% \begin{center}
+% |\HebrewFromGregorian{|\emph{Gday}|}{|\emph{Gmonth}|}{|%
+% \emph{Gyear}|}{|\emph{Hday}|}{|\emph{Hmonth}|}{|\emph{Hyear}|}|
+% \end{center}
+% can be used.
+%
+% \begin{macrocode}
+%<*calendar>
+\newif\if@full@hebrew@year
+\@full@hebrew@yearfalse
+\DeclareOption{full}{\@full@hebrew@yeartrue}
+\ProcessOptions
+\newcount\Hebrewday \newcount\Hebrewmonth \newcount\Hebrewyear
+% \end{macrocode}
+%
+% \begin{macro}{\Hebrewdate}
+% Hebrew calendar date corresponding to Gregorian date
+% |Gday.Gmonth.Gyear|. If Hebrew (right-to-left) fonts \& macros
+% are not loaded, we have to use English format.
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hebrewtoday}
+% Today's date in Hebrew calendar.
+% \begin{macrocode}
+\def\Hebrewtoday{\Hebrewdate{\day}{\month}{\year}}
+\let\hebrewtoday=\Hebrewtoday
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Hebrewsetreg}
+% Set registers: today's date in hebrew calendar.
+% \begin{macrocode}
+\def\Hebrewsetreg{%
+ \HebrewFromGregorian{\day}{\month}{\year}
+ {\Hebrewday}{\Hebrewmonth}{\Hebrewyear}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\FormatDate}
+% Prints a Hebrew calendar date |Hebrewday.Hebrewmonth.Hebrewyear|.
+% \begin{macrocode}
+\def\FormatDate#1#2#3{%
+ \if@rl%
+ \FormatForHebrew{#1}{#2}{#3}%
+ \else%
+ \FormatForEnglish{#1}{#2}{#3}
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% To prepare another language version of Hebrew calendar commands,
+% one should change or add commands here.
+%
+% We start with Hebrew language macros.
+% \begin{macro}{\HebrewYearName}
+% Prints Hebrew year as a Hebrew number. Disambiguates strings by
+% adding lamed-pe-gimel to years of the first Jewish millenium and
+% to years divisible by 1000. Suppresses the thousands digit in the
+% current millenium unless the package option |full| is selected.
+% NOTE: should this be provided as a command option rather than a
+% package option? --RA.
+% \begin{macrocode}
+\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}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HebrewMonthName}
+% The macro |\HebrewMonthName{|\emph{month}|}{|\emph{year}|}|
+% returns the name of month in the `year'.
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HebrewDayName}
+% Name of day in Hebrew letters (gimatria).
+% \begin{macrocode}
+\def\HebrewDayName#1{\Hebrewnumeral{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\FormatForHebrew}
+% The macro |\FormatForHebrew{|\emph{hday}|}{|\emph{hmonth}
+% |}{|\emph{hyear}|}| returns the formatted Hebrew date in Hebrew
+% language.
+% \begin{macrocode}
+\def\FormatForHebrew#1#2#3{%
+ \HebrewDayName{#1}~\hebbet\HebrewMonthName{#2}{#3},~%
+ \HebrewYearName{#3}}
+% \end{macrocode}
+% \end{macro}
+%
+% We continue with two English language macros for Hebrew calendar.
+% \begin{macro}{\HebrewMonthNameInEnglish}
+% The macro |\HebrewMonthNameInEnglish{|\emph{month}|}{|%
+% \emph{year}|}| is similar to |\Hebrew|\-|Month|\-|Name| described
+% above. It returns the name of month in the Hebrew `year' in
+% English.
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\FormatForEnglish}
+% The macro |\FormatForEnglish{|\emph{hday}|}{|\emph{hmonth}
+% |}{|\emph{hyear}|}| is similar to |\Format|\-|For|\-|Hebrew|
+% macro described above and returns the formatted Hebrew date in
+% English.
+% \begin{macrocode}
+\def\FormatForEnglish#1#2#3{%
+ \HebrewMonthNameInEnglish{#2}{#3} \number#1,\ \number#3}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Auxiliary Macros}
+%
+% \begin{macrocode}
+\newcount\@common
+% \end{macrocode}
+% \begin{macro}{\Remainder}
+% |\Remainder{|\emph{a}|}{|\emph{b}|}{|\emph{c}|}| calculates
+% $c = a\%b == a-b\times\frac{a}{b}$
+% \begin{macrocode}
+\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)
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+\newif\if@Divisible
+% \end{macrocode}
+% \begin{macro}{\CheckIfDivisible}
+% |\CheckIfDivisible{|\emph{a}|}{|\emph{b}|}| sets
+% |\@Divisibletrue| if $a\%b == 0$
+% \begin{macrocode}
+\def\CheckIfDivisible#1#2{%
+ {%
+ \countdef\tmp = 0% \tmp == \count0 - temporary variable
+ \Remainder{#1}{#2}{\tmp}%
+ \ifnum \tmp = 0%
+ \global\@Divisibletrue%
+ \else%
+ \global\@Divisiblefalse%
+ \fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ifundefined}
+% From the \TeX book, ex. 7.7:
+% \begin{quote}
+% |\ifundefined{|\emph{command}|}<true text>\else<false text>\fi|
+% \end{quote}
+% \begin{macrocode}
+\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Gregorian Part}
+%
+% \begin{macrocode}
+\newif\if@GregorianLeap
+% \end{macrocode}
+% \begin{macro}{\IfGregorianLeap}
+% Conditional which is true if Gregorian `year' is a leap year:
+% $((year\%4==0)\wedge(year\%100\neq 0))\vee(year\%400==0)$
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\GregorianDaysInPriorMonths}
+% The macro |\GregorianDaysInPriorMonths{|\emph{month}|}{|^^A
+% \emph{year}|}{|\emph{days}|}| calculates the number of days in
+% months prior to `month' in the `year'.
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\GregorianDaysInPriorYears}
+% The macro |\GregorianDaysInPriorYears{|\emph{year}|}{|^^A
+% \emph{days}|}| calculates the number of days in years prior to
+% the `year'.
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AbsoluteFromGregorian}
+% The macro |\AbsoluteFromGregorian{|\emph{day}|}{|\emph{month}^^A
+% |}{|\emph{year}|}{|\emph{absdate}|}| calculates the absolute date
+% (days since $01.01.0001$) from Gregorian date |day.month.year|.
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Hebrew Part}
+%
+% \begin{macrocode}
+\newif\if@HebrewLeap
+% \end{macrocode}
+% \begin{macro}{\CheckLeapHebrewYear}
+% Set |\@HebrewLeaptrue| if Hebrew `year' is a leap year, i.e.\ if
+% $(1+7\times year)\%19 < 7$ then \emph{true} else \emph{false}
+% \begin{macrocode}
+\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}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HebrewElapsedMonths}
+% The macro |\HebrewElapsedMonths{|\emph{year}|}{|\emph{months}|}|
+% determines the number of months elapsed from the Sunday prior to
+% the start of the Hebrew calendar to the mean conjunction of
+% Tishri of Hebrew `year'.
+% \begin{macrocode}
+\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 -
+% % number of leap months this cycle
+ \advance #2 by \tmpc% % add leap months
+%
+ \global\@common = #2}%
+ #2 = \@common}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HebrewElapsedDays}
+% The macro |\HebrewElapsedDays{|\emph{year}|}{|\emph{days}|}|
+% determines the number of days elapsed from the Sunday prior to
+% the start of the Hebrew calendar to the mean conjunction of
+% Tishri of Hebrew `year'.
+% \begin{macrocode}
+\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 +
+% % PartsElapsed/25920
+ \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}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\DaysInHebrewYear}
+% The macro |\DaysInHebrewYear{|\emph{year}|}{|\emph{days}|}|
+% calculates the number of days in Hebrew `year'.
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HebrewDaysInPriorMonths}
+% The macro |\HebrewDaysInPriorMonths{|\emph{month}|}{|^^A
+% \emph{year}|}{|\emph{days}|}| calculates the nu\-mber of days in
+% months prior to `month' in the `year'.
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\AbsoluteFromHebrew}
+% The macro |\AbsoluteFromHebrew{|\emph{day}|}{|\emph{month}^^A
+% |}{|\emph{year}|}{|\emph{absdate}|}| calculates the absolute date
+% of Hebrew date |day.month.year|.
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\HebrewFromGregorian}
+% The macro |\HebrewFromGregorian{|\emph{Gday}|}{|\emph{Gmonth}^^A
+% |}{|\emph{Gyear}|}{|\emph{Hday}|}{|\emph{Hmonth}|}|\-|{|^^A
+% \emph{Hyear}|}| evaluates Hebrew date |Hday|, |Hmonth|, |Hyear|
+% from Gregorian date |Gday|, |Gmonth|, |Gyear|.
+% \begin{macrocode}
+\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}}
+%</calendar>
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+%%
+%% \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
diff --git a/macros/latex/contrib/babel-contrib/hebrew/hebrew.fdd b/macros/latex/contrib/babel-contrib/hebrew/hebrew.fdd
new file mode 100644
index 0000000000..f61d06f430
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/hebrew/hebrew.fdd
@@ -0,0 +1,1297 @@
+% \iffalse meta-comment
+%
+% Copyright 1989-2005 Johannes L. Braams and any individual authors
+% listed elsewhere in this file. All rights reserved.
+%
+% This file is part 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.
+%
+% The list of all files belonging to the Babel system 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.
+% \fi
+% \CheckSum{610}
+%
+% \iffalse meta-comment
+%% File `hebrew.fdd' for installing the Hebrew encodings and fonts.
+%% Copyright (C) 1997 -- 2005 Boris Lavva.
+%
+%% Babel package for LaTeX version 2e
+%% Copyright (C) 1989 -- 2005 by Johannes Braams,
+%% TeXniek
+%% All rights reserved.
+% \fi
+% \iffalse
+%<LHEenc>\ProvidesFile{lheenc.def}
+%<LHEcmr>\ProvidesFile{lhecmr.fd}
+%<LHEcmss>\ProvidesFile{lhecmss.fd}
+%<LHEcmtt>\ProvidesFile{lhecmtt.fd}
+%<LHEclas>\ProvidesFile{lheclas.fd}
+%<LHEshold>\ProvidesFile{lheshold.fd}
+%<LHEshscr>\ProvidesFile{lheshscr.fd}
+%<LHEshstk>\ProvidesFile{lheshstk.fd}
+%<LHEfr>\ProvidesFile{lhefr.fd}
+%<LHEcrml>\ProvidesFile{lhecrml.fd}
+%<LHEredis>\ProvidesFile{lheredis.fd}
+%<HE8enc>\ProvidesFile{HE8enc.def}
+%<HE8cmr>\ProvidesFile{HE8cmr.fd}
+%<HE8cmss>\ProvidesFile{HE8cmss.fd}
+%<HE8cmtt>\ProvidesFile{HE8cmtt.fd}
+% The recoded Omega font (only Hebrew glyphs. Lacks other glyphs)
+%<HE8OmegaHebrew>\ProvidesFile{HE8OmegaHebrew.fd}
+% The culmus fonts:
+%<HE8aharoni>\ProvidesFile{HE8aharoni.fd}
+%<HE8david>\ProvidesFile{HE8david.fd}
+%<HE8drugulin>\ProvidesFile{HE8drugulin.fd}
+%<HE8ellinia>\ProvidesFile{HE8ellinia.fd}
+%<HE8frankruehl>\ProvidesFile{HE8frankruehl.fd}
+%<HE8yad>\ProvidesFile{HE8yad.fd}
+%<HE8miriam>\ProvidesFile{HE8miriam.fd}
+%<HE8nachlieli>\ProvidesFile{HE8nachlieli.fd}
+% The IBM Type1 fonts (not freely distributable
+%<HE8CourierShalom>\ProvidesFile{HE8CourierShalom.fd}
+%<HE8HelveticaNarkissTam>\ProvidesFile{HE8HelveticaNarkissTam.fd}
+%<HE8TimesNarkissim>\ProvidesFile{HE8TimesNarkissim.fd}
+% Placeholders for windows fonts:
+%<HE8mfdavid>\ProvidesFile{HE8mfdavid.fd}
+%<HE8mffrank>\ProvidesFile{HE8mffrank.fd}
+%<HE8mffrankthick>\ProvidesFile{HE8mffrankthick.fd}
+%<HE8mffrankthin>\ProvidesFile{HE8mffrankthin.fd}
+%<HE8mfmiriam>\ProvidesFile{HE8mfmiriam.fd}
+%<HE8mfmiriamwide>\ProvidesFile{HE8mfmiriamwide.fd}
+%<HE8mfnarkistam>\ProvidesFile{HE8mfnarkistam.fd}
+%<hebfont>\ProvidesPackage{hebfont}
+%<*driver>
+\ProvidesFile{hebrew.drv}
+%</driver>
+% \fi
+% \ProvidesFile{hebrew.fdd}
+ [2005/05/20 v1.2c %
+% \iffalse
+%<LHEenc> 7-bit Hebrew font encoding
+%<LHEcmr> Hebrew default font
+%<LHEcmss> Hebrew sans-serif font
+%<LHEcmtt> Hebrew typewriter font
+%<LHEclas> Hebrew classic font (by Joel M. Hoffman)
+%<LHEshold> Hebrew shalom old font (by Jonathan Brecher)
+%<LHEshscr> Hebrew shalom script font (by Jonathan Brecher)
+%<LHEshstk> Hebrew shalom stick font (by Jonathan Brecher)
+%<LHEfr> Hebrew frank-ruehl font
+%<LHEcrml> Hebrew carmel font (by Dr. Samy Zafrany)
+%<LHEredis> Hebrew redis font (by Prof. Jacques J. Goldberg)
+%<HE8enc> 8-bit Hebrew font encoding
+%<HE8cmr> Hebrew default font
+%<HE8cmss> Hebrew sans-serif font
+%<HE8cmtt> Hebrew typewriter font
+%<HE8OmegaHebrew> Hebrew font from the Omega project (by ???)
+%<HE8aharoni> Hebrew sans-serif font (Culmus)
+%<HE8david> Hebrew serif font (Culmus)
+%<HE8drugulin> Hebrew old serif font (Culmus)
+%<HE8ellinia> Hebrew sans-serif font (Culmus)
+%<HE8frankruehl> Hebrew serif font (Culmus)
+%<HE8yad> Hebrew handwriting font (Culmus)
+%<HE8miriam> Hebrew monospaced font (Culmus)
+%<HE8nachlieli> Hebrew sans-serif font (Culmus)
+%<HE8CourierShalom> Hebrew Shalom (Courier) font (by IBM)
+%<HE8HelveticaNarkissTam> Hebrew NarkisTam (Helvetica) (by Zvi Narkis)
+%<HE8TimesNarkissim> Hebrew Narkissim (Times) (by Zvi Narkis)
+%<HE8mfdavid> Hebrew David font (by ???)
+%<HE8mffrank> Hebrew Frank-Ruehl font (by ??)
+%<HE8mffrankthick> Hebrew Frank-Ruehl (thick) font (by ??)
+%<HE8mffrankthin> Hebrew Frank-Ruehl (thin) font (by ??)
+%<HE8mfmiriam> Hebrew Miriam font (by ???)
+%<HE8mfmiriamwide> Hebrew Miriam (wide) font (by ???)
+%<HE8mfnarkistam> Hebrew Narkis Tam font (by ???)
+%<hebfont> Hebrew font switching commands
+%<driver> Driver file for hebrew.fdd file
+% \fi
+% Hebrew font encodings support
+ (test version: still liable to change)]
+%
+% \font\manual=logo10
+% \providecommand\MF{{\manual META}\-{\manual FONT}}
+% \providecommand\PS{\textsc{PostScript}}
+% \providecommand\dst{\textsc{docstrip}}
+% \providecommand\LHE{\texttt{LHE}}
+% \providecommand\HEH{\texttt{HE8}}
+% \providecommand\file[1]{\texttt{#1}}
+% \providecommand\pkg[1]{\texttt{#1}}
+% \GetFileInfo{hebrew.fdd}
+%
+% \changes{hebfdd-1.0a}{1998/01/01}{%
+% Initial version. Supports only 7-bit LHE font encoding and all
+% available Hebrew \TeX\ fonts (by Boris Lavva)}
+% \changes{hebfdd-1.0b}{2001/08/16}{%
+% fixed lhecmr.fd to use oldjaf10 for a slanted font
+% available Hebrew \TeX\ fonts (by Tzafrir Cohen)}
+% \changes{hebfdd-1.1a}{2001/08/16}{%
+% Adding 8-bit HE8 fonts. Note that most of them cannot be distributed
+% with heb\LaTeX\ (by Tzafrir Cohen)}
+% \changes{hebfdd-1.2a}{2003/08/19}{%
+% Adding configurations for the Culmus fonts, currently 0.90
+% (by Tzafrir Cohen)}
+% \changes{hebfdd-1.2b}{2004/02/20}{Reinstated the test whether LHE or
+% HE8 is to be used}
+%
+% \changes{hebrew-1.2c}{2005/05/18}{Typo's in the docstrip guards made
+% HE8nachlieli.fd unusable}
+% \section{Hebrew font encodings}\label{sec:hebfdd}
+%
+% % Don't forget to update the docs...
+% \subsection{THIS SECTION IS OUT OF DATE. UPDATE DOCS TO MATCH HE8
+% ENCODING}
+%
+% The file \file{\filename}\footnote{The files described in this
+% section have version number \fileversion{} and were last revised
+% on \filedate.} contains the Local Hebrew Encoding (\LHE)
+% definition, the external font information needed to use the
+% Hebrew 7-bit fonts (old code fonts) and \pkg{hebfont} package
+% that provides Hebrew font switching commands.
+%
+% Using this file as an input, |lheenc.def| encoding definition
+% file, all |.fd| files (font definition files) and font switching
+% package for available Hebrew fonts are generated. We chose to use
+% 7-bit encoding as default font encoding, because:
+% \begin{enumerate}
+% \item There are many 7-bit encoded Hebrew fonts available, more
+% then for any other encoding.
+% \item Available \TeX{} Hebrew fonts do not include latin
+% alphabet, and we can safely map Hebrew glyphs to the
+% \texttt{ASCII} positions (0 -- 127).
+% \end{enumerate}
+%
+% Current definition of the \LHE{} encoding supports only Hebrew
+% letters (|\hebalef|--|\hebtav|), but not Hebrew points, such as
+% |\hebdagesh|, |\hebqamats|, |\hebpatah|, |\hebshindot|, etc. We
+% are working now on such addition.
+%
+% \StopEventually{}
+%
+% \iffalse
+% \subsection{A driver for this document}
+%
+% The next bit of code contains the documentation driver file for
+% \TeX{}, i.e., the file that will produce the documentation you are
+% currently reading. It will be extracted from this file by the \dst{}
+% program.
+%
+% \begin{macrocode}
+%<*driver>
+\documentclass{ltxdoc}
+\title{Hebrew font encodings for use with \LaTeXe}
+\author{Boris Lavva}
+\date{Printed \today}
+\begin{document}
+ \maketitle
+ \DocInput{hebrew.fdd}
+\end{document}
+%</driver>
+% \end{macrocode}
+% \fi
+%
+% \subsection{The {\normalfont\dst{}} modules}
+%
+% The following modules are used in the implementation to direct
+% \dst{} in generating external files:
+% \begin{center}
+% \begin{tabular}{@{}ll}
+% driver & produce a documentation driver file \\[4pt]
+% HE8enc & produce the encoding definition for CodePage 1255
+% (\HEH)\\[4pt]
+% HE8cmr & make Hebrew default font in \HEH\\
+% HE8cmss & make Hebrew sans-serif font in \HEH\\
+% HE8cmtt & make Hebrew typewriter font in \HEH\\
+% HE8OmegaHebrew & Hebrew font from the Omega project (by ???)\\
+% HE8aharoni & Hebrew sans-serif font (Culmus)\\
+% HE8david & Hebrew serif font (Culmus)\\
+% HE8drugulin & Hebrew old serif font (Culmus)\\
+% HE8ellinia & Hebrew isans-serif font (Culmus)\\
+% HE8frankruehl & Hebrew serif font (Culmus)\\
+% HE8KtavYad & Hebrew handwriting font (Culmus)\\
+% HE8MiriamMono & Hebrew monospaced font\\
+% HE8Nachlieli & Hebrew sans-serif font (Culmus)\\
+% HE8CourierShalom & Hebrew Shalom (Courier) font (by IBM)\\
+% HE8HelveticaNarkissTam &Hebrew NarkisTam (Helvetica) (by Zvi Narkis)\\
+% HE8TimesNarkissim & Hebrew Narkissim (Times) (by Zvi Narkis) \\
+% HE8mfdavid & Hebrew David font (by ???)\\
+% HE8mffrank & Hebrew Frank-Ruehl font (by ??)\\
+% HE8mffrankthick & Hebrew Frank-Ruehl (thick) font (by ??)\\
+% HE8mffrankthin & Hebrew Frank-Ruehl (thin) font (by ??)\\
+% HE8mfmiriam & Hebrew Miriam font (by ???)\\
+% HE8mfmiriamwide & Hebrew Miriam (wide) font (by ???)\\
+% HE8mfnarkistam & Hebrew Narkis Tam font (by ???)\\
+% LHEenc & produce the encoding definition for Local Hebrew
+% Encoding (\LHE)\\[4pt]
+% LHEcmr & make Hebrew default font in \LHE\\
+% LHEcmss & make Hebrew sans-serif font in \LHE\\
+% LHEcmtt & make Hebrew typewriter font in \LHE\\
+% LHEclas & make Hebrew classic font (by Joel M.~Hoffman) in \LHE\\
+% LHEshold & make Hebrew shalom old font (by Jonathan Brecher)
+% in \LHE\\
+% LHEshscr & make Hebrew shalom script font (by Jonathan Brecher)
+% in \LHE\\
+% LHEshstk & make Hebrew shalom stick font (by Jonathan Brecher)
+% in \LHE\\
+% LHEfr & make Hebrew frank-ruehl font in \LHE\\
+% LHEcrml & make Hebrew carmel font (by Dr. Samy Zafrany) in \LHE\\
+% LHEredis & make Hebrew redis font (by Prof. Jacques J.~Goldberg)
+% in \LHE\\[4pt]
+% nowarn & option for font definition files, that used\\
+% & to produce ``silent'' font substitutions without
+% giving warnings\\[4pt]
+% hebfont & create Hebrew font switching commands package
+% \end{tabular}
+% \end{center}
+% A typical \dst{} command file would then have entries like:
+%\begin{verbatim}
+%\generateFile{lhecmr.fd}{t}{\from{hebrew.fdd}{LHEcmr,nowarn}}
+%\end{verbatim}
+%
+% \subsection{The \LHE encoding definition file}
+%
+% The Hebrew font encoding \LHE{} is based upon the old-code encoding
+% also known as the Israeli Standard SI-960. Many Hebrew \TeX{}
+% fonts from the Hebrew University of Jerusalem are encoded
+% in this encoding. It only uses the lower 128 positions of the font
+% table. As local encoding its name start with the letter `L'.
+%
+% First we define the Local Hebrew Encoding; specify a default
+% for the font substitution process for the \LHE{} encoding and
+% supply a font to be used when all else fails.
+%
+% \begin{macrocode}
+%<*LHEenc>
+\DeclareFontEncoding{LHE}{}{}
+\DeclareFontSubstitution{LHE}{cmr}{m}{n}
+\DeclareErrorFont{LHE}{cmr}{m}{n}{10}
+%</LHEenc>
+% \end{macrocode}
+% Then we define a few commands in the \LHE{} encoding.
+% \begin{macrocode}
+%<*LHEenc>
+\ProvideTextCommand{\textcopyright}{LHE}{\textcircled{\@latin{c}}}
+\ProvideTextCommand{\textregistered}{LHE}{\textcircled{\scshape%
+ \@latin{r}}}
+\ProvideTextCommand{\texttrademark}{LHE}{\textsuperscript{\@latin{TM}}}
+%</LHEenc>
+% \end{macrocode}
+%
+% Because not everyone can input Hebrew input text directly from
+% the keyboard we need to define control sequences for all the
+% Hebrew glyphs in the fonts. In addition, we want to support
+% many input encodings for Hebrew and to keep the language
+% definition file (|hebrew.ldf|) independent of the
+% encoding. Therefore, we exploit the standard \LaTeXe{} font
+% encoding mechanism to define control sequences for all the Hebrew
+% glyphs in the fonts in encoding-specific way. The language
+% definition file uses only the control sequences and doesn't need
+% to check the current font or input encoding.
+%
+% In the \LHE{} encoding (7-bit encoding) all the Hebrew glyphes
+% reside in the \emph{lower} half of the font. Currently, only the
+% Hebrew letters are supported. They use the same positions as the
+% latin small letters in |ASCII| encoding and the position of |`|.
+%
+% The symbol |`| (glyph 96) is used by Hebrew letter \emph{Alef},
+% so we need to define its |lccode| to allow hyphenation. All other
+% letters retain the same |lccode|s as their latin counterparts.
+% \begin{macrocode}
+%<+LHEenc>\lccode``=``
+% \end{macrocode}
+% Hebrew letters occupy the positions 96--122 in \LHE{} encoding:
+% \begin{macrocode}
+%<*LHEenc>
+\DeclareTextSymbol{\hebalef}{LHE}{96}
+\DeclareTextSymbol{\hebbet}{LHE}{97}
+\DeclareTextSymbol{\hebgimel}{LHE}{98}
+\DeclareTextSymbol{\hebdalet}{LHE}{99}
+\DeclareTextSymbol{\hebhe}{LHE}{100}
+\DeclareTextSymbol{\hebvav}{LHE}{101}
+\DeclareTextSymbol{\hebzayin}{LHE}{102}
+\DeclareTextSymbol{\hebhet}{LHE}{103}
+\DeclareTextSymbol{\hebtet}{LHE}{104}
+\DeclareTextSymbol{\hebyod}{LHE}{105}
+\DeclareTextSymbol{\hebfinalkaf}{LHE}{106}
+\DeclareTextSymbol{\hebkaf}{LHE}{107}
+\DeclareTextSymbol{\heblamed}{LHE}{108}
+\DeclareTextSymbol{\hebfinalmem}{LHE}{109}
+\DeclareTextSymbol{\hebmem}{LHE}{110}
+\DeclareTextSymbol{\hebfinalnun}{LHE}{111}
+\DeclareTextSymbol{\hebnun}{LHE}{112}
+\DeclareTextSymbol{\hebsamekh}{LHE}{113}
+\DeclareTextSymbol{\hebayin}{LHE}{114}
+\DeclareTextSymbol{\hebfinalpe}{LHE}{115}
+\DeclareTextSymbol{\hebpe}{LHE}{116}
+\DeclareTextSymbol{\hebfinaltsadi}{LHE}{117}
+\DeclareTextSymbol{\hebtsadi}{LHE}{118}
+\DeclareTextSymbol{\hebqof}{LHE}{119}
+\DeclareTextSymbol{\hebresh}{LHE}{120}
+\DeclareTextSymbol{\hebshin}{LHE}{121}
+\DeclareTextSymbol{\hebtav}{LHE}{122}
+%</LHEenc>
+% \end{macrocode}
+% Letter |\hebsin| is defined as a synonym of |\hebshin|:
+% \begin{macrocode}
+%<+LHEenc>\let\hebsin=\hebshin
+% \end{macrocode}
+%
+% \subsection{The font definition files (in \LHE{} encoding)}
+%
+% \subsubsection{Hebrew default font}
+%
+% It uses \emph{Jerusalem} font for regular font, \emph{Old
+% Jaffa} font for italic shape and small-caps, \emph{Dead Sea}
+% font for bold face, and \emph{Tel-Aviv} for bold-italic
+% \begin{macrocode}
+%<*LHEcmr>
+\DeclareFontFamily{LHE}{cmr}{\hyphenchar\font45}
+\DeclareFontShape{LHE}{cmr}{m}{n}
+ {<-> jerus10 }{}
+%%%%%%% Italicized shape
+\DeclareFontShape{LHE}{cmr}{m}{it}
+ {<-> oldjaf10 }{}
+\DeclareFontShape{LHE}{cmr}{m}{sl}
+ {<-> oldjaf10 }{}
+\DeclareFontShape{LHE}{cmr}{m}{sc}
+ {<-> oldjaf10 }{}
+%%%%%%% Bold extended series
+\DeclareFontShape{LHE}{cmr}{bx}{n}
+ {<-> deads10 }{}
+\DeclareFontShape{LHE}{cmr}{b}{n}
+ {<-> deads10 }{}
+%%%%%%% Bold extended (Italic) series
+\DeclareFontShape{LHE}{cmr}{bx}{sl}
+ {<-> telav10 }{}
+\DeclareFontShape{LHE}{cmr}{bx}{it}
+ {<-> telav10 }{}
+%</LHEcmr>
+% \end{macrocode}
+%
+% \subsubsection{Hebrew sans-serif font}
+%
+% We use \emph{Tel Aviv} font for the Sans family. \emph{Old
+% Jaffa} font is used for italic shape and \emph{Dead Sea}
+% used for bold face.
+% \begin{macrocode}
+%<*LHEcmss>
+\DeclareFontFamily{LHE}{cmss}{\hyphenchar\font45}
+\DeclareFontShape{LHE}{cmss}{m}{n}
+ {<-> telav10 }{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{cmss}{m}{sc}
+%<-nowarn> {<->sub * cmss/m/n}{}
+%<+nowarn> {<->ssub * cmss/m/n}{}
+%%%%%%% Italicized shape
+\DeclareFontShape{LHE}{cmss}{m}{it}
+ {<-> oldjaf10 }{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{cmss}{m}{sl}
+%<-nowarn> {<->sub * cmss/m/it}{}
+%<+nowarn> {<->ssub * cmss/m/it}{}
+%%%%%%% Bold extended series
+\DeclareFontShape{LHE}{cmss}{bx}{n}
+ {<-> deads10 }{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{cmss}{b}{n}
+%<-nowarn> {<->sub * cmss/bx/n}{}
+%<+nowarn> {<->ssub * cmss/bx/n}{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{cmss}{bx}{sl}
+%<-nowarn> {<->sub * cmss/bx/n}{}
+%<+nowarn> {<->ssub * cmss/bx/n}{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{cmss}{bx}{it}
+%<-nowarn> {<->sub * cmss/bx/n}{}
+%<+nowarn> {<->ssub * cmss/bx/n}{}
+%</LHEcmss>
+% \end{macrocode}
+%
+% \subsubsection{Hebrew typewriter font}
+%
+% We use \emph{Tel Aviv} font as the typewriter font. \emph{Old
+% Jaffa} font is used for italic shape and \emph{Dead Sea}
+% used for bold face.
+% \begin{macrocode}
+%<*LHEcmtt>
+\DeclareFontFamily{LHE}{cmtt}{\hyphenchar \font\m@ne}
+\DeclareFontShape{LHE}{cmtt}{m}{n}
+ {<-> telav10 }{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{cmtt}{m}{sc}
+%<-nowarn> {<->sub * cmtt/m/n}{}
+%<+nowarn> {<->ssub * cmtt/m/n}{}
+%%%%%%% Italicized shape
+\DeclareFontShape{LHE}{cmtt}{m}{it}
+ {<-> oldjaf10 }{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{cmtt}{m}{sl}
+%<-nowarn> {<->sub * cmtt/m/it}{}
+%<+nowarn> {<->ssub * cmtt/m/it}{}
+%%%%%%% Bold extended series
+\DeclareFontShape{LHE}{cmtt}{bx}{n}
+ {<-> deads10 }{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{cmtt}{bx}{it}
+%<-nowarn> {<->sub * cmtt/bx/n}{}
+%<+nowarn> {<->ssub * cmtt/bx/n}{}
+%</LHEcmtt>
+% \end{macrocode}
+%
+% \subsubsection{Hebrew classic font}
+%
+% \emph{Hclassic} and \emph{hcaption} fonts are distributed freely
+% from |CTAN| sites and copyrighted by Joel M.~Hoffman, of 19
+% Hillcrest Lane, Rye, NY 10580 USA, e-mail:
+% |72700.402@compuserve.com|.
+%
+% Hclassic is a modernized Classical Hebrew font (in the same way
+% that Knuth's |cmr| family is a modernized Roman font --- but his
+% fonts are much nicer). Hcaption is a slanted version of hclassic
+% font. Both fonts contain all of the Hebrew consonants,
+% the (rarely used) ligature \emph{alef-lamed} and two versions of
+% the letter \emph{ayin} for use with and without
+% vowels. Hclassic also contains all of the vowels found in Hebrew,
+% a symbol for \emph{meteg}, and dots for use as a \emph{dagesh}
+% and for differentiating \emph{shin} and \emph{sin} letters.
+%
+% Currently, only the Hebrew consonants (\emph{hebalef} -- \emph{hebtav})
+% from these fonts are supported by \LaTeXe{}, however one can use
+% vowels and dots directly with \PlainTeX{} macros. We are working
+% on generic vowels and dots support for \LaTeXe.
+%
+% \begin{macrocode}
+%<*LHEclas>
+\DeclareFontFamily{LHE}{clas}{}
+\DeclareFontShape{LHE}{clas}{m}{n}
+ {<-> s * [0.83345] hclassic }{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{clas}{m}{sc}
+%<-nowarn> {<->sub * clas/m/n}{}
+%<+nowarn> {<->ssub * clas/m/n}{}
+%%%%%%% Slanted shape
+\DeclareFontShape{LHE}{clas}{m}{sl}
+ {<-> s * [0.69389] hcaption }{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{clas}{m}{it}
+%<-nowarn> {<->sub * clas/m/sl}{}
+%<+nowarn> {<->ssub * clas/m/sl}{}
+%</LHEclas>
+% \end{macrocode}
+%
+% \subsubsection{Hebrew shalom fonts}
+%
+% All three shalom fonts (\emph{ShalomScript10},
+% \emph{ShalomStick10} and \emph{ShalomOldStyle10}) have been
+% created by Jonathan Brecher, of 9 Skyview Road, Lexington, MA
+% 02173-1112 USA, e-mail: |brecher@husc.harvard.edu|.
+%
+% All shalom fonts have been written in \PS{} via Fontographer on a
+% Mac. The fonts have been converted to \MF{} by Rama Porrat
+% (e-mail: |rama@cc.huji.ac.il|), using
+% the utility typo, a font editor + converter between font formats
+% (a commercial product). |ShalomScript10.mf| is the \MF{}
+% equivalent of |ShalomScript.ps|, |ShalomStick10.mf| came from
+% |ShalomStick.ps| and |ShalomOldStyle10.mf| originated in
+% |ShalomOldStyle.ps|.
+%
+% The fonts differ in the letters' style. ShalomScript10 contains
+% hand writing Hebrew letters; ShalomStick10 contains sans-serif
+% letters, and ShalomOldStyle10 contains old style letters. All
+% three fonts contain vowels and dots (nikud). While converting to
+% \MF{}, letters and symbols within the fonts have been arranged
+% so as to get a usable font for writing Hebrew documents in \TeX{}
+% or \LaTeX{}, with as well as without vowels.
+%
+% Currently, only the Hebrew consonants (\emph{hebalef} -- \emph{hebtav})
+% from these fonts are supported by \LaTeXe{}, however one can use
+% vowels and dots directly with \PlainTeX{} macros. We are working
+% on generic vowels and dots support for \LaTeXe.
+%
+% \begin{macrocode}
+%<*LHEshold>
+\DeclareFontFamily{LHE}{shold}{}
+\DeclareFontShape{LHE}{shold}{m}{n}
+ {<-> shold10 }{}
+%</LHEshold>
+%<*LHEshscr>
+\DeclareFontFamily{LHE}{shscr}{}
+\DeclareFontShape{LHE}{shscr}{m}{n}
+ {<-> shscr10 }{}
+%</LHEshscr>
+%<*LHEshstk>
+\DeclareFontFamily{LHE}{shstk}{}
+\DeclareFontShape{LHE}{shstk}{m}{n}
+ {<-> shstk10 }{}
+%</LHEshstk>
+% \end{macrocode}
+%
+% \subsubsection{Hebrew frank-ruehl font}
+%
+% \emph{Frank Ruehl} font was written in \MF{} and includes three
+% shapes: regular, bold extaneded and slanted.
+%
+% \begin{macrocode}
+%<*LHEfr>
+\DeclareFontFamily{LHE}{fr}{}
+\DeclareFontShape{LHE}{fr}{m}{n}
+ {<-> fr }{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{fr}{m}{sc}
+%<-nowarn> {<->sub * fr/m/n}{}
+%<+nowarn> {<->ssub * fr/m/n}{}
+%%%%%%% Slanted shape
+\DeclareFontShape{LHE}{fr}{m}{sl}
+ {<-> frsl }{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{fr}{m}{it}
+%<-nowarn> {<->sub * fr/m/sl}{}
+%<+nowarn> {<->ssub * fr/m/sl}{}
+%%%%%%% Bold extended series
+\DeclareFontShape{LHE}{fr}{bx}{n}
+ {<-> frbx }{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{fr}{b}{n}
+%<-nowarn> {<->sub * fr/bx/n}{}
+%<+nowarn> {<->ssub * fr/bx/n}{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{fr}{bx}{sl}
+%<-nowarn> {<->sub * fr/bx/n}{}
+%<+nowarn> {<->ssub * fr/bx/n}{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{fr}{bx}{it}
+%<-nowarn> {<->sub * fr/bx/n}{}
+%<+nowarn> {<->ssub * fr/bx/n}{}
+%</LHEfr>
+% \end{macrocode}
+%
+% \subsubsection{Hebrew carmel font}
+%
+% \emph{Carmel} font includes regular and slanted shapes. It was
+% created by Dr.~Samy Zafrany of the Technion, Haifa, Israel with
+% the intention of making nice fonts for headers and emphasized
+% text.
+%
+% \begin{macrocode}
+%<*LHEcrml>
+\DeclareFontFamily{LHE}{crml}{}
+\DeclareFontShape{LHE}{crml}{m}{n}
+ {<-> crml10 }{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{crml}{m}{sc}
+%<-nowarn> {<->sub * crml/m/n}{}
+%<+nowarn> {<->ssub * crml/m/n}{}
+%%%%%%% Slanted shape
+\DeclareFontShape{LHE}{crml}{m}{sl}
+ {<-> crmlsl10 }{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{crml}{m}{it}
+%<-nowarn> {<->sub * crml/m/sl}{}
+%<+nowarn> {<->ssub * crml/m/sl}{}
+%</LHEcrml>
+% \end{macrocode}
+%
+% \subsubsection{Hebrew redis font}
+%
+% \emph{Redis} font has been created by Prof.~Jacques J.~Goldberg
+% of the Technion. Haifa, Israel. The font is available in regular,
+% slanted and bold extanded shapes. This font contains a full set
+% of Hebrew letters in a ``sans-serif vectorized'' style, and
+% selected punctuation.
+%
+% \begin{macrocode}
+%<*LHEredis>
+\DeclareFontFamily{LHE}{redis}{}
+\DeclareFontShape{LHE}{redis}{m}{n}{%
+ <5> <6> redis7
+ <7> <8> <9> <10> <12> gen * redis
+ <10.95> redis10
+ <14.4> redis12
+ <17.28> <20.74> <24.88> redis17}{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{redis}{m}{sc}
+%<-nowarn> {<->sub * redis/m/n}{}
+%<+nowarn> {<->ssub * redis/m/n}{}
+%%%%%%% Slanted shape
+\DeclareFontShape{LHE}{redis}{m}{sl}{%
+ <5> <6> <7> rediss8
+ <8> <9> <10> <12> gen * rediss
+ <10.95> rediss10
+ <14.4> <17.28> <20.74> <24.88> rediss12}{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{redis}{m}{it}
+%<-nowarn> {<->sub * redis/m/sl}{}
+%<+nowarn> {<->ssub * redis/m/sl}{}
+%%%%%%% Bold extended series
+\DeclareFontShape{LHE}{redis}{bx}{n}{%
+ <5> <6> <7> <8> <9> <10> <10.95> <12>
+ <14.4> <17.28> <20.74> <24.88> redisb10}{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{redis}{b}{n}
+%<-nowarn> {<->sub * redis/bx/n}{}
+%<+nowarn> {<->ssub * redis/bx/n}{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{redis}{bx}{sl}
+%<-nowarn> {<->sub * redis/bx/n}{}
+%<+nowarn> {<->ssub * redis/bx/n}{}
+%%%%%%% Font/shape undefined, therefore substituted
+\DeclareFontShape{LHE}{redis}{bx}{it}
+%<-nowarn> {<->sub * redis/bx/n}{}
+%<+nowarn> {<->ssub * redis/bx/n}{}
+%</LHEredis>
+% \end{macrocode}
+%
+% \subsection{The \HEH encoding definition file}
+%
+% The Hebrew font encoding \HEH{} is based upon an extention by
+% Microsoft to the ISO-8859-8 standard. This is an 8bit encoding. The
+% extentions include hebrew points (``Nikud'').
+%
+% First we define the Codepage 1255; specify a default
+% for the font substitution process for the \HEH{} encoding and
+% supply a font to be used when all else fails.
+%
+% \begin{macrocode}
+%<*HE8enc>
+\DeclareFontEncoding{HE8}{}{}
+\DeclareFontSubstitution{HE8}{cmr}{m}{n}
+\DeclareErrorFont{HE8}{cmr}{m}{n}{10}
+%</HE8enc>
+% \end{macrocode}
+% Then we define a few commands in the \HEH{} encoding.
+% \begin{macrocode}
+%<*HE8enc>
+\ProvideTextCommand{\textcopyright}{HE8}{\textcircled{\@latin{c}}}
+\ProvideTextCommand{\textregistered}{HE8}{\textcircled{\scshape%
+ \@latin{r}}}
+\ProvideTextCommand{\texttrademark}{HE8}{\textsuperscript{\@latin{TM}}}
+%</HE8enc>
+% \end{macrocode}
+%
+% \subsubsection{CHECK HERE FOR HE8 UPDATES}
+%
+% Because not everyone can input Hebrew input text directly from
+% the keyboard we need to define control sequences for all the
+% Hebrew glyphs in the fonts. In addition, we want to support
+% many input encodings for Hebrew and to keep the language
+% definition file (|hebrew.ldf|) independent of the
+% encoding. Therefore, we exploit the standard \LaTeXe{} font
+% encoding mechanism to define control sequences for all the Hebrew
+% glyphs in the fonts in encoding-specific way. The language
+% definition file uses only the control sequences and doesn't need
+% to check the current font or input encoding.
+%
+% % In the \LHE{} encoding (7-bit encoding) all the Hebrew glyphes
+% % reside in the \emph{lower} half of the font. Currently, only the
+% % Hebrew letters are supported. They use the same positions as the
+% % latin small letters in |ASCII| encoding and the position of |`|.
+%
+% Some general symbols:
+% \begin{macrocode}
+%<*HE8enc>
+\ProvideTextCommand{\textcopyright}{HE8}{\textcircled{\@latin{c}}}
+\ProvideTextCommand{\textregistered}{HE8}{\textcircled{\scshape%
+ \@latin{r}}}
+\ProvideTextCommand{\texttrademark}{HE8}{\textsuperscript{\@latin{TM}}}
+%</HE8enc>
+% \end{macrocode}
+%
+% The hebrew points:
+% \begin{macrocode}
+%<*HE8enc>
+\DeclareTextSymbol{\sheva}{HE8}{192}
+\DeclareTextSymbol{\hatafsegol}{HE8}{193}
+\DeclareTextSymbol{\hatafpatah}{HE8}{194}
+\DeclareTextSymbol{\hatafqamats}{HE8}{195}
+\DeclareTextSymbol{\hiriq}{HE8}{196}
+\DeclareTextSymbol{\tsere}{HE8}{197}
+\DeclareTextSymbol{\segol}{HE8}{198}
+\DeclareTextSymbol{\patah}{HE8}{199}
+\DeclareTextSymbol{\qamats}{HE8}{200}
+\DeclareTextSymbol{\holam}{HE8}{201}
+\DeclareTextSymbol{\qubuts}{HE8}{203}
+\DeclareTextSymbol{\dagesh}{HE8}{204}
+\DeclareTextSymbol{\meteg}{HE8}{205}
+\DeclareTextSymbol{\maqaf}{HE8}{206}
+\DeclareTextSymbol{\rafe}{HE8}{207}
+\DeclareTextSymbol{\paseq}{HE8}{208}
+\DeclareTextSymbol{\shindot}{HE8}{209}
+\DeclareTextSymbol{\sindot}{HE8}{210}
+\DeclareTextSymbol{\sofpasuq}{HE8}{211}
+\DeclareTextSymbol{\doublevav}{HE8}{212}
+\DeclareTextSymbol{\vavyod}{HE8}{213}
+\DeclareTextSymbol{\doubleyod}{HE8}{214}
+%</HE8enc>
+% \end{macrocode}
+%
+% Hebrew letters occupy the positions 224--250 in \HEH{} encoding [WHAT
+% ABOUT OTHER MARKS]:
+% \begin{macrocode}
+%<*HE8enc>
+% \lccode``=`` % probably not needed (Tzafrir)
+\DeclareTextSymbol{\hebalef}{HE8}{224}
+\DeclareTextSymbol{\hebbet}{HE8}{225}
+\DeclareTextSymbol{\hebgimel}{HE8}{226}
+\DeclareTextSymbol{\hebdalet}{HE8}{227}
+\DeclareTextSymbol{\hebhe}{HE8}{228}
+\DeclareTextSymbol{\hebvav}{HE8}{229}
+\DeclareTextSymbol{\hebzayin}{HE8}{230}
+\DeclareTextSymbol{\hebhet}{HE8}{231}
+\DeclareTextSymbol{\hebtet}{HE8}{232}
+\DeclareTextSymbol{\hebyod}{HE8}{233}
+\DeclareTextSymbol{\hebfinalkaf}{HE8}{234}
+\DeclareTextSymbol{\hebkaf}{HE8}{235}
+\DeclareTextSymbol{\heblamed}{HE8}{236}
+\DeclareTextSymbol{\hebfinalmem}{HE8}{237}
+\DeclareTextSymbol{\hebmem}{HE8}{238}
+\DeclareTextSymbol{\hebfinalnun}{HE8}{239}
+\DeclareTextSymbol{\hebnun}{HE8}{240}
+\DeclareTextSymbol{\hebsamekh}{HE8}{241}
+\DeclareTextSymbol{\hebayin}{HE8}{242}
+\DeclareTextSymbol{\hebfinalpe}{HE8}{243}
+\DeclareTextSymbol{\hebpe}{HE8}{244}
+\DeclareTextSymbol{\hebfinaltsadi}{HE8}{245}
+\DeclareTextSymbol{\hebtsadi}{HE8}{246}
+\DeclareTextSymbol{\hebqof}{HE8}{247}
+\DeclareTextSymbol{\hebresh}{HE8}{248}
+\DeclareTextSymbol{\hebshin}{HE8}{249}
+\DeclareTextSymbol{\hebtav}{HE8}{250}
+%</HE8enc>
+% \end{macrocode}
+% Letter |\hebsin| is defined as a synonym of |\hebshin|:
+% \begin{macrocode}
+%<+HE8enc>\let\hebsin=\hebshin
+% \end{macrocode}
+%
+% \subsection{The font definition files (in \HEH{} encoding)}
+%
+% \subsubsection{Hebrew default font}
+%
+% It uses \emph{OmegaHebrew} font for regular font, \emph{Old
+% Jaffa} font for italic shape and small-caps, \emph{Dead Sea}
+% font for bold face, and \emph{Tel-Aviv} for bold-italic
+% \begin{macrocode}
+%<*HE8cmr>
+\DeclareFontFamily{HE8}{cmr}{\hyphenchar\font45}
+\DeclareFontShape{HE8}{cmr}{m}{n}
+ {<-> david }{}
+%%%%%%% Italicized shape
+\DeclareFontShape{HE8}{cmr}{m}{it}
+ {<-> davidi }{}
+\DeclareFontShape{HE8}{cmr}{m}{sl}
+ {<-> davidi }{}
+\DeclareFontShape{HE8}{cmr}{m}{sc}
+ {<-> david }{}
+%%%%%%% Bold extended series
+\DeclareFontShape{HE8}{cmr}{bx}{n}
+ {<-> davidb }{}
+\DeclareFontShape{HE8}{cmr}{b}{n}
+ {<-> davidb }{}
+%%%%%%% Bold extended (Italic) series
+\DeclareFontShape{HE8}{cmr}{bx}{sl}
+ {<-> davidbi }{}
+\DeclareFontShape{HE8}{cmr}{bx}{it}
+ {<-> davidbi }{}
+%</HE8cmr>
+% \end{macrocode}
+%
+% \subsubsection{Hebrew sans-serif font}
+%
+% Until we have a real sans-serif font in this distribution, this file
+% will remain a copy of the roman fonts definitons above.
+% \begin{macrocode}
+%<*HE8cmss>
+\DeclareFontFamily{HE8}{cmss}{\hyphenchar\font45}
+\DeclareFontShape{HE8}{cmss}{m}{n}
+ {<-> nachlieli }{}
+%%%%%%% Italicized shape
+\DeclareFontShape{HE8}{cmss}{m}{it}
+ {<-> nachlieli }{}
+\DeclareFontShape{HE8}{cmss}{m}{sl}
+ {<-> nachlieli }{}
+\DeclareFontShape{HE8}{cmss}{m}{sc}
+ {<-> nachlieli }{}
+%%%%%%% Bold extended series
+\DeclareFontShape{HE8}{cmss}{bx}{n}
+ {<-> nachlieli }{}
+\DeclareFontShape{HE8}{cmss}{b}{n}
+ {<-> nachlieli }{}
+%%%%%%% Bold extended (Italic) series
+\DeclareFontShape{HE8}{cmss}{bx}{sl}
+ {<-> nachlieli }{}
+\DeclareFontShape{HE8}{cmss}{bx}{it}
+ {<-> nachlieli }{}
+%</HE8cmss>
+% \end{macrocode}
+%
+% \subsubsection{Hebrew typewriter font}
+%
+% Until we have a real sans-serif font in this distribution, this file
+% will remain a copy of the roman fonts definitons above.
+% \begin{macrocode}
+%<*HE8cmtt>
+\DeclareFontFamily{HE8}{cmtt}{\hyphenchar\font45}
+\DeclareFontShape{HE8}{cmtt}{m}{n}
+ {<-> miriam }{}
+%%%%%%% Italicized shape
+\DeclareFontShape{HE8}{cmtt}{m}{it}
+ {<-> miriam }{}
+\DeclareFontShape{HE8}{cmtt}{m}{sl}
+ {<-> miriam }{}
+\DeclareFontShape{HE8}{cmtt}{m}{sc}
+ {<-> miriam }{}
+%%%%%%% Bold extended series
+\DeclareFontShape{HE8}{cmtt}{bx}{n}
+ {<-> miriam }{}
+\DeclareFontShape{HE8}{cmtt}{b}{n}
+ {<-> miriam }{}
+%%%%%%% Bold extended (Italic) series
+\DeclareFontShape{HE8}{cmtt}{bx}{sl}
+ {<-> miriam }{}
+\DeclareFontShape{HE8}{cmtt}{bx}{it}
+ {<-> miriam }{}
+%</HE8cmtt>
+% \end{macrocode}
+%
+% \subsubsection{8Bit OmegaHebrew font}
+%
+% \emph{OmegaHebrew} is a serif hebrew font created by the omega project
+% [FILL IN CREDITS]
+% [FILL IN GENERAL SHAPE DESCRIPTION]
+% shapes: [FILL IN]
+%
+% \begin{macrocode}
+%<*HE8OmegaHebrew>
+\def\OmegaHebrewscale{0.9}
+\DeclareFontFamily{HE8}{OmegaHebrew}{\hyphenchar\font45}
+\DeclareFontShape{HE8}{OmegaHebrew}{m}{n}{<-> [\OmegaHebrewscale] OmegaHebrew }{}
+%\endinput % is it needed [tzafrir]
+%</HE8OmegaHebrew>
+% \end{macrocode}
+%
+%
+% \subsubsection{8Bit Aharoni font}
+%
+% \emph{Aharoni} is a serif hebrew font created by the omega project
+% [FILL IN CREDITS]
+% [FILL IN GENERAL SHAPE DESCRIPTION]
+% shapes: [FILL IN]
+%
+% \begin{macrocode}
+%<*HE8aharoni>
+\def\Aharoniscale{1.0}
+\DeclareFontFamily{HE8}{aharoni}{\hyphenchar\font45}
+\DeclareFontShape{HE8}{aharoni}{m}{n} {<-> [\Aharoniscale] aharoni}{}
+\DeclareFontShape{HE8}{aharoni}{m}{it} {<-> [\Aharoniscale] aharonii}{}
+\DeclareFontShape{HE8}{aharoni}{m}{sl} {<-> [\Aharoniscale] aharonii}{}
+\DeclareFontShape{HE8}{aharoni}{b}{n} {<-> [\Aharoniscale] aharonib}{}
+\DeclareFontShape{HE8}{aharoni}{bx}{n} {<-> [\Aharoniscale] aharonib}{}
+\DeclareFontShape{HE8}{aharoni}{bx}{it} {<-> [\Aharoniscale] aharonibi}{}
+
+%\endinput % is it needed [tzafrir]
+%</HE8aharoni>
+% \end{macrocode}
+%
+%
+% \subsubsection{8Bit David font}
+%
+% \emph{David} is a serif hebrew font created by the omega project
+% [FILL IN CREDITS]
+% [FILL IN GENERAL SHAPE DESCRIPTION]
+% shapes: [FILL IN]
+%
+% \begin{macrocode}
+%<*HE8david>
+\def\Davidscale{1.0}
+\DeclareFontFamily{HE8}{david}{\hyphenchar\font45}
+
+\DeclareFontShape{HE8}{david}{m}{n} {<-> [\Davidscale] david}{}
+\DeclareFontShape{HE8}{david}{m}{it} {<-> [\Davidscale] davidi}{}
+\DeclareFontShape{HE8}{david}{m}{sl} {<-> [\Davidscale] davidi}{}
+\DeclareFontShape{HE8}{david}{b}{n} {<-> [\Davidscale] davidb}{}
+\DeclareFontShape{HE8}{david}{bx}{n} {<-> [\Davidscale] davidb}{}
+\DeclareFontShape{HE8}{david}{bx}{it} {<-> [\Davidscale] davidbi}{}
+
+
+%\endinput % is it needed [tzafrir]
+%</HE8david>
+% \end{macrocode}
+%
+%
+% \subsubsection{8Bit Drugulin font}
+%
+% \emph{Drugulin} is a serif hebrew font created by the omega project
+% [FILL IN CREDITS]
+% [FILL IN GENERAL SHAPE DESCRIPTION]
+% shapes: [FILL IN]
+%
+% \begin{macrocode}
+%<*HE8drugulin>
+\def\Drugulinscale{1.0}
+\DeclareFontFamily{HE8}{drugulin}{\hyphenchar\font45}
+\DeclareFontShape{HE8}{drugulin}{m}{n} {<-> [\Drugulinscale] drugulinb}{}
+\DeclareFontShape{HE8}{drugulin}{m}{it} {<-> [\Drugulinscale] drugulinbi}{}
+\DeclareFontShape{HE8}{drugulin}{m}{sl} {<-> [\Drugulinscale] drugulinbi}{}
+\DeclareFontShape{HE8}{drugulin}{b}{n} {<-> [\Drugulinscale] drugulinb}{}
+\DeclareFontShape{HE8}{drugulin}{bx}{n} {<-> [\Drugulinscale] drugulinb}{}
+\DeclareFontShape{HE8}{drugulin}{bx}{it} {<-> [\Drugulinscale] drugulinbi}{}
+%\endinput % is it needed [tzafrir]
+%</HE8drugulin>
+% \end{macrocode}
+%
+%
+% \subsubsection{8Bit Ellinia font}
+%
+% \emph{Ellinia} is a sans-serif hebrew font created by the omega project
+% [FILL IN CREDITS]
+% [FILL IN GENERAL SHAPE DESCRIPTION]
+% shapes: [FILL IN]
+%
+% \begin{macrocode}
+%<*HE8ellinia>
+\def\Elliniascale{1.0}
+\DeclareFontFamily{HE8}{ellinia}{\hyphenchar\font45}
+\DeclareFontShape{HE8}{ellinia}{m}{n} {<-> [\Elliniascale] ellinia}{}
+\DeclareFontShape{HE8}{ellinia}{m}{it} {<-> [\Elliniascale] elliniai}{}
+\DeclareFontShape{HE8}{ellinia}{m}{sl} {<-> [\Elliniascale] elliniai}{}
+\DeclareFontShape{HE8}{ellinia}{b}{n} {<-> [\Elliniascale] elliniab}{}
+\DeclareFontShape{HE8}{ellinia}{bx}{n} {<-> [\Elliniascale] elliniab}{}
+\DeclareFontShape{HE8}{ellinia}{bx}{it} {<-> [\Elliniascale] elliniabi}{}
+%\endinput % is it needed [tzafrir]
+%</HE8ellinia>
+% \end{macrocode}
+%
+%
+% \subsubsection{8Bit FrankRuehl font}
+%
+% \emph{FrankRuehl} is a serif hebrew font created by the omega project
+% [FILL IN CREDITS]
+% [FILL IN GENERAL SHAPE DESCRIPTION]
+% shapes: [FILL IN]
+%
+% \begin{macrocode}
+%<*HE8frankruehl>
+\def\FrankRuehlscale{1.0}
+\DeclareFontFamily{HE8}{frank}{\hyphenchar\font45}
+\DeclareFontShape{HE8}{frank}{m}{n} {<-> [\FrankRuehlscale] frank}{}
+\DeclareFontShape{HE8}{frank}{m}{it} {<-> [\FrankRuehlscale] franki}{}
+\DeclareFontShape{HE8}{frank}{m}{sl} {<-> [\FrankRuehlscale] franki}{}
+\DeclareFontShape{HE8}{frank}{b}{n} {<-> [\FrankRuehlscale] frankb}{}
+\DeclareFontShape{HE8}{frank}{bx}{n} {<-> [\FrankRuehlscale] frankb}{}
+\DeclareFontShape{HE8}{frank}{bx}{it} {<-> [\FrankRuehlscale] frankbi}{}
+%\endinput % is it needed [tzafrir]
+%</HE8frankruehl>
+% \end{macrocode}
+%
+%
+% \subsubsection{8Bit KtavYad font}
+%
+% \emph{KtavYad} is a serif hebrew font created by the omega project
+% [FILL IN CREDITS]
+% [FILL IN GENERAL SHAPE DESCRIPTION]
+% shapes: [FILL IN]
+%
+% \begin{macrocode}
+%<*HE8yad>
+\def\KtavYadscale{1.0}
+\DeclareFontFamily{HE8}{yad}{\hyphenchar\font45}
+\DeclareFontShape{HE8}{yad}{m}{n} {<-> [\KtavYadscale] yadi}{}
+\DeclareFontShape{HE8}{yad}{m}{it} {<-> [\KtavYadscale] yadi}{}
+\DeclareFontShape{HE8}{yad}{m}{sl} {<-> [\KtavYadscale] yadi}{}
+\DeclareFontShape{HE8}{yad}{b}{n} {<-> [\KtavYadscale] yadbi}{}
+\DeclareFontShape{HE8}{yad}{bx}{n} {<-> [\KtavYadscale] yadbi}{}
+\DeclareFontShape{HE8}{yad}{bx}{it} {<-> [\KtavYadscale] yadbi}{}
+%\endinput % is it needed [tzafrir]
+%</HE8yad>
+% \end{macrocode}
+%
+% \subsubsection{8Bit MiriamMono font}
+%
+% \emph{MiriamMono} is a serif hebrew font created by the omega project
+% [FILL IN CREDITS]
+% [FILL IN GENERAL SHAPE DESCRIPTION]
+% shapes: [FILL IN]
+%
+% \begin{macrocode}
+%<*HE8miriam>
+\def\MiriamMonoscale{1.0}
+\DeclareFontFamily{HE8}{miriam}{\hyphenchar\font45}
+\DeclareFontShape{HE8}{miriam}{m}{n} {<-> [\MiriamMonoscale] miriam}{}
+\DeclareFontShape{HE8}{miriam}{m}{it} {<-> [\MiriamMonoscale] miriami}{}
+\DeclareFontShape{HE8}{miriam}{m}{sl} {<-> [\MiriamMonoscale] miriami}{}
+\DeclareFontShape{HE8}{miriam}{b}{n} {<-> [\MiriamMonoscale] miriamb}{}
+\DeclareFontShape{HE8}{miriam}{bx}{n} {<-> [\MiriamMonoscale] miriamb}{}
+\DeclareFontShape{HE8}{miriam}{bx}{it} {<-> [\MiriamMonoscale] miriambi}{}
+
+%\endinput % is it needed [tzafrir]
+%</HE8miriam>
+% \end{macrocode}
+%
+%
+% \subsubsection{8Bit Nachlieli font}
+%
+% \emph{Nachlieli} is a serif hebrew font created by the omega project
+% [FILL IN CREDITS]
+% [FILL IN GENERAL SHAPE DESCRIPTION]
+% shapes: [FILL IN]
+%
+% \begin{macrocode}
+%<*HE8nachlieli>
+\def\Nachlieliscale{1.0}
+\DeclareFontFamily{HE8}{nachlieli}{\hyphenchar\font45}
+\DeclareFontShape{HE8}{nachlieli}{m}{n} {<-> [\Nachlieliscale] nachlieli}{}
+\DeclareFontShape{HE8}{nachlieli}{m}{it} {<-> [\Nachlieliscale] nachlielii}{}
+\DeclareFontShape{HE8}{nachlieli}{m}{sl} {<-> [\Nachlieliscale] nachlielii}{}
+\DeclareFontShape{HE8}{nachlieli}{b}{n} {<-> [\Nachlieliscale] nachlielib}{}
+\DeclareFontShape{HE8}{nachlieli}{bx}{n} {<-> [\Nachlieliscale] nachlielib}{}
+\DeclareFontShape{HE8}{nachlieli}{bx}{it} {<-> [\Nachlieliscale] nachlielibi}{}
+%\endinput % is it needed [tzafrir]
+%</HE8nachlieli>
+% \end{macrocode}
+%
+%
+% \subsubsection{Hebrew font switching commands}
+%
+% The \pkg{hebfont} package defines a number of high-level commands
+% (all starting with |\text..| similar to the standard \LaTeXe{}
+% font-change commands, for example |\textbf|) that have one
+% argument and typeset this argument in the requested way. These
+% commands are defined for all available Hebrew fonts defined above
+% and change only font parameters but not direction.
+%
+% For example, to use Hebrew Classic font family, the following
+% sequence of commands should be included in a \LaTeXe{} document:
+% \begin{quote}
+% |\sethebrew|\\
+% |\textclas{Hebrew text printed with Classic fonts}|
+% \end{quote}
+% or to use Hebrew with Classic fonts locally:
+% \begin{quote}
+% |\R{\textclas{Hebrew text printed with Classic fonts}}|
+% \end{quote}
+%
+% \begin{table}[t]
+% \begin{center}
+% \begin{tabular}{lll}
+% \textit{Command} & \textit{Corresponds to} &
+% \textit{Font family} \\[4pt]
+% |\textjm{..}| & |\rmfamily| & Jerusalem font \\
+% |\textds{..}| & |\bfseries| & Dead Sea font \\
+% |\textoj{..}| & |\itshape| & Old Jaffa font \\
+% & |\slshape| & \\
+% & |\emph| & \\
+% |\textta{..}| & |\sffamily| & Tel-Aviv font \\
+% & |\ttfamily| & \\[2pt]
+% |\textcrml{..}| & |\fontfamily{crml}| & Carmel fonts \\[2pt]
+% |\textfr{..}| & |\fontfamily{fr}| & Frank-Ruehl fonts \\[2pt]
+% |\textredis{..}| & |\fontfamily{redis}| & Redis fonts \\[2pt]
+% |\textclas{..}| & |\fontfamily{redis}| & Classic fonts \\[2pt]
+% |\textshold{..}| & |\fontfamily{shold}| & Shalom Old Style font \\
+% |\textshscr{..}| & |\fontfamily{shscr}| & Shalom Script font \\
+% |\textshstk{..}| & |\fontfamily{shstk}| & Shalom Stick font
+% \end{tabular}
+% \end{center}
+% \caption{Hebrew font-change commands with arguments}
+% \label{tab:fntcmds}
+% \begin{quote}
+% The font change commands provided here all start with |\text..|
+% to emphasize that they are for use in normal text and to be
+% easily memorable.
+% \end{quote}
+% \end{table}
+%
+% We declare \LaTeXe{} font commands, e.g.\ |\textjm{|\ldots|}|
+% for all available fonts. Table~\ref{tab:fntcmds} shows the
+% meanings of all these new high-level commands.
+%
+% \begin{macro}{\textjm}
+% Switches to \emph{Jerusalem} font which is default regular Hebrew
+% font (``roman'' family). Commands |\textrm{|\ldots|}| and
+% old-style |{\rm |\ldots|}| will produce the same result.
+% \begin{macrocode}
+%<*hebfont>
+\def\ivritex@tmp{HE8}
+\ifx\ivritex@tmp\HeblatexEncoding %
+ % compatibility with hebfonts:
+ \DeclareTextFontCommand{\textjm}{\rmfamily\selectfont}
+ \DeclareTextFontCommand{\textds}{\bfseries\selectfont}
+ \DeclareTextFontCommand{\textoj}{\itshape\selectfont}
+ \DeclareTextFontCommand{\textta}{\sffamily\selectfont}
+
+ % an attempt to give some replacements to the original hebfonts:
+ %
+ \DeclareTextFontCommand{\textcrml}{\fontfamily{david}\selectfont}
+ \DeclareTextFontCommand{\textfr}{\fontfamily{frank}\selectfont}
+ \DeclareTextFontCommand{\textredis}{\fontfamily{aharoni}\selectfont}
+ \DeclareTextFontCommand{\textclas}{\fontfamily{drugulin}\selectfont}
+ \DeclareTextFontCommand{\textshold}{\fontfamily{frank}\selectfont}
+ \DeclareTextFontCommand{\textshscr}{\fontfamily{yad}\selectfont}
+ \DeclareTextFontCommand{\textshstk}{\fontfamily{aharoni}\selectfont}
+ % note that redis is larger than shstk
+
+
+ \DeclareTextFontCommand{\textaha}{\fontfamily{aharoni}\selectfont}
+ \DeclareTextFontCommand{\textdav}{\fontfamily{david}\selectfont}
+ \DeclareTextFontCommand{\textdru}{\fontfamily{drugulin}\selectfont}
+ \DeclareTextFontCommand{\textel} {\fontfamily{ellinia}\selectfont}
+ % \textfr is already declared above
+ \DeclareTextFontCommand{\textmir}{\fontfamily{miriam}\selectfont}
+ \DeclareTextFontCommand{\textna} {\fontfamily{nachlieli}\selectfont}
+ % is this necessary:
+ \DeclareTextFontCommand{\textyad} {\fontfamily{yad}\selectfont}
+
+\else%
+\DeclareTextFontCommand{\textjm}{\rmfamily\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textds}
+% Switches to \emph{Dead Sea} font which is default bold font in
+% Hebrew. Commands |\textbf{|\ldots|}| and old-style
+% |{\bf |\ldots|}| will produce the same result.
+% \begin{macrocode}
+\DeclareTextFontCommand{\textds}{\bfseries\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textoj}
+% Switches to \emph{Old Jaffa} font which is default italic font in
+% Hebrew. Commands |\textit{|\ldots|}|, |\textsl{|\ldots|}|,
+% |\emph{|\ldots|}| and old-style |{\it |\ldots|}| or
+% |{\em |\ldots|}| will produce the same result.
+% \begin{macrocode}
+\DeclareTextFontCommand{\textoj}{\itshape\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textta}
+% Switches to \emph{Tel-Aviv} font which is default sans-serif font
+% in Hebrew. Commands |\textsf{|\ldots|}|, |\texttt{|\ldots|}| and
+% old-style |{\sf |\ldots|}| or |{\tt |\ldots|}| will produce the
+% same result (because sans-serif is used as typewriter font when
+% in Hebrew mode).
+% \begin{macrocode}
+\DeclareTextFontCommand{\textta}{\sffamily\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textcrml}
+% Switches to \emph{Carmel} font. Regular and slanted variants of
+% carmel font will be used..
+% \begin{macrocode}
+\DeclareTextFontCommand{\textcrml}{\fontfamily{crml}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textfr}
+% Switches to \emph{Frank-Ruehl} font family. Regular, bold and
+% slanted frank ruehl fonts will be used.
+% \begin{macrocode}
+\DeclareTextFontCommand{\textfr}{\fontfamily{fr}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textredis}
+% Switches to \emph{Redis} font family. Regular, bold and slanted
+% redis fonts of various sizes will be used.
+% \begin{macrocode}
+\DeclareTextFontCommand{\textredis}{\fontfamily{redis}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textclas}
+% Switches to \emph{Classic} font family. The normal font will be
+% hclassic and slanted --- hcaption.
+% \begin{macrocode}
+\DeclareTextFontCommand{\textclas}{\fontfamily{clas}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textshold}
+% Switches to \emph{Shalom Old Style} font.
+% \begin{macrocode}
+\DeclareTextFontCommand{\textshold}{\fontfamily{shold}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textshscr}
+% Switches to \emph{Shalom Script} font.
+% \begin{macrocode}
+\DeclareTextFontCommand{\textshscr}{\fontfamily{shscr}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textshstk}
+% Switches to \emph{Shalom Stick} font.
+% \begin{macrocode}
+\DeclareTextFontCommand{\textshstk}{\fontfamily{shstk}\selectfont}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% Finally, for backward compatibility with \LaTeX2.09. four old
+% font commands, e.g.\ |{\jm |\ldots|}| are defined too (see
+% Table~\ref{tab:oldcmds}).
+% \begin{table}[t]
+% \begin{center}
+% \begin{tabular}{lll}
+% \textit{Old font command} & \textit{Font name} &
+% \textit{Comment}\\[4pt]
+% |{\jm ..}| & Jerusalem & default regular (roman) font \\
+% |{\ds ..}| & Dead Sea & default bold font \\
+% |{\oj ..}| & Old Jaffa & default italic and slanted font \\
+% & & used also to emphasize text \\
+% |{\ta ..}| & Tel-Aviv & default sans-serif and typewriter font\\
+% \end{tabular}
+% \end{center}
+% \caption{Hebrew old font-change commands for compatibility mode}
+% \label{tab:oldcmds}
+% \end{table}
+% \begin{macrocode}
+\if@compatibility
+ \DeclareOldFontCommand{\jm}{\normalfont\rmfamily\selectfont}%
+ {\@nomath\jm}
+ \DeclareOldFontCommand{\ds}{\normalfont\bfseries\selectfont}%
+ {\@nomath\ds}
+ \DeclareOldFontCommand{\oj}{\normalfont\itshape\selectfont}%
+ {\@nomath\oj}
+ \DeclareOldFontCommand{\ta}{\normalfont\sffamily\selectfont}%
+ {\@nomath\ta}
+\fi
+%</hebfont>
+% \end{macrocode}
+%
+% \Finale
+%%
+%% \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
diff --git a/macros/latex/contrib/babel-contrib/hebrew/hebrew.ins b/macros/latex/contrib/babel-contrib/hebrew/hebrew.ins
new file mode 100644
index 0000000000..80f35a41ec
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/hebrew/hebrew.ins
@@ -0,0 +1,215 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 1989-2005 Johannes L. Braams and any individual authors
+%% listed elsewhere in this file. All rights reserved.
+%%
+%% This file is part 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.
+%%
+%% The list of all files belonging to the LaTeX base 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.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+%%
+%% Copyright (C) 1997 -- 1998 Boris Lavva.
+%% Copyright (C) 1989 -- 2004 by Johannes Braams,
+%% TeXniek
+%% All rights reserved.
+%%
+%% This file is contributed to the `babel' system.
+%%
+%% You are allowed to distribute this file together with all files
+%% mentioned in manifest.bbl.
+%%
+%% You are not allowed to modify its contents.
+%%
+\def\filedate{2004/02/20}
+\def\batchfile{hebrew.ins}
+\input docstrip
+
+{\ifx\generate\undefined
+\Msg{**********************************************}
+\Msg{*}
+\Msg{* This installation requires docstrip}
+\Msg{* version 2.3c or later.}
+\Msg{*}
+\Msg{* An older version of docstrip has been input}
+\Msg{*}
+\Msg{**********************************************}
+\errhelp{Move or rename old docstrip.tex.}
+\errmessage{Old docstrip in input path}
+\batchmode
+\csname @@end\endcsname
+\fi}
+
+\declarepreamble\mainpreamble
+
+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.
+\endpreamble
+
+\declarepreamble\fdpreamble
+
+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.
+
+In particular, permission is granted to customize the declarations in
+this file to serve the needs of your installation.
+
+However, NO PERMISSION is granted to distribute a modified version
+of this file under its original name.
+
+\endpreamble
+
+\keepsilent
+
+\usedir{tex/generic/babel}
+
+\Msg{*** Generating hebrew font encoding files ***}
+\usepreamble\fdpreamble
+\generate{\file{lheenc.def}{\from{hebrew.fdd}{LHEenc}}
+ \file{lhecmr.fd}{\from{hebrew.fdd}{LHEcmr,nowarn}}
+ \file{lhecmss.fd}{\from{hebrew.fdd}{LHEcmss,nowarn}}
+ \file{lhecmtt.fd}{\from{hebrew.fdd}{LHEcmtt,nowarn}}
+ \file{lheclas.fd}{\from{hebrew.fdd}{LHEclas,nowarn}}
+ \file{he8enc.def}{\from{hebrew.fdd}{HE8enc}}
+ \file{he8cmr.fd}{\from{hebrew.fdd}{HE8cmr,nowarn}}
+ \file{he8cmss.fd}{\from{hebrew.fdd}{HE8cmss,nowarn}}
+ \file{he8cmtt.fd}{\from{hebrew.fdd}{HE8cmtt,nowarn}}
+ \file{he8aharoni.fd}{\from{hebrew.fdd}{HE8aharoni,nowarn}}
+ \file{he8david.fd}{\from{hebrew.fdd}{HE8david,nowarn}}
+ \file{he8drugulin.fd}{\from{hebrew.fdd}{HE8drugulin,nowarn}}
+ \file{he8frankruehl.fd}{\from{hebrew.fdd}{HE8frankruehl,nowarn}}
+ \file{he8yad.fd}{\from{hebrew.fdd}{HE8yad,nowarn}}
+ \file{he8miriam.fd}{\from{hebrew.fdd}{HE8miriam,nowarn}}
+ \file{he8nachlieli.fd}{\from{hebrew.fdd}{HE8nachlieli,nowarn}}
+ \file{he8OmegaHebrew.fd}{\from{hebrew.fdd}{HE8OmegaHebrew,nowarn}}
+ \file{lheshold.fd}{\from{hebrew.fdd}{LHEshold,nowarn}}
+ \file{lheshscr.fd}{\from{hebrew.fdd}{LHEshscr,nowarn}}
+ \file{lheshstk.fd}{\from{hebrew.fdd}{LHEshstk,nowarn}}
+ \file{lhefr.fd}{\from{hebrew.fdd}{LHEfr,nowarn}}
+ \file{lhecrml.fd}{\from{hebrew.fdd}{LHEcrml,nowarn}}
+ \file{lheredis.fd}{\from{hebrew.fdd}{LHEredis,nowarn}}
+ \file{hebfont.sty}{\from{hebrew.fdd}{hebfont}}
+ }
+
+\Msg{*** Generating hebrew input encoding files ***}
+\usepreamble\mainpreamble
+\generate{\file{8859-8.def}{\from{hebinp.dtx}{8859-8}}
+ \file{cp1255.def}{\from{hebinp.dtx}{cp1255}}
+ \file{cp862.def}{\from{hebinp.dtx}{cp862}}
+ \file{si960.def}{\from{hebinp.dtx}{si960}}
+ }
+
+\Msg{*** Generating hebrew language support files ***}
+\generate{\file{hebrew.ldf}{\from{hebrew.dtx}{hebrew}}
+ \file{rlbabel.def}{\from{hebrew.dtx}{rightleft}}
+ \file{hebcal.sty}{\from{hebrew.dtx}{calendar}}
+ }
+
+\Msg{*** Generating hebrew 2.09 compatibility files ***}
+\generate{\file{hebrew_newcode.sty}{\from{heb209.dtx}{newcode}}
+ \file{hebrew_p.sty}{\from{heb209.dtx}{pccode}}
+ \file{hebrew_oldcode.sty}{\from{heb209.dtx}{oldcode}}
+ }
+
+\ifToplevel{
+\Msg{*************************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the following}
+\Msg{* files into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space All *.cls, *.sty, *.ldf, *.fd and *.def}
+\Msg{*}
+\Msg{* To produce the documentation run `hebrew.dtx' through LaTeX}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{*************************************************************}
+}
+
+\endbatchfile
diff --git a/macros/latex/contrib/babel-contrib/hebrew/hebrew.pdf b/macros/latex/contrib/babel-contrib/hebrew/hebrew.pdf
new file mode 100644
index 0000000000..4e46d124d9
--- /dev/null
+++ b/macros/latex/contrib/babel-contrib/hebrew/hebrew.pdf
Binary files differ