1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2% atrans.sty
3% transcription module for ArabTeX
4% ZDMG Transcription
5% Encyclopedia of Islam Transcription
6% Modern Turkish Transcription
7% Urdu Transcription
8% Uighuric Transcription
9% 14.06.2003
10%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11% (c) Klaus Lagally
12%     Institut fuer Formale Methoden der Informatik
13%     Universitaet Stuttgart
14%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15% Additional Transcription Modes for Farsi:
16%      Encyclopedia Iranica      [Standard Farsi]
17%      Farsi                     [Modified Encyclopedia Iranica]
18%      Lazard                    [Philological: Gilbert Lazard, etc.]
19% (c) Adrian Rezus [adriaan@{sci,cs}.kun.nl]: Nijmegen, Nederland
20% 21.12.95
21%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
22
23\ifx \transatcode \undefined
24\chardef \transatcode = \catcode`\@            \catcode`\@ = 11
25\a@ident {atrans.sty} {3.11 generate the transliteration } {14.06.2003}
26\else \xpa \endinput
27\fi
28
29%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30
31\let \a@hyp \-		\let \a@macron \=
32\let \a@acute \'	\let \a@grave \`
33
34\gdef \a@trans #1>{% transcribe word
35\iftest@trans \tracingmacros=1
36\iftest@scan \else \a@verb (#1)>\fi\fi
37{\if@was \@vocaltrue \else \@vocalfalse \fi
38\let \- \a@hyp		\let \= \a@macron
39\let \' \a@acute	\let \` \a@grave	\def \tr@act {-}%
40\tr@aword #1|||>>%
41\if@vocal \global \@wastrue \else \global \@wasfalse \fi }%
42\iftest@trans \tracingmacros=0 \fi }
43
44%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
45
46\newif \if@vocal	\newif \ifc@p
47
48\gdef \tr@@aword #1{% transcribe rest of word
49\let \tr@old \tr@act \def \tr@act {#1}%
50\case #1\of
51{       >{\@gobble }
52    \cap {\c@ptrue \tr@aword }
53%  |"^\a@e{\tr@aword }
54      |"^{\tr@aword }
55        -{-\tr@aword }
56    XlEeQ{\csname tr@@\string #1\endcsname }
57 \a@a NUW{\setc@p #1\kill@alif }
58        P{\tr@P \tr@aword }
59      aiu{\tr@wasla #1}
60    \a@Ze{\xpa\tr@aword \tr@old }
61\default {\@vocalfalse
62        \ifcat \nxp #1-#1\else \setc@p #1%
63        \fi \tr@aword }
64}\endcase }
65
66\def \setc@p #1{% capitalize if needed
67\xpa\ifx \xpa\relax \csname tr@\string #1\endcsname \tr@@ \else
68\ifc@p \xxxpa\uppercase \xxpa{\csname tr@\string #1\endcsname }\c@pfalse
69\else \csname tr@\string #1\endcsname
70\fi\fi }
71
72\def \@gobble #1{}
73
74%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
75
76\gdef \kill@alif #1{% delete alif or waw after N, U, W, _a
77\case #1\of
78{   aAIYU{\tr@aword }
79\default {\tr@aword #1}
80}\endcase }
81
82\gdef \tr@wasla #1{% initial vowel, Arabic
83\ifiz@fet \@vocalfalse \fi
84\ifu@gh \@vocalfalse \fi
85\ifh@mza \if@vocal '\else \setc@p #1\fi
86\else \setc@p #1\fi
87\@vocaltrue \tr@aword }
88
89\gdef \tr@vowel #1{% vowel
90\setc@p #1\@vocaltrue \tr@aword }
91
92%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
93
94\gdef \sp@cw@w #1#2{% handle w after _h (Persian) specially
95\def \next {\tr@aword #2}\@vocalfalse
96\ifiz@fet \ifx #2w#1\let\next\tr@aword
97\fi\fi \next }
98
99\gdef \putw@w {\sp@cw@w w }        % w after _h (Persian): normal
100
101\gdef \killw@w {\sp@cw@w {}}       % w after _h (Persian): delete
102
103\gdef \superv@w {\sp@cw@w {$^v\!$}}% w after _h (Persian): super v
104
105\gdef \superw@w {\sp@cw@w {$^w\!$}}% w after _h (Persian): super w
106
107%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
108
109\gdef \tr@@l #1{% test assimilation after l
110\ifx #1-\def \next {\tr@@la }\else
111	\setc@p l\def \next {\tr@aword #1}%
112\fi \@vocalfalse \next }
113
114\gdef \tr@@la #1#2{% test assimilation after l-
115\case #1\of
116{	Q{\setc@p l-\tr@Q \tr@aword }	% l - Q x -> l - '
117	#2{\tr@aword #1-#2}		% l - x x -> x - x
118	\cap {\tr@@lb #2}		% l - \cap x
119\default {\setc@p l-\tr@aword #1#2}
120}\endcase }
121
122\gdef \tr@@lb #1#2{% test assimilation after l-\cap
123\case #1\of
124{	#2{\tr@aword #1-\cap #2}	% l - \cap x x -> x - \cap x
125\default {\setc@p l-\tr@aword \cap #1#2}
126}\endcase }
127
128%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
129
130\gdef \x@s #1{\oalign{#1\crcr\hidewidth \sh@ft{34}% accent for _h
131    \vbox to -.2ex {\hbox{\char'25}\vss}\hidewidth}}
132
133\gdef \x@x #1{\oalign{#1\crcr\hidewidth \sh@ft{29}% accent for .s in Urdu
134    \vbox to.2ex{\hbox{\char'177}\vss}\hidewidth}}
135
136\def \ish@ft #1{\dimen\z@.00#1ex\multiply\dimen\z@\fontdimen1\font
137  \kern.0156\dimen\z@} % positive kern for slant
138
139\def \rsh@ft #1#2{\ish@ft{#1}#2\sh@ft{#1}}
140
141%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
142
143\def \tr@def #1#2{% define \tr@#1 as {#2}
144\xpa \gdef \csname tr@\string #1\endcsname {#2}}
145
146\def \tr@cap #1{\ifc@p \uppercase {#1}\else #1\fi }
147
148\def \tr@ng {\tr@cap ng}	\def \tr@ny {\tr@cap ny}
149\def \tr@kh {\tr@cap kh}	\def \tr@th {\tr@cap th}
150\def \tr@dh {\tr@cap dh}	\def \tr@bh {\tr@cap bh}
151\def \tr@ph {\tr@cap ph}	\def \tr@zh {\tr@cap zh}
152\def \tr@sh {\tr@cap sh}	\def \tr@ch {\tr@cap ch}
153\def \tr@gh {\tr@cap gh}	\def \tr@af {\tr@cap {\'d}h}
154\def \tr@ag {\tr@cap {\'t}h}	\def \tr@aj {\tr@cap {\v{c}}h}
155
156%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
157{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
158\gdef \tr@zdmg {% define character macros for transliteration
159%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
160\let \specw@w \killw@w	% special handling of w after .h in Farsi
161\gdef \tr@@e ##1{% test for ee -> ey
162	\ifx ##1e\def \next {\setc@p e\tr@aword y}\else
163	\def \next {\setc@p e\tr@aword ##1}\fi \next}
164\gdef \tr@@E ##1{% test for Ee -> ey
165	\ifx ##1e\def \next {\setc@p e\tr@aword y}\else
166	\def \next {\setc@p E\tr@aword ##1}\fi \next}
167\gdef \tr@@Q ##1{\tr@Q \def \next {\tr@aword ##1}%
168        \ifh@mza \let \next \tr@aword \fi \next }
169\gdef \tr@@X {\setc@p X\specw@w }
170\gdef \tr@@ {{$\bullet $}}% substitute for illegal characters
171\gdef \tr@a {a\@vocaltrue }
172\gdef \tr@b {b}   \gdef \tr@c {c}   \gdef \tr@d {d}
173\gdef \tr@e {e\@vocaltrue }
174\gdef \tr@f {f}   \gdef \tr@g {g}   \gdef \tr@h {h}
175\gdef \tr@i {i\@vocaltrue }
176\gdef \tr@j {\v{z}}   \gdef \tr@k {k}   \gdef \tr@l {l}
177\gdef \tr@m {m}   \gdef \tr@n {n}
178\gdef \tr@o {o\@vocaltrue }
179\gdef \tr@p {p}   \gdef \tr@q {q}   \gdef \tr@r {r}
180\gdef \tr@s {s}   \gdef \tr@t {t}
181\gdef \tr@u {u\@vocaltrue }
182\gdef \tr@v {v}   \gdef \tr@w {w}   \gdef \tr@x {\v{s}}
183\gdef \tr@y {y}   \gdef \tr@z {z}
184\gdef \tr@A {\=a\-\@vocaltrue }     \gdef \tr@B {}
185\gdef \tr@C {\b{t}}      \gdef \tr@D {\d{d}}
186\gdef \tr@E {\=e\-\@vocaltrue }
187\gdef \tr@F {\b{d}}      \gdef \tr@G {\v{g}}
188\gdef \tr@H {\d{h}}      \gdef \tr@I {\ifc@p\=I\else\=\i\fi\-\@vocaltrue }
189\gdef \tr@J {\v{c}}      \gdef \tr@K {\~n}
190\gdef \tr@L {y}          \gdef \tr@M {\tr@ny}
191\gdef \tr@N {n\@vocalfalse }
192\gdef \tr@O {\=o\-\@vocaltrue }
193\gdef \tr@P {\rsh@ft{07}{\ifc@p \raise .2ex \hbox {$\lhook $}\kern-.1em
194	\else \kern-.05em$\lhook$\kern-.05em\fi }\@vocalfalse }
195\gdef \tr@Q {\rsh@ft{07}{\ifc@p \raise .2ex \hbox {$\rhook $}\kern-.1em
196	\else \kern-.05em$\rhook$\kern-.05em\fi }\@vocalfalse }
197\gdef \tr@R {\.g}
198\gdef \tr@S {\d{s}}      \gdef \tr@T {t}
199\gdef \tr@U {\=u\-\@vocaltrue }
200\gdef \tr@V {\d{t}}
201\gdef \tr@W {w\@vocalfalse }
202\gdef \tr@X {\x@s{h}}
203\gdef \tr@Y {\=a\-\@vocaltrue }
204\gdef \tr@Z {\d{z}}
205\tr@def \a@a {\=a\-\@vocaltrue }
206\tr@def \a@b {\d{b}}     \tr@def \a@c {\'c}           \tr@def \a@d {\'d}
207\tr@def \a@e {\'d}       \tr@def \a@f {\d{f}}         \tr@def \a@g {g}
208\tr@def \a@h {h}         \tr@def \a@i {\ifc@p\=I\else\=\i\fi\-\@vocaltrue }
209\tr@def \a@j {\ifc@p\"I\else\"\i\fi\@vocaltrue }
210\tr@def \a@k {\ifs@nd \tr@kh\else k\fi }
211\tr@def \a@l {\~l}       \tr@def \a@m {k}             \tr@def \a@n {\d{n}}
212\tr@def \a@o {u\@vocaltrue }                          \tr@def \a@p {\tr@ng}
213\tr@def \a@q {\'r}       \tr@def \a@r {\'r}           \tr@def \a@s {\'s}
214\tr@def \a@t {\'t}       \tr@def \a@u {\=u\-\@vocaltrue }
215\tr@def \a@v {\'t}       \tr@def \a@w {{u}\@vocaltrue }
216\tr@def \a@x {v}         \tr@def \a@y {y}             \tr@def \a@z {\'z}
217\tr@def \a@A {e\@vocaltrue }
218\tr@def \a@B {\tr@@ }    \tr@def \a@C {\'c}           \tr@def \a@D  {\'{d}}
219\tr@def \a@E {\ifk@rd\v{e}\else\={e}\fi\@vocaltrue }
220\tr@def \a@F {f}         \tr@def \a@G {\'c}           \tr@def \a@H {h}
221\tr@def \a@I {\ifc@p\"J\else\"\j\fi }                 \tr@def \a@J {\.g}
222\tr@def \a@K {\d{k}}     \tr@def \a@L {k}             \tr@def \a@M {k}
223\tr@def \a@N {\d{n}}
224\tr@def \a@O {o\@vocaltrue }
225\tr@def \a@P {\={u}\@vocaltrue }                      \tr@def \a@Q {q}
226\tr@def \a@R {\.r}       \tr@def \a@S {\'s}           \tr@def \a@T {\tr@ag}
227\tr@def \a@U {u\@vocaltrue }
228\tr@def \a@V {v}         \tr@def \a@W {o}
229\tr@def \a@X {w}         \tr@def \a@Y {\=e\-}         \tr@def \a@Z {\'s}
230\tr@def \a@aa {a\@vocaltrue }	% Uighuric alif
231\tr@def \a@ab {\x@x{b}}  \tr@def \a@ac {\tr@th}       \tr@def \a@ad {\tr@dh}
232\tr@def \a@ae {\x@x{d}}  \tr@def \a@af {\tr@af}       \tr@def \a@ag {\~{n}}
233\tr@def \a@ah {\"{\j}}   \tr@def \a@aj {\v{c}h}       \tr@def \a@ak {\x@x{g}}
234\tr@def \a@al {\x@x{n}}  \tr@def \a@an {\'{n}}        \tr@def \a@ap {\tr@bh}
235\tr@def \a@aq {\tr@ph}   \tr@def \a@ar {\'{r}}        \tr@def \a@at {\'{t}}
236\tr@def \a@au {w}		% Uighuric waw with roof
237\tr@def \a@ax {k}
238\tr@def \a@aA {\'{d}}
239\tr@def \a@aJ {s}		% sin with 3 dots below
240\tr@def \a@Zz {\d{\b{d}}}        % .z, Palestinian, coded .Z
241\tr@def \a@aO {\d{\b{d}}}        % .z, Palestinian, coded .Z, (for test only)
242\gdef \tr@aword {\tr@@aword }\global \tr@nstrue }% end \tr@zdmg
243}% catcodes
244
245%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
246{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
247\catcode `\~=10
248\gdef \tr@encislam {% define Enc. of Islam transliteration
249%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
250\tr@zdmg                 \let \@ub \underbar
251\let \specw@w \killw@w	% special handling of w after .h in Farsi
252\def \tr@j {\@ub{\tr@zh}}    \def \tr@x {\@ub{\tr@sh}}
253\def \tr@C {\@ub{\tr@th}}    \def \tr@F {\@ub{\tr@dh}}
254\def \tr@G {j}		     \def \tr@J {\@ub{\tr@ch}}
255\def \tr@R {\@ub{\tr@gh}}    \def \tr@X {\@ub{\tr@kh}}
256%\def \tr@q {\d{k}} % variant qaf; uncomment if required
257%\def \tr@P {$^c$} % variant `ain; uncomment if required
258\a@message {Encyclopedia~of~Islam~transliteration.}}}
259
260%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
261{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
262\catcode `\~=10
263\gdef \tr@turk {% define character macros for modern Turkish
264%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
265\tr@zdmg
266\let \specw@w \putw@w	% no special handling of w after .h in Farsi
267\gdef \tr@e {e\@vocaltrue }     \gdef \tr@q {k}
268\gdef \tr@w {v}          	\gdef \tr@x {\c{s}}
269\gdef \tr@A {\^a\@vocaltrue }   \gdef \tr@E {\^e\@vocaltrue }
270\gdef \tr@G {c}          	\gdef \tr@H {h}
271\gdef \tr@I {\^{\i}\@vocaltrue} \gdef \tr@J {\c{c}}
272\gdef \tr@K {n}			\gdef \tr@O {\^o\@vocaltrue }
273\gdef \tr@P {\-}		\gdef \tr@R {g}
274\gdef \tr@S {s}			\gdef \tr@T {t}
275\gdef \tr@U {\^u\@vocaltrue \kill@alif }
276\gdef \tr@V {t}          	\gdef \tr@Z {z}
277\tr@def \a@j {\i\@vocaltrue }
278\tr@def \a@m {\u{g}}     	\tr@def \a@w {{\"u}\@vocaltrue }
279\tr@def \a@A {\"a\@vocaltrue }  \tr@def \a@H {}
280\tr@def \a@I {{\i}\@vocaltrue } \tr@def \a@J {\u{g}}
281\tr@def \a@L {g}         	\tr@def \a@M {n}
282\tr@def \a@O {\"o\@vocaltrue }
283\tr@def \a@P {\"o\@vocaltrue }  \tr@def \a@Q {q}
284\tr@def \a@U {\"u\@vocaltrue }  \tr@def \a@V {v}
285\catcode `\ =10
286\a@message {modern~Turkish~transliteration.}}}
287
288%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
289% Specific definitions for Persian:
290%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
291{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
292\catcode `\~=10
293\gdef \tr@enciran   {% Encyclopaedia Iranica transliteration
294%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
295\tr@zdmg                                  % start with default and modify
296\let \specw@w \superv@w	% special handling of w after .h in Farsi
297\gdef\tr@w{v\@vocalfalse}                 % EIran = Lazard <> ZDMG
298\gdef\tr@W{v\@vocalfalse}                 % EIran = Lazard <> ZDMG
299\gdef\tr@G{\v{\j}\@vocalfalse}            % EIran = Lazard <> ZDMG
300\gdef\tr@D{\.{z}\@vocalfalse}             % EIran = Lazard <> ZDMG
301\gdef\tr@C{\b{s}\@vocalfalse}             % EIran <> Lazard <> ZDMG
302\gdef\tr@F{\b{z}\@vocalfalse}             % EIran <> Lazard <> ZDMG
303\gdef\tr@R{\={g}\@vocalfalse}             % EIran <> Lazard <> ZDMG
304\gdef\tr@X{\b{k}}                         % EIran <> Lazard <> ZDMG
305\tr@def\a@H{}                             % EIran = Lazard <> ZDMG
306\a@message {Encyclopaedia~Iranica~transliteration.}}}
307
308%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
309{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
310\catcode `\~=10
311\gdef \tr@farsi {% Modified Encyclopaedia Iranica transliteration
312%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
313\tr@enciran                               % start with default and modify
314\let \specw@w \superv@w	% special handling of w after .h in Farsi
315\gdef\tr@R{\.{g}\@vocalfalse}             % ZDMG = Persian
316\gdef\tr@X{x}                             % Lazard = Persian
317\tr@def\a@H{$\hbar\!$}                    % Persian <> EIran = nil
318\a@message {Modified~Encyclopaedia~Iranica~transliteration.}}}
319
320%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
321{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
322\gdef \tr@lazard {% Philological Farsi transliteration; cf., e.g.,
323        % Gilbert Lazard
324        % "La langue des plus anciens documents de la prose persane"
325        % (Paris: Cl. Klincksieck 1963).
326%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
327\tr@enciran                               % start with default and modify
328\let \specw@w \superv@w	% special handling of w after .h in Farsi
329\gdef\tr@C{\b{s}\@vocalfalse}             % Lazard <> EIran
330\gdef\tr@C{$\theta\!$\@vocalfalse}        % Lazard <> EIran
331\gdef\tr@F{$\delta\!$\@vocalfalse}        % Lazard <> EIran <> ZDMG
332\gdef\tr@R{$\gamma\!$\@vocalfalse}        % Lazard <> EIran <> ZDMG
333\gdef\tr@X{x}                             % Lazard <> EIran <> ZDMG
334\a@message {Philological~Farsi~transliteration.}}}
335
336%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
337{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
338\catcode `\~=10
339\gdef \tr@urdu {% define Urdu transliteration
340%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
341\tr@zdmg
342\let \specw@w \killw@w	% special handling of w after .h in Farsi
343\gdef \tr@j {\.{z}}   \gdef \tr@x {\'{s}}   \gdef \tr@C {\x@x{s}}
344\gdef \tr@D {\b{z}}   \gdef \tr@F {\d{z}}   \gdef \tr@G {j}
345\gdef \tr@H {\b{h}}   \gdef \tr@J {c}       \gdef \tr@O {o\-\@vocaltrue}
346\gdef \tr@S {\b{s}}   \gdef \tr@T {t}       \gdef \tr@V {\x@x{t}}
347\gdef \tr@X {x}       \gdef \tr@Z {\x@x{z}} \tr@def \a@d {\d{d}}
348\tr@def \a@r {\d{r}}  \tr@def \a@t {\d{t}}  \tr@def \a@H {}
349\a@message {Urdu~transliteration.}}}
350
351%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
352{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
353\catcode `\~=10
354\gdef \tr@kash {% define Kashmiri transliteration
355%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
356\tr@zdmg                 \let \@ub \underbar
357\let \specw@w \putw@w	% no special handling of w after .h
358\gdef \tr@j {ts}	\gdef \tr@x {\'{s}}	\gdef \tr@C {\b{s}}
359\gdef \tr@D {\x@x{z}}	\gdef \tr@F {\b{z}}	\gdef \tr@G {j}
360\gdef \tr@H {\d{h}}	\gdef \tr@J {c}   	\gdef \tr@R {\@ub{\tr@gh}}
361\gdef \tr@S {\d{s}}	\gdef \tr@T {t}		\gdef \tr@V {\b{t}}
362\gdef \tr@X {\@ub{\tr@kh}}  			\gdef \tr@Z {\d{z}}
363\tr@def \a@d {\d{d}}	\tr@def \a@r {\d{r}}	\tr@def \a@t {\d{t}}
364\tr@def \a@Za {\d{a}}	\tr@def \a@ZA {\d{\=a}}
365\tr@def \a@Zo {\d{o}}	\tr@def \a@ZO {\d{\=o}}
366\tr@def \a@Zu {u'} 	\tr@def \a@ZU {\=u'}  	\tr@def \a@ZI {\.y}
367\a@message {Kashmiri~transliteration.}}}
368
369%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
370{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
371\catcode `\~=10
372\gdef \tr@uigh {% define Uighuric transliteration
373%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
374\tr@zdmg
375\gdef \tr@a {a}		\gdef \tr@e {e}
376\gdef \tr@i {i}		\gdef \tr@j {j}
377\gdef \tr@o {o}		\gdef \tr@u {u}
378\gdef \tr@G {\v{g}}	\gdef \tr@X {x}
379\gdef \tr@Y {}
380\tr@def \a@A {\"a}	\tr@def \a@O {\"o}
381\tr@def \a@U {\"u}	\tr@def \a@X {v}
382\a@message {Uyghuric~transliteration.}}}
383
384%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
385{\catcode `\^ 7 \catcode `\ =9 \catcode `\^^M=9 \catcode `\^^I=9
386\catcode `\~=10
387\gdef \tr@uighe {% define Uighuric English transliteration
388%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
389\tr@zdmg                 \let \@ub \underbar
390\gdef \tr@a {a}			\gdef \tr@e {e}
391\gdef \tr@i {i}			\gdef \tr@j {\@ub{\tr@zh}}
392\gdef \tr@o {o}			\gdef \tr@u {u}
393\gdef \tr@x {\@ub{\tr@sh}}      \gdef \tr@G {j}
394\gdef \tr@J {\@ub{\tr@ch}}      \gdef \tr@K {\@ub{\tr@ng}}
395\gdef \tr@R {\@ub{\tr@gh}}      \gdef \tr@X {\@ub{\tr@kh}}
396\gdef \tr@Y {}
397\tr@def \a@A {\"a}		\tr@def \a@O {\"o}
398\tr@def \a@U {\"u}		\tr@def \a@X {v}
399\a@message {Uyghuric~English~transliteration.}}}
400
401%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
402
403\def \settrans #1{% switch the transliteration
404\lowercase {\def \tr@code {#1}\begingroup
405\def \tr@lookup ##1#1##2##3\@@ {\endgroup ##2}%
406\xpa \tr@lookup \tr@table #1\tr@default \@@ }%
407\let \tr@oldcode \tr@code }
408
409\def \tr@table {% table of transliterations
410standard\tr@standard	zdmg\tr@standard	english\tr@encislam
411turk\tr@turk		urdu\tr@urdu		iranica\tr@enciran
412farsi\tr@farsi		lazard\tr@lazard	kashmiri\tr@kash
413uighur\tr@uigh 		uighure\tr@uighe }
414
415\def \tr@standard {% standard transliteration
416\ifx \tr@code \tr@oldcode \else \tr@zdmg
417\a@message {ZDMG transliteration.}\fi }
418
419\def \tr@default {% unknown transliteration
420\tr@zdmg \message {unknown transliteration `\tr@code'}%
421\a@message {ZDMG transliteration is assumed.}}
422
423%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
424
425\let \tr@oldcode \tr@code         \settrans {zdmg}        % default
426
427%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
428
429\catcode`\@ = \transatcode
430
431\endinput
432%%%%%%%%%%%%%%%%%%%%%%%%% EOF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
433