summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/arabtex/witbhs.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-12 23:51:33 +0000
committerKarl Berry <karl@freefriends.org>2006-01-12 23:51:33 +0000
commitaec1c1b77ee51b9359530d61cc7b8df2a37c7685 (patch)
tree8b5e1e20b56e0abf130e7da219468e197cde8725 /Master/texmf-dist/tex/latex/arabtex/witbhs.sty
parente1c54083e49986785dd4d24e891b89e0772a4de1 (diff)
arabtex
git-svn-id: svn://tug.org/texlive/trunk@673 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/arabtex/witbhs.sty')
-rw-r--r--Master/texmf-dist/tex/latex/arabtex/witbhs.sty209
1 files changed, 209 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/arabtex/witbhs.sty b/Master/texmf-dist/tex/latex/arabtex/witbhs.sty
new file mode 100644
index 00000000000..9807b255658
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/arabtex/witbhs.sty
@@ -0,0 +1,209 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%% witbhs.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% witbhs.sty
+% Scanner for a variant of the encoding used in the machine-readable
+% Biblia Hebraica Stuttgartensia
+% to install it, include it as a LaTeX package or style option "witbhs"
+% with Plain TeX, say "\input witbhs.sty"
+% to activate it, say "\setcode {witbhs}
+% 14.09.2001
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% about the encoding contact: arian@th.vu.nl
+% Dr Arian J.C.Verheij
+% NWO / VU, Dpt. Biblical Studies & CS
+% De Boelelaan 1105, kr. 14A-38
+% NL 1081 HV Amsterdam
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% (c) Klaus Lagally
+% Institut fuer Informatik
+% Universitaet Stuttgart
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifx \bhsatcode \undefined \else \expandafter \endinput
+\fi % load only once
+
+\chardef \bhsatcode = \catcode`\@ \catcode`\@ = 11
+
+\a@ident {witbhs.sty} {3.10 read WITBHS Hebrew encoding} {14.09.2001}
+
+\UsePackage {bhslabel} % process BHS labels
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% dynamic definitions for WITBHS Hebrew coding
+{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
+\catcode `\"=12 \catcode `\>=11 \catcode `\&=12
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\gdef \setwitbhs@codes {% activate and change some codes
+\globaldefs=1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def \sc@A {a} \def \sc@B {b} \def \sc@C {x} \def \sc@D {d}
+\def \sc@E {e} \def\sc@F{\n@xp\a@s} \def\sc@G{g} \def \sc@H {h}
+\def \sc@I {i} \def \sc@J {y} \def \sc@K {k} \def \sc@L {l}
+\def \sc@M {m} \def \sc@N {n} \def\sc@O{\n@xp\a@o}\def \sc@P {p}
+\def \sc@Q {q} \def \sc@R {r} \def \sc@S {s} \def \sc@T {t}
+\def \sc@U {u} \def \sc@V {C} \def \sc@W {w} \def \sc@X {X}
+\def \sc@Y {S} \def \sc@Z {z} \def \sc@@ {A}
+\a@digits = {0123456789} \a@paren = {[]}
+\a@first = {>+<##&$":.,*0123456789}
+\globaldefs=0 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+}% end of dynamic definitions for WITBHS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+{\arab@codes \catcode `\> 11
+
+\gdef \witbhs@beg #1#2{% start WITBHS scanner
+\@ssimfalse \def \next {\witbhs@word #1#2}%
+\ifx #1\@\def \next {\sc@endscan #2}\else % finished
+\ifx #2\@\def \next {\witbhs@testpara #1#2}\else
+\ifx #2?\def \next {\witbhs@testpara #1#2}\else
+\fi\fi\fi \next }
+
+\gdef \witbhs@word #1#2{% transform input into internal notation
+\case #1\of
+{ \@{\sc@endscan #2}
+ ]{\witbhs@word }
+ /{\witbhs@word #2}
+ 0{\witbhs@zero #2}
+ 7{\witbhs@seven #2}
+ 12345689{\witbhs@word }
+ ?{\witbhs@query #2}
+ :{\witbhs@colon #2}
+% O{\witbhs@O #2}
+ W{\witbhs@W #2}
+ *{\witbhs@star #2}
+% #2{\witbhs@word #1|#2}
+\default {\witbhs@rest #1#2}
+}\endcase }
+
+\gdef \witbhs@rest #1#2{% transform input into internal notation
+ \def \next {\sc@put \witbhs@word #2}%
+\case #1\of
+{ .{\def \sc@char {\nxp \a@Zu }}
+ |{\def \sc@char {\nxp \a@U }}
+ '{\def \sc@char {'}}
+ >{\def \sc@char {Q}}
+ +{\def \sc@char {N}} % phantom carrier
+ ${\def \sc@char {M}} % phantom carrier
+ ={\def \sc@char {-}} % medial form at end
+ <{\def \sc@char {P}}
+ &{\def \sc@char {\nxp \a@s }}
+ ;{\def \sc@char {\nxp \a@E }}
+ -{\def \sc@char {B}}
+\default {\ifcat \nxp #1\relax \def \next {\sc@back #1{#2}}\else
+ \if \nxp #1\a@hash \def \sc@char {\nxp \a@S }\else
+ \ifcat \nxp #1a\edef \sc@char {\csname sc@#1\endcsname }%
+ \fi\fi\fi }
+}\endcase \next }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\gdef \witbhs@star {% qere / qetiv
+\def \sc@char {*}\sc@put \witbhs@word }
+
+\gdef \witbhs@colon #1{% shwa or chatef
+\def \next {\witbhs@word }%
+\ifx #1A\def \sc@char {\nxp \a@A }\else
+\ifx #1@\def \sc@char {\nxp \a@O }\else
+\ifx #1E\def \sc@char {\nxp \a@I }\else
+\def \sc@char {\nxp \a@e }\def \next {\witbhs@word #1}%
+\fi\fi\fi \sc@put \next }
+
+\iffalse
+\gdef \witbhs@O {% cholem or cholem waw
+\def \sc@char {\nxp \a@o }\sc@put \witbhs@word }
+\fi
+
+\gdef \witbhs@W #1{% waw or shureq
+\def \sc@char {w}\def \next {\witbhs@word #1}%
+\ifx #1.\def \sc@char {U}\def \next {\witbhs@word }%
+\fi \sc@put \next }
+
+\gdef \witbhs@seven #1{% meteg
+\def \next {\witbhs@word }%
+\ifx #15\def \sc@char {|}\sc@put \else
+\if\is@in@set #1\a@digits \else \def \next {\witbhs@word #1}%
+\fi\fi \next }
+
+\gdef \witbhs@zero #1{% sop pasuq and pasuq
+\def \next {\witbhs@word }%
+\ifx #10\def \sc@char {:}\sc@put \else
+%\ifx #15\def \sc@char {K}\sc@put \else
+\ifx #15\def \next {\witbhs@pasuq }\else
+\if\is@in@set #1\a@digits \else \def \next {\witbhs@word #1}%
+\fi\fi\fi \next }
+
+}% \arab@codes
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \witbhs@testpara #1#2{% single initial P ?
+\ifx #1P\def \next {\witbhs@para #1#2}%
+\else \def \next {\witbhs@word #1#2}%
+\fi \next }
+
+\def \a@c@witbhspara {% small paragraph mark
+\putwordb@x {\small \heb@font \heb@testfont
+\act@cd '164 \advance \act@cd \heb@dsp
+\space \char \act@cd \space }\test@token }
+
+\def \a@c@pasuq {% verse division
+\putwordb@x {\small $\!|\!$}\test@token }
+
+\def \witbhs@para P#1\@ \@@ {% prepare paragraph mark
+\sc@back \witbhspara #1\@ \@@ }
+
+\def \witbhs@pasuq #1\@ \@@ {% prepare verse division
+\sc@back \pasuq #1\@ \@@ }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \witbhs@query #1\@ \@@ {% new line, push back the rest
+\ifnum \bhsmode = 1 \sc@back \\#1\@ \@@ \else % finish line
+\ifnum \bhsmode = 2 \sc@back \|#1\@ \@@ \else % stretch line
+ \sc@back #1\@ \@@ % start next word
+\fi\fi }
+
+\newcount \bhsmode \bhsmode 0
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \set@witbhs {% substitute the BHS scanner
+\let \sc@beg \witbhs@beg \let \sc@word \witbhs@word
+\let \sc@back \sc@@back \let \sc@endscan \sc@@endscan
+\let \a@scan \a@@scan \setwitbhs@codes
+\let \arab@codes \wit@arab@codes
+\let \unarab@codes \wit@unarab@codes
+\a@message {input encoding set to WITBHS conventions}}
+
+\xpa \def \xpa \sc@table \xpa {\sc@table % add the BHS encoding
+witbhs\set@witbhs }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def \wit@arab@codes {% save and set special characters
+\csname originalTeX\endcsname
+\chardef \spc@de = \catcode`\ \catcode`\ = 10
+\chardef \dqc@de = \catcode`\" \catcode`\" = \@other
+\chardef \lsc@de = \catcode`\< \catcode`\< = \@other
+\chardef \gtc@de = \catcode`\> \catcode`\> = 11
+\chardef \atc@de = \catcode`\@ \catcode`\@ = 11
+\chardef \hsc@de = \catcode`\# \catcode`\# = \@other
+\chardef \amc@de = \catcode`\& \catcode`\& = \@other
+\arab@charsubdefmax \charsubdefmax \charsubdefmax \m@ne }
+
+\def \wit@unarab@codes {% reset catcodes
+\catcode`\ = \spc@de \catcode`\< = \lsc@de \catcode`\" = \dqc@de
+\catcode`\# = \hsc@de \catcode`\> = \gtc@de \catcode`\@ = \atc@de
+\catcode`\& = \amc@de
+\charsubdefmax \arab@charsubdefmax }
+
+{\catcode`\# = \@other \gdef \a@hash {#}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\a@message {scanner for WITBHS encoding installed.}
+
+\catcode `\@ = \bhsatcode
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+