diff options
author | Karl Berry <karl@freefriends.org> | 2013-04-19 18:26:38 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-04-19 18:26:38 +0000 |
commit | 826eb267e9c472caa33e610f897b43485bb8b7bb (patch) | |
tree | 487f77e9d3a9f172cab0ea25e1e3b070566dbf55 /Master/texmf-dist/doc/latex/aramaic-serto | |
parent | a922f4993d5ce75584e05a345cf4ad0d98993f3c (diff) |
aramaic-serto
git-svn-id: svn://tug.org/texlive/trunk@30042 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/aramaic-serto')
-rw-r--r-- | Master/texmf-dist/doc/latex/aramaic-serto/README | 7 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/aramaic-serto/assyr.font | 173 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/aramaic-serto/example.ptex | 68 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/aramaic-serto/serto.font | 181 | ||||
-rwxr-xr-x | Master/texmf-dist/doc/latex/aramaic-serto/serto.py | 609 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/aramaic-serto/sertodoc.pdf | bin | 0 -> 235739 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/aramaic-serto/sertodoc.ptex | 961 |
7 files changed, 1999 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/aramaic-serto/README b/Master/texmf-dist/doc/latex/aramaic-serto/README new file mode 100644 index 00000000000..bc3c36f7c5f --- /dev/null +++ b/Master/texmf-dist/doc/latex/aramaic-serto/README @@ -0,0 +1,7 @@ +This package contains two fonts and a preprocessor to typeset the Syriac (Aramaic) language. +For more information please consult the documentation sertodoc.pdf + +Copyright 2001-2013 (c) Johannes Heinecke +This Material is subjec to the LaTeX Project Public License 1.3 +(http://ctan.org/license/lppl1.3) + diff --git a/Master/texmf-dist/doc/latex/aramaic-serto/assyr.font b/Master/texmf-dist/doc/latex/aramaic-serto/assyr.font new file mode 100644 index 00000000000..721bd32fa42 --- /dev/null +++ b/Master/texmf-dist/doc/latex/aramaic-serto/assyr.font @@ -0,0 +1,173 @@ +#FONT: 10x20 +# coding name: isolated initial medial final link +# link 0: next letter is initial +# link 1: next letter is medial +# link 2: ignore + +Q shadda 6 6 6 6 2 +a peto.ho 1 1 1 1 2 +e revo.so 2 2 2 2 2 +i .hevo.so 3 3 3 3 2 +=a zeqopo 4 4 4 4 2 +u `e.so.so 5 5 5 5 2 +A peto.ho 17 17 17 17 2 +E revo.so 18 18 18 18 2 +I .hevo.so 19 19 19 19 2 +=A zeqopo 20 20 20 20 2 +U `e.so.so 21 21 21 21 2 +P sey=am=e 7 7 7 7 2 + +# Chaldean (Eastern) Vowels +#:a peto.ho 6+22 6+22 6+22 6+22 2 +:a peto.ho 13+27 13+27 13+27 13+27 2 +:e revo.so 26 26 26 26 2 +:i .hevo.so 27 27 27 27 2 +# jod + i under yod +:iy .hevo.so 73+124+27 73+27 73+27 73+124+27 1 +:=a zeqopo 12 12 12 12 2 +:o waw-dot 13 13 13 13 0 +:ow waw+dot 79+13 79+13 79+13 79+13 0 +#:u `e.so.so 27 27 27 27 2 +:u waw+`e.so.so 79+27 79+27 79+27 79+27 0 +:uw waw+`e.so.so 79+27 79+27 79+27 79+27 0 + + + +~ blank 32 32 32 32 0 +. . 46 46 46 46 0 +#: : 58 58 58 58 0 +# Wordstretch +-- -- 45 45 45 45 1 +# character separator (to have consonant twice instead of qushshaya) +^ ^ 0 0 0 0 1 + + +# mapped to blank to write medial forms at wordends ( -m- ) +- - 32 32 32 32 1 +_ _ 95 95 95 95 1 += = 23 23 23 23 2 +# dummy. Used to insert \rukkokho ++ + 22 22 22 22 2 + +## paragraph symbols +#.X. para1 33 33 33 33 0 +#.:. para2 34 34 34 34 0 +#:: para3 35 35 35 35 0 +#:- para4 36 36 36 36 0 +#:~ para5 37 37 37 37 0 +#./. para6 38 38 38 38 0 + + +t' taw-alaf 64 64 64 64 1 +' olaf 65 65 65 65 0 +b beth 66+124 66 66 66+124 1 +v veth 98+124 98 98 98+124 1 +b+ veth 98+124 98 98 98+124 1 +g gamal 71+124 71 103 103+124 1 +j jamal 74+124 74 106 106+124 1 +.g .gamal 85+124 85 117 117+124 1 +d dalath 68 68 68 68 0 +h he 72 72 72 72 0 +w waw 79 79 79 79 0 +z zain 90 90 90 90 0 +.h .heth 105+124 105 105 105+124 1 +.t .teth 87+124 87 87 87+124 1 +y yod 73+124 73 73 73+124 1 +k kaf 81 75 75 107 1 +^k ^kaf 60 89 89 121 1 +_k _kaf 113 88 88 120 1 +k+ _kaf 113 88 88 120 1 +l lamad 76+124 76 76 76+124 1 +m mim 109 77 77 109 1 +n nun 62 78 78 110 1 +s semkath 83+124 83 83 83+124 1 +` `e 69+124 69 101 101+124 1 +p pe 80+124 80 80 80+124 1 +p+ f 112+124 112 112 112+124 1 +f f 112+124 112 112 112+124 1 +.s sade 115 115 115 115 0 +q qof 86+124 86 86 86+124 1 +r resh 82 82 82 82 0 +R reshdoubledotted 114 114 114 114 0 +^s sin 118+124 118 118 118+124 1 +t tau 84 84 84 84 0 +# dotted tau not yet defined in assy.mf +_t tau 84 84 84 84 0 + + +#TRANS: +# There must be one transcription for each token defined above +~ ~ +a a +t'a ta +e e +i i +##Changed by pcharbon 22/10/03 +o o +#o \=a +u u +A a +E e +ey \=e +Ey \=e +I i +##Changed by pcharbon 22/10/03 +O o +#O \=o +U \=u +#Changed by pcharbon 22/10/03 +a' a +e' \=e +iy \=\i{} +Iy \=\i{} +#Changed by pcharbon 22/10/03 +#o' \=o +#o' \=a +#O' \=a +=a' \=a +=a \=a +uw \=u +Uw \=u +w* o +#Changed by pcharbon 22/10/03 +#b+ v +b+ \b{b} +#changed by pcharbon 22/10/03 +#g+ \.g +g+ \=g +.g \=g +j j +d+ \b{d} +k+ \b{h} +f f +p+ \=p +t+ \b{t} +' \raise.2ex\hbox{$\rhook$} +b +g +d +h +w +z +.h \d{h} +.t \d{t} +y +^k \v{c} +_k \b{h} +k +l +m +n +s +#Does this need to be linked? I think it only substitute the mapping up to the first blank space. +#` \raise.2ex\hbox{$\lhook$}\textsuperscript{c} +` \raise.2ex\hbox{$\lhook$} \textsuperscript{c} +p +.s \d{s} +q +r +R +^s \v{s} +t +_t \b{t} +@ \textsuperscript{e}\kern-.1em diff --git a/Master/texmf-dist/doc/latex/aramaic-serto/example.ptex b/Master/texmf-dist/doc/latex/aramaic-serto/example.ptex new file mode 100644 index 00000000000..e73c0570edc --- /dev/null +++ b/Master/texmf-dist/doc/latex/aramaic-serto/example.ptex @@ -0,0 +1,68 @@ +\documentclass[12pt,a4paper]{article} +\usepackage{times} +\usepackage{serto} +\usepackage{assyr} +%\usepackage[utf8]{inputenc} + +\usepackage{parskip} + +\begin{document} + +<S>g+ommal</S> + +<S>'ep+qqatel</S> + +Stretch a word by inserting one ore more double-hyphens {\tt--}: + +<S>medem me----dem</S> + +<S>'et+qatel ktb g+oml 'ab+do</S> + +See the following phrase: % Costaz:216, §861 + +<S>men qadiy^se' ho' tetqada^s</S> + +Here it comes with transcription: +<ST>men qadiy^se' ho' tetqada^s</ST> + + +Now we typeset a complete paragraph: + + +<SERTO> +wkod .hzaw kuwmd'e da.h.tIytO': medem da`bad na.siy.ho': +lAbkuwh=y= wa'sruwh=y= wa'ytIywh=y= qdom malko'. +we'^stA`iyw lmalko' me----dem da`bad +{\sertob l'AlOhayhwn}. + +molko' deyn 'ema----r. l'o hwo' me^stAwdoyow +'e^stEwdiyt lIy dtEdba.h +l'Apoluw: na.siy.ho' 'emar. liy 'laOhe' 'ayleyn dma't`eyn. l'o +hwo' 'laOhe' 'Enuwn. qareb 'Enuwn lIy lhorko'. +\sertob +wl'O +^suwbhodhuwn dakiys.tyone' l'o ^sobeq '=no' .had menhuwn +dl'o mdaqeq '=no' `admo' lram^so'. +</SERTO> + +If you want the transcription only: + +<TRANS> +wkod .hzaw kuwmd'e da.h.tIytO': medem da`bad na.siy.ho': +lAbkuwh=y= wa'sruwh=y= wa'ytIywh=y= qdom malko'. +we'^stA`iyw lmalko' me----dem da`bad {\sertob l'AlOhayhwn}. molko' +deyn 'ema----r. l'o hwo' me^stAwdoyow 'e^stEwdiyt lIy dtEdba.h +l'Apoluw: na.siy.ho' 'emar. liy 'laOhe' 'ayleyn dma't`eyn. l'o +hwo' 'laOhe' 'Enuwn. qareb 'Enuwn lIy lhorko'. +\sertob wl'O +^suwbhodhuwn dakiys.tyone' l'o ^sobeq '=no' .had menhuwn +dl'o mdaqeq '=no' `admo' lram^so'. +</TRANS> + + +Some Aramaic text in UTF8 with transcription : + +<CT>ܠܦܘ̣ܬ̣ ܗ̱ܘ̣ ܛܶܒܐ ܕܡܰܛܝ̣ܠܰܢ ܡܶܢ̱ ܡܰܠܦܳܢܐ ܦ̇ܪܳܘܦܶܣܘ̣ܪ ܥܒܶܕܡܫܝ̣ܚܐ ܣܰܥܕܝ̣، ܗ̱ܝ̣ ܩܘ̣ܛܢܘ̣ܬ̣ܐ ܕܬܘ̣ܪܟܺܝܰܐ ܡܰܩܶܬ̣ܠܰܗ ܒܰܗܪܐ ܝܰܪܘ̣ܩܐ ܕܦܶܬܚܐ ܦܶܪܥܐ ܠܗ̱ܘ̣ ܝܘ̣ܠܦܳܢܐ ܕܗ̱ܘ̣ ܠܶـܫܳܢܐ ܣܘܪܝܝܐ ܕܡܝ̣ܬܰܩܪܶܐ ܒܗ̱ܝ̣ ܒܶܝܬ̣ ܨܰܘܒܐ ܕܗ̱ܝ̣ ܡܕܝ̣ܢ̱ܬܐ ܕܡܰܪܕܶܐ. ܒܬ̣ܪ ܡܰܐ ܒܶܛܠܢ̈ܐ ܕܗ̱ܘ̣ ܩܰܝܛܐ ܐܰܘܟܝ̣ܬ̣ ܒܗ̱ܘ̣ ܫܘ̣ܪܳܝܐ ܕܰܬܶܫܪ̈ܳܝܳܬ̣ܐ ܕܶܒܩܰܡܘ̣ܬ̣ܰܝܢܰܐ ܓܶܕ ܡܫܰܪܶܝܢ ܒܗ̱ܘ ܝܘ̣ܠܦܳܢܐ ܣܘܪܝܝܐ. ܗ̱ܘ̣ ܡܫܰܐܠܐ ܕܗ̱ܘ̣ ܦܶܪܥܐ ܕܗ̱ܘ ܠܶـܫܳܢܐ ܣܘܪܝܝܐ ܒܡܰܪܕܶܐ ܓܶܕܗܳܘܶܐ ܗ̱ܘ̣ ܡܰܠܦܳܢܐ ܘܦ̇ܪܳܘܦܶܣܘܪ ܥܒܶܕܡܫܝ̣ܚܐ ܣܰܥܕܝ̣ ܕܟܳܥܳܡܰܪ ܗܳܫܳܐܝܬ̣ ܒܐܰܡܶܪܝ̣ܟܰܐ. ܕܐܶܢ </CT> + + +\end{document} diff --git a/Master/texmf-dist/doc/latex/aramaic-serto/serto.font b/Master/texmf-dist/doc/latex/aramaic-serto/serto.font new file mode 100644 index 00000000000..c77451ba77d --- /dev/null +++ b/Master/texmf-dist/doc/latex/aramaic-serto/serto.font @@ -0,0 +1,181 @@ +# incput coidng for serto[b]10.mf +# preprocessor serto.py + +# Designed and (c) by Johannes Heinecke +# <johannes(dot)heinecke(at)wanadoo(dot)fr> +# Please send any improvements, corrections, suggestions, enhancements etc. +# to the Author! + +# Corrections by Patrick Charbonneau 22th October 03 +# pcharbon(at)fas(dot)harvard(dot)edu with the help of npatel(at)fas(dot)harvard(dot)edu + +# Version 0.5 as of 2nd November 2003 + +#FONT: 10x20 +# coding name: isolated initial medial final link +# value of "link" +# 0: next letter is initial +# 1: next letter is medial +# 2: ignore + + +# Vowel symbols MUST be at positions between 0 and 31 in the +# fonttable (this is hardwired in serto.py :-( +# 0-15 is for superscript symbols, 16-31 for subscript symbols +Q shadda 6 6 6 6 2 +a peto.ho 1 1 1 1 2 +e revo.so 2 2 2 2 2 +i .hevo.so 3 3 3 3 2 +=a zeqopo 4 4 4 4 2 +o waw-dot 159 159 160 160 0 +u `e.so.so 5 5 5 5 2 +A peto.ho 17 17 17 17 2 +E revo.so 18 18 18 18 2 +I .hevo.so 19 19 19 19 2 +=A zeqopo 20 20 20 20 2 +U `e.so.so 21 21 21 21 2 +P sey=am=e 7 7 7 7 2 + + +# Chaldean (Eastern) Vowels +#:a peto.ho 6+22 6+22 6+22 6+22 2 +:a peto.ho 13+27 13+27 13+27 13+27 2 +:e revo.so 26 26 26 26 2 +:i .hevo.so 27 27 27 27 2 +# jod + i under yod +:iy .hevo.so 105+27 108+27 107+27 106+27 1 +:=a zeqopo 12 12 12 12 2 +:o waw-dot 13 13 13 13 0 +:ow waw+dot 79+13 79+13 80+13 80+13 0 +:u `e.so.so 27 27 27 27 2 +:uw waw+`e.so.so 79+27 79+27 80+27 80+27 0 + +~ blank 32 32 32 32 0 +. . 46 46 46 46 0 +: : 58 58 58 58 0 +# Wordstretch +-- -- 45 45 45 45 1 +# character separator (to have consonant twice instead of qushshaya) +^ ^ 0 0 0 0 1 + + +# mapped to blank to write medial forms at wordends ( -m- ) +- - 32 32 32 32 1 +_ _ 95 95 95 95 1 += linea_occultans_below 23 23 23 23 2 +== linea_occultans_above 8 8 8 8 2 +# dummy. Used to insert rukkokho ++ + 22 22 22 22 2 +# used to insert qu^s^soyo +* * 6 6 6 6 2 + +# paragraph symbols +.X. para1 33 33 33 33 0 +.:. para2 34 34 34 34 0 +:: para3 35 35 35 35 0 +:- para4 36 36 36 36 0 +.~. para5 37 37 37 37 0 +./. para6 38 38 38 38 0 + +'l olaflamad 171 171 171 171 1 +l' lamadolaf 172 172 173 173 0 +' olaf 65 65 66 66 0 +b beth 67 70 69 68 1 +g gamal 71 74 73 72 1 +d dalath 75 75 76 76 0 +h he 77 77 78 78 0 +w waw 79 79 80 80 0 +z zain 81 81 82 82 0 +.h .heth 83 86 85 84 1 +.t .teth 87 90 89 88 1 +y yod 105 108 107 106 1 +k kaf 109 112 111 110 1 +l lamad 113 116 115 114 1 +m mim 117 120 119 118 1 +n nun 121 130 129 122 1 +s semkath 131 134 133 132 1 +` `e 135 138 137 136 1 +p pe 139 142 141 140 1 +.s sade 143 143 144 144 0 +q qof 145 148 147 146 1 +r resh 149 149 150 150 0 +R reshdoubledotted 157 157 158 158 0 +^s sin 151 154 153 152 1 +t tau 155 155 156 156 0 + +#TRANS: +~ ~ +a a +e e +i i +##Changed by pcharbon 22/10/03 +o o +#o \=a +#Changed by pcharbon 22/10/03 (deleted by jhe, 28.10.2003) +u u +#u \=u +A a +E e +ey \=e +Ey \=e +I i +##Changed by pcharbon 22/10/03 +O o +#O \=o +#Changed by pcharbon 22/10/03 (deleted by jhe, 28.10.2003) +#U u +U \=u +#Changed by pcharbon 22/10/03 +a' a +e' \=e +iy \=\i{} +Iy \=\i{} +#Changed by pcharbon 22/10/03 +#o' \=o +#o' \=a +#O' \=a +=a' \=a +=a \=a +l'=a l\=a +'la \raise.2ex\hbox{$\rhook$}ala +uw \=u +Uw \=u +w* o +#Changed by pcharbon 22/10/03 +#b+ v +b+ \b{b} +#changed by pcharbon 22/10/03 +#g+ \.g +g+ \=g +d+ \b{d} +k+ \b{h} +#changed by pcharbon 22/10/03 +#p+ f +p+ \=p +t+ \b{t} +' \raise.2ex\hbox{$\rhook$} +b +g +d +h +w +z +.h \d{h} +.t \d{t} +y +k +l +m +n +s +#Does this need to be linked? I think it only substitute the mapping up to the first blank space. +#` \raise.2ex\hbox{$\lhook$}\textsuperscript{c} +` \raise.2ex\hbox{$\lhook$} \textsuperscript{c} +p +.s \d{s} +q +r +R +^s \v{s} +t +@ \textsuperscript{e}\kern-.1em diff --git a/Master/texmf-dist/doc/latex/aramaic-serto/serto.py b/Master/texmf-dist/doc/latex/aramaic-serto/serto.py new file mode 100755 index 00000000000..95e81ec475c --- /dev/null +++ b/Master/texmf-dist/doc/latex/aramaic-serto/serto.py @@ -0,0 +1,609 @@ +#!/usr/bin/env python +# -*- coding: ISO-8859-1 -*- + + +# Preprocessor for serto font for the use with LaTeX. +# Copyright 2001-2013 by Johannes Heinecke +# you can use this and change it as you wish, under the condition +# that the original copyright line is not deleted + +# Last changes: +# 2 Nov 2003: major reconstruction, use of three fontfiles +# 12 July 2003: correction on stretch +# 29 September 2007: Possibility to typeset two identical letters without a qusshaya +# 31 March 2013: add SERTOFONTDIR environment variable + +FONTFILESERTO="serto.font" # specify absolute path +FONTFILECHALD="assyr.font" +#FONTFILEESTR="estrangelo.font" + +# use the environment variable SERTOFONTDIR to specify the directory of the *.font files + +import re, sys, string, os.path + +# translating syriac unicode points to serto codings + +class Letter: + def __init__(self, + coding, # what coding to use in .ptex-file + name, # name of the letter + isolated, # what character to take in isolated usage + initial, # what character to take in word-initial usage + medial, # what character to take in word-medial usage + final, # what character to take in word-final usage + link): # does it link to the following (# link 0: next letter is initial, 1: next letter is medial, 2: ignore, 8: character is a superscript symbol 9: character is a subscript symbol + self.coding = coding + self.name = name + self.isolated = map(int, isolated.split('+')) + self.initial = map(int, initial.split('+')) + self.medial = map(int, medial.split('+')) + self.final = map(int, final.split('+')) + self.link = int(link) + + if self.isolated[0] == -1: self.isolated = None + if self.initial[0] == -1: self.initial = None + if self.medial[0] == -1: self.medial = None + if self.final[0] == -1: self.final = None + #sys.stderr.write("%s:%s-%s-%s-%s\n" \ + # % (name,self.isolated,self.initial,self.medial,self.final)) + + def getcontext(self, ctx): + if ctx == 0: return self.isolated[0] + elif ctx == 1: return self.initial[0] + elif ctx == 2: return self.medial[0] + elif ctx == 3: return self.final[0] + + def getChar(self, ctx): + if ctx == 0: + if not self.isolated: return [''] + return map(lambda x: "%c" % x, self.isolated) + #return int(self.isolated[0]) + elif ctx == 1: + if not self.initial: return [''] + return map(lambda x: "%c" % x, self.initial) + #return int(self.initial[0]) + elif ctx == 2: + #sys.stderr.write("MEDIAL %s\n" % self.medial) + if not self.medial: + #sys.stderr.write("NONE:e\n") + return [''] + return map(lambda x: "%c" % x, self.medial) + #return int(self.medial[0]) + elif ctx == 3: + if not self.final: return [''] + return map(lambda x: "%c" % x, self.final) + #return int(self.final[0]) + +class Serto: + def __init__(self, elatex=0): + self.elatex=elatex # eLaTeX needs \TeXXeTstate=1 + self.tabelle = {} # style: {"_d": Letter-Object} + self.transtabelle = {} # style: "_d": \d{d} + self.usingUTF8 = False + + self.inlineS = re.compile("(<S>)(.*?)(</S>)") + self.inlineT = re.compile("(<T>)(.*?)(</T>)") + self.inlineST = re.compile("(<ST>)(.*?)(</ST>)") + + self.inlineC = re.compile("(<C>)(.*?)(</C>)") + self.inlineCT = re.compile("(<CT>)(.*?)(</CT>)") + + self.inlineE = re.compile("(<E>)(.*?)(</E>)") + self.inlineET = re.compile("(<ET>)(.*?)(</ET>)") + + self.tabelle["serto"] = {} + self.transtabelle["serto"] = {} + self.readfont(FONTFILESERTO, + self.tabelle["serto"], + self.transtabelle["serto"]) + #print self.tabelle["serto"] + + self.tabelle["chaldean"] = {} + self.transtabelle["chaldean"] = {} + self.readfont(FONTFILECHALD, + self.tabelle["chaldean"], + self.transtabelle["chaldean"]) + + self.UnicodeTable = { 0x0710: "'", + 0x0712: "b", + 0x0713: "g", + 0x0714: "g", #gamal garshuni + 0x0715: "d", + 0x0717: "h", + 0x0718: "w", + 0x0719: "z", + 0x071a: ".h", + 0x071b: ".t", + 0x071c: ".t", # teth garshuni + 0x071d: "y", + 0x071f: "k", + 0x0720: "l", + 0x0721: "m", + 0x0722: "n", + 0x0723: "s", + 0x0724: "s", # final semkath + 0x0725: "`", + 0x0726: "p", + 0x0728: ".s", + 0x0729: "q", + 0x072a: "r", + 0x072b: "^s", + 0x072c: "t", + 0x0308: "P", # syame + 0x0730: "a", + 0x0731: "A", + 0x0732: ":a", + 0x0733: "=a", + 0x0734: "=A", + 0x0735: ":=a", + 0x0736: "e", + 0x0737: "E", + 0x0738: ":e", + 0x0739: ":e", + 0x073a: "i", + 0x073b: "I", + 0x073c: ":i", + 0x073d: "u", + 0x073e: "U", + 0x073f: ":u", + 0x0740: ":=a", + 0x0741: "*", + 0x0742: "+", + #punctuation listed in unicode not completed implemented in serto + 0x0700: ".:.", + 0x0701: ".", + 0x0702: ".", + 0x0703: ":", + 0x0704: ":", + 0x0705: ":", + 0x0706: ":", + 0x0707: ":", + 0x0708: ":", + 0x0709: ":", + 0x070D: ".X.", + } + + + #print "zzzzzz",UnicodeTable + + def readfont(self, filename, tabelle, transtabelle): + dirname = os.environ.get("SERTOFONTDIR") + if not dirname: + dirname = os.path.dirname(sys.argv[0]) + #print "eeee", dirname + fp = open("%s/%s" % (dirname, filename), "r") + lines = fp.readlines() + fp.close() + + + #self.tabelle = {} # "_d": (isol, init, med, fin, link) + #self.tabelle = {} # "_d": Letter-Object + #self.transtabelle = {} # "_d": \d{d} + self.fontname = "" + status = "syriac" + self.errct = 0 + for z in lines: + if len(z) < 2: + continue + if z[0] == "#": + if z[:6] == "#FONT:": + a = string.split(z) + self.fontname = string.strip(a[1]) + #self.textframe.thetext.config(font=self.fontname) + #self.testlabel.config(font=self.fontname) + elif z[:7] == "#TRANS:": + status = "transliterate" + continue + + felder = string.split(z) + if status == "syriac": + if len(felder) < 7: + self.errct = self.errct + 1 + print "ERROR:", z + else: + #print z, int(felder[2]) + #self.tabelle[felder[0]] = (int(felder[2]), + # int(felder[3]), + # int(felder[4]), + # int(felder[5]), + # int(felder[6])) + tabelle[felder[0]] = Letter(felder[0], + felder[1], + felder[2], + felder[3], + felder[4], + felder[5], + felder[6]) + else: + if len(felder) < 2: + #print "WARNING:", z + transtabelle[felder[0]] = felder[0] + else: + transtabelle[felder[0]] = felder[1] + + + def tokenize(self, str, xlen, style="serto"): + ix = 0 + self.tokens = [] + self.digits = [] + number = 0 # + + while(ix < xlen): #for ix in range(xlen): + #print "IX", ix, str + if str[ix] == "\\": + command = "\\" + ix = ix + 1 + while(ix < xlen): + if not str[ix] in string.letters: + break + else: + command = command + str[ix] + ix = ix + 1 + self.tokens.append(command) + elif str[ix] in "{}": + self.tokens.append(str[ix]) + ix = ix + 1 + else: + for ll in range(5, 0, -1): + if self.tabelle[style].has_key(str[ix:ix+ll]): + if ll == 1 and str[ix:ix+ll] in "aeiou" \ + and (len(self.tokens) == 0 \ + or self.tokens[-1] == "~"): + #self.tokens.append("'" + str[ix:ix+ll]) + self.tokens.extend(["'", str[ix:ix+ll]]) + #pass + else: + if len(self.tokens) \ + and str[ix:ix+ll] == self.tokens[-1] \ + and self.tabelle[style][str[ix:ix+ll]].link != 3 \ + and str[ix:ix+ll] not in ["~", "0", "1", + "2", "3", "4", + "5", "6", "7", + "8", "9", "--"]: + # insert shadda + self.tokens.append("Q") + else: + self.tokens.append(str[ix:ix+ll]) + ix = ix + ll + break # for-loop + else: + ix = ix + 1 + + #print "TOKENS",self.tokens + + def transtokenize(self, str, xlen, style="serto"): + ix = 0 + self.tokens = [] + self.digits = [] + number = 0 # + while(ix < xlen): #for ix in range(xlen): + #print "IX", ix, + for ll in range(5, 0, -1): + if self.transtabelle[style].has_key(str[ix:ix+ll]): + if ll == 1 and str[ix:ix+ll] in "aeiou" \ + and (len(self.tokens) == 0 \ + or self.tokens[-1] == "~"): + self.tokens.append("'" + str[ix:ix+ll]) + #self.tokens.extend(["'", str[ix:ix+ll]]) + else: + #if len(self.tokens) \ + # and str[ix:ix+ll] == self.tokens[-1] \ + # and self.tabelle[str[ix:ix+ll]][4] != 3 \ + # and str[ix:ix+ll] not in ["~", "0", "1", "2", "3", "4", + # "5", "6", "7", "8", "9"]: + # """insert shadda""" + # self.tokens.append("Q") + #else: + self.tokens.append(str[ix:ix+ll]) + ix = ix + ll + break # for-loop + else: + ix = ix + 1 + + #print "TRANSTOKENS",self.tokens + + + + def transliterate(self, syrisch, style="serto"): + if self.usingUTF8: + line = unicode(syrisch, "utf8") + newline = "" + for c in line: + #print "eee %x" % ord(c), self.UnicodeTable.has_key(ord(c)), + #print c.encode("utf8") + sertocode = self.UnicodeTable.get(ord(c), c) + newline += sertocode + #print "[%s]" % sertocode, newline + syrisch = newline + + syrisch = string.replace(syrisch, " ", "~") + self.transtokenize(syrisch, len(syrisch), style) + #self.err("TOKEN %s" %self.tokens) + ret = [] + oldtok = "" + for tok in self.tokens: + if tok == "~": # blank + ret.append(" ") + #elif tok == "Q": # shadda + #ret.append(ret[-1]) + #elif tok == "+": # soft sign under begadkefat + #if len(ret): + # ret[-1] = self.spec.get(oldtok+tok, oldtok+tok) + else: + ret.append(self.transtabelle[style].get(tok, tok)) + #oldtok = tok + + return string.join(ret, "") + + def syriacise(self, style="serto"): + # replace tokens by serto letters, take into account context + ix = 0 + out = [] + digits = [] + self.maxlen = len(self.tokens) + #sys.stderr.write("%s\n" % self.tokens) + number = 0 + for i in range(self.maxlen): + if self.tokens[i][0] in "\\{}": + out.append(self.tokens[i]) + + elif self.tabelle[style][self.tokens[i]].medial == -1: + #print "skipping letter" + continue + else: + form = self.context(i, style=style) + + if self.tokens[i] in ["0", "1", "2", "3", "4", + "5", "6", "7", "8", "9"]: + number = 1 + digits.append(chr(self.tabelle[style][self.tokens[i]].getcontext(form))) + else: + if number == 1: + number = 0 + digits.reverse() + out.extend(digits) + digits = [] + #out.append(chr(self.tabelle[self.tokens[i]][form])) + #out.append("%c" %(self.tabelle[self.tokens[i]].getcontext(form))) + for c in self.tabelle[style][self.tokens[i]].getChar(form): + #sys.stderr.write("LETTER: %s\n" % c) + out.append(c) + #print self.tokens[i], form, self.tabelle[self.tokens[i]][form] + + if number: + number = 0 + digits.reverse() + out.extend(digits) + + + #for i in out: print "%d" % ord(i), + #print + #if not self.elatex: + # out.reverse() + + # This kills empty letters, caused by -1 in .font-file + return string.join(out, "") + + + def context(self, ix, style="serto"): + """returns 0 if letter is isolated + 1 if letter is initial + 2 if letter is medial + 3 if letter is final""" + + if self.before(ix, style) and self.next(ix, style): + return 2 + elif self.before(ix, style) and not self.next(ix, style): + return 3 + elif not self.before(ix, style) and self.next(ix, style): + return 1 + else: + return 0 + + + def next(self, ix, style="serto"): + """returns 1 if next token is a letter""" + for i in range(ix+1, self.maxlen): + if self.tokens[i][0] in "\\{}": + return 0 + elif self.tabelle[style][self.tokens[i]].link in [2,3]: + continue + elif self.tokens[i] not in ["~", "!", ",", ".", ";", "?"] : + return 1 + else: + return 0 + return 0 + + def before(self, ix, style="serto"): + """returns 1 if preceding token is a letter""" + for i in range(ix-1, -1, -1): + if self.tokens[i][0] in "\\{}": + return 0 + elif self.tabelle[style][self.tokens[i]].link == 2: + continue + elif self.tokens[i] != "~": + if self.tabelle[style][self.tokens[i]].link == 0: + return 0 + else: + return 1 + else: + return 0 + return 0 + + + + + + def convert(self, transcript, style="serto"): + # interface function + # dummy blank + if self.usingUTF8: + line = unicode(transcript, "utf8") + newline = "" + for c in line: + #sys.stderr.write( "eee %d %s\n" % (ord(c), self.UnicodeTable.has_key(ord(c)))) + #sys.stderr.write( c.encode("utf8") + "\n") + sertocode = self.UnicodeTable.get(ord(c), c) + newline += sertocode + #sys.stderr.write( "[%s]\n" % sertocode) + transcript = newline.encode("utf8") + + transcript = string.replace(transcript, " ", "~") + self.tokenize(transcript, len(transcript), style) + return self.syriacise(style) + + + def texify(self, word, style="serto"): + res = [] + for ll in serto.convert(word, style): + # ll: position of current syriac character in font table + #sys.stdout.write("LETTER: 0x%x\n" % (ord(ll))) + #sys.stderr.write("LETTER: %s\n" % ord(ll)) + + if ord(ll) < 16: + #print "WWWWWWWWW", len(res), res + if len(res): + res[-1] = "\\uppersyriac{%d}{%s}" % (ord(ll), res[-1]) + else: + res.append("\\uppersyriac{%d}{A}" % (ord(ll))) # A: Olaf + elif ord(ll) < 32: + if len(res): + res[-1] = "\\lowersyriac{%d}{%s}" % (ord(ll), res[-1]) + else: + res.append("\\lowersyriac{%d}{A}" % (ord(ll))) + elif ord(ll) < 127 and ord(ll) not in [34,35,36,37,38,95]: + res.append(ll) + else: + # special (active) TeX-characters, charactes > 127 + res.append("\\char%d{}" % ord(ll)) + if not self.elatex: + res.reverse() + return string.join(res, "") + + def inlineserto(self, matchobject): + return "{\\serto\\beginR %s\\endR}" % self.texify(matchobject.group(2)) + + def inlinechaldean(self, matchobject): + return "{\\assyr\\beginR %s\\endR}" \ + % self.texify(matchobject.group(2), "chaldean") + + def inlinetrans(self, matchobject): + return "\\emph{%s}" % self.transliterate(matchobject.group(2)) + + def inlinesertotrans(self, matchobject): + return "{\\serto\\beginR %s\\endR} \\emph{%s}" \ + % (self.texify(matchobject.group(2)), + self.transliterate(matchobject.group(2))) + def inlinechaldeantrans(self, matchobject): + return "{\\assyr\\beginR %s\\endR} \\emph{%s}" \ + % (self.texify(matchobject.group(2), "chaldean"), + self.transliterate(matchobject.group(2), "chaldean")) + def err(self, s): + sys.stderr.write(s + "\n") + +#------------------------------------------------------- +if __name__ == "__main__": + sys.stderr.write("serto - LaTeX - preprocessor\n(c) Johannes Heinecke\n") + + if len(sys.argv) < 2: + sys.stderr.write("usage:\n serto.py [-o] inputfile\n") + sys.stderr.write(" -o: for usage with an older version of LaTeX which cannot typeset right-to-left scripts elatex\n\n") + sys.exit(1) + + else: + sys.stderr.write("\n") + import getopt + + elatex = 1 + optlist,comargs = getopt.getopt(sys.argv[1:], "") + + for (o,a) in optlist: + if o == "-o": + elatex = 0 + + serto = Serto(elatex=elatex) + fp = open(comargs[0]) + + #mode = "latin" + mode = ["latin"] + z = fp.readline() + while (z): + #print "LINE", z, + if z.find("\usepackage[utf8]{inputenc}") > -1: + serto.usingUTF8 = True + #print 'QQQ',z, mode + if z[:-1] == "<SERTO>": + # must be on a single line (will be deleted) + if not elatex: + sys.stderr.write("using <SERTO> without the -e option (and elatex) may not work!\n") + #mode = "serto" + mode.append("serto") + print '{\\serto\\beginR %' + + elif string.strip(z[:-1]) == "</SERTO>": + #mode = "latin" + del mode[-1] + #print '\\endR}%' # causes problems in last line + print '}%' + + elif z[:-1] == "<CHALDEAN>": + # must be on a single line (will be deleted) + if not elatex: + sys.stderr.write("using <CHALDEAN> without the -e option (and elatex) may not work!\n") + #mode = "chaldean" + mode.append("chaldean") + print '{\\assyr\\beginR %' + + elif string.strip(z[:-1]) == "</CHALDEAN>": + #mode = "latin" + del mode[-1] + #print '\\endR}%' # causes problems in last line + print '}%' + + + elif z[:-1] == "<TRANS>": + #mode = "trans" + mode.append("trans") + print '{\\it %' + + elif string.strip(z[:-1]) == "</TRANS>": + #mode = "latin" + del mode[-1] + print '}%' + + + +# elif z[:-1] == "<SERTOTRANS>": +# mode = "sertotrans" +# print '{\\serto\\beginR %' +# +# elif string.strip(z[:-1]) == "</SERTOTRANS>": +# mode = "latin" +# print '\\endR}%' + + + + else: + #print "mmm", mode, z + if mode[-1] == "latin": + #sys.stdout.write(serto.inlineS.sub(serto.inlineserto, z)) + a = serto.inlineS.sub(serto.inlineserto, z) + b = serto.inlineT.sub(serto.inlinetrans, a) + c = serto.inlineST.sub(serto.inlinesertotrans, b) + d = serto.inlineC.sub(serto.inlinechaldean, c) + e = serto.inlineCT.sub(serto.inlinechaldeantrans, d) + sys.stdout.write(e) + elif mode[-1] == "trans": + print serto.transliterate(z) + else: + if z[:-1] == "": print "\n\\beginR", + else: + print serto.texify(z, mode[-1]) + + + #print "rrrrr", mode + z = fp.readline() + + + fp.close() + sys.exit(serto.errct) diff --git a/Master/texmf-dist/doc/latex/aramaic-serto/sertodoc.pdf b/Master/texmf-dist/doc/latex/aramaic-serto/sertodoc.pdf Binary files differnew file mode 100644 index 00000000000..c2d0d821bfa --- /dev/null +++ b/Master/texmf-dist/doc/latex/aramaic-serto/sertodoc.pdf diff --git a/Master/texmf-dist/doc/latex/aramaic-serto/sertodoc.ptex b/Master/texmf-dist/doc/latex/aramaic-serto/sertodoc.ptex new file mode 100644 index 00000000000..1e8db093b7a --- /dev/null +++ b/Master/texmf-dist/doc/latex/aramaic-serto/sertodoc.ptex @@ -0,0 +1,961 @@ +\documentclass[12pt,a4paper]{article} +%\newif\ifpdf\ifx\pdfoutput\undefined\pdffalse\else\pdftrue\fi + +%\usepackage{german} +\usepackage{times} +%\usepackage{mathptm} +%\usepackage[T1]{fontenc} +%\usepackage{covington} +%\usepackage{multicol} +%\usepackage{fancyhdr} +%\usepackage{graphicx} +\usepackage{url} +\usepackage{alltt} +\usepackage{rotating} +\usepackage{array} +\usepackage{maketitel} +\usepackage{serto} +\usepackage{assyr} +\usepackage{longtable} +\usepackage{chicago2} +%\ifpdf +\usepackage[pdftex,colorlinks=true, +urlcolor=urlcol, % URL: http:// +citecolor=bibcol, % bibTeX +linkcolor=linkcol, % sections, footnotes, ... +pagecolor=linkcol, % links to other pages +filecolor=filecol, % URL: file:/ +pdftitle={Serto - A font for Syriac (Aramaic)}, +pdfauthor={Johannes Heinecke}, +pdfsubject={Oriental alphabets, Semitic languages},pdfkeywords={},pagebackref, +pdfpagemode=None,bookmarksopen=true]{hyperref} +\usepackage{color} +\definecolor{linkcol}{rgb}{0.75,0,0} +\definecolor{bibcol}{rgb}{0,0.5,0} +\definecolor{urlcol}{rgb}{0,0,0.75} +\definecolor{filecol}{rgb}{0,0,0.75} + +%\else +%\fi + +%\addtolength{\topmargin}{-15mm} +%\addtolength{\textheight}{30mm} +%\addtolength{\textwidth}{0mm} +%\addtolength{\oddsidemargin}{0mm} +%\addtolength{\evensidemargin}{0mm} + +% EDIT sertodoc.ptex +% serto.py sertodoc.ptex > sertodoc.tex +% pdflatex sertodoc.tex + +\usepackage{parskip} + + +%\let\S=S % for verbatim +%\let\T=T % for verbatim +\def\st{Ser\d to} +\def\texxet{{\tt TeX-{}-XeT}} +\def\pdflatex{{\tt pdflatex}} +\def\SertoVersion{1.0} + +\newcommand{\showS}[1]{{\tt <S{}>#1</S{}>}} +\newcommand{\showT}[1]{{\tt <{}T>#1</{}T>}} +\newcommand{\showST}[1]{{\tt <S{}T>#1</S{}T>}} +\newcommand{\showC}[1]{{\tt <C{}>#1</C{}>}} +\newcommand{\showCT}[1]{{\tt <C{}T>#1</C{}T>}} +\newcommand{\SE}{{\tt <S>}} +\newcommand{\eSE}{{\tt </S>}} +\newcommand{\TR}{{\tt <T>}} +\newcommand{\eTR}{{\tt </T>}} +\newcommand{\ST}{{\tt <ST>}} +\newcommand{\eST}{{\tt </ST>}} + +\font\logo=logo10 scaled \magstep1 +\def\MF{{\logo METAFONT}} +\begin{document} +\title{<S>ser.t=a'</S> \emph{\st} -- a font for Syriac (Aramaic)} +\author{Johannes Heinecke} +\date{Version \SertoVersion, 30\textsuperscript{th} March 2013} +\maketitle + +\tableofcontents + +\section{Introduction} + +\emph{\st} is a form of the alphabet used for Aramaic (a +western semitic language) which has been spoken +in the Near East since at least 1100 BC. More precisely, \st is used for +Syriac which is the variant of Aramaic spoken since the second century +AD.\footnote{See \citeNP{ungnad1932}, +\citeNP{brockelmann1960}, \citeNP{costaz1986} or \citeNP{noeldeke1986} +(English translation \citeNP{noeldeke2001}) for further +information on Syriac.} + +Syriac used other alphabets as well, notably \emph{Es\d +trangelo}, which is not (yet) contained in this package. Since \st{} is +as the Arabic alphabet a syllabic script, vowels are marked by +diacritic marks above (or under) the consonantic letters. +Modern forms of Aramaic still use either \st{}, the Chaldean alphabet +or Es\d trangelo. + +Since Syriac split up in two main dialects in the fifth century AD, +two differing systems of vowel-marking were established: Whereas the +western dialect (Edessean) used Greek letters as vowel symbols (these +are the only ones provided by this package for the time being), the +eastern dialects uses dots to indicate the vowels (Chaldean vowels). + + +This package enables you to typeset words or paragraphs in \st{} using a +preprocessor which chooses the correct letter form depending on +context. In order to typeset paragraphs the use of a +recent version of \pdflatex\ is needed, which +can handle the right-to-left typesetting. +For older version of \LaTeX, the preprocessor must be used with the +option {\tt -o} (see section \ref{prep}). + +This package also included an adapted version of a Chaldean font (thanks to Tony +Khoshaba, who put this font to the Web). + +%<S>qa.t.tel qa.tel</S> + +%<S> ^sapiyr biy^s l=ak .</S> + +\section{The alphabets} + +Every letter in \st{} (and some letters in the Chaldean alphabet) +has several forms, depending on its position in +the word: An initial, medial or final form. Since some letters do not +connect to the following letter, there are isolated forms as well +(i.e. a letter which is not connected to the right nor the left). +The coding column in the following table refers to the preprocessor +described below (section \ref{prep}). If you do not want to use the +preprocessor, please refer to the encoding table in section \ref{enc}. + +\subsection{Consonants}\label{consonants} + + + +%\begin{tabular}{| >{\rule[-2mm]{0pt}{9mm}}c|c|c|c| r >{\it}l | >{\tt}c|} +\begin{longtable}{| >{\rule[-2mm]{0pt}{9mm}}c|c|c|c| c | + r l | + >{\it}c | >{\tt}c | } +\hline +\multicolumn{4}{|c|}{ser\d to forms} & & \multicolumn{2}{c|}{name} & \rm translit. & \rm coding \\ +\cline{1-4} +%\hline +\begin{turn}{90}isolated\end{turn} & +\begin{turn}{90}final\end{turn} & +\begin{turn}{90}medial\end{turn} & +\begin{turn}{90}initial\end{turn} & +\begin{turn}{90}Chaldean\end{turn} & & & & \endhead +\hline +<S>'</S> & <S>-'</S> & & & <C>'</C> & + <S>'=alap+</S> & <T>'=alap+</T> & \raise.2ex\hbox{$\rhook$} & '\\ +\hline +<S>b</S> & <S>-b</S> & <S>-b-</S> & <S>b-</S> & <C>b</C> & + <S>beyt+</S> & <T>beyt+</T> & b\footnotemark & b \\ + & & & & <C>v</C>\footnotemark & + & & v & v \\ +\hline +<S>g</S> & <S>-g</S> & <S>-g-</S> & <S>g-</S> &<C>g</C> & + <S>g=amal</S> & <T>g=amal</T> & g & g\\ + & & & & <C>.g</C> & + & & \d g & g \\ + & & & & <C>j</C> & + & & j & j \\ +\hline +<S>d</S> & <S>-d</S> & & &<C>d</C> & + <S>d=alat+</S> & <T>d=alat+</T> & d & d\\ +\hline +<S>h</S> & <S>-h</S> & & &<C>h</C> & + <S>he'</S> & <T>he'</T> & h & h\\ +\hline +<S>w</S> & <S>-w</S> & & &<C>w</C> & + <S>waw</S> & <T>waw</T> & w & w \\ +\hline +<S>z</S> & <S>-z</S> & & &<C>z</C> & + <S>zayn</S> & <T>zayn</T> & z & z \\ +\hline +<S>.h</S> & <S>-.h</S> & <S>-.h-</S> & <S>.h-</S> &<C>.h</C> & + <S>.heyt+</S> & <T>.heyt+</T> & \d h & .h\\ +\hline +<S>.t</S> & <S>-.t</S> & <S>-.t-</S> & <S>.t-</S> &<C>.t</C> & + <S>.teyt+</S> & <T>.teyt+</T> & \d t & .t\\ +\hline +<S>y</S> & <S>-y</S> & <S>-y-</S> & <S>y-</S> &<C>y</C> & + <S>y=ad+</S> & <T>y=ad+</T> & y & y \\ +\hline +<S>k</S> & <S>-k</S> & <S>-k-</S> & <S>k-</S> &<C>k</C> & + <S>k=ap+</S> & <T>k=ap+</T> & k & k\\ + & & & & <C>_k</C> & + & & \b h & \verb._k. \\ + & & & & <C>^k</C> & + & & \v c & \verb.^k. \\ +\hline +<S>l</S> & <S>-l</S> & <S>-l-</S> & <S>l-</S> & <C>l</C> & + <S>l=amad+</S> & <T>l=amad+</T> & l & l\\ +\hline +<S>m</S> & <S>-m</S> & <S>-m-</S> & <S>m-</S> & <C>m</C> & + <S>miym</S> & <T>miym</T> & m & m\\ +\hline +<S>n</S> & <S>-n</S> & <S>-n-</S> & <S>n-</S> &<C>n</C> & + <S>nuwn</S> & <T>nuwn</T> & n & n\\ +\hline +<S>s</S> & <S>-s</S> & <S>-s-</S> & <S>s-</S> &<C>s</C> & + <S>semkat+</S> & <T>semkat+</T> & s & s\\ +\hline +<S>`</S> & <S>-`</S> & <S>-`-</S> & <S>`-</S> &<C>`</C> & + <S>`e'</S> & <T>`e'</T> & \raise.2ex\hbox{$\lhook$} & ` \\ +\hline +<S>p</S> & <S>-p</S> & <S>-p-</S> & <S>p-</S> &<C>p</C> & + <S>pe'</S> & <T>pe'</T> & p & p \\ + & & & & <C>f</C> & + & & f & f \\ +\hline +<S>.s</S> & <S>-.s</S> & & &<C>.s</C> & + <S>.s=ade'</S> & <T>.s=ade'</T> & \d s & .s\\ +\hline +<S>q</S> & <S>-q</S> & <S>-q-</S> & <S>q-</S> &<C>q</C> & + <S>q=ap+</S> & <T>q=ap+</T> & q & q \\ +\hline +%\newpage +%\hline +<S>r</S> & <S>-r</S> & <S>-r-</S> & <S>r-</S> &<C>r</C> & + <S>riy^s</S> & <T>riy^s</T> & r & r \\ +%\hline +<S>R</S> & <S>-R</S> & <S>-R-</S> & <S>R-</S> &<C>R</C> & + & & & R\\ +\hline +<S>^s</S> & <S>-^s</S> & <S>-^s-</S> & <S>^s-</S> &<C>^s</C> & + <S>^siyn</S> & <T>^siyn</T> & \v s & \verb.^s.\\ +\hline +<S>t</S> & <S>-t</S> & & &<C>t</C> & + <S>taw</S> & <T>taw</T> & t & t\\ + & & & & <C>_t</C> & + & & \b{t} & \verb._t. \\ + +\hline +\end{longtable} +%\end{tabular} + +\addtocounter{footnote}{-1} +\footnotetext{The \emph{be\=ga\b dke\=pa\b t} are not yet always processed. +In general, the doubling of the consonant creates a <ST>qu^s^s=ay=a'</ST> in +the syriac text and does not change the +transliteration. On the other hand, a consonant followed by {\tt+} will +receive a <ST>ruwkk=ak+=a'</ST> and in the transliteration \emph{bgdkft} +will appear as \emph{\b b\=g\b d\b h\=p\b t}.} + +\stepcounter{footnote} +\footnotetext{Modern Aramaic dialects using the Chaldean alphabet have +diacritic symbols (dots and tildes) which can be typeset directly.} + + +\subsection{Vowels}\label{vowels} + +The package allows to typeset the greek vowels or Chaldean vowels symbols. +To have the vowel symbol written in inversed form +under the consonant, user upper case input. + + +\begin{quote} +{\bf ATTENTION:} I had to change the coding of <T>zq=ap+=a'</T> +(<S>_=a</S>) from {\tt o} to \verb.=a. in order to accomodate the new +letter <S>_o</S> (coding {\tt o}). In texts encoded up to version 0.4 +{\tt o} has to be replaced by \verb.=a. Sorry for any +inconveniances. +\end{quote} + + +\begin{tabular}[t]{| >{\rule[-3mm]{0pt}{11mm}}c | c | r l | c | >{\tt}c |} +\hline +Greek & Chaldean & \multicolumn{2}{c|}{name} & \rm transliteration & \rm coding \\ +%form & form & & & & \\ +\hline +<S>_a</S> & <S>_:a</S> & <S>pt+=a.h=a'</S> & <T>pt+=a.h=a'</T> & <T>a</T> & a \\ +\hline +<S>_e</S> & <S>_:e</S> & <S>rb+=a.s=a'</S> & <T>rb+=a.s=a'</T> & <T>e</T> & e \\ +\hline +<S>_i</S> & <S>_:i</S> & <S>.hb+=a.s=a'</S> & <T>.hb+=a.s=a'</T> & <T>i</T> & i \\ +\hline +<S>_=a</S> & <S>_:=a</S> & <S>zq=ap+=a'</S> & <T>zq=ap+=a'</T> & <T>=a</T> & =a \\ +\hline +<S>_u</S> & <S>_:u</S> & <S>`.s=a.s=a'</S> & <T>`.s=a.s=a'</T> & <T>u</T> & u \\ +\hline +<S>_o</S> & <S>_:o</S> & & & <T>=a</T> & o \\ +\hline +<S>_P</S> & & <S>sy=a--Pme'</S> & <T>sy=a--Pme'</T> & & P \\ +\hline +\end{tabular} +~~~~~~ +\begin{tabular}[t]{| >{\rule[-4mm]{0pt}{11mm}}c | >{\tt}c |} +\hline +Greek & \rm coding \\ +%form & \\ +\hline +<S>_A</S> & A \\ +\hline +<S>_E</S> & E \\ +\hline +<S>_I</S> & I \\ +\hline +<S>_=A</S> & =A \\ +\hline +<S>_U</S> & U \\ +\hline +\end{tabular} + +Note: The <T>.hb+=a.s=a'</T> and <T>`.s=a.s=a'</T> of the Eastern or +Chaldean vowels do in general occur together with a \emph{mater +lectionis}: +<S>l:iy</S>, <S>l:ow</S> (or <C>l:iy</C>, <C>l:ow</C>) + +The <ST>sy=a--Pme'</ST> is processed as a vowel sign, even if it is not so +from a linguistic point of view. Its coding \showS{P} is chose because +of its plural signification. If you do not want it over a letter, put +it over a word stretch: The Aramaic at the beginning of this paragraph +has been typset in the following: \showS{sy=a--Pme'}. + + +To avoid that the simple preprocessor does not mess about +with vowels in ligatures (notably \emph{L\=ama\b d-\=alaf} +and \emph{\=Alaf-l\=ama\b d} the vowel must be set after both +consonants of the ligature: + +\showS{l=a'} yields (incorrect) <ST>l=a'</ST> +but \showS{l'=a} yields the vocalized ligature <ST>l'=a</ST> + +\showS{'Al=Ah=a'} yields (incorrect) <ST>'Al=Ah=a'</ST> +but \showS{'la=Ah=a'} yields the vocalized ligature <ST>'la=Ah=a'</ST> + +The Chaldean letters do not have this ligature. Instead, a +<T>taw-=al=af</T> ligature is provided: +<CT>sipr=ayuwt'a</CT> + +The default vowels are the greek-based vowels. In order to get +Chaldean vowels, it suffices to add {\tt:} in front of the vowel in +coding. +Thus you can set the most famous Aramaic phrase in all Syriac +alphabets in either vowel system: + +\showS{eliy eliy lm=an=a' s=ab=akt=aniy}\\ +<S>eliy eliy lm=an=a' s=ab=akt=aniy</S> + +\showS{:el:iy :el:iy lm:=an:=a' s:=ab:=akt:=an:iy}\\ +<S>:el:iy :el:iy lm:=an:=a' s:=ab:=akt:=an:iy</S> + +\showC{eliy eliy lm=an=a' s=ab=akt=aniy}\\ +<C>eliy eliy lm=an=a' s=ab=akt=aniy</C> + +\showC{:el:iy :el:iy lm:=an:=a' s:=ab:=akt:=an:iy}\\ +\hfill <C>:el:iy ':el:iy lm:=an:=a' s:=ab:=akt:=an:iy</C> + + + +\subsection{Transliteration and long vowels} + +As mention in section \ref{prep} below, the preprocessor can produce a +transliteration as well. The transliteration can be defined in the +table used by the preprocessor {\tt serto.font} and {\tt assyr.font}. The current +definition uses the transcription as shown in the tables in sections +\ref{consonants} and \ref{vowels}, with the exception of long vowels. +In words using a vowel symbol together with a \emph{mater lectionis}, +the transliteration shows the transcription instead, for instance +<S>.heyt+</S> transliterates as <T>.heyt+</T> and not \emph{\d hey\b +t} and <ST>q=aye'm</ST>: + +\begin{tabular}{| >{\rule[-4mm]{0pt}{11mm}}r | r | c | >{\tt}c |} +\hline +Greek & Chaldean & \rm transliteration & \rm coding \\ +\hline +<S>--=a'</S> & <C>--:=a'</C> & <T>_=a'</T> & =a' \\ +\hline +<S>--ey</S> & <C>--:ey</C> & <T>_ey</T> & ey \\ +\hline +<S>--e'</S> & <C>--:e'</C> & <T>_e'</T> & e' \\ +\hline +<S>--iy</S> & <C>--:iy</C> & <T>_iy</T> & iy \\ +\hline +<S>--uw</S> & <C>--:uw</C> & <T>_uw</T> & uw \\ +\hline +\end{tabular} + + + +\subsection{Punctuation and paragraph marks} + +\begin{tabular}{| >{\rule[-4mm]{0pt}{11mm}}c | >{\tt}c |} +\hline +form & \rm coding \\ +\hline +<S>.</S> & . \\ +\hline +<S>:</S> & : \\ +\hline +<S>.X.</S> & .X. \\ +\hline +<S>.:.</S> & .:. \\ +\hline +\end{tabular} +~~~~~~~ +\begin{tabular}{| >{\rule[-4mm]{0pt}{11mm}}c | >{\tt}c |} +\hline +form & \rm coding \\ +\hline +<S>:: </S> & :: \\ +\hline +<S>:- </S> & :- \\ +\hline +<S>.~. </S> & \verb:.~.: \\ +\hline +<S>./.</S> & ./. \\ +\hline +\end{tabular} + +\subsection{Unicode} + +This package has a limited Unicode support in that texts encoded in UTF8 +can be directly typeset. In order to activate the UTF8 interpretation, either +use UTF8 for your whole document by declaring \verb+\usepackage[utf8]+\verb+{inputenc}+ +in the preamble of you document, or just put +\verb+%\usepackage[utf8]+\verb+{inputenc}+ somewhere at the beginning of your document. + +\subsection{The encoding}\label{enc} + +\def\cell#1{\char'#1} + +\def\cellrow#1{ +& \cell{#10} & \cell{#11} & \cell{#12} & \cell{#13} & +\cell{#14} & \cell{#15} & \cell{#16} & \cell{#17} \\ \hline} + +\def\reihe#1{\it '#10 \cellrow{#1}} + + + +\def\xcell#1{\char"#1} +\def\xcellrow#1{ +& \xcell{#10} & \xcell{#11} & \xcell{#12} & \xcell{#13} & + \xcell{#14} & \xcell{#15} & \xcell{#16} & \xcell{#17} & + \xcell{#18} & \xcell{#19} & \xcell{#1A} & \xcell{#1B} & + \xcell{#1C} & \xcell{#1D} & \xcell{#1E} & \xcell{#1F} \\ \hline} +\def\xreihe#1{\it "#1n \xcellrow{#1}} + +The following table shows the internal encoding of the +defined letters of \st\ and the Chaldean variant. + +\newif\ifhextabelle +\hextabelletrue +%\pdfoutput\undefined\pdffalse\else\pdftrue\fi + +\ifhextabelle +{\serto +\begin{tabular}{ r || c | c | c | c | c | c | c | c | + c | c | c | c | c | c | c | c | } +& \it 0 & \it 1 & \it 2 & \it 3 & \it 4 & \it 5 & \it 6 & \it 7 + & \it 8 & \it 9 & \it A & \it B & \it C & \it D & \it E & \it F \\ +\hline\hline +\xreihe{0} +\xreihe{1} +\xreihe{2} +\xreihe{3} +\xreihe{4} +\xreihe{5} +\xreihe{6} +\xreihe{7} +\xreihe{8} +\xreihe{9} +\xreihe{A} +%\xreihe{B} +%\xreihe{C} +%\xreihe{D} +%\xreihe{E} +%\xreihe{F} +\end{tabular}} + + +{\assyr +\begin{tabular}{ r || c | c | c | c | c | c | c | c | + c | c | c | c | c | c | c | c | } +& \it 0 & \it 1 & \it 2 & \it 3 & \it 4 & \it 5 & \it 6 & \it 7 + & \it 8 & \it 9 & \it A & \it B & \it C & \it D & \it E & \it F \\ +\hline\hline +\xreihe{0} +\xreihe{1} +\xreihe{2} +\xreihe{3} +\xreihe{4} +\xreihe{5} +\xreihe{6} +\xreihe{7} +\xreihe{8} +\xreihe{9} +\xreihe{A} +%\xreihe{B} +%\xreihe{C} +%\xreihe{D} +%\xreihe{E} +%\xreihe{F} +\end{tabular}} + +\else + + +{\serto +\begin{tabular}{ r || c | c | c | c | c | c | c | c | } +& \it 0 & \it 1 & \it 2 & \it 3 & \it 4 & \it 5 & \it 6 & \it 7 \\ +\hline\hline +\reihe{00} +\reihe{01} +\reihe{02}\reihe{03} +\reihe{04} +\reihe{05}%\reihe{06} +\reihe{07} +\reihe{10}\reihe{11} +\reihe{12}\reihe{13}%\reihe{14} +\reihe{15}\reihe{16} +\reihe{17} +\reihe{20} +\reihe{21} +\reihe{22} +\reihe{23} +\reihe{24} +\reihe{25} +\end{tabular}} + + + +{\assyr +\begin{tabular}{ r || c | c | c | c | c | c | c | c | } +& \it 0 & \it 1 & \it 2 & \it 3 & \it 4 & \it 5 & \it 6 & \it 7 \\ +\hline\hline +\reihe{00} +\reihe{01} +\reihe{02} +\reihe{03} +\reihe{04} +\reihe{05} +%\reihe{06} +\reihe{07} +\reihe{10} +\reihe{11} +\reihe{12} +\reihe{13} +\reihe{14} +\reihe{15} +\reihe{16} +\reihe{17} +%\reihe{20} +%\reihe{21} +%\reihe{22} +%\reihe{23} +%\reihe{24} +%\reihe{25} +\end{tabular}} +\fi + +\urlstyle{same} + +\section{The preprocessor {\tt serto.py}}\label{prep} + +Typesetting of texts is still not yet possible with standard \LaTeX, since the +right-to-left typesetting (as for +instance as in Arab\TeX) has not yet been implemented. For the time +being I propose a preprocessor (written in {\sc +Python}\footnote{Every version from 2.4 onwards up to version 2.7 should do; Python 3.* however does not work {\sc +Python} is an interpreted +object oriented programming language available for many operating +systems (\url{http://www.python.org}).}) and \pdflatex. + +I'm well aware that {\tt serto.py} is not part of the most beautiful pieces +of software code, on the contrary, it's rather spaghetti code. Many things could +have been in a more intelligent way, but it works, which is the most important thing. +If you find the time to improve it please share your changes with me! + + +\subsection{Using the preprocessor} + +The preprocessor is called with the \LaTeX-file as argument: + +\verb| serto.py [-o] ppfilename.tex > filename.tex| + +The resulting \LaTeX-file can be \LaTeX ed as usually. Please make +sure to have the \verb.\usepackage{serto}. included in your preamble. + +The option {\tt -o} is necessary if you use an older version of \LaTeX\ which is +not capable to typeset texts from the right to the left (\texxet extension). The {\tt -o} +-option tells the preprocessor to inverse the letters on its +own. In order to typeset whole paragraphs \pdflatex\ is the better +solution. Usually it comes with every modern \TeX-distribution. +At least on Ubuntu 12.04 (texlive package), the standardly installed \pdflatex\ behaves correctly. + +The preprocessor recognizes two types of commands. Within a +single line you can put Syriac words between \SE\ and \eSE: +For example \showS{ser.t=a'} becomes <S>ser.t=a'</S>. + +\ST\ and \eST\ generate the enclosed part in \st\ and +generates a transliteration as well +(\showST{mdiyt=a'} becomes <ST>mdiyt=A'</ST> ``city''), +whereas \TR\ and \eTR\ can be used for parts only need in +transliterated form (\showT{ser.t=a'} becomes <T>ser.t=a'</T>). +Since in transliteration a ``neutral vowel'' is needed, which does not +appear in \st, the code \verb.@. can be used: +\showST{\^{}s\symbol{64}m=a`} produces <ST>^s@m=a`</ST> + +For multiple lines, start a block using {\tt <SERTO>}\footnote{Using +{\tt <SERTO>} or {\tt <TRANS>} implies the using of the {\tt -e} +option of the preprocessor {\tt serto.py}. If you do not use the {\tt -e} +option the resulting \LaTeX-file is likely to be syntactically incorrect.} +in a line on its +own. This block can be closed by {\tt </SERTO>}. +%To have a block in \st\ and in transliterated form, use {\tt +%<SERTOTRANS} and {\tt </SERTOTRANS>}. +If you need transliterated Syriac, +use {\tt </TRANS>} and {\tt </TRANS>}. The commands {\tt <SERTO>}/{\tt +</SERTO>} and {\tt </TRANS>}/{\tt </TRANS>} do not work properly with the +{\tt -o} option of the preprocessor and and older \LaTeX. If you add +\TeX-commands in these blocks, a right-to-left typesetting version of \LaTeX\ is obligatory. + + + + +For the time being the preprocessor tries to set the hard sign +<ST>qu^s^s=ay=a'</ST> %\emph{qu\v s\v s\=oy\=o} +on top of a consonant if the consonant +is doubled in the input: + +\showS{q.tl} yields <S>q.tl</S> +but \showS{q.t.tl} yields <S>q.t.tl</S> + +In cases where you need a <ST>qu^s^s=ay=a'</ST> %\emph{qu\v s\v s\=oy\=o} +without wanting to double the consonant, a {\tt *} can be used after +the letter to typeset a dot above a letter: \showS{h*=anon} produces +<ST>h*=anon</ST> and \showS{\^{}sl=amk+on} results in <ST>^sl=amk+on</ST> + +%<ST>wadd*=ame'</ST> + +To avoid a <T>qu^s^s=ay=a'</T> (when you need to adjacent identical consontants, either use +a vowel on the first, +use the stretching symbol: + +\showS{maml'e} yields <ST>maml'e</ST>\\ +{\tt <S{}>m\verb.^.ml'</S{}>} yields <ST>m^ml'</ST>\\ +\showC{maml'e} yields <CT>maml'e</CT>\\ +{\tt <C{}>m\verb.^.ml'</C{}>} yields <CT>m^ml'</CT>\\ + + +To get the soft sign <ST>ruwkk=ak+=a'</ST> %\emph{rukk\=o\b h\=o} +a {\tt +} must \emph{follow} the letter: +\showS{'ab+d=a'} yields <S>'ab+d=a'</S> + + +An \emph{\=alaf} is autmatically prefixed before an initial vowel: + +\showS{etqa.tel} and \showS{'etqa.tel} both yield <S>etqa.tel</S> + +Sometimes the letter \emph{r\=\i\v s} is written with two points. To +achieve this, use {\tt R} instead of {\tt r} in the input: + +\showS{\^{}sapiyRe'} yields <S>^sapiyRe'</S> + +Silent consonants have a bar <ST>mb+a.tl=an=a'</ST> %\emph{mva\d tl\=on\=o} +(\emph{linea occultans}) +under the line which is produced by {\tt =} just before the consonant +(attention {\tt =a}, however, yields <S>=a</S>: + +\showS{'an=tt} yields <S>'an=tt</S> + +In order to have the \emph{linea occultans} on top of the letter, use {\tt ==}: + +\showS{h==wiyt} yields <S>h==wiyt</S> + +There is no automatic stretching yet, but the \verb.--. can be used to +insert a ``manual stretch'': + +\showS{napiyqt=a'} becomes <S>napiyqt=a'</S> but +\showS{na-{}-piyq-{}-t=a'} is printed as <S>na--piyq--t=a'</S> + +This works also for the Chaldean letters +\showC{n:ap:iyqt:=a'} becomes <C>n:ap:iyqt:=a'</C> but +\showC{n:a-{}-p:iyq-{}-t:=a'} is printed as <C>n:a--p:iyq--t:=a'</C> + +If you do not use the preprocessor, you can activate \st\ by the +command \verb.\serto.. In this case you have to choose the correct +letters yourself, and use the commands +\verb.\upperserto{.\emph{vowelnumber}\verb.}{.\emph{letter}\verb.}. or +\verb.\lowerserto{.\emph{vowelnumber}\verb.}{.\emph{letter}\verb.}. to +set vowels. Please see the encoding table in section \ref{enc} for the +correct vowel numbers. + +In order to get bold letters, you can use \verb.\sertob. with or +without preprocessor (see section \ref{prep} for more information +on the preprocessor. + +\section{The format of the {\tt*.font} files} + +These files are necessary to tell the preprocessor where (in the font) +a certain letter is found, and whether it has different forms. The +format is straight forward, with, however, a few idiosynchrasies. +In general there are two sections, the first (starting with a line +\verb.#FONT.) indicates which letter has which form in which position +and a second (\verb.#TRANS.) to define the transcription. + +The first part consists of lines like the following\\ +\verb.b beth 66+124 66 66 66+124 1.\\ +which reads, coding \verb.b. is for the letter \emph{beth}, its +isolated form is character 66 followed by character 124, its initial +and medial form is character 66, it's final form is character 66 +followed by character 124 and the next letter (if any) must take it's +medial form. + +However, if one of the four last columns has a value of $-1$, no form +is provided in the font. +Values from 0 to 15 are reserved for accents/vowels above the line, +values from 16 to 31 are reserved for vowels under the line. + +The lines + +\verb. ~ blank 32 32 32 32 0.\\ +\verb. Q shadda 6 6 6 6 2.\\ +\verb. -- stretch 45 45 45 45 1.\\ + +must not be deleted. + +The coding for digits (starting with 0 up to 9 in the first column +cannot have the \verb.+. in the position definition + +The transcription definition defines for each coding symbol (defined +in the font-section) a valid \TeX-string to be used if transcription +is needed, e.g. + +\verb- .t \d{t}- + +i.e. the coding \verb-.t- will be representend by \emph{\d{t}} in +transcribed portions. + +\section{Two examples} + +Some of the following can be found in {\tt example.ptex} +which comes +with this package. +%If you do not have \elatex, you cannot set texts in \st\ but only +%single words. + + +The following input was used to generate the output below: + + +\begin{quote}\small +\begin{verbatim} +\documentclass[12pt,a4paper]{article} +usepackage{serto} + +\begin{document} +\end{verbatim} + +\begin{alltt} +<S{}>men qadiy^se' ho' tetqada^s</S{}> + +<S{}T>kmo' dat+basb@suwn pagdo'</S{}T> +\end{alltt} + +\begin{verbatim} +\end{document} +\end{verbatim} +\end{quote} + + +\begin{quote} +<S>men qadiy^se' h=a' tetqada^s</S> + +<ST>km=a' dat+basb@suwn pagd=a'</ST> +\end{quote} + + + +%In order to set more than just words +%\elatex\ (needed for the \texxet\ extension) must be used. +%\elatex\ properly sets text from the right to the left. + + + +\begin{quote} +<SERTO> +wk=ad .hzaw kuwmd'e da.h.tIyt=A': medem da`bad na.siy.h=a': +lAbkuwh=y= wa'sruwh=y= wa'ytIywh=y= qd=am malk=a'. +we'^stA`iyw lmalk=a' me----dem da`bad {\sertob l'Al=Ahayhwn}. m=alk=a' +deyn 'ema----r. l'=a hw=a' me^stAwd=ay=aw 'e^stEwdiyt lIy dtEdba.h +l'Ap=aluw: na.siy.h=a' 'emar. liy 'la=Ahe' 'ayleyn dma't`eyn. l'=a +hw=a' 'la=Ahe' 'Enuwn. qareb 'Enuwn lIy lh=ark=a'. +\sertob wl'=A +^suwbh=adhuwn dakiys.ty=ane' l'=a ^s=abeq '=n=a' .had menhuwn +dl'=a mdaqeq '=n=a' `adm=a' lram^s=a'. +</SERTO> +\end{quote} + + + +The preceding text was set typeset with the following +input: + + +\begin{quote}\small +\begin{verbatim} +\documentclass[12pt,a4paper]{article} +\usepackage{serto} +\begin{document} +\end{verbatim} +\verb.<SERTO>. +\begin{verbatim} +wk=ad .hzaw kuwmd'e da.h.tIyt=A' : medem +da`bad na.siy.h=a': lAbkuwh=y= +wa'sruwh=y= wa'ytIywh=y= qd=am malk=a'. +we'^stA`iyw lmalk=a' me----dem da`bad +{\sertob l'Al=Ahayhwn}. m=alk=a' deyn 'emar. l'=a hw=a' +me^stAwd=ay=aw 'e^stEwdiyt lIy dtEdba.h +l'Ap=aluw: na.siy.h=a' 'emar. liy 'la=Ahe' +'ayleyn dma't`eyn. l'=a hw=a' 'la=Ahe' +'Enuwn. qareb 'Enuwn lIy lh=ark=a'. \sertob wl'=A +^suwbh=adhuwn dakiys.ty=ane' l'=a ^s=abeq +'=n=a' .had menhuwn dl'=a mdaqeq '=n=a' +`adm=a' lram^s=a'. +\end{verbatim} +\verb.</SERTO>. + +\verb.\end{document}. +\end{quote} + +Replacing {\tt <SERTO>} by {\tt <CHALDEAN>} +results in this + +\begin{quote} +<CHALDEAN> +wk=ad .hzaw kuwmd'e da.h.tIyt=A': medem da`bad na.siy.h=a': +lAbkuwh=y= wa'sruwh=y= wa'ytIywh=y= qd=am malk=a'. +we'^stA`iyw lmalk=a' me----dem da`bad {\assyrb l'Al=Ahayhwn}. m=alk=a' +deyn 'ema----r. l'=a hw=a' me^stAwd=ay=aw 'e^stEwdiyt lIy dtEdba.h +l'Ap=aluw: na.siy.h=a' 'emar. liy 'la=Ahe' 'ayleyn dma't`eyn. l'=a +hw=a' 'la=Ahe' 'Enuwn. qareb 'Enuwn lIy lh=ark=a'. +\assyrb wl'=A +^suwbh=adhuwn dakiys.ty=ane' l'=a ^s=abeq '=n=a' .had menhuwn +dl'=a mdaqeq '=n=a' `adm=a' lram^s=a'. +</CHALDEAN> +\end{quote} + + + +The file was preprocessed using {\tt serto.py}. + +\section{Things still missing} + +The todo-list is long. I try to add features etc. as soon as possible. +Please tell me items you would like to have, but which are not yet on +this list. Any volunteers are welcome! + + +\begin{itemize} +\item proper typsetting of texts (without preprocessor, +maybe in the Arab\TeX\ package) +\item proper treatment of \emph{matr\=es lectionis} (long vowels) +%\item treatment of the <ST>sy=ame'</ST> %\emph{sey\=om\=e} +\item proper treatment of the silent bar <ST>mb+a.tl=an=a'</ST> +%\emph{mva\d tl\=on\=o} +\item proper treatment of \emph{be\=ga\b dke\=pa\b t} with +hard sign <ST>qu^s^s=ay=a'</ST> %\emph{qu\v s\v s\=oy\=o} +and soft sign <ST>ruwkk=ak+=a'</ST> %\emph{rukk\=o\b h\=o} +\item automatic transcription mode +\item interpunction +\item proper dealing with ligatures +%\item Chaldean vowels +%\item unicode input +\item <ST>'es.trangel=a'</ST> %and Chaldean glyphs +\item numbers +%\item support for typical encodings and for unicode (UTF-8) either via +%%the preprocessor or via +the \verb:inputenc.sty: package. +%\item creating Type 1 fonts from the \MF-sources +\item support for existing Syriac fonts +\end{itemize} + +\section{Installation} + +The easiest way to install the fonts and the preprocessor is by installing +the debian package (this includes only the {\tt pfb}, {\tt tfm} and {\tt afm} files for the fonts), +the needed styles and the preprocessor, but not the \MF{} sources: + +{\verb+ +\tt sudo dpkg -i serto-\SertoVersion.deb} + +If you are not on a Debian or Ubuntu plateform, you need to install +manually from the {\tt .tgz} file: + + +\subsection{Using Metafont sources} +Put the {\tt *.mf} files into a subdirectory {\tt serto} of your +metafont branch in your {\tt texmf}-directory. For example using +the texlive distribution under Linux, you should put them into +{\tt\url{/usr/local/share/texmf/fonts/source/serto/}}. Do not forget to call {\tt texhash} +in order to make the tex software find the newly installed fonts. + +\subsection{Using vector fonts} +Using vector fonts depends a little from the \TeX-installation used, the following +is tested for Ubuntu 12.04 and 10.04, it will probably work on Debian platforms as well, or +other platforms using the texlive installation. + +\begin{itemize} + \item copy {\tt syriac.map} to {\tt /usr/local/share/texmf/fonts/map/dvips/config/} + \item copy {\tt *.afm} to {\tt /usr/local/share/texmf/fonts/afm/syriac/serto/} + \item copy {\tt *.pfb} to {\tt /usr/local/share/texmf/fonts/type1/syriac/} + \item add {\tt Map syriac.map} to {\tt /etc/texmf/updmap.d/10local.cfg} + \item run {\tt sudo update-updmap} + \item run {\tt sudo updmap-sys} +\end{itemize} + + +\subsection{Other files} +The Stylefile etc. {\tt *.sty}, {\tt *.fd} go into a directory for +stylefiles, +e.g. \url{/usr/local/share/texmf/tex/latex/serto/}. + +The preprocessor {\tt serto.py} and the encoding file {\tt +serto.font} somewhere where it can be found (e.g +{\tt \url{/usr/local/bin}}). They must reside in the same directory unless you specify +in the environment variable {\tt SERTOFONTDIR} the directory containing +{\tt serto.font} and {\tt assyr.font}. +Possibly you have to adjust the first line +of the preprocessor \verb.#!/usr/bin/python. if your python +interpreter is somewhere else. + +\section{License} + +This Material is subjec to the LaTeX Project Public License 1.3 +(\url{http://ctan.org/license/lppl1.3}). + +\section{Changelog} + +\begin{itemize} +\item Version 1.0 + \begin{itemize} + \item adding a character for the \emph{linea occultans} above the letter + \item {\tt SERTOFONTDIR} enviromnment variable to specify the directory of {\tt *.font} files + \item some UTF8 support + \end{itemize} +\item Version 0.7 + \begin{itemize} + \item Chaldean vowels + \item Integration of the Chaldean font provided by Tony Khoshaba + \item Major adjustements to the {\tt serto.py} preprocessor + \end{itemize} +\item Version 0.2, 0.3 and 0.4 + \begin{itemize} + \item can't remember, didn't keep track of changelog those days\dots + \end{itemize} +\item Version 0.1 + \begin{itemize} + \item Initial version + \end{itemize} +\end{itemize} + +\bibliographystyle{engl} +\bibliography{buch} + + +\end{document} |