From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- .../contrib/babel-contrib/hebrew/00readme.heb | 605 ++++ .../latex/contrib/babel-contrib/hebrew/heb209.dtx | 165 + .../latex/contrib/babel-contrib/hebrew/heb209.pdf | Bin 0 -> 152604 bytes .../latex/contrib/babel-contrib/hebrew/hebinp.dtx | 550 ++++ .../latex/contrib/babel-contrib/hebrew/hebinp.pdf | Bin 0 -> 199654 bytes .../latex/contrib/babel-contrib/hebrew/hebrew.dtx | 3329 ++++++++++++++++++++ .../latex/contrib/babel-contrib/hebrew/hebrew.fdd | 1297 ++++++++ .../latex/contrib/babel-contrib/hebrew/hebrew.ins | 215 ++ .../latex/contrib/babel-contrib/hebrew/hebrew.pdf | Bin 0 -> 418939 bytes 9 files changed, 6161 insertions(+) create mode 100644 macros/latex/contrib/babel-contrib/hebrew/00readme.heb create mode 100644 macros/latex/contrib/babel-contrib/hebrew/heb209.dtx create mode 100644 macros/latex/contrib/babel-contrib/hebrew/heb209.pdf create mode 100644 macros/latex/contrib/babel-contrib/hebrew/hebinp.dtx create mode 100644 macros/latex/contrib/babel-contrib/hebrew/hebinp.pdf create mode 100644 macros/latex/contrib/babel-contrib/hebrew/hebrew.dtx create mode 100644 macros/latex/contrib/babel-contrib/hebrew/hebrew.fdd create mode 100644 macros/latex/contrib/babel-contrib/hebrew/hebrew.ins create mode 100644 macros/latex/contrib/babel-contrib/hebrew/hebrew.pdf (limited to 'macros/latex/contrib/babel-contrib/hebrew') 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{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} +% +% \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} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*newcode> +\@obsoletefile{hebrew.sty}{hebrew_newcode.sty} +\RequirePackage[8859-8]{inputenc} +% +%<*pccode> +\@obsoletefile{hebrew.sty}{hebrew_p.sty} +\RequirePackage[cp862]{inputenc} +% +%<*oldcode> +\@obsoletefile{hebrew.sty}{hebrew_oldcode.sty} +\RequirePackage[si960]{inputenc} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*newcode|pccode|oldcode> +\RequirePackage[english,hebrew]{babel} +% +% \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 Binary files /dev/null and b/macros/latex/contrib/babel-contrib/hebrew/heb209.pdf 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 +% \ProvidesFile{si960.def} +%<8859-8> \ProvidesFile{8859-8.def} +% \ProvidesFile{cp862.def} +% \ProvidesFile{cp1255.def} +%<*driver> +\ProvidesFile{hebinp.drv} +% +% \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} +% +% \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|cp1255> +\ProvideTextCommandDefault{\textthreequarters}{\ensuremath{\frac34}} +% +%<*cp862|cp1255> +\ProvideTextCommandDefault{\textflorin}{\textit{f}} +% +%<*cp862> +\ProvideTextCommandDefault{\textpeseta}{Pt} +% +% \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} +% +% \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> +\ProvideTextCommandDefault{\textcurrency} + {\TextSymbolUnavailable\textcurrency} +% +%<*cp1255> +\ProvideTextCommandDefault{\newsheqel} + {\TextSymbolUnavailable\newsheqel} +% +%<*8859-8|cp1255> +\ProvideTextCommandDefault{\textbrokenbar} + {\TextSymbolUnavailable\textbrokenbar} +% +%<*cp1255> +\ProvideTextCommandDefault{\textperthousand} + {\TextSymbolUnavailable\textperthousand} +% +% \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|cp862|cp1255> +\providecommand{\mathtwosuperior}{{^2}} +% +%<*cp862> +\providecommand{\mathordmasculine}{{^o}} +\providecommand{\mathordfeminine}{{^a}} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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}{}% +} +% +% \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 Binary files /dev/null and b/macros/latex/contrib/babel-contrib/hebrew/hebinp.pdf 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 +%% +% +% \fi +% +% +% \iffalse +%\ProvidesFile{hebrew.ldf} +%\ProvidesFile{rlbabel.def} +%\ProvidesPackage{hebcal} +%<*driver> +\ProvidesFile{hebrew.drv} +% +% \fi +% \ProvidesFile{hebrew.dtx} + [2005/03/30 v2.3h % +% \iffalse +% Hebrew language definition from the babel system +% Right-to-Left support from the babel system +% Hebrew calendar +% 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} +% +% \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} +% +% \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% +} +% +% \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}|}\else\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}} +% +% \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 +%\ProvidesFile{lheenc.def} +%\ProvidesFile{lhecmr.fd} +%\ProvidesFile{lhecmss.fd} +%\ProvidesFile{lhecmtt.fd} +%\ProvidesFile{lheclas.fd} +%\ProvidesFile{lheshold.fd} +%\ProvidesFile{lheshscr.fd} +%\ProvidesFile{lheshstk.fd} +%\ProvidesFile{lhefr.fd} +%\ProvidesFile{lhecrml.fd} +%\ProvidesFile{lheredis.fd} +%\ProvidesFile{HE8enc.def} +%\ProvidesFile{HE8cmr.fd} +%\ProvidesFile{HE8cmss.fd} +%\ProvidesFile{HE8cmtt.fd} +% The recoded Omega font (only Hebrew glyphs. Lacks other glyphs) +%\ProvidesFile{HE8OmegaHebrew.fd} +% The culmus fonts: +%\ProvidesFile{HE8aharoni.fd} +%\ProvidesFile{HE8david.fd} +%\ProvidesFile{HE8drugulin.fd} +%\ProvidesFile{HE8ellinia.fd} +%\ProvidesFile{HE8frankruehl.fd} +%\ProvidesFile{HE8yad.fd} +%\ProvidesFile{HE8miriam.fd} +%\ProvidesFile{HE8nachlieli.fd} +% The IBM Type1 fonts (not freely distributable +%\ProvidesFile{HE8CourierShalom.fd} +%\ProvidesFile{HE8HelveticaNarkissTam.fd} +%\ProvidesFile{HE8TimesNarkissim.fd} +% Placeholders for windows fonts: +%\ProvidesFile{HE8mfdavid.fd} +%\ProvidesFile{HE8mffrank.fd} +%\ProvidesFile{HE8mffrankthick.fd} +%\ProvidesFile{HE8mffrankthin.fd} +%\ProvidesFile{HE8mfmiriam.fd} +%\ProvidesFile{HE8mfmiriamwide.fd} +%\ProvidesFile{HE8mfnarkistam.fd} +%\ProvidesPackage{hebfont} +%<*driver> +\ProvidesFile{hebrew.drv} +% +% \fi +% \ProvidesFile{hebrew.fdd} + [2005/05/20 v1.2c % +% \iffalse +% 7-bit Hebrew font encoding +% Hebrew default font +% Hebrew sans-serif font +% Hebrew typewriter font +% Hebrew classic font (by Joel M. Hoffman) +% Hebrew shalom old font (by Jonathan Brecher) +% Hebrew shalom script font (by Jonathan Brecher) +% Hebrew shalom stick font (by Jonathan Brecher) +% Hebrew frank-ruehl font +% Hebrew carmel font (by Dr. Samy Zafrany) +% Hebrew redis font (by Prof. Jacques J. Goldberg) +% 8-bit Hebrew font encoding +% Hebrew default font +% Hebrew sans-serif font +% Hebrew typewriter font +% Hebrew font from the Omega project (by ???) +% Hebrew sans-serif font (Culmus) +% Hebrew serif font (Culmus) +% Hebrew old serif font (Culmus) +% Hebrew sans-serif font (Culmus) +% Hebrew serif font (Culmus) +% Hebrew handwriting font (Culmus) +% Hebrew monospaced font (Culmus) +% Hebrew sans-serif font (Culmus) +% Hebrew Shalom (Courier) font (by IBM) +% Hebrew NarkisTam (Helvetica) (by Zvi Narkis) +% Hebrew Narkissim (Times) (by Zvi Narkis) +% Hebrew David font (by ???) +% Hebrew Frank-Ruehl font (by ??) +% Hebrew Frank-Ruehl (thick) font (by ??) +% Hebrew Frank-Ruehl (thin) font (by ??) +% Hebrew Miriam font (by ???) +% Hebrew Miriam (wide) font (by ???) +% Hebrew Narkis Tam font (by ???) +% Hebrew font switching commands +% 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} +% +% \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} +% +% \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}}} +% +% \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} +% +% \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 }{} +% +% \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}{} +% +% \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}{} +% +% \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}{} +% +% \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 }{} +% +%<*LHEshscr> +\DeclareFontFamily{LHE}{shscr}{} +\DeclareFontShape{LHE}{shscr}{m}{n} + {<-> shscr10 }{} +% +%<*LHEshstk> +\DeclareFontFamily{LHE}{shstk}{} +\DeclareFontShape{LHE}{shstk}{m}{n} + {<-> shstk10 }{} +% +% \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}{} +% +% \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}{} +% +% \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}{} +% +% \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} +% +% \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}}} +% +% \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}}} +% +% \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} +% +% \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} +% +% \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 }{} +% +% \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 }{} +% +% \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 }{} +% +% \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] +% +% \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] +% +% \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] +% +% \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] +% +% \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] +% +% \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] +% +% \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] +% +% \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] +% +% \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] +% +% \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 +% +% \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 Binary files /dev/null and b/macros/latex/contrib/babel-contrib/hebrew/hebrew.pdf differ -- cgit v1.2.3