summaryrefslogtreecommitdiff
path: root/language/hyphenation/hypht1.tex
diff options
context:
space:
mode:
Diffstat (limited to 'language/hyphenation/hypht1.tex')
-rw-r--r--language/hyphenation/hypht1.tex304
1 files changed, 304 insertions, 0 deletions
diff --git a/language/hyphenation/hypht1.tex b/language/hyphenation/hypht1.tex
new file mode 100644
index 0000000000..4b07f5b501
--- /dev/null
+++ b/language/hyphenation/hypht1.tex
@@ -0,0 +1,304 @@
+% This is `hypht1.tex' as of January 31, 2000.
+%
+% Copyright (C) 1995-2000 Bernd Raichle/DANTE e.V.
+%
+% -----------------------------------------------------------------
+% IMPORTANT NOTICE:
+%
+% This program can be redistributed and/or modified under the terms
+% of the LaTeX Project Public License Distributed from CTAN
+% archives in directory macros/latex/base/lppl.txt; either
+% version 1 of the License, or any later version.
+% -----------------------------------------------------------------
+%
+% This file contains additional hyphenation patterns including
+% the character hyphen `-' to be used in conjunction with
+%
+% * all fonts with font encoding T1 and
+% * all national hyphenation patterns.
+%
+% It enables the hyphenation of words containing explicit hyphens
+% when using fonts with \hyphenchar\font <> `\- (e.g. EC fonts).
+%
+% It is an experimental version for testing and includes all
+% lowercase characters (including national characters) in T1
+% encoded fonts.
+% In 1990 at the TUG meeting at Cork, Ireland, the european TeX
+% user groups agreed on a 256 character encoding supporting many
+% european languages with latin writing. LaTeX2e supports this
+% character encoding as font encoding "T1".
+%
+%
+% The additional patterns add about 2600 patterns and 6 trie ops.
+% Be warned---to load the patterns in the IniTeX pass when creating
+% a new format a very large hyphenation trie is needed!
+% Example: TeX reports for "hyphen.tex"
+% Hyphenation trie of length 6075 has 181 ops out of ...
+% with the additional patterns it will report
+% Hyphenation trie of length 8618 has 187 ops out of ...
+%
+%
+% Note:
+% The \hyphenation command gives special interpretation to the
+% character `-'. Therefore it is not possible to include a
+% word with an explicit hyphen as hyphenation exception without
+% the following trick (from David Kastrup):
+%
+% \begingroup
+% % Make `=' to be seen as an explicit hyphen inside \hyphenation:
+% \lccode`\==`\-
+% % Example: Declare hyphenation points of `government-founded':
+% \hyphenation{gov-ern-ment=-foun-ded}
+% \endgroup
+%
+%
+% Error reports for "hypht1.tex" in case of UNCHANGED versions to
+%
+% Bernd Raichle
+% Stettener Str. 73
+% D-73732 Esslingen, FRG
+% Email: raichle@Informatik.Uni-Stuttgart.DE
+%
+% or
+% DANTE e.V., Koordinator `german.sty'
+% Postfach 10 18 40
+% D-69008 Heidelberg, FRG
+% Email: german@Dante.DE
+%
+%
+% Installation:
+% =============
+%
+% 1. Make sure that the hyphenation trie of your TeX version has
+% enough room to load more hyphenation patterns (cf. "pattern
+% memory", "trie size" in the documentation of your
+% implementation).
+%
+% 2. load "hypht1.tex" in addition to _every_ hyphenation
+% patterns file (i.e. for every value of \language) you are
+% using; make sure that \language has not been changed.
+%
+% Example for LaTeX2e (without Babel's ``language.dat''):
+% To load US English and German hyphenation patterns, and load
+% "hypht1.tex" in addition to both sets of patterns, create a
+% file "hyphen.cfg" with the following contents:
+%
+% \chardef\l@USenglish=0 \language=\l@USenglish
+% \input hyphen
+% \input hypht1
+%
+% \newlanguage\l@german \language=\l@german
+% \input dehypht
+% \input hypht1
+%
+% \language=\l@USenglish
+% \lefthyphenmin=2 \righthyphenmin=3
+% \endinput
+%
+% Example for LaTeX2e (using Babel's ``language.dat''):
+% To load a second file including additional hyphenation patterns
+% and hyphenation exceptions you specify the name of the file
+% in ``language.dat'' in addition to the regular hyphenation
+% pattern file name. For example
+% USenglish hyphen.tex hypht1.tex
+% german dehypht.tex hypht1.tex
+%
+%
+% 3. Use IniTeX to create a new format file.
+%
+%
+% Changes:
+% 1997-04-13 v0.2 First release found on CTAN.
+% 2000-01-31 v0.3 added missing glyphs '340-'377
+% (thanks to Vladimir Volovich)
+%
+% -----------------------------------------------------------------
+%
+\begingroup\expandafter\expandafter\expandafter
+\endgroup\expandafter\ifx\csname ProvidesFile\endcsname\relax
+ \wlog{File: hypht1.tex 2000/01/31 v0.3 %
+ Additional Hyphenation Patterns for T1-encoded fonts}
+\else
+ \ProvidesFile{hypht1.tex}%
+ [2000/01/31 v0.3 Additional Hyphenation Patterns %
+ for T1-encoded fonts]
+\fi
+%
+%
+% It is possible to use T1-encoded font with TeX 2.x and
+% include a subset '000-'177 of these additional hyphenation
+% patterns. Nonetheless TeX 2.x is unable to process more than
+% one \patterns. If you want to use these patterns, you have to
+% include some changes below and in the used set of patterns.
+% (You can contact the author for more information.)
+%
+\ifnum`\A=`\^^41 % TeX 2 or TeX 3?
+\else
+ \message{Sorry, you need TeX 3.x to use these patterns.}
+ \expandafter\endinput
+\fi
+%
+%
+% Make hyphen `-' a word constituent:
+%
+\lccode`\-=`\-
+%
+%
+% \patterns has a global effect, therefore we can open a group,
+% make local changes, call \patterns{...}, close the group, and
+% all changes are gone.
+%
+\begingroup
+%
+% Some feedback for users with slow computers:
+%
+\message{...please be patient...}
+%
+%
+\toksdef\L=0 \L={}% list of two letter patterns
+\toksdef\S=2 \S={}% list of "simple" patterns
+%
+\countdef\C=2 % use \C as temporary register for _c_har code
+\countdef\i=0 % temporary register: loop index i
+%
+\catcode`\Y=11 \lccode`\Y=0 % we need `Y' for special purposes
+\catcode`\X=11 \lccode`\X=0 % dto for `X'
+%
+%
+% 1) trivial cases:
+%
+\S={%
+ 8-7 % disallow hyphenation before, allow after hyphen
+ .-8 % disallow hyphenation for cases like "bergauf und -ab"
+ --8 % disallow hyphenation "in" an en- or em-dash (-8-),
+ % disallow hyphenation before and after an en- or em-dash
+ % (--8 + 8-7 ==> 8-8-8) because EC fonts v1.0 are missing
+ % appropriate ligatures for --(-) + hyphenchar!
+}
+% \changes{v0.2}{1997/02/01}{Replaced `2-1', `.-2' by `8-7', `.-8',
+% otherwise it is possible that the `2' is overwritten by a
+% greater odd value of another pattern.}
+% \changes{v0.2}{1997/04/13}{Added `8-8-8' resp. `--8' for
+% EC fonts v1.0.}
+%
+%
+% 2a) for all lowercase letters:
+% change catcode to letter (or other) to make sure that these
+% characters are not active, ignored, etc. and
+% change lccode to a non-zero value to allow its use inside
+% \patterns
+%
+% 2b) Add the patterns
+% .X-8 % disallow "X-|ray", "n-|fach", etc.
+% 8X8Y- % => "\righthyphenmin"=3 and "\lefthyphenmin"=3
+% -X8Y % before and after the hyphen
+% for all X,Y in the set of lowercase letters.
+%
+%
+\def\a#1{% add pattern to pattern list \L
+ \C=#1\relax \catcode\C=11\lccode\C=\C
+ \lccode`X=\C
+ \lowercase{%
+ \S\expandafter{\the\S .X-8 }%
+ \L\expandafter{\the\L 8X8Y- -X8Y8 }%
+ }}
+%
+% \changes{v0.2}{1997/02/01}{Replaced `X-2' by `X-8,
+% otherwise it is possible that the `2' is overwritten by a
+% greater odd value of another pattern.}
+%
+\def\y{%
+ %
+ % Add patterns for "lowercase letter d with bar"
+ %
+ \a{'236}% lowercase letter d with bar
+ %
+ % ... and for all lowercase characters:
+ %
+ % for i=`z downto `a do
+ % change catcode & lccode of char with code i
+ % add patterns for this char
+ % endfor
+ %
+ \i=`\z \advance\i 1 %
+ %
+ \def\x{%
+ \ifnum\i>`\a %
+ \advance\i -1 %
+ \a\i % add patterns for char `i'
+ \expandafter\x
+ \fi}%
+ \x
+ %
+ % for i = char "ij" ('274) downto char "a breve" ('240) do
+ % change catcode & lccode of char with code i
+ % add patterns for this char
+ % endfor
+ %
+ \i='275 % = '274 + 1 '274: lowercase letter ij
+ %
+ \def\x{%
+ \ifnum\i>'240 %
+ \advance\i -1 %
+ \a\i % add patterns for char `i'
+ \expandafter\x
+ \fi}%
+ \x
+ %
+ % \changes{v0.3}{2000/01/31}{Added code for char '340-'377.}
+ %
+ % for i = char "sharp s" ('377) downto char "a grave" ('340) do
+ % change catcode & lccode of char with code i
+ % add patterns for this char
+ % endfor
+ %
+ \i='377 \advance\i 1 %
+ %
+ \def\x{%
+ \ifnum\i>'340 %
+ \advance\i -1 %
+ \a\i % add patterns for char `i'
+ \expandafter\x
+ \fi}%
+ \x
+ %
+}% -- end of \y --
+%
+% Now do the real work:
+%
+\y
+%
+%
+% The list of "simple" patterns is ready to use:
+%
+\patterns{ \the\S }%
+\S={}% free memory used for token list
+%
+%
+% Now \L contains all needed patterns for all characters X
+% and one character Y. To finish our task we have to loop over Y
+% for all lowercase characters.
+%
+\def\h#1\relax{% lowercase #1 and add patterns
+ \lowercase{%
+ \patterns{#1}%
+ }}
+%
+\def\a#1{% add patterns in \L with Y replaced by #1
+ \lccode`Y=#1\relax
+ \expandafter\h\the\L\relax
+}
+%
+% Now do the real work (with the redefined macro \a):
+%
+\y
+%
+\message{done.}
+%
+% Restore all \catcode and \lccode setting, definitions for
+% csname, register changes, etc.
+%
+\endgroup
+\endinput
+%%
+%% End of file `hypht1.tex'.