summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic/hyphenex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-12-10 18:23:42 +0000
committerKarl Berry <karl@freefriends.org>2007-12-10 18:23:42 +0000
commita2643aec47a253d5ad30d0c18823b8b2bced3cdf (patch)
tree10936652dbc02bc3f4381fa7949aa404ea2603d4 /Master/texmf-dist/source/generic/hyphenex
parent0d2234ba212ce646f9262c2e51c9f88b31128415 (diff)
hyphenex in texmf-dist
git-svn-id: svn://tug.org/texlive/trunk@5750 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/generic/hyphenex')
-rw-r--r--Master/texmf-dist/source/generic/hyphenex/README2
-rw-r--r--Master/texmf-dist/source/generic/hyphenex/hyphenex.pl81
-rw-r--r--Master/texmf-dist/source/generic/hyphenex/hyphenex.sh92
3 files changed, 175 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/hyphenex/README b/Master/texmf-dist/source/generic/hyphenex/README
new file mode 100644
index 00000000000..015cdd20203
--- /dev/null
+++ b/Master/texmf-dist/source/generic/hyphenex/README
@@ -0,0 +1,2 @@
+Scripts to generate hyphenation exceptions from tub, written
+by Werner Lemberg. This material is public domain. \ No newline at end of file
diff --git a/Master/texmf-dist/source/generic/hyphenex/hyphenex.pl b/Master/texmf-dist/source/generic/hyphenex/hyphenex.pl
new file mode 100644
index 00000000000..7cc546634f7
--- /dev/null
+++ b/Master/texmf-dist/source/generic/hyphenex/hyphenex.pl
@@ -0,0 +1,81 @@
+#! /usr/bin/env perl
+#
+#
+# hyphenex.pl
+#
+# This small filter converts a hyphenation exception log article for
+# TUGBoat to a real \hyphenation block.
+#
+# Written by Werner Lemberg <wl@gnu.org>.
+#
+# Version 1.2 (2007/11/16)
+#
+# Public domain.
+#
+#
+# Usage:
+#
+# [perl] hyphenex.pl < tugboat-article > hyphenation-exceptions
+
+# print header
+print "% Hyphenation exceptions for US English,\n";
+print "% based on hyphenation exception log articles in TUGboat.\n";
+print "%\n";
+print "% Copyright 2007 TeX Users Group.\n";
+print "% You may freely use, modify and/or distribute this file.\n";
+print "%\n";
+print "% This is an automatically generated file. Do not edit!\n";
+print "%\n";
+print "% Please contact the TUGboat editorial staff <tugboat\@tug.org>\n";
+print "% for corrections and omissions.\n";
+print "\n";
+print "\\hyphenation{\n";
+
+while (<>) {
+ # retain only lines starting with \1 ... \6 or \tabalign
+ next if not (m/^\\[123456]/ || m/^\\tabalign/);
+ # remove final newline
+ chop;
+ # remove all TeX commands except \1 ... \6
+ s/\\[^123456\s{]+//g;
+ # remove all paired { ... }
+ 1 while s/{(.*?)}/\1/g;
+ # skip lines which now have only whitespace before `&'
+ next if m/^\s*&/;
+ # remove comments
+ s/%.*//;
+ # remove trailing whitespace
+ s/\s*$//;
+ # remove trailing `*' (used as a marker in the document)
+ s/\*$//;
+ # split at whitespace
+ @field = split(' ');
+ if ($field[0] eq "\\1" || $field[0] eq "\\4") {
+ print " $field[2]\n";
+ }
+ elsif ($field[0] eq "\\2" || $field[0] eq "\\5") {
+ print " $field[2]\n";
+ # handle multiple suffixes separated by commata
+ @suffix_list = split(/,/, "$field[3]");
+ foreach $suffix (@suffix_list) {
+ print " $field[2]$suffix\n";
+ }
+ }
+ elsif ($field[0] eq "\\3" || $field[0] eq "\\6") {
+ # handle multiple suffixes separated by commata
+ @suffix_list = split(/,/, "$field[3],$field[4]");
+ foreach $suffix (@suffix_list) {
+ print " $field[2]$suffix\n";
+ }
+ }
+ else {
+ # for `&', split at `&' with trailing whitespace
+ @field = split(/&\s*/);
+ print " $field[1]\n";
+ }
+}
+
+# print trailer
+print "}\n";
+print "\n";
+print "% EOF\n";
diff --git a/Master/texmf-dist/source/generic/hyphenex/hyphenex.sh b/Master/texmf-dist/source/generic/hyphenex/hyphenex.sh
new file mode 100644
index 00000000000..14bd729b985
--- /dev/null
+++ b/Master/texmf-dist/source/generic/hyphenex/hyphenex.sh
@@ -0,0 +1,92 @@
+#! /bin/sh
+#
+#
+# hyphenex.sh
+#
+# This small filter converts a hyphenation exception log article for
+# TUGBoat to a real \hyphenation block.
+#
+# Written by Werner Lemberg <wl@gnu.org>.
+#
+# Version 1.4 (2007/11/16)
+#
+# Public domain.
+#
+#
+# Usage:
+#
+# sh hyphenex.sh < tugboat-article > hyphenation-exceptions
+
+cat >/tmp/sed.$$ <<SED_EOF
+1 i\\
+% Hyphenation exceptions for US English, based on hyphenation exception\\
+% log articles in TUGboat.\\
+%\\
+% Copyright 2007 TeX Users Group.\\
+% You may freely use, modify and/or distribute this file.\\
+%\\
+% This is an automatically generated file. Do not edit!\\
+%\\
+% Please contact the TUGboat editorial staff <tugboat@tug.org>\\
+% for corrections and omissions.\\
+\\
+\\\\hyphenation{
+\$ i\\
+}\\
+\\
+% EOF
+/^\\\\tabalign/ {
+ s/{}//g
+ s/[ ][ ]*/ /g
+ s/ *\\\\[^ ][^ ]*\$//
+ s/\\\\tabalign *[^ ][^ ]*.*& *\\(.*\\)\$/ \\1/p
+ b
+}
+/^\\\\[123456]/ !d
+s/\\\\4/\\\\1/
+s/\\\\5/\\\\2/
+s/\\\\6/\\\\3/
+s/[ ][ ]*/ /g
+s/^/ /
+s/\\\\1 [^ ][^ ]* {\\(.*\\)}\$/\\1/
+s/\\\\2 [^ ][^ ]* {\\(.*\\) \\(.*\\),\\(.*\\),\\(.*\\)}\$/\\1\\n \\1\\2\\n \\1\\3\\n \\1\\4/
+s/\\\\2 [^ ][^ ]* {\\(.*\\) \\(.*\\),\\(.*\\)}\$/\\1\\n \\1\\2\\n \\1\\3/
+s/\\\\2 [^ ][^ ]* {\\(.*\\) \\(.*\\)}\$/\\1\\n \\1\\2/
+s/\\\\3 [^ ][^ ]* {\\(.*\\) \\(.*\\) \\(.*\\)}\$/\\1\\2\\n \\1\\3/
+s/\\\\1 [^ ][^ ]* {\\(.*\\)} .*\$/\\1/
+s/\\\\2 [^ ][^ ]* {\\(.*\\) \\(.*\\),\\(.*\\),\\(.*\\)} .*\$/\\1\\n \\1\\2\\n \\1\\3\\n \\1\\4/
+s/\\\\2 [^ ][^ ]* {\\(.*\\) \\(.*\\),\\(.*\\)} .*\$/\\1\\n \\1\\2\\n \\1\\3/
+s/\\\\2 [^ ][^ ]* {\\(.*\\) \\(.*\\)} .*\$/\\1\\n \\1\\2/
+s/\\\\3 [^ ][^ ]* {\\(.*\\) \\(.*\\) \\(.*\\)} .*\$/\\1\\2\\n \\1\\3/
+s/\\\\1 {.*} {\\(.*\\)}\$/\\1/
+s/\\\\2 {.*} {\\(.*\\) \\(.*\\),\\(.*\\),\\(.*\\)}\$/\\1\\n \\1\\2\\n \\1\\3\\n \\1\\4/
+s/\\\\2 {.*} {\\(.*\\) \\(.*\\),\\(.*\\)}\$/\\1\\n \\1\\2\\n \\1\\3/
+s/\\\\2 {.*} {\\(.*\\) \\(.*\\)}\$/\\1\\n \\1\\2/
+s/\\\\3 {.*} {\\(.*\\) \\(.*\\) \\(.*\\)}\$/\\1\\2\\n \\1\\3/
+s/\\\\1 {.*} {\\(.*\\)} .*\$/\\1/
+s/\\\\2 {.*} {\\(.*\\) \\(.*\\),\\(.*\\),\\(.*\\)} .*\$/\\1\\n \\1\\2\\n \\1\\3\\n \\1\\4/
+s/\\\\2 {.*} {\\(.*\\) \\(.*\\),\\(.*\\)} .*\$/\\1\\n \\1\\2\\n \\1\\3/
+s/\\\\2 {.*} {\\(.*\\) \\(.*\\)} .*\$/\\1\\n \\1\\2/
+s/\\\\3 {.*} {\\(.*\\) \\(.*\\) \\(.*\\)} .*\$/\\1\\2\\n \\1\\3/
+s/\\\\1 [^ ][^ ]* \\([^ ][^ ]*\\)\$/\\1/
+s/\\\\2 [^ ][^ ]* \\([^ ][^ ]*\\) \\([^ ][^ ]*\\),\\([^ ][^ ]*\\),\\([^ ][^ ]*\\)\$/\\1\\n \\1\\2\\n \\1\\3\\n \\1\\4/
+s/\\\\2 [^ ][^ ]* \\([^ ][^ ]*\\) \\([^ ][^ ]*\\),\\([^ ][^ ]*\\)\$/\\1\\n \\1\\2\\n \\1\\3/
+s/\\\\2 [^ ][^ ]* \\([^ ][^ ]*\\) \\([^ ][^ ]*\\)\$/\\1\\n \\1\\2/
+s/\\\\3 [^ ][^ ]* \\([^ ][^ ]*\\) \\([^ ][^ ]*\\) \\([^ ][^ ]*\\)\$/\\1\\2\\n \\1\\3/
+s/\\\\1 [^ ][^ ]* \\([^ ][^ ]*\\) .*\$/\\1/
+s/\\\\2 [^ ][^ ]* \\([^ ][^ ]*\\) \\([^ ][^ ]*\\),\\([^ ][^ ]*\\),\\([^ ][^ ]*\\) .*\$/\\1\\n \\1\\2\\n \\1\\3\\n \\1\\4/
+s/\\\\2 [^ ][^ ]* \\([^ ][^ ]*\\) \\([^ ][^ ]*\\),\\([^ ][^ ]*\\) .*\$/\\1\\n \\1\\2\\n \\1\\3/
+s/\\\\2 [^ ][^ ]* \\([^ ][^ ]*\\) \\([^ ][^ ]*\\) .*\$/\\1\\n \\1\\2/
+s/\\\\3 [^ ][^ ]* \\([^ ][^ ]*\\) \\([^ ][^ ]*\\) \\([^ ][^ ]*\\) .*\$/\\1\\2\\n \\1\\3/
+s/\\*//
+s/\\\\llap *{\\(.*\\)}/\\1/
+s/\\\\[^ ]* //
+s/\\\\[^ ][^ ]*\$//
+s/{.*}//
+p
+SED_EOF
+
+sed -n -f /tmp/sed.$$
+rm /tmp/sed.$$
+
+# EOF