1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#!/usr/bin/env ruby
load 'languages.rb'
# this file auto-generates loaders for hyphenation patterns - to be improved
$package_name="hyph-utf8"
# TODO - make this a bit less hard-coded
$path_tex_generic="../../../tex/generic"
$path_TL="../../../../TL"
$path_language_dat="#{$path_TL}/texmf/tex/generic/config"
# hyphen-foo.tlpsrc for TeX Live
$path_tlpsrc="#{$path_TL}/tlpkg/tlpsrc"
$l = Languages.new
# TODO: should be singleton
languages = $l.list.sort{|a,b| a.name <=> b.name}
language_grouping = {
'norwegian' => ['nb', 'nn'],
'german' => ['de-1901', 'de-1996'],
'serbian' => ['sr-latn', 'sr-cyrl'],
'mongolian' => ['mn-cyrl', 'mn-cyrl-x-2a'],
'greek' => ['el-monoton', 'el-polyton'],
'ancientgreek' => ['grc', 'grc-x-ibycus'],
'chinese' => ['zh-latn'],
}
language_used_in_group = Hash.new
language_grouping.each_value do |group|
group.each do |code|
language_used_in_group[code] = true
end
end
# a hash with language name as key and array of languages as the value
language_groups = Hash.new
# single languages first
languages.each do |language|
if language_used_in_group[language.code] == nil then
language_groups[language.name] = [language]
end
end
# then groups of languages
language_grouping.each do |name,group|
language_groups[name] = []
group.each do |code|
language_groups[name].push($l[code])
end
end
# languages.each do |language|
# if language.hyphenmin == nil then
# lmin = ''
# rmin = ''
# else
# lmin = language.hyphenmin[0]
# rmin = language.hyphenmin[1]
# end
# puts "#{language.name}: #{lmin} #{rmin}"
# end
#--------#
# TLPSRC #
#--------#
$file_tlpsrc = File.open("#{$path_language_dat}/language.tlpsrc", 'w')
language_groups.sort.each do |language_name,language_list|
$file_tlpsrc.puts "name hyphen-#{language_name}"
$file_tlpsrc.puts "category TLCore"
language_list.each do |language|
name = " name=#{language.name}"
# synonyms
if language.synonyms != nil and language.synonyms.length > 0 then
synonyms=" synonyms=#{language.synonyms.join(',')}"
else
synonyms=""
end
# lefthyphenmin/righthyphenmin
if language.hyphenmin == nil or language.hyphenmin.length == 0 then
lmin = ''
rmin = ''
elsif language.filename_old_patterns == "zerohyph.tex" then
lmin = ''
rmin = ''
else
lmin = language.hyphenmin[0]
rmin = language.hyphenmin[1]
end
hyphenmins = " lefthyphenmin=#{lmin} righthyphenmin=#{rmin}"
# which file to use
if language.use_new_loader then
file = " file=loadhyph-#{language.code}.tex"
else
file = " file=#{language.filename_old_patterns}"
end
$file_tlpsrc.puts "execute AddHyphen#{name}#{synonyms}#{hyphenmins}#{file}"
end
$file_tlpsrc.puts
end
$file_tlpsrc.close
#--------------#
# language.dat #
#--------------#
$file_language_dat = File.open("#{$path_language_dat}/language.dat", "w")
language_groups.sort.each do |language_name,language_list|
language_list.each do |language|
if language.use_new_loader then
$file_language_dat.puts "#{language.name}\tloadhyph-#{language.code}.tex"
else
$file_language_dat.puts "#{language.name}\t#{language.filename_old_patterns}"
end
# synonyms
if language.synonyms != nil then
language.synonyms.each do |synonym|
$file_language_dat.puts "=#{synonym}"
end
end
end
end
$file_language_dat.close
|