1%%%%%%%%%%%%%%%%%%%%%%%%%%% hescan.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2% hescan.sty 3% Scanner for ISO 8859-8 Code, loaded by hebtex.sty 4% experimental scanner for Hebrew files 5% to activate it, say "\setcode {hed}" or "\setcode {HED}" or 6% "\setcode {pccode}" or "\setcode {newcode}" or "\setcode {iso8859-8}" 7% for Hebrew Windows encoding CP1255 say "\setcode{cp1255}" 8% 07.03.2002 9%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 10% (c) Klaus Lagally 11% Institut fuer Informatik 12% Universitaet Stuttgart 13%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 15\ifx \hedatcode \undefined \else \xpa \endinput \fi 16 17\chardef \hedatcode = \catcode`\@ \catcode`\@ = 11 18 19\a@ident {hescan.sty} 20{3.10a scanner for HED and ISO 8859-8 encoding} {07.03.2002} 21 22%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 23% dynamic definitions for Hebrew 24{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9 25%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 26\gdef \sethed@codes {\seta@codes % activate and change some codes 27\globaldefs=1 28%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 29\def \sc@a {b} \def \sc@b {g} \def \sc@c {d} \def \sc@d {h} 30%\def \sc@a {v} \def \sc@b {g} \def \sc@c {d} \def \sc@d {h} 31\def \sc@e {w} \def \sc@f {z} \def \sc@g {X} \def \sc@h {C} 32\def \sc@i {y} \def \sc@j {k} \def \sc@k {k-} \def \sc@l {l} 33\def \sc@m {m} \def \sc@n {m-} \def \sc@o {n} \def \sc@p {n-} 34%\def \sc@q {s} \def \sc@r {P} \def \sc@s {f} \def \sc@t {f-} 35\def \sc@q {s} \def \sc@r {P} \def \sc@s {p} \def \sc@t {p-} 36\def \sc@u {S} \def \sc@v {S-} \def \sc@w {q} \def \sc@x {r} 37\def \sc@y {\n@xp \a@S } \def \sc@z {t} 38% 39\xpa \def \csname sc@`\endcsname {Q} 40\a@digits = {0123456789} \a@paren = {()[]} \a@first = {} 41\globaldefs=0 42} 43%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 44}% end of dynamic definitions for Hebrew: oldcode and pccode 45%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 46 47\def \hed@scan #1>{% modified scanner call: token sequence -> \a@tokens 48\iftest@scan \tracingmacros = 1 49\ifshow \else \lowercase {\a@verb #1>}\fi\fi 50\global\def \a@rest {}\global\a@tokens = {}\@ssimfalse 51\novocalize \lowercase {\sc@beg #1\@ \@@ }% transform 52\iftest@scan \tracingmacros = 0 \xpa \a@verb \xpa (\the\a@tokens )>\fi } 53 54%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 55 56\def \hed@word #1#2{% transform input into internal notation 57 \def \next {\hed@word #2}% 58\ifx #1\@ \let \next \relax \else 59\ifcat \nxp #1\relax \def \next {\hed@cs #1#2}\else % control sequence 60 \ifx #1-\def \sc@char {B}\else 61 \ifx #1`\def \sc@char {Q}\else 62 \ifcat \noexpand #1a\edef \sc@char 63 {\csname sc@#1\endcsname }% 64 \else \def \sc@char {#1}% 65 \fi\fi\fi \sc@put 66\fi\fi \next } 67 68\def \h@d@cs #1#2{% test word end 69\def \sc@char {#1}\sc@put 70\ifx #2\@ \def \next {\sc@endscan #2}\else 71\ifcat -\nxp #2 \def \next {\hed@word #2}\else 72\def \next {\sc@back #2}\fi \fi \next } 73 74\def \hed@cs #1#2{% control sequence within a word; push back? 75\xpa \ifx #1\closegeresh \def \next {\h@d@cs {\nxp \lq }#2}\else 76\xpa \ifx #1\closequote \def \next {\h@d@cs {`}#2}\else 77 \def \next {\sc@back #1#2}% 78\fi\fi \next } 79 80%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 81 82\def \hed@select {% select the new scanner 83\heb@catcodes % inside hebtex.sty; to make sure 84\let \sc@beg \hed@word \let \sc@word \hed@word 85\let \sc@back \sc@@back \let \sc@endscan \sc@@endscan 86\sethed@codes \global\let \a@scan \hed@scan 87\a@message {input encoding set to ISO 8859-8 and other Hebrew conventions}} 88 89%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 90%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 91 92\def \hwin@catcodes {% assignments for CP 1255 93\countdef \is@m=2 \is@m = 192 \is@n = 64 94\loop \catcode \is@m = 11 \lccode \is@m = \is@n 95\ifnum 255 > \is@m \advance \is@m 1 \advance \is@n 1 \repeat 96\is@m=0 \is@n=0 \catcode `\^^a0 12 } 97 98{\hwin@catcodes 99 100%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 101% dynamic definitions for Hebrew 102{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9 103%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 104\gdef \sethwin@codes {% activate and change some codes 105\globaldefs=1 106%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 107\def \sc@^^c0 {"\n@xp\a@e} \def \sc@^^c1 {"\n@xp\a@I} 108\def \sc@^^c2 {"\n@xp\a@A} \def \sc@^^c3 {"\n@xp\a@O} 109\def \sc@^^c4 {"i} \def \sc@^^c5 {"\n@xp\a@E} 110\def \sc@^^c6 {"e} \def \sc@^^c7 {"a} 111\def \sc@^^c8 {"A} \def \sc@^^c9 {"\n@xp\a@o} 112\def \sc@^^ca {L} \def \sc@^^cb {"u} 113\def \sc@^^cc {"\n@xp\a@Zu} \def \sc@^^cd {|} 114\def \sc@^^ce {B} \def \sc@^^cf {"\n@xp\a@Zo} 115 116\def \sc@^^d0 {K} \def \sc@^^d1 {"\n@xp\a@Ze} 117\def \sc@^^d2 {"\n@xp\a@Za} \def \sc@^^d3 {:} 118\def \sc@^^d4 {w-w} \def \sc@^^d5 {wy} 119\def \sc@^^d6 {y-y} \def \sc@^^d7 {@} 120\def \sc@^^d8 {@} \def \sc@^^d9 {@} \def \sc@^^da {@} \def \sc@^^db {@} 121\def \sc@^^dc {@} \def \sc@^^dd {@} \def \sc@^^de {@} \def \sc@^^df {@} 122 123\def \sc@M {M} %\def \sc@N {N} 124\def \sc@^^e0 {Q} \def \sc@^^e1 {b} \def \sc@^^e2 {g} \def \sc@^^e3 {d} 125\def \sc@^^e4 {h} \def \sc@^^e5 {w} \def \sc@^^e6 {z} \def \sc@^^e7 {X} 126\def \sc@^^e8 {C} \def \sc@^^e9 {y} \def \sc@^^ea {k} \def \sc@^^eb {k} 127\def \sc@^^ec {l} \def \sc@^^ed {m} \def \sc@^^ee {m} \def \sc@^^ef {n} 128 129\def \sc@^^f0 {n} \def \sc@^^f1 {s} \def \sc@^^f2 {P} \def \sc@^^f3 {p} 130\def \sc@^^f4 {p} \def \sc@^^f5 {S} \def \sc@^^f6 {S} \def \sc@^^f7 {q} 131\def \sc@^^f8 {r} \def\sc@^^f9{\n@xp\a@S} \def\sc@^^fa {t} \def \sc@^^fb {@} 132\def \sc@^^fc {@} \def \sc@^^fd {@} \def \sc@^^fe {@} \def \sc@^^ff {@} 133\a@digits = {0123456789} 134\a@paren = {()[]} 135\a@first = {"`^^e6} 136\globaldefs=0 } 137%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 138}% end of dynamic definitions for Hebrew, CP1255, ISO8859-8, newcode 139%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 140 141\gdef \hwin@scan #1>{% standard scanner call: token sequence -> \a@tokens 142\iftest@scan \tracingmacros = 1 143\ifshow \else \lowercase{\a@verb #1>}\fi\fi 144\global\def \a@rest {}\global\a@tokens = {}\sc@beg #1\@ \@@ 145\iftest@scan \tracingmacros = 0 % 146\xpa \a@verb \xpa (\the\a@tokens )>\fi } 147 148%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 149 150\gdef \hwin@beg {% start CP 1255 scanner 151\h@mzafalse \iz@fetfalse \@ssimfalse \novocalize % because of explicit quoting 152\hwin@word } 153 154{\catcode `\^^M=13 \endlinechar = -1 155\gdef \hwin@word #1{% transform input into internal notation 156\ifx #1\@ \def \next {\sc@endscan }\else % finished 157\if \nxp ^^M\nxp #1\def \next {\hwin@par #1}% active character 158\else \def \next {\hwin@w@rd #1}% 159\fi\fi \next }% 160} % catcode 13 161 162\gdef \hwin@w@rd #1#2{% special cases 163\case #1\of 164{ #2{\hwin@word #1-#2} 165 -{\hwin@minus #2} 166 ^^a0{\sc@back #2} 167 ^^ad{\hwin@minus #2} 168\default {\hwin@@word #1#2} 169}\endcase } 170 171\gdef \hwin@@word #1#2{% default branch 172\ifcat a\nxp #1\edef \sc@char {\csname sc@#1\endcsname }% 173\else \def \sc@char {\nxp #1}% 174\fi \sc@put 175\def \next {\hwin@word #2}% 176\next } 177 178\gdef \hwin@@word #1{% default branch 179\ifcat a\nxp #1\edef \sc@char {\csname sc@#1\endcsname }% 180\else \def \sc@char {\nxp #1}% 181\fi \sc@put \hwin@word } 182 183%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 184 185\gdef \hwin@minus {% hyphen between words 186\def \sc@char {-}\sc@put \hwin@beg } 187 188\gdef \hwin@par #1\@ \@@ {% new line, push back the rest 189\sc@back \\ #1\@ \@@ } 190 191\gdef \hwin@endscan \@@ {\global\let \a@scan \hwin@scan } 192} % \hwin@catcodes 193 194%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 195 196\def \set@hwin {% select the CP 1255 scanner 197\let \sc@beg \hwin@beg \let \sc@word \hwin@word 198\let \sc@back \sc@@back \let \sc@endscan \hwin@endscan 199\global\let \a@scan \hwin@scan \sethwin@codes 200\hwin@catcodes 201\a@message {input encoding set to Windows CP 1255 conventions}} 202 203%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 204 205\xpa \def \xpa \sc@table \xpa {\sc@table % add the Hebrew encodings 206hed\hed@select newcode\hed@select pccode\hed@select 207iso8859-8\hed@select hwin\set@hwin cp1255\set@hwin } 208 209%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 210 211\a@message {scanner for ISO 8859-8, CP1255, and other Hebrew codes installed.} 212 213\catcode `\@ = \hedatcode 214\endinput 215%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 216 217