diff options
Diffstat (limited to 'Master/texmf-dist/source/generic/babel/hebrew.dtx')
-rw-r--r-- | Master/texmf-dist/source/generic/babel/hebrew.dtx | 3329 |
1 files changed, 0 insertions, 3329 deletions
diff --git a/Master/texmf-dist/source/generic/babel/hebrew.dtx b/Master/texmf-dist/source/generic/babel/hebrew.dtx deleted file mode 100644 index 19f0fbf0fc8..00000000000 --- a/Master/texmf-dist/source/generic/babel/hebrew.dtx +++ /dev/null @@ -1,3329 +0,0 @@ -% \iffalse meta-comment -% -% Copyright 1989-2005 Johannes L. Braams and any individual authors -% listed elsewhere in this file. All rights reserved. -% -% This file is part of the Babel system. -% -------------------------------------- -% -% It may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2003/12/01 or later. -% -% This work has the LPPL maintenance status "maintained". -% -% The Current Maintainer of this work is Johannes Braams. -% -% The list of all files belonging to the Babel system is -% given in the file `manifest.bbl. See also `legal.bbl' for additional -% information. -% -% The list of derived (unpacked) files belonging to the distribution -% and covered by LPPL is defined by the unpacking scripts (with -% extension .ins) which are part of the distribution. -% \fi -% \CheckSum{3345} -% -% \iffalse meta-comment -%% Hebrew language definition and additional packages. -%% Copyright (C) 1997 -- 2005 Boris Lavva. -% -%% Babel package for LaTeX version 2e -%% Copyright (C) 1989 -- 2005 by Johannes Braams, -%% TeXniek -%% All rights reserved. -%<*calendar> -%% TeX & LaTeX macros for computing Hebrew date from Gregorian one -%% Copyright (C) 1991 by Michail Rozman, misha@iop.tartu.ew.su -%% -%</calendar> -% \fi -% -% -% \iffalse -%<hebrew>\ProvidesFile{hebrew.ldf} -%<rightleft>\ProvidesFile{rlbabel.def} -%<calendar>\ProvidesPackage{hebcal} -%<*driver> -\ProvidesFile{hebrew.drv} -%</driver> -% \fi -% \ProvidesFile{hebrew.dtx} - [2005/03/30 v2.3h % -% \iffalse -%<hebrew> Hebrew language definition from the babel system -%<rightleft> Right-to-Left support from the babel system -%<calendar> Hebrew calendar -%<driver> Driver file for hebrew support -% \fi - Hebrew language support from the babel system] -% -% \iffalse -% \subsection{A driver for this document} -% -% The next bit of code contains the documentation driver file for -% \TeX{}, i.e., the file that will produce the documentation you are -% currently reading. It will be extracted from this file by the \dst{} -% program. -% -% \begin{macrocode} -%<*driver> -\documentclass{ltxdoc} -\providecommand\babel{\textsf{babel}} -\providecommand\file[1]{\texttt{#1}} -\makeatletter -% \end{macrocode} -% -% The code lines are numbered within sections, -% \begin{macrocode} -\@addtoreset{CodelineNo}{section} -\renewcommand\theCodelineNo{% - \reset@font\scriptsize\thesection.\arabic{CodelineNo}} -% \end{macrocode} -% which should also be visible in the index; hence this -% redefinition of a macro from \file{doc.sty}. -% \begin{macrocode} -\renewcommand\codeline@wrindex[1]{\if@filesw - \immediate\write\@indexfile - {\string\indexentry{#1}% - {\number\c@section.\number\c@CodelineNo}}\fi} -% \end{macrocode} -% -% The glossary environment is used or the change log, but its -% definition needs changing for this document. -% \begin{macrocode} -\renewenvironment{theglossary}{% - \glossary@prologue% - \GlossaryParms \let\item\@idxitem \ignorespaces}% - {} -\makeatother -\DisableCrossrefs -\CodelineIndex -\RecordChanges -\title{Hebrew language support from the \babel\ system} -\author{Boris Lavva} -\date{Printed \today} -\begin{document} - \maketitle - \tableofcontents - \DocInput{hebrew.dtx} - \DocInput{hebinp.dtx} - \DocInput{hebrew.fdd} - \DocInput{heb209.dtx} - \clearpage - \def\filename{index} - \PrintIndex - \clearpage - \def\filename{changes} - \PrintChanges -\end{document} -%</driver> -% \end{macrocode} -% \fi -% -% \providecommand\babel{\textsf{babel}} -% \providecommand\dst{\textsc{docstrip}} -% \providecommand\file[1]{\texttt{#1}} -% \providecommand\pkg[1]{\texttt{#1}} -% \providecommand\XeT{X\kern-.125em\lower.5ex\hbox{E}\kern-.1667emT\@} -% \providecommand\scrunch{\setlength{\itemsep}{-.05in}} -% \GetFileInfo{hebrew.dtx} -% -% \changes{hebrew~0.1}{??/??/??}{% -% Preliminary \LaTeX\ Hebrew option (by Sergio Fogel)} -% \changes{hebrew~0.2}{??/??/??}{% -% Corrections and additions (by Rama Porrat)} -% \changes{hebrew~0.6}{??/??/??}{Additions (by Yael Dubinsky)} -% \changes{hebrew~1.2}{??/??/??}{% -% Bilingual tables, penalties, documentation and more changes -% (by Yaniv Bargury)} -% \changes{hebrew~1.30}{1992/05/15}{% -% Font selection, various (by Alon Ziv)} -% \changes{hebrew~1.31}{1993/02/22}{Bug fixes (by Alon Ziv)} -% \changes{hebrew~1.32}{1993/03/10}{Made font-change command -% for numbers `\cs{protect}'ed (by Alon Ziv)} -% \changes{hebrew~1.33}{1993/03/11}{% -% Made \cs{refstepcounter} work using \cs{@ltor} (by Alon Ziv)} -% \changes{hebrew~1.34}{1993/03/22}{% -% Moved font loading to another file. Added \cs{mainsec}. -% Made all text strings be produced by control codes (similar to -% \LaTeX 2.09 Mar '92). Fixed \cs{noindent} (by Alon Ziv)} -% \changes{hebrew~1.35}{1993/03/22}{% -% Moved the texts to a file selected by the current encoding -% (by Alon Ziv)} -% \changes{hebrew~1.36}{1993/03/24}{Use \TeX\ tricks to redefine -% \cs{theXXXX} without keeping old definitions. -% Use only \cs{@eng} for direction/font change (removed \cs{@ltor}). -% Switched from use of \cs{mainsec} to code taken from \babel\ -% system (by Alon Ziv)} -% \changes{hebrew~1.37}{1993/03/28}{% -% Use \cs{add@around} in defining font size commands. Small bug -% fixes (by Alon Ziv)} -% \changes{hebrew~1.38}{1993/04/20}{% -% \cs{everypar} changed so that \cs{noindent} works unmodified -% (by Alon Ziv, thanks to Chris Rowley)} -% \changes{hebrew~1.39}{1993/08/10}{% -% Redefined primitive sectioning commands. Changed \cs{include} so -% it finds \texttt{.h}, \texttt{.xet}, and \texttt{.ltx} files (no -% extension needed). Reinstated use of \cs{@ltor} (by Alon Ziv)} -% \changes{hebrew~1.40}{1993/09/01}{Added the \cs{@brackets} hack -% (by Alon Ziv)} -% \changes{hebrew~1.41}{1993/09/09}{% -% Reworked towards using NFSS2. Changed some macro names to be more -% logical: renamed \cs{@ltor} to \cs{@number}, \cs{@eng} to -% \cs{@latin}, and (in \texttt{hebrew.ldf}) \cs{@heb} to -% \cs{@hebrew} (by Alon Ziv)} -% \changes{hebrew~1.42}{1993/09/22}{% -% Made list environments work better. Fixed thebibliography -% environment (by Alon Ziv)} -% \changes{hebrew~2.0a}{1998/01/01}{% -% Completely rewritten for \LaTeXe\ and \babel\ support. Various -% input and font encodings (with NFSS2) are supported too. The -% original \pkg{hebrew.sty} is divided to a number of packages and -% definition files for better readability and extensibility. Added -% some user- and code-level documentation inside the \texttt{.dtx} -% and \texttt{.fdd} files, and \LaTeX -driven installation with -% \pkg{hebrew.ins} (by Boris Lavva)} -% \changes{hebrew~2.1}{2000/11/23}{% -% corrections from Sivan Toledo: sender name in letter, and section name in -% headings. (by Tzafrir Cohen)} -% \changes{hebrew~2.2}{2000/12/11}{% -% renamed hebrew letters to heb* (e.g.: alef renamed to hebalef) -% (by Tzafrir Cohen)} -% \changes{hebrew~2.3}{2001/02/27}{ -% added several \cs{@ifclassloaded}\{slides\} to allow the use of the -% slides class. (by Tzafrir Cohen)} -% \changes{hebrew~2.3a}{2001/07/09}{ -% The documentation should now be built fine (broken since at least -% 2.1, and probably 2.0) (by Tzafrir Cohen)} -% \changes{hebrew~2.3b}{2001/08/16}{ -% minor clean-ups. The documentation builds now with no warnings. -% Also removed \cs{R} from the caption macro (added in 2.1) -% Added internal \cs{@ensure@L} and \cs{@ensure@R} -% (Is there a real need for them? Maybe should they be exposed?) -% (by Tzafrir Cohen)} -% \changes{hebrew~2.3c}{2001/10/05}{ -% a temporary fix to the \cs{gim} macro. Should be replaced by stuff -% from hebcal. -% (by Tzafrir Cohen)} -% \changes{hebrew~2.3d}{2002/01/04}{ -% Initial support for the prosper class. Added \cs{arabicnorl} . -% (by Tzafrir Cohen)} -% \changes{hebrew~2.3e}{2002/08/09}{ -% Removing hebtech from this distriution (not relevant to babel), -% added \cs{HeblatexEncoding}. some docs cleanup -% (by Tzafrir Cohen)} -% \changes{hebrew~2.3f}{2002/12/26}{ -% redefined \cs{list} instead of redefining every environment -% that uses it. some pscolor handling, removed HeblatexEncoding -% (don't use 2.3e) (by Tzafrir Cohen)} -% \changes{hebrew~2.3g}{2003/06/05}{ -% Reimplemented the printing of Hebrew numerals and Hebrew -% counters; modified \pkg{hebcal.sty} to use this implementation -% when typesetting Hebrew dates; added option |full| to package -% \pkg{hebcal}; also removed some gratuitous -% spaces inserted by \pkg{hebcal.sty} by adding comment marks. -% CAUTION: the changes to \pkg{hebcal.sty} make it dependent on -% \pkg{babel} and not useable as a stand-alone package. Is this a -% problem? (by Ron Artstein)} -% -% \section{The Hebrew language}\label{sec:hebrew} -% -% The file \file{\filename}\footnote{The Hebrew language support -% files described in this section have version number \fileversion\ -% and were last revised on \filedate.} provides the following -% packages and files for Hebrew language support: -% \begin{description} -% \item[\file{hebrew.ldf}] file defines all the language-specific -% macros for the Hebrew language. -% \item[\file{rlbabel.def}] file is used by |hebrew.ldf| for -% bidirectional versions of the major \LaTeX{} commands and -% environments. It is designed to be used with other right-to-left -% languages, not only with Hebrew. -% \item[\pkg{hebcal.sty}] package defines a set of macros for -% computing Hebrew date from Gregorian one. -% \end{description} -% -% Additional Hebrew input and font encoding definition files that -% should be included and used with \file{hebrew.ldf} are: -% \begin{description} -% \item[\file{hebinp.dtx}] provides Hebrew input encodings, such as -% ISO 8859-8, MS Windows codepage 1255 or IBM PC codepage 862 -% (see Section~\ref{sec:hebinp} on page~\pageref{sec:hebinp}). -% \item[\file{hebrew.fdd}] contains Hebrew font encodings, related -% font definition files and \pkg{hebfont} package that -% provides Hebrew font switching commands (see -% Section~\ref{sec:hebfdd} on page~\pageref{sec:hebfdd} for -% further details). -% \end{description} -% -% \LaTeX~2.09 compatibility files are included with -% \file{heb209.dtx} and gives possibility to compile existing -% \LaTeX~2.09 Hebrew documents with small (if any) changes (see -% Section~\ref{sec:heb209} on page~\pageref{sec:heb209} for -% details). -% -% Finally, optional document class \pkg{hebtech} may be useful for -% writing theses and dissertations in both Hebrew and English (and -% any other languages included with \babel). It designed to meet -% requirements of the Graduate School of the Technion --- Israel -% Institute of Technology. -% -% \emph{As of version 2.3e hebtech is no longer distributed together -% with heblatex. It should be part of a new "hebclasses" package} -% -% \subsection{Acknowledgement} -% -% The following people have contributed to Hebrew package in one -% way or another, knowingly or unknowingly. In alphabetical order: -% Irina Abramovici, Yaniv Bargury, Yael Dubinsky, Sergio Fogel, -% Dan Haran, Rama Porrat, Michail Rozman, Alon Ziv. -% -% Tatiana Samoilov and Vitaly Surazhsky found a number of serious -% bugs in preliminary version of Hebrew package. -% -% A number of other people have contributed comments and -% information. Specific contributions are acknowledged within the -% document. -% -% I want to thank my wife, Vita, and son, Mishka, for their -% infinite love and patience. -% -% If you made a contribution and I haven't mentioned it, don't -% worry, it was an accident. I'm sorry. Just tell me and I will add -% you to the next version. -% -% \StopEventually{} -% -% \subsection{The {\normalfont\dst{}} modules} -% -% The following modules are used in the implementation to direct -% \dst{} in generating external files: -% \begin{center} -% \begin{tabular}{@{}ll} -% driver & produce a documentation driver file \\[4pt] -% hebrew & produce Hebrew language support file\\ -% rightleft & create right-to-left support file\\ -% calendar & create Hebrew calendar package -% \end{tabular} -% \end{center} -% A typical \dst{} command file would then have entries like: -% \begin{quote} -% |\generateFile{hebrew.ldf}{t}{\from{hebrew.dtx}{hebrew}}| -% \end{quote} -% -% \subsection{Hebrew language definitions} -% -% The macro |\LdfInit| takes care of preventing that this file is -% loaded more than once, checking the category code of the |@| -% sign, etc. -% \begin{macrocode} -%<*hebrew> -\LdfInit{hebrew}{captionshebrew} -% \end{macrocode} -% -% When this file is read as an option, i.e., by the |\usepackage| -% command, |hebrew| will be an `unknown' language, in which case we -% have to make it known. So we check for the existence of -% |\l@hebrew| to see whether we have to do something here. -% -% \begin{macrocode} -\ifx\l@hebrew\@undefined - \@nopatterns{Hebrew}% - \adddialect\l@hebrew0 -\fi -% \end{macrocode} -% -% \begin{macro}{\hebrewencoding} -% \emph{FIX DOCS REGARDING 8BIT} -% -% Typesetting Hebrew texts implies that a special input and output -% encoding needs to be used. Generally, the user may choose -% between different available Hebrew encodings provided. The -% current support for Hebrew uses all available fonts from the -% Hebrew University of Jerusalem encoded in `old-code' 7-bit -% encoding also known as Israeli Standard SI-960. We define for -% these fonts the Local Hebrew Encoding |LHE| (see the file -% |hebrew.fdd| for more details), and the |LHE| encoding definition -% file should be loaded by default. -% -% Other fonts are available in windows-cp1255 (a superset of ISO-8859-8 -% with nikud). For those, the encoding |HE8| should be used. Such fonts -% are, e.g., windows' TrueType fonts (once cnverted to Type1 or MetaFont) -% and IBM's Type1 fonts. -% -% However, if an user wants to use another font encoding, for -% example, cyrillic encoding T2 and extended latin encoding T1, --- -% he/she has to load the corresponding file \emph{before} the -% \pkg{hebrew} package. This may be done in the following way: -% \begin{quote} -% |\usepackage[LHE,T2,T1]{fontenc}|\\ -% |\usepackage[hebrew,russian,english]{babel}| -% \end{quote} -% We make sure that the |LHE| encoding is known to \LaTeX{} at end -% of this package. -% -% Also note that if you want to use the encoding |HE8| , you should define -% the following in your document, \emph{before loading babel}: -% \begin{quote} -% |\def\HeblatexEncoding{HE8}|\\ -% |\def\HeblatexEncodingFile{he8enc}| -% \end{quote} -% \changes{hebrew-2.3h}{2004/02/20}{Make LHE the default encoding for -% compatibility reasons} -% \begin{macrocode} -\providecommand{\HeblatexEncoding}{LHE}% -\providecommand{\HeblatexEncodingFile}{lheenc}% -\newcommand{\heblatex@set@encoding}[2]{ -} -\AtEndOfPackage{% - \@ifpackageloaded{fontenc}{% - \@ifl@aded{def}{% - \HeblatexEncodingFile}{\def\hebrewencoding{\HeblatexEncoding}}{}% - }{% - \input{\HeblatexEncodingFile.def}% - \def\hebrewencoding{\HeblatexEncoding}% - }} -% \end{macrocode} -% \end{macro} -% -% We also need to load inputenc package with one of the Hebrew -% input encodings. By default, we set up the |8859-8| codepage. -% If an user wants to use many input encodings in the same -% document, for example, the MS Windows Hebrew codepage |cp1255| -% and the standard IBM PC Russian codepage |cp866|, he/she has to -% load the corresponding file \emph{before} the hebrew package -% too. This may be done in the following way: -% \begin{quote} -% |\usepackage[cp1255,cp866]{inputenc}|\\ -% |\usepackage[hebrew,russian,english]{babel}| -% \end{quote} -% -% An user can switch input encodings in the document using the -% command |\inputencoding|, for example, to use the |cp1255|: -% \begin{quote} -% |\inputencoding{cp1255}| -% \end{quote} -% \begin{macrocode} -\AtEndOfPackage{% - \@ifpackageloaded{inputenc}{}{\RequirePackage[8859-8]{inputenc}}} -% \end{macrocode} -% -% The next step consists of defining commands to switch to (and -% from) the Hebrew language. -% -% \begin{macro}{\hebrewhyphenmins} -% This macro is used to store the correct values of the hyphenation -% parameters |\lefthyphenmin| and |\righthyphenmin|. They are set -% to~2. -% \changes{hebrew~2.0b}{2000/09/22}{Now use \cs{providehyphenmins} to -% provide a default value} -% \begin{macrocode} -\providehyphenmins{\CurrentOption}{\tw@\tw@} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\captionshebrew} -% The macro |\captionshebrew| replaces all captions used in the four -% standard document classes provided with \LaTeXe with their Hebrew -% equivalents. -% \changes{hebrew-2.0b}{2000/09/20}{Added \cs{glossaryname}} -% \begin{macrocode} -\addto\captionshebrew{% - \def\prefacename{\@ensure@R{\hebmem\hebbet\hebvav\hebalef}}% - \def\refname{\@ensure@R{\hebresh\hebshin\hebyod\hebmem\hebtav\ % - \hebmem\hebqof\hebvav\hebresh\hebvav\hebtav}}% - \def\abstractname{\@ensure@R{\hebtav\hebqof\hebtsadi\hebyod\hebresh}}% - \def\bibname{\@ensure@R{\hebbet\hebyod\hebbet\heblamed\hebyod\hebvav% - \hebgimel\hebresh\hebpe\hebyod\hebhe}}% - \def\chaptername{\@ensure@R{\hebpe\hebresh\hebqof}}% - \def\appendixname{\@ensure@R{\hebnun\hebsamekh\hebpe\hebhet}}% - \def\contentsname{\@ensure@R{% - \hebtav\hebvav\hebkaf\hebfinalnun\ % - \hebayin\hebnun\hebyod\hebyod\hebnun\hebyod\hebfinalmem}}% - \def\listfigurename{\@ensure@R{% - \hebresh\hebshin\hebyod\hebmem\hebtav\ % - \hebalef\hebyod\hebvav\hebresh\hebyod\hebfinalmem}}% - \def\listtablename{\@ensure@R{% - \hebresh\hebshin\hebyod\hebmem\hebtav\ - \hebtet\hebbet\heblamed\hebalef\hebvav\hebtav}}% - \def\indexname{\@ensure@R{\hebmem\hebpe\hebtav\hebhet}}% - \def\figurename{\@ensure@R{\hebalef\hebyod\hebvav\hebresh}}% - \def\tablename{\@ensure@R{\hebtet\hebbet\heblamed\hebhe}}% - \def\partname{\@ensure@R{\hebhet\heblamed\hebqof}}% - \def\enclname{\@ensure@R{\hebresh\hebtsadi"\hebbet}}% - \def\ccname{\@ensure@R{\hebhe\hebayin\hebtav\hebqof\hebyod% - \hebfinalmem}}% - \def\headtoname{\@ensure@R{\hebalef\heblamed}}% - \def\pagename{\@ensure@R{\hebayin\hebmem\hebvav\hebdalet}}% - \def\psname{\@ensure@R{\hebnun.\hebbet.}}% - \def\seename{\@ensure@R{\hebresh\hebalef\hebhe}}% - \def\alsoname{\@ensure@R{\hebresh\hebalef\hebhe \hebgimel% - \hebmemesof}}% - \def\proofname{\@ensure@R{\hebhe\hebvav\hebkaf\hebhet\hebhe}} - \def\glossaryname{\@ensure@L{Glossary}}% <-- Needs translation -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\slidelabel} -% Here we fix the macro |slidelabel| of the seminar package. Note -% that this still won't work well enough when overlays will be -% involved -% \begin{macrocode} -\@ifclassloaded{seminar}{% - \def\slidelabel{\bf \if@rl\R{\hebshin\hebqof\hebfinalpe{} \theslide}% - \else\L{Slide \theslide}% - \fi}% -}{} -% \end{macrocode} -% \end{macro} -% -% Here we provide an user with translation of Gregorian dates -% to Hebrew. In addition, the \pkg{hebcal} package can be used -% to create Hebrew calendar dates. -% -% \begin{macro}{\hebmonth} -% The macro |\hebmonth{|\emph{month}|}| produces month names in -% Hebrew. -% \begin{macrocode} -\def\hebmonth#1{% - \ifcase#1\or \hebyod\hebnun\hebvav\hebalef\hebresh\or % - \hebpe\hebbet\hebresh\hebvav\hebalef\hebresh\or % - \hebmem\hebresh\hebfinaltsadi\or % - \hebalef\hebpe\hebresh\hebyod\heblamed\or % - \hebmem\hebalef\hebyod\or \hebyod\hebvav\hebnun\hebyod\or % - \hebyod\hebvav\heblamed\hebyod\or % - \hebalef\hebvav\hebgimel\hebvav\hebsamekh\hebtet\or % - \hebsamekh\hebpe\hebtet\hebmem\hebbet\hebresh\or % - \hebalef\hebvav\hebqof\hebtet\hebvav\hebbet\hebresh\or % - \hebnun\hebvav\hebbet\hebmem\hebbet\hebresh\or % - \hebdalet\hebtsadi\hebmem\hebbet\hebresh\fi} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\hebdate} -% The macro |\hebdate{|\emph{day}|}{|\emph{month}|}{|\emph{year}|}| -% translates a given Gregorian date to Hebrew. -% \begin{macrocode} -\def\hebdate#1#2#3{% - \beginR\beginL\number#1\endL\ \hebbet\hebmonth{#2} - \beginL\number#3\endL\endR} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\hebday} -% The macro |\hebday| will replace |\today| command when in Hebrew -% mode. -% \begin{macrocode} -\def\hebday{\hebdate{\day}{\month}{\year}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\datehebrew} -% The macro |\datehebrew| redefines the command |\today| to produce -% Gregorian dates in Hebrew. It uses the macro |\hebday|. -% \begin{macrocode} -\def\datehebrew{\let\today=\hebday} -% \end{macrocode} -% \end{macro} -% -% The macro |\extrashebrew| will perform all the extra definitions -% needed for the Hebrew language. The macro |\noextrashebrew| -% is used to cancel the actions of |\extrashebrew|. -% -% \begin{macro}{\extrashebrew} -% We switch font encoding to Hebrew and direction to -% right-to-left. We cannot use the regular language switching -% commands (for example, |\sethebrew| and |\unsethebrew| or -% |\selectlanguage{hebrew}|), when in restricted horizontal mode, -% because it will result in \emph{unbalanced} |\beginR| or -% |\beginL| primitives. -% Instead, in \TeX 's restricted horizontal mode, the -% |\L{|\emph{latin text}|}| and |\R{|\emph{hebrew text}|}|, or -% |\embox{|\emph{latin text}|}| and |\hmbox{|\emph{hebrew text}|}| -% should be used. -% -% Hence, we use |\beginR| and |\beginL| switching commands only -% when not in restricted horizontal mode. -% \begin{macrocode} -\addto\extrashebrew{% - \tohebrew% - \ifhmode\ifinner\else\beginR\fi\fi} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\noextrashebrew} -% The macro |\noextrashebrew| is used to cancel the actions of -% |\extrashebrew|. We switch back to the previous font encoding and -% restore left-to-right direction. -% \begin{macrocode} -\addto\noextrashebrew{% - \fromhebrew% - \ifhmode\ifinner\else\beginL\fi\fi} -% \end{macrocode} -% \end{macro} -% -% Generally, we can switch to- and from- Hebrew by means of -% standard \babel -defined commands, for example, -% \begin{quote} -% |\selectlanguage{hebrew}| -% \end{quote} -% or -% \begin{quote} -% |\begin{otherlanguage}{hebrew}|\\ -% \hspace*{1.5em} some Hebrew text\\ -% |\end{otherlanguage}| -% \end{quote} -% Now we define two additional commands that offer the possibility -% to switch to and from Hebrew language. These commands are -% backward compatible with the previous versions of -% \pkg{hebrew.sty}. -% -% \begin{macro}{\sethebrew} -% \begin{macro}{\unsethebrew} -% The command |\sethebrew| will switch from the current font encoding -% to the hebrew font encoding, and from the current direction of -% text to the right-to-left mode. The command |\unsethebrew| switches -% back. -% -% Both commands use standard right-to-left switching macros -% |\setrllanguage{|\emph{ r2l language name}|}| and -% |\unsetrllanguage{|\emph{r2l language name}|}|, that -% defined in the \file{rlbabel.def} file. -% \begin{macrocode} -\def\sethebrew{\setrllanguage{hebrew}} -\def\unsethebrew{\unsetrllanguage{hebrew}} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\hebrewtext} -% \begin{macro}{\nohebrewtext} -% The following two commands are \emph{obsolete} and work only -% in \LaTeX 2.09 compatibility mode. They are synonyms of -% |\sethebrew| and |\unsethebrew| defined above. -% \begin{macrocode} -\if@compatibility - \let\hebrewtext=\sethebrew - \let\nohebrewtext=\unsethebrew -\fi -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\tohebrew} -% \begin{macro}{\fromhebrew} -% These two commands change only the current font encoding to- and -% from- Hebrew encoding. Their implementation uses -% |\@torl{|\emph{language name}|}| and |\@fromrl| macros defined in -% \file{rlbabel.def} file. Both commands may be useful \emph{only} -% for package and class writers, not for regular users. -% \begin{macrocode} -\def\tohebrew{\@torl{hebrew}}% -\def\fromhebrew{\@fromrl} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@hebrew} -% Sometimes we need to preserve Hebrew mode without knowing in -% which environment we are located now. For these cases, the -% |\@hebrew{|\emph{hebrew text}|}| macro will be useful. Not that -% this macro is similar to the |\@number| and |\@latin| macros -% defined in \file{rlbabel.def} file. -% \begin{macrocode} -\def\@@hebrew#1{\beginR{{\tohebrew#1}}\endR} -\def\@hebrew{\protect\@@hebrew} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Hebrew numerals} -% -% We provide commands to print numbers in the traditional -% notation using Hebrew letters. We need commands that print -% a Hebrew number from a decimal input, as well as commands -% to print the value of a counter as a Hebrew number. -% \begin{macro}{\if@gim@apost} -% \begin{macro}{\if@gim@final} -% Hebrew numbers can be written in various styles: with or without -% apostrophes, and with the letters kaf, mem, nun, pe, tsadi as either -% final or initial forms when they are the last letters in the -% sequence. We provide two flags to set the style options. -% \begin{macrocode} -\newif\if@gim@apost % whether we print apostrophes -\newif\if@gim@final % whether we use final or initial letters -% \end{macrocode} -% \end{macro} -% \end{macro} -% \begin{macro}{\hebrewnumeral} -% \begin{macro}{\Hebrewnumeral} -% \begin{macro}{\Hebrewnumeralfinal} -% The commands that print a Hebrew number -% must specify the style locally: relying on a global style -% option could cause a counter to -% print in an inconsistent manner---for instance, page numbers -% might appear in different styles if the global style option -% changed mid-way through a document. -% The commands only allow three of the four possible flag -% combinations (I do not know of a use that requires the -% combination of final letters and no apostrophes --RA). -% -% Each command sets the style flags and calls |\@hebrew@numeral|. -% Double braces are used in order to protect the values of -% |\@tempcnta| and |\@tempcntb|, which are changed by this call; -% they also keep the flag assignments local (this is not important -% because the global values are never used). -% \begin{macrocode} -\newcommand*{\hebrewnumeral}[1] % no apostrophe, no final letters - {{\@gim@finalfalse\@gim@apostfalse\@hebrew@numeral{#1}}} -\newcommand*{\Hebrewnumeral}[1] % apostrophe, no final letters - {{\@gim@finalfalse\@gim@aposttrue\@hebrew@numeral{#1}}} -\newcommand*{\Hebrewnumeralfinal}[1] % apostrophe, final letters - {{\@gim@finaltrue\@gim@aposttrue\@hebrew@numeral{#1}}} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \begin{macro}{\alph} -% \begin{macro}{\@alph} -% \begin{macro}{\Alph} -% \begin{macro}{\@Alph} -% \begin{macro}{\Alphfinal} -% \begin{macro}{\@Alphfinal} -% Counter-printing commands are based on the above commands. The -% natural name for the counter-printing commands is |\alph|, because -% Hebrew numerals are the only way to represent numbers with -% Hebrew letters (kaf always means~20, never~11). Hebrew has no -% uppercase letters, hence no need for the familiar meaning of |\Alph|; -% we therefore define |\alph| to print counters as Hebrew numerals -% without apostrophes, and |\Alph| to print with apostrophes. A third -% form, |\Alphfinal|, is provided to print with apostrophes and final -% letters, as is required for Hebrew year designators. The commands -% |\alph| and |\Alph| are defined in \pkg{latex.ltx}, and we only -% need to redefine the internal commands |\@alph| and -% |\@Alph|; for |\Alphfinal| we need to provide both a wrapper and -% an internal command. -% The counter printing commands are made semi-robust: without the -% |\protect|, commands like |\theenumii| break (I'm not quite clear -% on why this happens, --RA); at the same time, we cannot make the -% commands too robust (e.g.~with |\DeclareRobustCommand|) because -% this would enter the command name rather than its value into -% files like |.aux|, |.toc| etc\@. -% The old meanings of meaning of |\@alph| and |\@Alph| are saved -% upon entering Hebrew mode and restored upon exiting it. -% \begin{macrocode} -\addto\extrashebrew{% - \let\saved@alph=\@alph% - \let\saved@Alph=\@Alph% - \renewcommand*{\@alph}[1]{\protect\hebrewnumeral{\number#1}}% - \renewcommand*{\@Alph}[1]{\protect\Hebrewnumeral{\number#1}}% - \def\Alphfinal#1{\expandafter\@Alphfinal\csname c@#1\endcsname}% - \providecommand*{\@Alphfinal}[1]{\protect\Hebrewnumeralfinal{\number#1}}} -\addto\noextrashebrew{% - \let\@alph=\saved@alph% - \let\@Alph=\saved@Alph} -% \end{macrocode} -% Note that |\alph| (without apostrophes) is already the -% appropriate choice for the second-level enumerate label, and -% |\Alph| (with apostrophes) is an appropriate choice for appendix; -% however, the default \LaTeX\ labels need to be redefined for -% appropriate cross-referencing, see below. -% \LaTeX\ default class files specify |\Alph| for -% the fourth-level enumerate level, this should probably be changed. -% Also, the way labels get flushed left by default looks inappropriate -% for Hebrew numerals, so we should redefine |\labelenumii| as well -% as |\labelenumiv| (presently not implemented). -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \begin{macro}{\theenumii} -% \begin{macro}{\theenumiv} -% \begin{macro}{\label} -% Cross-references to counter labels need to be printed according -% to the language environment in which a label was issued, not -% the environment in which it is called: for example, a label~(1b) -% issued in a Latin environment should be referred to as~(1b) in a -% Hebrew text, and label~(2dalet) issued in a Hebrew environment -% should be referred to as~(2dalet) in a Latin text. This was the -% unanimous opinion in a poll sent to the Ivri\TeX\ list. -% We therefore redefine |\theenumii| and |\theenumiv|, so that an -% explicit language instruction gets written to the |.aux| file. -% \begin{macrocode} -\renewcommand{\theenumii} - {\if@rl\protect\hebrewnumeral{\number\c@enumii}% - \else\protect\L{\protect\@@alph{\number\c@enumii}}\fi} -\renewcommand{\theenumiv} - {\if@rl\protect\Hebrewnumeral{\number\c@enumiv}% - \else\protect\L{\protect\@@Alph{\number\c@enumiv}}\fi} -% \end{macrocode} -% We also need to control for the font and direction in which a -% counter label is printed. Direction is straightforward: a Latin -% label like~(1b) should be written left-to-right when called in a -% Hebrew text, and a Hebrew label like~(2dalet) should be written -% right-to-left when called in a Latin text. The font question is -% more delicate, because we should decide whether the numerals -% should be typeset in the font of the language enviroment in which -% the label was issued, or that of the environment in which it is -% called. -% \begin{itemize} -% \item -% A purely numeric label like~(23) looks best if it is set in the -% font of the surrounding language. -% \item -% But a mixed alphanumeric label like~(1b) lookes weird if -% the~`1' is taken from the Hebrew font; likewise, (2dalet) looks -% weird if the~`2' is taken from a Latin font. -% \item -% Finally, mixing the two possibilities is worst, because a -% single Hebrew sentence referring to examples~(1b) and~(2) would -% take the~`1' from the Latin font and the~`2' from the Hebrew -% font, and this looks really awful. (It is also very hard to -% implement). -% \end{itemize} -% In light of the conflicting considerations it seems like there's -% no perfect solution. I have chosen to implement the top option, -% where numerals are taken from the font of the surrounding -% language, because it seems to me that reference to purely numeric -% labels is the most common, so this gives a good solution to the -% majority of cases and a mediocre solution to the minority. -% -% We redefine the |\label| command which writes to the -% |.aux| file. Depending on the language environment we issue -% appropriate |\beginR/L|$\cdots$|\endR/L| commands to control the -% direction without affecting the font. Since these commands do not -% affect the value of |\if@rl|, we cannot use the macro -% |\@brackets| to determine the correct brackets to be used with -% |\p@enumiii|; instead, we let the language environment determine an -% explicit definition. -% \begin{macrocode} -\def\label#1{\@bsphack - \if@rl - \def\p@enumiii{\p@enumii)\theenumii(}% - \protected@write\@auxout{}% - {\string\newlabel{#1}{{\beginR\@currentlabel\endR}{\thepage}}}% - \else - \def\p@enumiii{\p@enumii(\theenumii)}% - \protected@write\@auxout{}% - {\string\newlabel{#1}{{\beginL\@currentlabel\endL}{\thepage}}}% - \fi - \@esphack} -% \end{macrocode} -% NOTE: it appears that the definition of |\label| is -% language-independent and thus belongs in \pkg{rlbabel.def}, but -% this is not the case. The decision to typeset label numerals -% in the font of the surrounding language is reasonable for Hebrew, -% because mixed-font (1b) and (2dalet) are somewhat acceptable. The -% same may not be acceptable for Arabic, whose numeral glyphs are -% radically different from those in the Latin fonts. The decision -% about the direction may also be different for Arabic, which is -% more right-to-left oriented than Hebrew (two examples: dates like -% 15/6/2003 are written left-to-right in Hebrew but right-to-left -% in Arabic; equations like $1+2=3$ are written left-to-right in -% Hebrew but right-to-left in Arabic elementary school textbooks -% using Arabic numeral glyphs). My personal hunch is that a label -% like~(1b) in an Arabic text would be typeset left-to-right if -% the~`1' is a Western glyph, but right-to-left if the~`1' is an -% Arabic glyph. But this is just a guess, I'd have to ask Arab -% typesetters to find the correct answer. --RA. -% \end{macro} -% \end{macro} -% \end{macro} -% \begin{macro}{\appendix} -% The following code provides for the proper printing of appendix -% numbers in tables of contents. Section and chapter headings are -% normally bilingual: regardless of the text language, the author -% supplies each section/chapter with two headings---one for the -% Hebrew table of contents and one for the Latin table of contents. -% It makes sense that the label should be a Latin letter in the -% Latin table of contents and a Hebrew letter in the Hebrew table -% of contents. The definition is similar to that of |\theenumii| -% and |\theenumiv| above, but additional |\protect| commands ensure -% that the entire condition is written the |.aux| file. The -% appendix number will therefore be typeset according to the -% environment in which it is used rather than issued: a Hebrew -% number (with apostrophes) in a Hebrew environment and a Latin -% capital letter in a Latin environment (the command -% |\@@Alph| is set in \pkg{rlbabel.def} to hold the default meaning -% of \LaTeX\ [latin] |\@Alph|, regardless of the mode in which it is -% issued). The net result is that -% the second appendix will be marked with~`B' in the Latin table of -% contents and with `bet' in the Hebrew table of contents; the mark -% in the main text will depend on the language of the appendix itself. -% \begin{macrocode} -\@ifclassloaded{letter}{}{% -\@ifclassloaded{slides}{}{% - \let\@@appendix=\appendix% - \@ifclassloaded{article}{% - \renewcommand\appendix{\@@appendix% - \renewcommand\thesection - {\protect\if@rl\protect\Hebrewnumeral{\number\c@section}% - \protect\else\@@Alph\c@section\protect\fi}}} - {\renewcommand\appendix{\@@appendix% - \renewcommand\thechapter - {\protect\if@rl\protect\Hebrewnumeral{\number\c@chapter}% - \protect\else\@@Alph\c@chapter\protect\fi}}}}} -% \end{macrocode} -% QUESTION: is this also the appropriate way to refer to an -% appendix in the text, or should we retain the original label the -% same way we did with |enumerate| labels? -% ANOTHER QUESTION: are similar redefinitions needed for other -% counters that generate texts in bilingual lists like |.lof/.fol| -% and |.lot/.tol|? --RA. -% \end{macro} -% \begin{macro}{\@hebrew@numeral} -% The command |\@hebrew@numeral| prints a Hebrew number. The groups -% of thousands, millions, billions are separated by apostrophes and -% typeset without apostrophes or final letters; the remainder -% (under 1000) is typeset conventionally, with the selected styles -% for apostrophes and final letters. -% The function calls on |\gim@no@mil| to typeset each -% three-digit block. The algorithm -% is recursive, but the maximum recursion depth is~4 because \TeX\ -% only allows numbers up to $2^{31}-1 = 2{,}147{,}483{,}647$. -% The typesetting routine is wrapped in |\@hebrew| in order to -% ensure that numbers are always typeset in Hebrew mode. -% -% Initialize: |\@tempcnta| holds the value, |\@tempcntb| is used for -% calculations. -% \begin{macrocode} -\newcommand*{\@hebrew@numeral}[1] -{\@hebrew{\@tempcnta=#1\@tempcntb=#1\relax - \divide\@tempcntb by 1000 -% \end{macrocode} -% If we're under 1000, call |\gim@nomil| -% \begin{macrocode} - \ifnum\@tempcntb=0\gim@nomil\@tempcnta\relax -% \end{macrocode} -% If we're above 1000 then force no apostrophe and no final letter -% styles for the value above~1000, recur for the value above~1000, -% add an apostrophe, and call |\gim@nomil| for the remainder. -% \begin{macrocode} - \else{\@gim@apostfalse\@gim@finalfalse\@hebrew@numeral\@tempcntb}'% - \multiply\@tempcntb by 1000\relax - \advance\@tempcnta by -\@tempcntb\relax - \gim@nomil\@tempcnta\relax - \fi -}} -% \end{macrocode} -% NOTE: is it the case that 15,000 and 16,000 are written as -% yod-he and yod-vav, rather than tet-vav and tet-zayin? This -% vaguely rings a bell, but I'm not certain. If this is the case, -% then the current behavior is incorrect and should be changed. --RA. -% \end{macro} -% \begin{macro}{\gim@nomil} -% The command |\gim@nomil| typesets an integer between 0~and~999 -% (for~0 it typesets nothing). The code has been modified from the -% old |hebcal.sty| -% (appropriate credits---Boris Lavva and Michail Rozman ?). -% |\@tempcnta| holds the total value that remains to be typeset. -% At each stage we find the highest valued letter that is -% less than or equal to |\@tempcnta|, and call on |\gim@print| to -% subtract this value and print the letter. -% -% Initialize: |\@tempcnta| holds the value, there is no previous -% letter. -% \begin{macrocode} -\newcommand*{\gim@nomil}[1]{\@tempcnta=#1\@gim@prevfalse -% \end{macrocode} -% Find the hundreds digit. -% \begin{macrocode} - \@tempcntb=\@tempcnta\divide\@tempcntb by 100\relax % hundreds digit - \ifcase\@tempcntb % print nothing if no hundreds - \or\gim@print{100}{\hebqof}% - \or\gim@print{200}{\hebresh}% - \or\gim@print{300}{\hebshin}% - \or\gim@print{400}{\hebtav}% - \or\hebtav\@gim@prevtrue\gim@print{500}{\hebqof}% - \or\hebtav\@gim@prevtrue\gim@print{600}{\hebresh}% - \or\hebtav\@gim@prevtrue\gim@print{700}{\hebshin}% - \or\hebtav\@gim@prevtrue\gim@print{800}{\hebtav}% - \or\hebtav\@gim@prevtrue\hebtav\gim@print{900}{\hebqof}% - \fi -% \end{macrocode} -% Find the tens digit. The numbers 15 and 16 are traditionally -% printed as tet-vav ($9+6$) and tet-zayin ($9+7$) to avoid -% spelling the Lord's name. -% \begin{macrocode} - \@tempcntb=\@tempcnta\divide\@tempcntb by 10\relax % tens digit - \ifcase\@tempcntb % print nothing if no tens - \or % number between 10 and 19 - \ifnum\@tempcnta = 16 \gim@print {9}{\hebtet}% tet-zayin - \else\ifnum\@tempcnta = 15 \gim@print {9}{\hebtet}% tet-vav - \else \gim@print{10}{\hebyod}% - \fi % \@tempcnta = 15 - \fi % \@tempcnta = 16 -% \end{macrocode} -% Initial or final forms are selected according to the current -% style option; |\gim@print| will force a non-final letter in -% non-final position by means of a local style change. -% \begin{macrocode} - \or\gim@print{20}{\if@gim@final\hebfinalkaf\else\hebkaf\fi}% - \or\gim@print{30}{\heblamed}% - \or\gim@print{40}{\if@gim@final\hebfinalmem\else\hebmem\fi}% - \or\gim@print{50}{\if@gim@final\hebfinalnun\else\hebnun\fi}% - \or\gim@print{60}{\hebsamekh}% - \or\gim@print{70}{\hebayin}% - \or\gim@print{80}{\if@gim@final\hebfinalpe\else\hebpe\fi}% - \or\gim@print{90}{\if@gim@final\hebfinaltsadi\else\hebtsadi\fi}% - \fi -% \end{macrocode} -% Print the ones digit. -% \begin{macrocode} - \ifcase\@tempcnta % print nothing if no ones - \or\gim@print{1}{\hebalef}% - \or\gim@print{2}{\hebbet}% - \or\gim@print{3}{\hebgimel}% - \or\gim@print{4}{\hebdalet}% - \or\gim@print{5}{\hebhe}% - \or\gim@print{6}{\hebvav}% - \or\gim@print{7}{\hebzayin}% - \or\gim@print{8}{\hebhet}% - \or\gim@print{9}{\hebtet}% - \fi -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\gim@print} -% \begin{macro}{\if@gim@prev} -% The actual printing routine typesets a digit with the appropriate -% apostrophes: if a number sequence consists of a -% single letter then it is followed by a single apostrophe, and if -% it consists of more than one letter then a double -% apostrophe is inserted before the last letter. -% We typeset the letters one at a time, keeping a flag that tells -% us if any previous letters had been typeset. -% \begin{macrocode} -\newif\if@gim@prev % flag if a previous letter has been typeset -% \end{macrocode} -% For each letter, we -% first subtract its value from the total. Then, -% \begin{itemize} -% \item -% if the result is zero then this is the last letter; we check -% the flag to see if this is the only letter and print it with -% the appropriate apostrophe; -% \item -% if the result is not zero then there remain additional letters -% to be typeset; we print without an apostrophe and set the -% `previous letter' flag. -% \end{itemize} -% |\@tempcnta| holds the total value that remains to be typeset. -% We first deduct the letter's value from |\@tempcnta|, -% so |\@tempcnta| is zero if and only if this is the last letter. -% \begin{macrocode} -\newcommand*{\gim@print}[2]{% #2 is a letter, #1 is its value. - \advance\@tempcnta by -#1\relax% deduct the value from the remainder -% \end{macrocode} -% If this is the last letter, we print with the appropriate -% apostrophe (depending on the style option): -% if there is a preceding letter, print |"x| if the style calls for -% apostrophes, |x| if it doesn't; -% otherwise, this is the only letter: print |x'| if the style calls -% for apostrophes, |x| if it doesn't. -% \begin{macrocode} - \ifnum\@tempcnta=0% if this is the last letter - \if@gim@prev\if@gim@apost"\fi#2% - \else#2\if@gim@apost'\fi\fi% -% \end{macrocode} -% If this is not the last letter: print a non-final form (by -% forcing a local style option) and set the `previous letter' flag. -% \begin{macrocode} - \else{\@gim@finalfalse#2}\@gim@prevtrue\fi} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\hebr} -% \begin{macro}{\gim} -% The older Hebrew counter commands |\hebr| and |\gim| are retained -% in order to keep older documents from breaking. They are set to -% be equivalent to |\alph|, and their use is deprecated. Note that -% |\hebr| gives different results than it had in the past---it -% now typesets 11 as yod-alef rather than kaf. -% \begin{macrocode} -\let\hebr=\alph -\let\gim=\alph -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% For backward compatibility with `older' \pkg{hebrew.sty} -% packages, we define Hebrew equivalents of some useful \LaTeX\ -% commands. Note, however, that 8-bit macros defined in Hebrew -% are no longer supported. -% \begin{macrocode} -\def\hebcopy{\protect\R{\hebhe\hebayin\hebtav\hebqof}} -\def\hebincl{\protect\R{\hebresh\hebtsadi"\hebbet}} -\def\hebpage{\protect\R{\hebayin\hebmem\hebvav\hebdalet}} -\def\hebto{\protect\R{\hebayin\hebdalet}} -% \end{macrocode} -% |\hadgesh| produce ``poor man's bold'' (heavy printout), when -% used with normal font glyphs. It is advisable to use bold font -% (for example, \emph{Dead Sea}) instead of this macro. -% \begin{macrocode} -\def\hadgesh#1{\leavevmode\setbox0=\hbox{#1}% - \kern-.025em\copy0\kern-\wd0 - \kern.05em\copy0\kern-\wd0 - \kern-.025em\raise.0433em\box0 } -% \end{macrocode} -% |\piska| and |\piskapiska| sometimes used in `older' hebrew -% sources, and should not be used in \LaTeXe. -% \begin{macrocode} -\if@compatibility - \def\piska#1{\item{#1}\hangindent=-\hangindent} - \def\piskapiska#1{\itemitem{#1}\hangindent=-\hangindent} -\fi -% \end{macrocode} -% The following commands are simply synonyms for the standard ones, -% provided with \LaTeXe. -% \begin{macrocode} -\let\makafgadol=\textendash -\let\makafanak=\textemdash -\let\geresh=\textquoteright -\let\opengeresh=\textquoteright -\let\closegeresh=\textquoteleft -\let\openquote=\textquotedblright -\let\closequote=\textquotedblleft -\let\leftquotation=\textquotedblright -\let\rightquotation=\textquotedblleft -% \end{macrocode} -% -% We need to ensure that Hebrew is used as the default -% right-to-left language at |\begin{document}|. The mechanism of -% defining the |\@rllanguagename| is the same as in \babel 's -% |\languagename|: the last right-to-left language in the -% |\usepackage{babel}| line is set as the default right-to-left -% language at document beginning. -% -% For example, the following code: -% \begin{quote} -% |\usepackage[russian,hebrew,arabic,greek,english]{babel}| -% \end{quote} -% will set the Arabic language as the default right-to-left -% language and the English language as the default language. -% As a result, the commands |\L{}| and |\embox{}| will use English -% and |\R{}| and |\hmbox{}| will use Arabic by default. These -% defaults can be changed with the next |\sethebrew| or -% |\selectlanguage{|\emph{language name}|}| command. -% \begin{macrocode} -\AtBeginDocument{\def\@rllanguagename{hebrew}} -% \end{macrocode} -% -% The macro |\ldf@finish| takes care of looking for a configuration -% file, setting the main language to be switched on at -% |\begin{document}| and resetting the category code of |@| to its -% original value. -% \begin{macrocode} -\ldf@finish{hebrew} -%</hebrew> -% \end{macrocode} -% -% \subsection{Right to left support} -% -% This file \pkg{rlbabel.def} defines necessary bidirectional macro -% support for \LaTeXe. It is designed for use not only with Hebrew, -% but with any Right-to-Left languages, supported by \babel. The -% macros provided in this file are language and encoding -% independent. -% -% Right-to-left languages will use \TeX\ extensions, namely \TeX\ -% primitives |\beginL|, |\endL| and |\beginR|, |\endR|, currently -% implemented only in $\varepsilon$-\TeX\ and in \TeX{-}{-}\XeT. -% -% If $\varepsilon$-\TeX\ is used, we should switch it to the -% \emph{enhanced} mode: -% \begin{macrocode} -%<*rightleft> -\ifx\TeXXeTstate\undefined\else% - \TeXXeTstate=1 -\fi -% \end{macrocode} -% -% Note, that $\varepsilon$-\TeX 's format file should be created -% for \emph{extended} mode. Mode can be checked by running -% $\varepsilon$-\TeX\ on some \TeX{} file, for example: -% \begin{quote} -% |This is e-TeX, Version 3.14159-1.1 (Web2c 7.0)|\\ -% |entering extended mode| -% \end{quote} -% The second line should be \texttt{entering extended mode}. -% -% We check if user uses Right-to-Left enabled engine instead of -% regular Knuth's \TeX: -% \begin{macrocode} -\ifx\beginL\@undefined% - \newlinechar`\^^J - \typeout{^^JTo avoid this error message,^^J% - run TeX--XeT or e-TeX engine instead of regular TeX.^^J} - \errmessage{Right-to-Left Support Error: use TeX--XeT or e-TeX - engine}% -\fi -% \end{macrocode} -% -% \subsubsection{Switching from LR to RL mode and back} -% -% \cs{@torl} and \cs{@fromrl} are called each time the horizontal -% direction changes. They do all that is necessary besides changing -% the direction. Currently their task is to change the encoding -% information and mode (condition \cs{if@rl}). They should not -% normally be called by users: user-level macros, such as -% \cs{sethebrew} and \cs{unsethebrew}, as well as \babel 's -% \cs{selectlanguage} are defined in language-definition files and -% should be used to change default language (and direction). -% -% Local direction changing commands (for small pieces of text): -% |\L{}|, |\R{}|, |\embox{}| and |\hmbox{}| are defined below in -% this file in language-independent manner. -% -% \begin{macro}{\if@rl} -% \begin{description}\scrunch -% \item[|\@rltrue|] means that the main mode is currently -% Right-to-Left. -% \item[|\@rlfalse|] means that the main mode is currently -% Left-to-Right. -% \end{description} -% \begin{macrocode} -\newif\if@rl -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\if@rlmain} -% This is the main direction of the document. Unlike |\if@rl| -% it is set once and never changes. -% \begin{description}\scrunch -% \item[|\@rltrue|] means that the document is Right-to-Left. -% \item[|\@rlfalse|] means that the document is Left-to-Right. -% \end{description} -% Practically |\if@rlmain| is set according to the value of |\if@rl| -% in the beginning of the run. -% \begin{macrocode} -\AtBeginDocument{% Here we set the main document direction - \newif\if@rlmain% - \if@rl% e.g: if the options to babel were [english,hebrew] - \@rlmaintrue% - \else% e.g: if the options to babel were [hebrew,english] - \@rlmainfalse% - \fi% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@torl} -% Switches current direction to Right-to-Left: saves current -% Left-to-Right encoding in |\lr@encodingdefault|, sets required -% Right-to-Left language name in |\@rllanguagename| (similar to -% \babel 's |\languagename|) and changes derection. -% -% The Right-to-Left language encoding should be defined in |.ldf| -% file as special macro created by concatenation of the language -% name and string \texttt{encoding}, for example, for Hebrew it -% will be |\hebrewencoding|. -% \begin{macrocode} -\DeclareRobustCommand{\@torl}[1]{% - \if@rl\else% - \let\lr@encodingdefault=\encodingdefault% - \fi% - \def\@rllanguagename{#1}% - \def\encodingdefault{\csname#1encoding\endcsname}% - \fontencoding{\encodingdefault}% - \selectfont% - \@rltrue} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@fromrl} -% Opposite to |\@torl|, switches current direction to -% Left-to-Right: restores saved Left-to-Right encoding -% (|\lr@encodingdefault|) and changes direction. -% \begin{macrocode} -\DeclareRobustCommand{\@fromrl}{% - \if@rl% - \let\encodingdefault=\lr@encodingdefault% - \fi% - \fontencoding{\encodingdefault}% - \selectfont% - \@rlfalse} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\selectlanguage} -% This standard \babel 's macro should be redefined to support -% bidirectional tables. We divide |\selectlanguage| implementation -% to two parts, and the first part calls the second -% |\@@selectlanguage|. -% \begin{macrocode} -\expandafter\def\csname selectlanguage \endcsname#1{% - \edef\languagename{% - \ifnum\escapechar=\expandafter`\string#1\@empty - \else \string#1\@empty\fi}% - \@@selectlanguage{\languagename}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@@selectlanguage} -% This new internal macro redefines a final part of the standard -% \babel 's |\select|\-|language| implementation. -% -% Standard \LaTeX\ provides us with 3 tables: Table of Contents -% (|.toc|), List of Figures (|.lof|), and List of Tables -% (|.lot|). In multi-lingual texts mixing Left-to-Right languages -% with Right-to-Left ones, the use of various directions in one -% table results in very ugly output. Therefore, these 3 standard -% tables will be used now only for Left-to-Right languages, and we -% will add 3 Right-to-Left tables (their extensions are simply -% reversed ones): RL Table of Contents (|.cot|), RL List of Figures -% (|.fol|), and RL List of Tables (|.lof|). -% \begin{macrocode} -\def\@@selectlanguage#1{% - \select@language{#1}% - \if@filesw - \protected@write\@auxout{}{\string\select@language{#1}}% - \if@rl% - \addtocontents{cot}{\xstring\select@language{#1}}% - \addtocontents{fol}{\xstring\select@language{#1}}% - \addtocontents{tol}{\xstring\select@language{#1}}% - \else% - \addtocontents{toc}{\xstring\select@language{#1}}% - \addtocontents{lof}{\xstring\select@language{#1}}% - \addtocontents{lot}{\xstring\select@language{#1}}% - \fi% - \fi} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\setrllanguage} -% \begin{macro}{\unsetrllanguage} -% The |\setrllanguage| and |\unsetrllanguage| pair of macros is -% proved to very useful in bilingual texts, for example, in -% Hebrew-English texts. The language-specific commands, for example, -% |\sethebrew| and |\unsethebrew| use these macros as basis. -% -% Implementation saves and restores other language in -% |\other@languagename| variable, and uses internal macro -% |\@@selectlanguage|, defined above, to switch between languages. -% \begin{macrocode} -\let\other@languagename=\languagename -\DeclareRobustCommand{\setrllanguage}[1]{% - \if@rl\else% - \let\other@languagename=\languagename% - \fi% - \def\languagename{#1}% - \@@selectlanguage{\languagename}} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareRobustCommand{\unsetrllanguage}[1]{% - \if@rl% - \let\languagename=\other@languagename% - \fi - \@@selectlanguage{\languagename}} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\L} -% \begin{macro}{\R} -% \begin{macro}{\HeblatexRedefineL} -% Macros for changing direction, originally taken from TUGboat. -% Usage: |\L{|\emph{Left to Right text}|}| and |\R{|\emph{Right to -% Left text}|}|. Numbers should also be enclosed in |\L{}|, as in -% |\L{123}|. -% -% Note, that these macros do not receive language name as -% parameter. Instead, the saved |\@rllanguagename| will be -% used. We assume that each Right-to-Left language defines -% |\to|\emph{languagename} and |\from|\emph{languagename} macros in -% language definition file, for example, for Hebrew: |\tohebrew| -% and |\fromhebrew| macros in \pkg{hebrew.ldf} file. -% -% The macros \cs{L} and \cs{R} include `protect' to to make them robust and -% allow use, for example, in tables. -% -% Due to the fact that some packages have different definitions for \cs{L} -% the macro |\HeblatexRedefineL| is provided to overide them. This may -% be required with hyperref, for instance. -% \begin{macrocode} -\let\next=\ -\def\HeblatexRedefineL{% - \def\L{\protect\pL}% -} -\HeblatexRedefineL -\def\pL{\protect\afterassignment\moreL \let\next= } -\def\moreL{\bracetext \aftergroup\endL \beginL\csname - from\@rllanguagename\endcsname} -% \end{macrocode} -% -% \begin{macrocode} -\def\R{\protect\pR} -\def\pR{\protect\afterassignment\moreR \let\next= } -\def\moreR{\bracetext \aftergroup\endR \beginR\csname - to\@rllanguagename\endcsname} -\def\bracetext{\ifcat\next{\else\ifcat\next}\fi - \errmessage{Missing left brace has been substituted}\fi \bgroup} -\everydisplay{\if@rl\aftergroup\beginR\fi } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@ensure@R} -% \begin{macro}{\@ensure@L} -% Two small internal macros, a-la |\ensuremath| -% \begin{macrocode} -\def\@ensure@R#1{\if@rl#1\else\R{#1}\fi} -\def\@ensure@L#1{\if@rl\L{#1}\else#1\fi} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% Take care of Right-to-Left indentation in every paragraph. -% Originally, \cs{noindent} was redefined for right-to-left by -% Yaniv Bargury, then the implementation was rewritten by Alon Ziv -% using an idea by Chris Rowley: \cs{noindent} now works -% unmodified. -% \begin{macrocode} -\def\rl@everypar{\if@rl{\setbox\z@\lastbox\beginR\usebox\z@}\fi} -\let\o@everypar=\everypar -\def\everypar#1{\o@everypar{\rl@everypar#1}} -% \end{macrocode} -% -% \begin{macro}{\hmbox} -% \begin{macro}{\embox} -% Useful vbox commands. All text in math formulas is best enclosed -% in these: LR text in |\embox| and RL text in |\hmbox|. |\mbox{}| -% is useless for both cases, since it typesets in Left-to-Right -% even for Right-to-Left languages (additions by Yaniv Bargury). -% \begin{macrocode} -\newcommand{\hmbox}[1]{\mbox{\R{#1}}} -\newcommand{\embox}[1]{\mbox{\L{#1}}} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@brackets} -% When in Right-to-Left mode, brackets should be swapped. This -% macro receives 3 parameters: left bracket, content, right -% bracket. Brackets can be square brackets, braces, or -% parentheses. -% \begin{macrocode} -\def\@brackets#1#2#3{\protect\if@rl #3#2#1\protect\else - #1#2#3\protect\fi} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@number} -% \begin{macro}{\@latin} -% \cs{@number} preserves numbers direction from Left to Right. -% \cs{@latin} in addition switches current encoding to the latin. -% \begin{macrocode} -\def\@@number#1{\ifmmode\else\beginL\fi#1\ifmmode\else\endL\fi} -\def\@@latin#1{\@@number{{\@fromrl#1}}} -\def\@number{\protect\@@number} -\def\@latin{\protect\@@latin} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \subsubsection{Counters} -% -% To make counter references work in Right to Left text, we need -% to surround their original definitions with an -% |\@number{|\ldots|}| or |\@latin{|\ldots|}|. Note, that -% language-specific counters, such as \cs{hebr} or \cs{gim} are -% provided with language definition file. -% -% We start with saving the original definitions: -% \begin{macrocode} -\let\@@arabic=\@arabic -\let\@@roman=\@roman -\let\@@Roman=\@Roman -\let\@@alph=\@alph -\let\@@Alph=\@Alph -% \end{macrocode} -% -% \begin{macro}{\@arabic} -% \begin{macro}{\@roman} -% \begin{macro}{\@Roman} -% Arabic and roman numbers should be from Left to Right. In -% addition, roman numerals, both lower- and upper-case should be in -% latin encoding. -% \begin{macrocode} -\def\@arabic#1{\@number{\@@arabic#1}} -\def\@roman#1{\@latin{\@@roman#1}} -\def\@Roman#1{\@latin{\@@Roman#1}} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\arabicnorl} -% This macro preserves the original definition of |\arabic| -% (overrides the overriding of |\@arabic|) -% \begin{macrocode} -\def\arabicnorl#1{\expandafter\@@arabic\csname c@#1\endcsname} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\make@lr} -% In Right to Left documents all counters defined in the standard -% document classes \emph{article}, \emph{report} and \emph{book} -% provided with \LaTeXe, such as |\thesection|, |\thefigure|, -% |\theequation| should be typed as numbers from left to right. To -% ensure direction, we use the following -% |\make@lr{|\emph{counter}|}| macro: -% \begin{macrocode} -\def\make@lr#1{\begingroup - \toks@=\expandafter{#1}% - \edef\x{\endgroup - \def\noexpand#1{\noexpand\@number{\the\toks@}}}% - \x} -% \end{macrocode} -% -% \begin{macrocode} -\@ifclassloaded{letter}{}{% - \@ifclassloaded{slides}{}{% - \make@lr\thesection - \make@lr\thesubsection - \make@lr\thesubsubsection - \make@lr\theparagraph - \make@lr\thesubparagraph - \make@lr\thefigure - \make@lr\thetable - } - \make@lr\theequation -} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Preserving logos} -% -% Preserve \TeX, \LaTeX\ and \LaTeXe\ logos. -% \begin{macro}{\TeX} -% \begin{macrocode} -\let\@@TeX\TeX -\def\TeX{\@latin{\@@TeX}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\LaTeX} -% \begin{macrocode} -\let\@@LaTeX\LaTeX -\def\LaTeX{\@latin{\@@LaTeX}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\LaTeXe} -% \begin{macrocode} -\let\@@LaTeXe\LaTeXe -\def\LaTeXe{\@latin{\@@LaTeXe}} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{List environments} -% -% List environments in Right-to-Left languages, are ticked and -% indented from the right instead of from the left. All the -% definitions that caused indentation are revised for Right-to-Left -% languages. \LaTeX\ keeps track on the indentation with the -% \cs{leftmargin} and \cs{rightmargin} values. -% -% \begin{macro}{list} -% Thus we need to override the definition of the |\list| macro: when -% in RTL mode, the right margins are the begining of the line. -% \begin{macrocode} -\def\list#1#2{% - \ifnum \@listdepth >5\relax - \@toodeep - \else - \global\advance\@listdepth\@ne - \fi - \rightmargin\z@ - \listparindent\z@ - \itemindent\z@ - \csname @list\romannumeral\the\@listdepth\endcsname - \def\@itemlabel{#1}% - \let\makelabel\@mklab - \@nmbrlistfalse - #2\relax - \@trivlist - \parskip\parsep - \parindent\listparindent - \advance\linewidth -\rightmargin - \advance\linewidth -\leftmargin -% \end{macrocode} -% The only change in the macro is the |\if@rl| case: -% \begin{macrocode} - \if@rl - \advance\@totalleftmargin \rightmargin - \else - \advance\@totalleftmargin \leftmargin - \fi - \parshape \@ne \@totalleftmargin \linewidth - \ignorespaces} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\labelenumii} -% \begin{macro}{\p@enumiii} -% The \cs{labelenumii} and \cs{p@enumiii} commands use -% \emph{parentheses}. They are revised to work Right-to-Left with -% the help of \cs{@brackets} macro defined above. -% \begin{macrocode} -\def\labelenumii{\@brackets(\theenumii)} -\def\p@enumiii{\p@enumii\@brackets(\theenumii)} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \subsubsection{Tables of moving stuff} -% -% Tables of moving arguments: table of contents (|toc|), list of -% figures (|lof|) and list of tables (|lot|) are handles here. These -% three default \LaTeX\ tables will be used now exclusively for -% Left to Right stuff. -% -% Three additional Right-to-Left tables: RL table of contents -% (|cot|), RL list of figures (|fol|), and RL list of tables -% (|tol|) are added. -% These three tables will be used exclusively for Right to -% Left stuff. -% -% \begin{macro}{\@tableofcontents} -% \begin{macro}{\@listoffigures} -% \begin{macro}{\@listoftables} -% We define 3 new macros similar to the standard \LaTeX\ tables, -% but with one parameter --- table file extension. These macros -% will help us to define our additional tables below. -% \begin{macrocode} -\@ifclassloaded{letter}{}{% other -\@ifclassloaded{slides}{}{% other - \@ifclassloaded{article}{% article - \newcommand\@tableofcontents[1]{% - \section*{\contentsname\@mkboth% - {\MakeUppercase\contentsname}% - {\MakeUppercase\contentsname}}% - \@starttoc{#1}} - \newcommand\@listoffigures[1]{% - \section*{\listfigurename\@mkboth% - {\MakeUppercase\listfigurename}% - {\MakeUppercase\listfigurename}}% - \@starttoc{#1}} - \newcommand\@listoftables[1]{% - \section*{\listtablename\@mkboth% - {\MakeUppercase\listtablename}% - {\MakeUppercase\listtablename}}% - \@starttoc{#1}}}% - {% else report or book - \newcommand\@tableofcontents[1]{% - \@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn% - \fi\chapter*{\contentsname\@mkboth% - {\MakeUppercase\contentsname}% - {\MakeUppercase\contentsname}}% - \@starttoc{#1}\if@restonecol\twocolumn\fi} - \newcommand\@listoffigures[1]{% - \@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn% - \fi\chapter*{\listfigurename\@mkboth% - {\MakeUppercase\listfigurename}% - {\MakeUppercase\listfigurename}}% - \@starttoc{#1}\if@restonecol\twocolumn\fi} - \newcommand\@listoftables[1]{% - \if@twocolumn\@restonecoltrue\onecolumn\else\@restonecolfalse\fi% - \chapter*{\listtablename\@mkboth% - {\MakeUppercase\listtablename}% - {\MakeUppercase\listtablename}}% - \@starttoc{#1}\if@restonecol\twocolumn\fi}}% -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\lrtableofcontents} -% \begin{macro}{\lrlistoffigures} -% \begin{macro}{\lrlistoftables} -% Left-to-Right tables are called now |\lr|\emph{xxx} and defined -% with the aid of three macros defined above (extensions |toc|, -% |lof|, and |lot|). -% \begin{macrocode} - \newcommand\lrtableofcontents{\@tableofcontents{toc}}% - \newcommand\lrlistoffigures{\@listoffigures{lof}}% - \newcommand\lrlistoftables{\@listoftables{lot}}% -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\rltableofcontents} -% \begin{macro}{\rllistoffigures} -% \begin{macro}{\rllistoftables} -% Right-to-Left tables will be called |\rl|\emph{xxx} and defined -% with the aid of three macros defined above (extensions |cot|, -% |fol|, and |tol|). -% \begin{macrocode} - \newcommand\rltableofcontents{\@tableofcontents{cot}}% - \newcommand\rllistoffigures{\@listoffigures{fol}}% - \newcommand\rllistoftables{\@listoftables{tol}}% -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\tableofcontents} -% \begin{macro}{\listoffigures} -% \begin{macro}{\listoftables} -% Let |\|\emph{xxx} be |\rl|\emph{xxx} if the current direction is -% Right-to-Left and |\lr|\emph{xxx} if it is Left-to-Right. -% \begin{macrocode} - \renewcommand\tableofcontents{\if@rl\rltableofcontents% - \else\lrtableofcontents\fi} - \renewcommand\listoffigures{\if@rl\rllistoffigures% - \else\lrlistoffigures\fi} - \renewcommand\listoftables{\if@rl\rllistoftables% - \else\lrlistoftables\fi}}} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@dottedtocline} -% The following makes problems when making a Right-to-Left tables, -% since it uses \cs{leftskip} and \cs{rightskip} which are both -% mode dependent. -% \begin{macrocode} -\def\@dottedtocline#1#2#3#4#5{% - \ifnum #1>\c@tocdepth \else - \vskip \z@ \@plus.2\p@ - {\if@rl\rightskip\else\leftskip\fi #2\relax - \if@rl\leftskip\else\rightskip\fi \@tocrmarg \parfillskip - -\if@rl\leftskip\else\rightskip\fi - \parindent #2\relax\@afterindenttrue - \interlinepenalty\@M - \leavevmode - \@tempdima #3\relax - \advance\if@rl\rightskip\else\leftskip\fi \@tempdima - \null\nobreak\hskip -\if@rl\rightskip\else\leftskip\fi - {#4}\nobreak - \leaders\hbox{$\m@th - \mkern \@dotsep mu\hbox{.}\mkern \@dotsep - mu$}\hfill - \nobreak - \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor \beginL#5\endL}% - \par}% - \fi} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\l@part} -% This standard macro was redefined for table of contents since it -% uses \cs{rightskip} which is mode dependent. -% \begin{macrocode} -\@ifclassloaded{letter}{}{% other -\@ifclassloaded{slides}{}{% other -\renewcommand*\l@part[2]{% - \ifnum \c@tocdepth >-2\relax - \addpenalty{-\@highpenalty}% - \addvspace{2.25em \@plus\p@}% - \begingroup - \setlength\@tempdima{3em}% - \parindent \z@ \if@rl\leftskip\else\rightskip\fi \@pnumwidth - \parfillskip -\@pnumwidth - {\leavevmode - \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss#2}}\par - \nobreak - \global\@nobreaktrue - \everypar{\global\@nobreakfalse\everypar{}}% - \endgroup - \fi}}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@part} -% Part is redefined to support new Right-to-Left table of contents -% (|cot|) as well as the Left-to-Right one (|toc|). -% \begin{macrocode} -\@ifclassloaded{article}{% article class - \def\@part[#1]#2{% - \ifnum \c@secnumdepth >\m@ne - \refstepcounter{part}% - \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% - \addcontentsline{cot}{part}{\thepart\hspace{1em}#1}% - \else - \addcontentsline{toc}{part}{#1}% - \addcontentsline{cot}{part}{#1}% - \fi - {\parindent \z@ \raggedright - \interlinepenalty \@M - \normalfont - \ifnum \c@secnumdepth >\m@ne - \Large\bfseries \partname~\thepart - \par\nobreak - \fi - \huge \bfseries #2% - \markboth{}{}\par}% - \nobreak - \vskip 3ex - \@afterheading}% -}{% report and book classes - \def\@part[#1]#2{% - \ifnum \c@secnumdepth >-2\relax - \refstepcounter{part}% - \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% - \addcontentsline{cot}{part}{\thepart\hspace{1em}#1}% - \else - \addcontentsline{toc}{part}{#1}% - \addcontentsline{cot}{part}{#1}% - \fi - \markboth{}{}% - {\centering - \interlinepenalty \@M - \normalfont - \ifnum \c@secnumdepth >-2\relax - \huge\bfseries \partname~\thepart - \par - \vskip 20\p@ - \fi - \Huge \bfseries #2\par}% - \@endpart}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@sect} -% Section was redefined from the \pkg{latex.ltx} file. It is -% changed to support both Left-to-Right (|toc|) and Right-to-Left -% (|cot|) table of contents simultaneously. -% \begin{macrocode} -\def\@sect#1#2#3#4#5#6[#7]#8{% - \ifnum #2>\c@secnumdepth - \let\@svsec\@empty - \else - \refstepcounter{#1}% - \protected@edef\@svsec{\@seccntformat{#1}\relax}% - \fi - \@tempskipa #5\relax - \ifdim \@tempskipa>\z@ - \begingroup - #6{% - \@hangfrom{\hskip #3\relax\@svsec}% - \interlinepenalty \@M #8\@@par}% - \endgroup - \csname #1mark\endcsname{#7}% - \addcontentsline{toc}{#1}{% - \ifnum #2>\c@secnumdepth \else - \protect\numberline{\csname the#1\endcsname}% - \fi - #7}% - \addcontentsline{cot}{#1}{% - \ifnum #2>\c@secnumdepth \else - \protect\numberline{\csname the#1\endcsname}% - \fi - #7}% - \else - \def\@svsechd{% - #6{\hskip #3\relax - \@svsec #8}% - \csname #1mark\endcsname{#7}% - \addcontentsline{toc}{#1}{% - \ifnum #2>\c@secnumdepth \else - \protect\numberline{\csname the#1\endcsname}% - \fi - #7}% - \addcontentsline{cot}{#1}{% - \ifnum #2>\c@secnumdepth \else - \protect\numberline{\csname the#1\endcsname}% - \fi - #7}}% - \fi - \@xsect{#5}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@caption} -% Caption was redefined from the \pkg{latex.ltx} file. It is -% changed to support Left-to-Right list of figures and list of -% tables (|lof| and |lot|) as well as new Right-to-Left lists -% (|fol| and |tol|) simultaneously. -% \begin{macrocode} -\long\def\@caption#1[#2]#3{% - \par - \addcontentsline{\csname ext@#1\endcsname}{#1}% - {\protect\numberline{\csname the#1\endcsname}% - {\ignorespaces #2}}% - \def\@fignm{figure} - \ifx#1\@fignm\addcontentsline{fol}{#1}% - {\protect\numberline{\csname the#1\endcsname}% - {\ignorespaces #2}}\fi% - \def\@tblnm{table} - \ifx#1\@tblnm\addcontentsline{tol}{#1}% - {\protect\numberline{\csname the#1\endcsname}% - {\ignorespaces #2}}\fi% - \begingroup - \@parboxrestore - \if@minipage - \@setminipage - \fi - \normalsize - \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par - \endgroup} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\l@chapter} -% This standard macro was redefined for table of contents since it -% uses \cs{rightskip} which is mode dependent. -% \begin{macrocode} -\@ifclassloaded{letter}{}{% -\@ifclassloaded{slides}{}{% - \@ifclassloaded{article}{}{% - \renewcommand*\l@chapter[2]{% - \ifnum \c@tocdepth >\m@ne - \addpenalty{-\@highpenalty}% - \vskip 1.0em \@plus\p@ - \setlength\@tempdima{1.5em}% - \begingroup - \parindent \z@ \if@rl\leftskip\else\rightskip\fi \@pnumwidth - \parfillskip -\@pnumwidth - \leavevmode \bfseries - \advance\if@rl\rightskip\else\leftskip\fi\@tempdima - \hskip -\if@rl\rightskip\else\leftskip\fi - #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss#2}\par - \penalty\@highpenalty - \endgroup - \fi}}}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\l@section} -% \begin{macro}{\l@subsection} -% \begin{macro}{\l@subsubsection} -% \begin{macro}{\l@paragraph} -% \begin{macro}{\l@subparagraph} -% The toc entry for section did not work in article style. -% Also it does not print dots, which is funny when most of your -% work is divided into sections. -% -% It was revised to use |\@dottedtocline| as in \pkg{report.sty} -% (by Yaniv Bargury) and was updated later for all kinds of -% sections (by Boris Lavva). -% \begin{macrocode} -\@ifclassloaded{article}{% -\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}} -\renewcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}} -\renewcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}} -\renewcommand*\l@paragraph{\@dottedtocline{4}{10em}{5em}} -\renewcommand*\l@subparagraph{\@dottedtocline{5}{12em}{6em}}}{} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \subsubsection{Two-column mode} -% -% This is the support of \texttt{twocolumn} option for the standard -% \LaTeXe\ classes. -% The following code was originally borrowed from the Arab\TeX\ -% package, file \pkg{latexext.sty}, copyright by Klaus Lagally, -% Institut fuer Informatik, Universitaet Stuttgart. It was updated -% for this package by Boris Lavva. -% -% \begin{macro}{\@outputdblcol} -% \begin{macro}{\set@outputdblcol} -% \begin{macro}{rl@outputdblcol} -% First column is \cs{@leftcolumn} will be shown at the right side, -% Second column is \cs{@outputbox} will be shown at the left side. -% -% |\set@outputdblcol| IS CURRENTLY DISABLED. TODO: REMOVE IT [tzafrir] -% \begin{macrocode} -\let\@@outputdblcol\@outputdblcol -%\def\set@outputdblcol{% -% \if@rl\renewcommand{\@outputdblcol}{\rl@outputdblcol}% -% \else\renewcommand{\@outputdblcol}{\@@outputdblcol}\fi} -\renewcommand{\@outputdblcol}{% - \if@rlmain% - \rl@outputdblcol% - \else% - \@@outputdblcol% - \fi% -} -\newcommand{\rl@outputdblcol}{% - \if@firstcolumn - \global \@firstcolumnfalse - \global \setbox\@leftcolumn \box\@outputbox - \else - \global \@firstcolumntrue - \setbox\@outputbox \vbox {\hb@xt@\textwidth {% - \hskip\columnwidth% - \hfil\vrule\@width\columnseprule\hfil - \hb@xt@\columnwidth {% - \box\@leftcolumn \hss}% - \hb@xt@\columnwidth {% - \hskip-\textwidth% - \box\@outputbox \hss}% - \hskip\columnsep% - \hskip\columnwidth}}% - \@combinedblfloats - \@outputpage - \begingroup - \@dblfloatplacement - \@startdblcolumn - \@whilesw\if@fcolmade \fi - {\@outputpage - \@startdblcolumn}% - \endgroup - \fi} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \subsubsection{Footnotes} -% -% \begin{macro}{\footnoterule} -% The Right-to-Left footnote rule is simply reversed default -% Left-to-Right one. Footnotes can be used in RL or LR main -% modes, but changing mode while a footnote is pending is still -% unsolved. -% \begin{macrocode} -\let\@@footnoterule=\footnoterule -\def\footnoterule{\if@rl\hb@xt@\hsize{\hss\vbox{\@@footnoterule}}% - \else\@@footnoterule\fi} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Headings and two-side support} -% -% When using \texttt{headings} or \texttt{myheadings} modes, we -% have to ensure that the language and direction of heading is the -% same as the whole chapter/part of the document. This is -% implementing by setting special variable \cs{headlanguage} when -% starting new chapter/part. -% -% In addition, when selecting the \texttt{twoside} option (default in -% \texttt{book} document class), the LR and RL modes need to be set -% properly for things on the heading and footing. This is done -% here too. -% -% \begin{macro}{ps@headings} -% \begin{macro}{ps@myheadings} -% \begin{macro}{headeven} -% \begin{macro}{headodd} -% First, we will support the standard \pkg{letter} class: -% \begin{macrocode} -\@ifclassloaded{letter}{% - \def\headodd{\protect\if@rl\beginR\fi\headtoname{} - \ignorespaces\toname - \hfil \@date - \hfil \pagename{} \thepage\protect\if@rl\endR\fi} - \if@twoside - \def\ps@headings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@oddhead{\select@language{\headlanguage}\headodd} - \let\@evenhead\@oddhead} - \else - \def\ps@headings{% - \let\@oddfoot\@empty - \def\@oddhead{\select@language{\headlanguage}\headodd}} - \fi - \def\headfirst{\protect\if@rl\beginR\fi\fromlocation \hfill % - \telephonenum\protect\if@rl\endR\fi} - \def\ps@firstpage{% - \let\@oddhead\@empty - \def\@oddfoot{\raisebox{-45\p@}[\z@]{% - \hb@xt@\textwidth{\hspace*{100\p@}% - \ifcase \@ptsize\relax - \normalsize - \or - \small - \or - \footnotesize - \fi - \select@language{\headlanguage}\headfirst}}\hss}} -% - \renewcommand{\opening}[1]{% - \let\headlanguage=\languagename% - \ifx\@empty\fromaddress% - \thispagestyle{firstpage}% - {\raggedleft\@date\par}% - \else % home address - \thispagestyle{empty}% - {\raggedleft - \if@rl\begin{tabular}{@{\beginR\csname% - to\@rllanguagename\endcsname}r@{\endR}}\ignorespaces - \fromaddress \\*[2\parskip]% - \@date \end{tabular}\par% - \else\begin{tabular}{l}\ignorespaces - \fromaddress \\*[2\parskip]% - \@date \end{tabular}\par% - \fi}% - \fi - \vspace{2\parskip}% - {\raggedright \toname \\ \toaddress \par}% - \vspace{2\parskip}% - #1\par\nobreak} -} -% \end{macrocode} -% Then, the \pkg{article}, \pkg{report} and \pkg{book} document -% classes are supported. Note, that in one-sided mode -% \cs{markright} was changed to \cs{markboth}. -% \begin{macrocode} -{% article, report, book - \def\headeven{\protect\if@rl\beginR\thepage\hfil\rightmark\endR - \protect\else\thepage\hfil{\slshape\leftmark} - \protect\fi} - \def\headodd{\protect\if@rl\beginR\leftmark\hfil\thepage\endR - \protect\else{\slshape\rightmark}\hfil\thepage - \protect\fi} - \@ifclassloaded{article}{% article - \if@twoside % two-sided - \def\ps@headings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\select@language{\headlanguage}\headeven}% - \def\@oddhead{\select@language{\headlanguage}\headodd}% - \let\@mkboth\markboth - \def\sectionmark##1{% - \markboth {\MakeUppercase{% - \ifnum \c@secnumdepth >\z@ - \thesection\quad - \fi - ##1}}{}}% - \def\subsectionmark##1{% - \markright{% - \ifnum \c@secnumdepth >\@ne - \thesubsection\quad - \fi - ##1}}} - \else % one-sided - \def\ps@headings{% - \let\@oddfoot\@empty - \def\@oddhead{\headodd}% - \let\@mkboth\markboth - \def\sectionmark##1{% - \markboth{\MakeUppercase{% - \ifnum \c@secnumdepth >\m@ne - \thesection\quad - \fi - ##1}}{\MakeUppercase{% - \ifnum \c@secnumdepth >\m@ne - \thesection\quad - \fi - ##1}}}} - \fi -% - \def\ps@myheadings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\select@language{\headlanguage}\headeven}% - \def\@oddhead{\select@language{\headlanguage}\headodd}% - \let\@mkboth\@gobbletwo - \let\sectionmark\@gobble - \let\subsectionmark\@gobble - }}{% report and book - \if@twoside % two-sided - \def\ps@headings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\select@language{\headlanguage}\headeven} - \def\@oddhead{\select@language{\headlanguage}\headodd} - \let\@mkboth\markboth - \def\chaptermark##1{% - \markboth{\MakeUppercase{% - \ifnum \c@secnumdepth >\m@ne - \@chapapp\ \thechapter. \ % - \fi - ##1}}{}}% - \def\sectionmark##1{% - \markright {\MakeUppercase{% - \ifnum \c@secnumdepth >\z@ - \thesection. \ % - \fi - ##1}}}} - \else % one-sided - \def\ps@headings{% - \let\@oddfoot\@empty - \def\@oddhead{\select@language{\headlanguage}\headodd} - \let\@mkboth\markboth - \def\chaptermark##1{% - \markboth{\MakeUppercase{% - \ifnum \c@secnumdepth >\m@ne - \@chapapp\ \thechapter. \ % - \fi - ##1}}{\MakeUppercase{% - \ifnum \c@secnumdepth >\m@ne - \@chapapp\ \thechapter. \ % - \fi - ##1}}}} - \fi - \def\ps@myheadings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\select@language{\headlanguage}\headeven}% - \def\@oddhead{\select@language{\headlanguage}\headodd}% - \let\@mkboth\@gobbletwo - \let\chaptermark\@gobble - \let\sectionmark\@gobble - }}} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% -% -% \subsubsection{Postscript Porblems} -% Any command that is implemented by PostScript directives, e.g -% commands from the ps-tricks package, needs to be fixed, because the -% PostScript directives are being interpeted after the document has been -% converted by \TeX to visual Hebrew (DVI, PostScript and PDF have visual -% Hebrew). -% -% For instance: Suppose you wrote in your document: -% -% |\textcolor{cyan}{some ltr text}| -% -% This would be interpeted by \TeX to something like: -% -% |[postscript:make color cyan]some LTR text[postscript:make color black]| -% -% -% However, with the bidirectionality support we get: -% -% |\textcolor{cyan}{\hebalef\hebbet}| -% -% Translated to: -% -% |[postscript:make color black]{bet}{alef}[postscript:make color cyan]| -% -% While we want: -% -% |[postscript:make color cyan]{bet}{alef}[postscript:make color black]| -% -% The following code will probably work at least with code that stays in the -% same line: -% \begin{macro}{@textcolor} -% \begin{macrocode} -\AtBeginDocument{% - %I assume that \@textcolor is only defined by the package color - \ifx\@textcolor\@undefined\else% - % If that macro was defined before the beginning of the document, - % that is: the package was loaded: redefine it with bidi support - \def\@textcolor#1#2#3{% - \if@rl% - \beginL\protect\leavevmode{\color#1{#2}\beginR#3\endR}\endL% - \else% - \protect\leavevmode{\color#1{#2}#3}% - \fi% - }% - \fi% -} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\thetrueSlideCounter} -% This macro probably needs to be overriden for when using |prosper|, -% (waiting for feedback. Tzafrir) -% \begin{macrocode} -\@ifclassloaded{prosper}{% - \def\thetrueSlideCounter{\arabicnorl{trueSlideCounter}} -}{} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Miscellaneous internal \LaTeX\ macros} -% -% \begin{macro}{\raggedright} -% \begin{macro}{\raggedleft} -% \cs{raggedright} was changed from \pkg{latex.ltx} file to support -% Right-to-Left mode, because of the bug in its implementation. -% \begin{macrocode} -\def\raggedright{% - \let\\\@centercr - \leftskip\z@skip\rightskip\@flushglue - \parindent\z@\parfillskip\z@skip} -% \end{macrocode} -% Swap meanings of \cs{raggedright} and \cs{raggedleft} in -% Right-to-Left mode. -% \begin{macrocode} -\let\@@raggedleft=\raggedleft -\let\@@raggedright=\raggedright -\renewcommand\raggedleft{\if@rl\@@raggedright% - \else\@@raggedleft\fi} -\renewcommand\raggedright{\if@rl\@@raggedleft% - \else\@@raggedright\fi} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\author} -% \cs{author} is inserted with \texttt{tabular} environment, and -% will be used in restricted horizontal mode. Therefore we have to -% add explicit direction change command when in Right-to-Left -% mode. -% \begin{macrocode} -\let\@@author=\author -\renewcommand{\author}[1]{\@@author{\if@rl\beginR #1\endR\else #1\fi}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\MakeUppercase} -% \begin{macro}{\MakeLowercase} -% There are no uppercase and lowercase letters in most -% Right-to-Left languages, therefore we should redefine -% \cs{MakeUppercase} and \cs{MakeLowercase} \LaTeXe\ commands. -% \begin{macrocode} -\let\@@MakeUppercase=\MakeUppercase -\def\MakeUppercase#1{\if@rl#1\else\@@MakeUppercase{#1}\fi} -\let\@@MakeLowercase=\MakeLowercase -\def\MakeLowercase#1{\if@rl#1\else\@@MakeLowercase{#1}\fi} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\underline} -% We should explicitly use \cs{L} and \cs{R} commands in -% \cs{underline}d text. -% \begin{macrocode} -\let\@@@underline=\underline -\def\underline#1{\@@@underline{\if@rl\R{#1}\else #1\fi}} -% \end{macrocode} -% \end{macro} -% -% \cs{undertext} was added for \LaTeX 2.09 compatibility mode. -% \begin{macrocode} -\if@compatibility - \let\undertext=\underline -\fi -% \end{macrocode} -% -% \begin{macro}{\@xnthm} -% \begin{macro}{\@opargbegintheorem} -% The following has been inserted to correct the appearance of the -% number in \cs{newtheorem} to reorder theorem number components. A -% similar correction in the definition of \cs{@opargbegintheorem} -% was added too. -% \begin{macrocode} -\def\@xnthm#1#2[#3]{% - \expandafter\@ifdefinable\csname #1\endcsname - {\@definecounter{#1}\@addtoreset{#1}{#3}% - \expandafter\xdef\csname the#1\endcsname{\noexpand\@number - {\expandafter\noexpand\csname the#3\endcsname \@thmcountersep - \@thmcounter{#1}}}% - \global\@namedef{#1}{\@thm{#1}{#2}}% - \global\@namedef{end#1}{\@endtheorem}}} -% -\def\@opargbegintheorem#1#2#3{% - \trivlist - \item[\hskip \labelsep{\bfseries #1\ #2\ - \@brackets({#3})}]\itshape} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@chapter} -% \begin{macro}{\@schapter} -% The following was added for pretty printing of the chapter -% numbers, for supporting Right-to-Left tables (\texttt{cot}, -% \texttt{fol}, and \texttt{tol}), to save \cs{headlanguage} -% for use in running headers, and to start two-column mode -% depending on chapter's main language. -% \begin{macrocode} -\@ifclassloaded{article}{}{% - % For pretty priniting - \def\@@chapapp{Chapter} - \def\@@thechapter{\@@arabic\c@chapter} - \def\@chapter[#1]#2{% - \let\headlanguage=\languagename% - %\set@outputdblcol% - \ifnum \c@secnumdepth >\m@ne - \refstepcounter{chapter}% - \typeout{\@@chapapp\space\@@thechapter.}% - \addcontentsline{toc}{chapter}% - {\protect\numberline{\thechapter}#1} - \addcontentsline{cot}{chapter}% - {\protect\numberline{\thechapter}#1} - \else - \addcontentsline{toc}{chapter}{#1}% - \addcontentsline{cot}{chapter}{#1}% - \fi - \chaptermark{#1} - \addtocontents{lof}{\protect\addvspace{10\p@}}% - \addtocontents{fol}{\protect\addvspace{10\p@}}% - \addtocontents{lot}{\protect\addvspace{10\p@}}% - \addtocontents{tol}{\protect\addvspace{10\p@}}% - \if@twocolumn - \@topnewpage[\@makechapterhead{#2}]% - \else - \@makechapterhead{#2}% - \@afterheading - \fi} - % - \def\@schapter#1{% - \let\headlanguage=\languagename% - %\set@outputdblcol% - \if@twocolumn - \@topnewpage[\@makeschapterhead{#1}]% - \else - \@makeschapterhead{#1}% - \@afterheading - \fi}} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\appendix} -% Changed mainly for pretty printing of appendix numbers, and to -% start two-column mode with the right language (if needed). -% \begin{macrocode} -\@ifclassloaded{letter}{}{% other -\@ifclassloaded{slides}{}{% other - \@ifclassloaded{article}{% article - \renewcommand\appendix{\par - \setcounter{section}{0}% - \setcounter{subsection}{0}% - \renewcommand\thesection{\@Alph\c@section}} - }{% report and book - \renewcommand\appendix{\par - %\set@outputdblcol% - \setcounter{chapter}{0}% - \setcounter{section}{0}% - \renewcommand\@chapapp{\appendixname}% - % For pretty priniting - \def\@@chapapp{Appendix}% - \def\@@thechapter{\@@Alph\c@chapter} - \renewcommand\thechapter{\@Alph\c@chapter}}}}} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Bibliography and citations} -% -% \begin{macro}{\@cite} -% \begin{macro}{\@biblabel} -% \begin{macro}{\@lbibitem} -% Citations are produced by the macro -% |\@cite{|\emph{LABEL}|}{|\emph{NOTE}|}|. Both the citation label -% and the note is typeset in the current direction. We have to use -% \cs{@brackets} macro in \cs{@cite} and \cs{@biblabel} macros. In -% addition, when using \emph{alpha} or similar bibliography style, -% the \cs{@lbibitem} is used and have to be update to support bot -% Right-to-Left and Left-to-Right citations. -% -% \begin{macrocode} -\def\@cite#1#2{\@brackets[{#1\if@tempswa , #2\fi}]} -\def\@biblabel#1{\@brackets[{#1}]} -\def\@lbibitem[#1]#2{\item[\@biblabel{#1}\hfill]\if@filesw - {\let\protect\noexpand - \immediate - \if@rl\write\@auxout{\string\bibcite{#2}{\R{#1}}}% - \else\write\@auxout{\string\bibcite{#2}{\L{#1}}}\fi% - }\fi\ignorespaces} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{environment}{thebibliography} -% Use \cs{rightmargin} instead of \cs{leftmargin} when in RL mode. -% \begin{macrocode} -\@ifclassloaded{letter}{}{% other -\@ifclassloaded{slides}{}{% other -\@ifclassloaded{article}{% - \renewenvironment{thebibliography}[1] - {\section*{\refname\@mkboth% - {\MakeUppercase\refname}% - {\MakeUppercase\refname}}% - \list{\@biblabel{\@arabic\c@enumiv}}% - {\settowidth\labelwidth{\@biblabel{#1}}% - \if@rl\leftmargin\else\rightmargin\fi\labelwidth - \advance\if@rl\leftmargin\else\rightmargin\fi\labelsep - \@openbib@code - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}}% - \sloppy - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \sfcode`\.\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist}}% -{\renewenvironment{thebibliography}[1]{% - \chapter*{\bibname\@mkboth% - {\MakeUppercase\bibname}% - {\MakeUppercase\bibname}}% - \list{\@biblabel{\@arabic\c@enumiv}}% - {\settowidth\labelwidth{\@biblabel{#1}}% - \if@rl\leftmargin\else\rightmargin\fi\labelwidth - \advance\if@rl\leftmargin\else\rightmargin\fi\labelsep - \@openbib@code - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}}% - \sloppy - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \sfcode`\.\@m} - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist}}}} -% \end{macrocode} -% \end{environment} -% -% \begin{macro}{\@verbatim} -% All kinds of verbs (\cs{verb},\cs{verb*},\texttt{verbatim} and -% \texttt{verbatim*}) now can be used in Right-to-Left mode. Errors -% in latin mode solved too. -% \begin{macrocode} -\def\@verbatim{% - \let\do\@makeother \dospecials% - \obeylines \verbatim@font \@noligs} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@makecaption} -% Captions are set always centered. This allows us to use bilingual -% captions, for example: |\caption{\R{RLtext} \\ \L{LRtext}}|, -% which will be formatted as: -% \begin{center} -% Right to left caption here (RLtext) \\ -% Left to right caption here (LRtext) -% \end{center} -% See also \cs{bcaption} command below. -% \begin{macrocode} -\long\def\@makecaption#1#2{% - \vskip\abovecaptionskip% - \begin{center}% - #1: #2% - \end{center} \par% - \vskip\belowcaptionskip} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Additional bidirectional commands} -% -% \begin{itemize} -% \item Section headings are typeset with the default global -% direction. -% \item Text in section headings in the reverse language \emph{do -% not} have to be protected for the reflection command, as in: -% |\protect\L{|\emph{Latin Text}|}|, because \cs{L} and \cs{R} are -% robust now. -% \item Table of contents, list of figures and list of tables -% should be typeset with the \cs{tableofcontents}, -% \cs{listoffigures} and \cs{listoftables} commands respectively. -% \item The above tables will be typeset in the main direction (and -% language) in effect where the above commands are placed. -% \item Only 2 tables of each kind are supported: one for -% Right-to-Left and another for Left-to-Right directions. -% \end{itemize} -% -% How to include line to both tables? One has to use bidirectional -% sectioning commands as following: -% \begin{enumerate} -% \item Use the |\b|\emph{xxx} version of the sectioning commands -% in the text instead of the |\|\emph{xxx} version (\emph{xxx} is -% one of: \texttt{part}, \texttt{chapter}, \texttt{section}, -% \texttt{subsection}, \texttt{subsubsection}, \texttt{caption}). -% \item Syntax of the |\b|\emph{xxx} command is -% |\b|\emph{xxx}|{|\emph{RL text}|}{|\emph{LR text}|}|. -% Both arguments are typeset in proper direction by default (no -% need to change direction for the text inside). -% \item The section header inside the document will be typeset in -% the global direction in effect at the time. i.e. The |{|\emph{RL -% text}|}| will be typeset if Right-to-Left mode is in effect and -% |{|\emph{LR text}|}| otherwise. -% \end{enumerate} -% -% \begin{macro}{\bpart} -% \begin{macrocode} -\newcommand{\bpart}[2]{\part{\protect\if@rl% - #1 \protect\else #2 \protect\fi}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bchapter} -% \begin{macrocode} -\newcommand{\bchapter}[2]{\chapter{\protect\if@rl% - #1 \protect\else #2 \protect\fi}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bsection} -% \begin{macrocode} -\newcommand{\bsection}[2]{\section{\protect\if@rl% - #1 \protect\else #2 \protect\fi}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bsubsection} -% \begin{macrocode} -\newcommand{\bsubsection}[2]{\subsection{\protect\if@rl% - #1 \protect\else #2 \protect\fi}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bsubsubsection} -% \begin{macrocode} -\newcommand{\bsubsubsection}[2]{\subsubsection{\protect\if@rl% - #1 \protect\else #2 \protect\fi}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bcaption} -% \begin{macrocode} -\newcommand{\bcaption}[2]{% - \caption[\protect\if@rl \R{#1}\protect\else \L{#2}\protect\fi]{% - \if@rl\R{#1}\protect\\ \L{#2} - \else\L{#2}\protect\\ \R{#1}\fi}} -% \end{macrocode} -% \end{macro} -% -% The following definition is a modified version of \cs{bchapter}, meant -% as a bilingual twin for \cs{chapter*} and \cs{section*} -% (added by Irina Abramovici). -% -% \begin{macro}{\bchapternn} -% \begin{macrocode} -\newcommand{\bchapternn}[2]{\chapter*{\protect\if@rl% - #1 \protect\else #2 \protect\fi}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\bsectionnn} -% \begin{macrocode} -\newcommand{\bsectionnn}[2]{\section*{\protect\if@rl% - #1 \protect\else #2 \protect\fi}} -% \end{macrocode} -% \end{macro} -% -% Finally, at end of \babel\ package, the \cs{headlanguage} and -% two-column mode will be initialized according to the current -% language. -% \begin{macrocode} -\AtEndOfPackage{\rlAtEndOfPackage} -% -\def\rlAtEndOfPackage{% - \global\let\headlanguage=\languagename%\set@outputdblcol% -} -%</rightleft> -% \end{macrocode} -% -% \subsection{Hebrew calendar} -% -% The original version of the package \pkg{hebcal.sty}\footnote{The -% following description of \pkg{hebcal} package is based on the -% comments included with original source by the author, Michail -% Rozman.} for \TeX\ and \LaTeX2.09, entitled ``\TeX{} \& \LaTeX{} -% macros for computing Hebrew date from Gregorian one'' was created -% by Michail Rozman, |misha@iop.tartu.ew.su|\footnote{Please direct -% any comments, bug reports, questions, etc. about the package to -% this address.} -% -% \begin{tabular}{@{}lr@{}c@{}ll} -% Released: &Tammuz 12, 5751&--&June 24, 1991 &\\ -% Corrected:&Shebat 10, 5752&--&January 15, 1992&by Rama Porrat\\ -% Corrected:&Adar II 5, 5752&--&March 10, 1992 &by Misha\\ -% Corrected:&Tebeth, 5756 &--&January 1996 &Dan Haran\\ -% &&&&(haran@math.tau.ac.il) -% \end{tabular} -% -% The package was adjusted for \babel{} and \LaTeXe{} by Boris -% Lavva. -% -% Changes to the printing routine (only) by Ron Artstein, June 1, -% 2003. -% -% This package should be included \emph{after} the \pkg{babel} with -% \pkg{hebrew} option, as following: -% \begin{quote} -% |\documentclass[|\ldots|]{|\ldots|}|\\ -% |\usepackage[hebrew,|\ldots|,|\emph{other languages}|,| -% \ldots|]{babel}|\\ -% |\usepackage{hebcal}| -% \end{quote} -% -% Two main user-level commands are provided by this package: -% -% \DescribeMacro{\Hebrewtoday} -% Computes today's Hebrew date and prints it. If we are presently -% in Hebrew mode, the date will be printed in Hebrew, otherwise --- -% in English (like Shebat 10, 5752). -% -% \DescribeMacro{\Hebrewdate} -% Computes the Hebrew date from the given Gregorian date and -% prints it. If we are presently in Hebrew mode, the date will be -% printed in Hebrew, otherwise --- in English (like Shebat 10, -% 5752). An example of usage is shown below: -% \begin{quote} -% |\newcount\hd \newcount\hm \newcount\hy|\\ -% |\hd=10 \hm=3 \hy=1992|\\ -% |\Hebrewdate{\hd}{\hm}{\hy}| -% \end{quote} -% -% \DescribeMacro{full} -% The package option |full| sets the flag |\@full@hebrew@year|, -% which causes years from the current millenium to be printed with -% the thousands digit (he-tav-shin-samekh-gimel). Without this -% option, thousands are not printed for the current millenium. -% NOTE: should this be a command option rather than a package -% option? --RA. -% -% \subsubsection{Introduction} -% -% The Hebrew calendar is inherently complicated: it is lunisolar -- -% each year starts close to the autumn equinox, but each month must -% strictly start at a new moon. Thus Hebrew calendar must be -% harmonized simultaneously with both lunar and solar events. In -% addition, for reasons of the religious practice, the year cannot -% start on Sunday, Wednesday or Friday. -% -% For the full description of Hebrew calendar and for the list of -% references see: -% \begin{quote} -% Nachum Dershowitz and Edward M. Reingold, -% \emph{``Calendarical Calculations''}, Software--Pract.Exper., -% vol. 20 (9), pp.899--928 (September 1990). -% \end{quote} -% |C| translation of |LISP| programs from the above article -% available from Mr. Wayne Geiser, |geiser%pictel@uunet.uu.net|. -% -% The 4\textsuperscript{th} distribution (July 1989) of hdate/hcal -% (Hebrew calendar programs similar to UNIX date/cal) by Mr. Amos -% Shapir, |amos@shum.huji.ac.il|, contains short and very clear -% description of algorithms. -% -% \subsubsection{Registers, Commands, Formatting Macros} -% -% The command |\Hebrewtoday| produces today's date for Hebrew -% calendar. It is similar to the standard \LaTeXe{} command -% |\today|. In addition three numerical registers |\Hebrewday|, -% |\Hebrewmonth| and |\Hebrewyear| are set. -% For setting this registers without producing of date string -% command |\Hebrewsetreg| can be used. -% -% The command -% |\Hebrewdate{|\emph{Gday}|}{|\emph{Gmonth}|}{|\emph{Gyear}|}| -% produces Hebrew calendar date corresponding to Gregorian date -% |Gday.Gmonth.Gyear|. Three numerical registers |\Hebrewday|, -% |\Hebrewmonth| and |\Hebrewyear| are set. -% -% For converting arbitrary Gregorian date |Gday.Gmonth.Gyear| -% to Hebrew date |Hday.Hmonth.Hyear| without producing date string -% the command: -% \begin{center} -% |\HebrewFromGregorian{|\emph{Gday}|}{|\emph{Gmonth}|}{|% -% \emph{Gyear}|}{|\emph{Hday}|}{|\emph{Hmonth}|}{|\emph{Hyear}|}| -% \end{center} -% can be used. -% -% \begin{macrocode} -%<*calendar> -\newif\if@full@hebrew@year -\@full@hebrew@yearfalse -\DeclareOption{full}{\@full@hebrew@yeartrue} -\ProcessOptions -\newcount\Hebrewday \newcount\Hebrewmonth \newcount\Hebrewyear -% \end{macrocode} -% -% \begin{macro}{\Hebrewdate} -% Hebrew calendar date corresponding to Gregorian date -% |Gday.Gmonth.Gyear|. If Hebrew (right-to-left) fonts \& macros -% are not loaded, we have to use English format. -% \begin{macrocode} -\def\Hebrewdate#1#2#3{% - \HebrewFromGregorian{#1}{#2}{#3} - {\Hebrewday}{\Hebrewmonth}{\Hebrewyear}% - \ifundefined{if@rl}% - \FormatForEnglish{\Hebrewday}{\Hebrewmonth}{\Hebrewyear}% - \else% - \FormatDate{\Hebrewday}{\Hebrewmonth}{\Hebrewyear}% - \fi} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Hebrewtoday} -% Today's date in Hebrew calendar. -% \begin{macrocode} -\def\Hebrewtoday{\Hebrewdate{\day}{\month}{\year}} -\let\hebrewtoday=\Hebrewtoday -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\Hebrewsetreg} -% Set registers: today's date in hebrew calendar. -% \begin{macrocode} -\def\Hebrewsetreg{% - \HebrewFromGregorian{\day}{\month}{\year} - {\Hebrewday}{\Hebrewmonth}{\Hebrewyear}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\FormatDate} -% Prints a Hebrew calendar date |Hebrewday.Hebrewmonth.Hebrewyear|. -% \begin{macrocode} -\def\FormatDate#1#2#3{% - \if@rl% - \FormatForHebrew{#1}{#2}{#3}% - \else% - \FormatForEnglish{#1}{#2}{#3} - \fi} -% \end{macrocode} -% \end{macro} -% -% To prepare another language version of Hebrew calendar commands, -% one should change or add commands here. -% -% We start with Hebrew language macros. -% \begin{macro}{\HebrewYearName} -% Prints Hebrew year as a Hebrew number. Disambiguates strings by -% adding lamed-pe-gimel to years of the first Jewish millenium and -% to years divisible by 1000. Suppresses the thousands digit in the -% current millenium unless the package option |full| is selected. -% NOTE: should this be provided as a command option rather than a -% package option? --RA. -% \begin{macrocode} -\def\HebrewYearName#1{{% - \@tempcnta=#1\divide\@tempcnta by 1000\multiply\@tempcnta by 1000 - \ifnum#1=\@tempcnta\relax % divisible by 1000: disambiguate - \Hebrewnumeralfinal{#1}\ )\heblamed\hebpe"\hebgimel(% - \else % not divisible by 1000 - \ifnum#1<1000\relax % first millennium: disambiguate - \Hebrewnumeralfinal{#1}\ )\heblamed\hebpe"\hebgimel(% - \else - \ifnum#1<5000 - \Hebrewnumeralfinal{#1}% - \else - \ifnum#1<6000 % current millenium, print without thousands - \@tempcnta=#1\relax - \if@full@hebrew@year\else\advance\@tempcnta by -5000\fi - \Hebrewnumeralfinal{\@tempcnta}% - \else % #1>6000 - \Hebrewnumeralfinal{#1}% - \fi - \fi - \fi - \fi}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\HebrewMonthName} -% The macro |\HebrewMonthName{|\emph{month}|}{|\emph{year}|}| -% returns the name of month in the `year'. -% \begin{macrocode} -\def\HebrewMonthName#1#2{% - \ifnum #1 = 7 % - \CheckLeapHebrewYear{#2}% - \if@HebrewLeap \hebalef\hebdalet\hebresh\ \hebbet'% - \else \hebalef\hebdalet\hebresh% - \fi% - \else% - \ifcase#1% - % nothing for 0 - \or\hebtav\hebshin\hebresh\hebyod% - \or\hebhet\hebshin\hebvav\hebfinalnun% - \or\hebkaf\hebsamekh\heblamed\hebvav% - \or\hebtet\hebbet\hebtav% - \or\hebshin\hebbet\hebtet% - \or\hebalef\hebdalet\hebresh\ \hebalef'% - \or\hebalef\hebdalet\hebresh\ \hebbet'% - \or\hebnun\hebyod\hebsamekh\hebfinalnun% - \or\hebalef\hebyod\hebyod\hebresh% - \or\hebsamekh\hebyod\hebvav\hebfinalnun% - \or\hebtav\hebmem\hebvav\hebzayin% - \or\hebalef\hebbet% - \or\hebalef\heblamed\hebvav\heblamed% - \fi% - \fi} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\HebrewDayName} -% Name of day in Hebrew letters (gimatria). -% \begin{macrocode} -\def\HebrewDayName#1{\Hebrewnumeral{#1}} -% \end{macrocode} -% \end{macro} -% -% -% \begin{macro}{\FormatForHebrew} -% The macro |\FormatForHebrew{|\emph{hday}|}{|\emph{hmonth} -% |}{|\emph{hyear}|}| returns the formatted Hebrew date in Hebrew -% language. -% \begin{macrocode} -\def\FormatForHebrew#1#2#3{% - \HebrewDayName{#1}~\hebbet\HebrewMonthName{#2}{#3},~% - \HebrewYearName{#3}} -% \end{macrocode} -% \end{macro} -% -% We continue with two English language macros for Hebrew calendar. -% \begin{macro}{\HebrewMonthNameInEnglish} -% The macro |\HebrewMonthNameInEnglish{|\emph{month}|}{|% -% \emph{year}|}| is similar to |\Hebrew|\-|Month|\-|Name| described -% above. It returns the name of month in the Hebrew `year' in -% English. -% \begin{macrocode} -\def\HebrewMonthNameInEnglish#1#2{% - \ifnum #1 = 7% - \CheckLeapHebrewYear{#2}% - \if@HebrewLeap Adar II\else Adar\fi% - \else% - \ifcase #1% - % nothing for 0 - \or Tishrei% - \or Heshvan% - \or Kislev% - \or Tebeth% - \or Shebat% - \or Adar I% - \or Adar II% - \or Nisan% - \or Iyar% - \or Sivan% - \or Tammuz% - \or Av% - \or Elul% - \fi - \fi} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\FormatForEnglish} -% The macro |\FormatForEnglish{|\emph{hday}|}{|\emph{hmonth} -% |}{|\emph{hyear}|}| is similar to |\Format|\-|For|\-|Hebrew| -% macro described above and returns the formatted Hebrew date in -% English. -% \begin{macrocode} -\def\FormatForEnglish#1#2#3{% - \HebrewMonthNameInEnglish{#2}{#3} \number#1,\ \number#3} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Auxiliary Macros} -% -% \begin{macrocode} -\newcount\@common -% \end{macrocode} -% \begin{macro}{\Remainder} -% |\Remainder{|\emph{a}|}{|\emph{b}|}{|\emph{c}|}| calculates -% $c = a\%b == a-b\times\frac{a}{b}$ -% \begin{macrocode} -\def\Remainder#1#2#3{% - #3 = #1% % c = a - \divide #3 by #2% % c = a/b - \multiply #3 by -#2% % c = -b(a/b) - \advance #3 by #1}% % c = a - b(a/b) -% \end{macrocode} -% \end{macro} -% \begin{macrocode} -\newif\if@Divisible -% \end{macrocode} -% \begin{macro}{\CheckIfDivisible} -% |\CheckIfDivisible{|\emph{a}|}{|\emph{b}|}| sets -% |\@Divisibletrue| if $a\%b == 0$ -% \begin{macrocode} -\def\CheckIfDivisible#1#2{% - {% - \countdef\tmp = 0% \tmp == \count0 - temporary variable - \Remainder{#1}{#2}{\tmp}% - \ifnum \tmp = 0% - \global\@Divisibletrue% - \else% - \global\@Divisiblefalse% - \fi}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\ifundefined} -% From the \TeX book, ex. 7.7: -% \begin{quote} -% |\ifundefined{|\emph{command}|}<true text>\else<false text>\fi| -% \end{quote} -% \begin{macrocode} -\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Gregorian Part} -% -% \begin{macrocode} -\newif\if@GregorianLeap -% \end{macrocode} -% \begin{macro}{\IfGregorianLeap} -% Conditional which is true if Gregorian `year' is a leap year: -% $((year\%4==0)\wedge(year\%100\neq 0))\vee(year\%400==0)$ -% \begin{macrocode} -\def\IfGregorianLeap#1{% - \CheckIfDivisible{#1}{4}% - \if@Divisible% - \CheckIfDivisible{#1}{100}% - \if@Divisible% - \CheckIfDivisible{#1}{400}% - \if@Divisible% - \@GregorianLeaptrue% - \else% - \@GregorianLeapfalse% - \fi% - \else% - \@GregorianLeaptrue% - \fi% - \else% - \@GregorianLeapfalse% - \fi% - \if@GregorianLeap} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\GregorianDaysInPriorMonths} -% The macro |\GregorianDaysInPriorMonths{|\emph{month}|}{|^^A -% \emph{year}|}{|\emph{days}|}| calculates the number of days in -% months prior to `month' in the `year'. -% \begin{macrocode} -\def\GregorianDaysInPriorMonths#1#2#3{% - {% - #3 = \ifcase #1% - 0 \or% % no month number 0 - 0 \or% - 31 \or% - 59 \or% - 90 \or% - 120 \or% - 151 \or% - 181 \or% - 212 \or% - 243 \or% - 273 \or% - 304 \or% - 334% - \fi% - \IfGregorianLeap{#2}% - \ifnum #1 > 2% % if month after February - \advance #3 by 1% % add leap day - \fi% - \fi% - \global\@common = #3}% - #3 = \@common} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\GregorianDaysInPriorYears} -% The macro |\GregorianDaysInPriorYears{|\emph{year}|}{|^^A -% \emph{days}|}| calculates the number of days in years prior to -% the `year'. -% \begin{macrocode} -\def\GregorianDaysInPriorYears#1#2{% - {% - \countdef\tmpc = 4% % \tmpc==\count4 - \countdef\tmpb = 2% % \tmpb==\count2 - \tmpb = #1% % - \advance \tmpb by -1% % - \tmpc = \tmpb% % \tmpc = \tmpb = year-1 - \multiply \tmpc by 365% % Days in prior years = - #2 = \tmpc% % = 365*(year-1) ... - \tmpc = \tmpb% % - \divide \tmpc by 4% % \tmpc = (year-1)/4 - \advance #2 by \tmpc% % ... plus Julian leap days ... - \tmpc = \tmpb% % - \divide \tmpc by 100% % \tmpc = (year-1)/100 - \advance #2 by -\tmpc% % ... minus century years ... - \tmpc = \tmpb% % - \divide \tmpc by 400% % \tmpc = (year-1)/400 - \advance #2 by \tmpc% % ... plus 4-century years. - \global\@common = #2}% - #2 = \@common} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AbsoluteFromGregorian} -% The macro |\AbsoluteFromGregorian{|\emph{day}|}{|\emph{month}^^A -% |}{|\emph{year}|}{|\emph{absdate}|}| calculates the absolute date -% (days since $01.01.0001$) from Gregorian date |day.month.year|. -% \begin{macrocode} -\def\AbsoluteFromGregorian#1#2#3#4{% - {% - \countdef\tmpd = 0% % \tmpd==\count0 - #4 = #1% % days so far this month - \GregorianDaysInPriorMonths{#2}{#3}{\tmpd}% - \advance #4 by \tmpd% % add days in prior months - \GregorianDaysInPriorYears{#3}{\tmpd}% - \advance #4 by \tmpd% % add days in prior years - \global\@common = #4}% - #4 = \@common} -% \end{macrocode} -% \end{macro} -% -% \subsubsection{Hebrew Part} -% -% \begin{macrocode} -\newif\if@HebrewLeap -% \end{macrocode} -% \begin{macro}{\CheckLeapHebrewYear} -% Set |\@HebrewLeaptrue| if Hebrew `year' is a leap year, i.e.\ if -% $(1+7\times year)\%19 < 7$ then \emph{true} else \emph{false} -% \begin{macrocode} -\def\CheckLeapHebrewYear#1{% - {% - \countdef\tmpa = 0% % \tmpa==\count0 - \countdef\tmpb = 1% % \tmpb==\count1 -% - \tmpa = #1% - \multiply \tmpa by 7% - \advance \tmpa by 1% - \Remainder{\tmpa}{19}{\tmpb}% - \ifnum \tmpb < 7% % \tmpb = (7*year+1)%19 - \global\@HebrewLeaptrue% - \else% - \global\@HebrewLeapfalse% - \fi}} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\HebrewElapsedMonths} -% The macro |\HebrewElapsedMonths{|\emph{year}|}{|\emph{months}|}| -% determines the number of months elapsed from the Sunday prior to -% the start of the Hebrew calendar to the mean conjunction of -% Tishri of Hebrew `year'. -% \begin{macrocode} -\def\HebrewElapsedMonths#1#2{% - {% - \countdef\tmpa = 0% % \tmpa==\count0 - \countdef\tmpb = 1% % \tmpb==\count1 - \countdef\tmpc = 2% % \tmpc==\count2 -% - \tmpa = #1% % - \advance \tmpa by -1% % - #2 = \tmpa% % #2 = \tmpa = year-1 - \divide #2 by 19% % Number of complete Meton cycles - \multiply #2 by 235% % #2 = 235*((year-1)/19) -% - \Remainder{\tmpa}{19}{\tmpb}% \tmpa = years%19-years this cycle - \tmpc = \tmpb% % - \multiply \tmpb by 12% % - \advance #2 by \tmpb% % add regular months this cycle -% - \multiply \tmpc by 7% % - \advance \tmpc by 1% % - \divide \tmpc by 19% % \tmpc = (1+7*((year-1)%19))/19 - -% % number of leap months this cycle - \advance #2 by \tmpc% % add leap months -% - \global\@common = #2}% - #2 = \@common} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\HebrewElapsedDays} -% The macro |\HebrewElapsedDays{|\emph{year}|}{|\emph{days}|}| -% determines the number of days elapsed from the Sunday prior to -% the start of the Hebrew calendar to the mean conjunction of -% Tishri of Hebrew `year'. -% \begin{macrocode} -\def\HebrewElapsedDays#1#2{% - {% - \countdef\tmpa = 0% % \tmpa==\count0 - \countdef\tmpb = 1% % \tmpb==\count1 - \countdef\tmpc = 2% % \tmpc==\count2 -% - \HebrewElapsedMonths{#1}{#2}% - \tmpa = #2% % - \multiply \tmpa by 13753% % - \advance \tmpa by 5604% % \tmpa=MonthsElapsed*13758 + 5604 - \Remainder{\tmpa}{25920}{\tmpc}% \tmpc == ConjunctionParts - \divide \tmpa by 25920% -% - \multiply #2 by 29% - \advance #2 by 1% - \advance #2 by \tmpa% % #2 = 1 + MonthsElapsed*29 + -% % PartsElapsed/25920 - \Remainder{#2}{7}{\tmpa}% % \tmpa == DayOfWeek - \ifnum \tmpc < 19440% - \ifnum \tmpc < 9924% - \else% % New moon at 9 h. 204 p. or later - \ifnum \tmpa = 2% % on Tuesday ... - \CheckLeapHebrewYear{#1}% of a common year - \if@HebrewLeap% - \else% - \advance #2 by 1% - \fi% - \fi% - \fi% - \ifnum \tmpc < 16789% - \else% % New moon at 15 h. 589 p. or later - \ifnum \tmpa = 1% % on Monday ... - \advance #1 by -1% - \CheckLeapHebrewYear{#1}% at the end of leap year - \if@HebrewLeap% - \advance #2 by 1% - \fi% - \fi% - \fi% - \else% - \advance #2 by 1% % new moon at or after midday - \fi% -% - \Remainder{#2}{7}{\tmpa}% % \tmpa == DayOfWeek - \ifnum \tmpa = 0% % if Sunday ... - \advance #2 by 1% - \else% % - \ifnum \tmpa = 3% % Wednesday ... - \advance #2 by 1% - \else% - \ifnum \tmpa = 5% % or Friday - \advance #2 by 1% - \fi% - \fi% - \fi% - \global\@common = #2}% - #2 = \@common} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\DaysInHebrewYear} -% The macro |\DaysInHebrewYear{|\emph{year}|}{|\emph{days}|}| -% calculates the number of days in Hebrew `year'. -% \begin{macrocode} -\def\DaysInHebrewYear#1#2{% - {% - \countdef\tmpe = 12% % \tmpe==\count12 -% - \HebrewElapsedDays{#1}{\tmpe}% - \advance #1 by 1% - \HebrewElapsedDays{#1}{#2}% - \advance #2 by -\tmpe% - \global\@common = #2}% - #2 = \@common} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\HebrewDaysInPriorMonths} -% The macro |\HebrewDaysInPriorMonths{|\emph{month}|}{|^^A -% \emph{year}|}{|\emph{days}|}| calculates the nu\-mber of days in -% months prior to `month' in the `year'. -% \begin{macrocode} -\def\HebrewDaysInPriorMonths#1#2#3{% - {% - \countdef\tmpf= 14% % \tmpf==\count14 -% - #3 = \ifcase #1% % Days in prior month of regular year - 0 \or% % no month number 0 - 0 \or% % Tishri - 30 \or% % Heshvan - 59 \or% % Kislev - 89 \or% % Tebeth - 118 \or% % Shebat - 148 \or% % Adar I - 148 \or% % Adar II - 177 \or% % Nisan - 207 \or% % Iyar - 236 \or% % Sivan - 266 \or% % Tammuz - 295 \or% % Av - 325 \or% % Elul - 400% % Dummy - \fi% - \CheckLeapHebrewYear{#2}% - \if@HebrewLeap% % in leap year - \ifnum #1 > 6% % if month after Adar I - \advance #3 by 30% % add 30 days - \fi% - \fi% - \DaysInHebrewYear{#2}{\tmpf}% - \ifnum #1 > 3% - \ifnum \tmpf = 353% % - \advance #3 by -1% % - \fi% % Short Kislev - \ifnum \tmpf = 383% % - \advance #3 by -1% % - \fi% % - \fi% -% - \ifnum #1 > 2% - \ifnum \tmpf = 355% % - \advance #3 by 1% % - \fi% % Long Heshvan - \ifnum \tmpf = 385% % - \advance #3 by 1% % - \fi% % - \fi% - \global\@common = #3}% - #3 = \@common} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\AbsoluteFromHebrew} -% The macro |\AbsoluteFromHebrew{|\emph{day}|}{|\emph{month}^^A -% |}{|\emph{year}|}{|\emph{absdate}|}| calculates the absolute date -% of Hebrew date |day.month.year|. -% \begin{macrocode} -\def\AbsoluteFromHebrew#1#2#3#4{% - {% - #4 = #1% - \HebrewDaysInPriorMonths{#2}{#3}{#1}% - \advance #4 by #1% % Add days in prior months this year - \HebrewElapsedDays{#3}{#1}% - \advance #4 by #1% % Add days in prior years - \advance #4 by -1373429% % Subtract days before Gregorian - \global\@common = #4}% % 01.01.0001 - #4 = \@common} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\HebrewFromGregorian} -% The macro |\HebrewFromGregorian{|\emph{Gday}|}{|\emph{Gmonth}^^A -% |}{|\emph{Gyear}|}{|\emph{Hday}|}{|\emph{Hmonth}|}|\-|{|^^A -% \emph{Hyear}|}| evaluates Hebrew date |Hday|, |Hmonth|, |Hyear| -% from Gregorian date |Gday|, |Gmonth|, |Gyear|. -% \begin{macrocode} -\def\HebrewFromGregorian#1#2#3#4#5#6{% - {% - \countdef\tmpx= 17% % \tmpx==\count17 - \countdef\tmpy= 18% % \tmpy==\count18 - \countdef\tmpz= 19% % \tmpz==\count19 -% - #6 = #3% % - \global\advance #6 by 3761% approximation from above - \AbsoluteFromGregorian{#1}{#2}{#3}{#4}% - \tmpz = 1 \tmpy = 1% - \AbsoluteFromHebrew{\tmpz}{\tmpy}{#6}{\tmpx}% - \ifnum \tmpx > #4% % - \global\advance #6 by -1% Hyear = Gyear + 3760 - \AbsoluteFromHebrew{\tmpz}{\tmpy}{#6}{\tmpx}% - \fi% % - \advance #4 by -\tmpx% % Days in this year - \advance #4 by 1% % - #5 = #4% % - \divide #5 by 30% % Approximation for month from below - \loop% % Search for month - \HebrewDaysInPriorMonths{#5}{#6}{\tmpx}% - \ifnum \tmpx < #4% - \advance #5 by 1% - \tmpy = \tmpx% - \repeat% - \global\advance #5 by -1% - \global\advance #4 by -\tmpy}} -%</calendar> -% \end{macrocode} -% \end{macro} -% -% \Finale -%% -%% \CharacterTable -%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z -%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z -%% Digits \0\1\2\3\4\5\6\7\8\9 -%% Exclamation \! Double quote \" Hash (number) \# -%% Dollar \$ Percent \% Ampersand \& -%% Acute accent \' Left paren \( Right paren \) -%% Asterisk \* Plus \+ Comma \, -%% Minus \- Point \. Solidus \/ -%% Colon \: Semicolon \; Less than \< -%% Equals \= Greater than \> Question mark \? -%% Commercial at \@ Left bracket \[ Backslash \\ -%% Right bracket \] Circumflex \^ Underscore \_ -%% Grave accent \` Left brace \{ Vertical bar \| -%% Right brace \} Tilde \~} -%% -\endinput |