From 16b92a961842471d20630e8073a88339eaffa123 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 27 May 2013 20:46:33 +0000 Subject: hyph-utf8 (27may13) git-svn-id: svn://tug.org/texlive/trunk@30725 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/luatex/hyph-utf8/etex.src | 29 +- Master/texmf-dist/tex/luatex/hyph-utf8/hyphen.cfg | 443 +++++++++++++++++++++ .../tex/luatex/hyph-utf8/luatex-hyphen.lua | 12 +- 3 files changed, 464 insertions(+), 20 deletions(-) create mode 100644 Master/texmf-dist/tex/luatex/hyph-utf8/hyphen.cfg (limited to 'Master/texmf-dist/tex/luatex/hyph-utf8') diff --git a/Master/texmf-dist/tex/luatex/hyph-utf8/etex.src b/Master/texmf-dist/tex/luatex/hyph-utf8/etex.src index 09302cfcc04..3f9d18c8b8c 100644 --- a/Master/texmf-dist/tex/luatex/hyph-utf8/etex.src +++ b/Master/texmf-dist/tex/luatex/hyph-utf8/etex.src @@ -1,5 +1,5 @@ -%% e-TeX V2.1;0-luatex2 -%% Revision-date: 16-MAY-2013 18:33:45 +%% e-TeX V2.1;0-luatex +%% Revision-date: 26-APR-2010 11:05:45 %% Revision-history: (at-end) % The version number in the first line is compared with the corresponding @@ -281,7 +281,9 @@ lu@texhyphen@loaded@\the\language\endcsname{}% \directlua{ if not status.ini_version then - require("luatex-hyphen") + if not luatexhyphen then + luatexhyphen = require("luatex-hyphen") + end luatexhyphen.loadlanguage("\luatexluaescapestring{#1}", \the\language) end}% @@ -307,7 +309,9 @@ \ifdefined\directlua % V2.1;0-luatex \csname fi\endcsname \csname if\directlua{% do we want to skip this language now? - require("luatex-hyphen") + if not luatexhyphen then + luatexhyphen = require("luatex-hyphen") + end if (luatexhyphen.lookupname("\luatexluaescapestring{#1}") == nil) or (\number\csname lang@#1\endcsname == 0) then tex.sprint("false") % no, load it (execute 'else' part) @@ -800,16 +804,13 @@ %% Revision-history: -16-MAY-2013: 2.1;0-luatex2 Minor changes for LuaTeX, adapting to new - luatex-hyphen package. - -03-MAY-2010: 2.1;0-luatex With LuaTeX, don't embed hyphenation patterns and - exceptions in the format, but on-demand at runtime, for faster - format loading. Use the Lua interface for loading hyphenation - rules from plain text files according to the new configuration - file language.lua.dat. Make use of a supporting lua file, - luatex-hyphen.lua. See also luatex-hyphen.pdf. - (Manuel Pegourie-Gonnard, Elie Roux and Khaled Hosny) +3-MAY-2010: 2.1;0-luatex With LuaTeX, don't embed hyphenation patterns and + exceptions in the format, but on-demand at runtime, for faster + format loading. Use the Lua interface for loading hyphenation + rules from plain text files according to the new configuration + file language.lua.dat. Make use of a supporting lua file, + luatex-hyphen.lua. See also luatex-hyphen.pdf. + (Manuel Pegourie-Gonnard, Elie Roux and Khaled Hosny) 01-FEB-1999: 2.1;0 Allow file to be used with e-TeX versions 2.0 and 2.1 diff --git a/Master/texmf-dist/tex/luatex/hyph-utf8/hyphen.cfg b/Master/texmf-dist/tex/luatex/hyph-utf8/hyphen.cfg new file mode 100644 index 00000000000..93195fd653a --- /dev/null +++ b/Master/texmf-dist/tex/luatex/hyph-utf8/hyphen.cfg @@ -0,0 +1,443 @@ +%% +%% This is file `hyphen.cfg', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% luatex-hyphen.dtx (with options: `hyphen') +%% +%% This is a modified version of the hyphen.cfg file from the babel system, +%% intended for use with LuaTeX, but compatible with other engines. +%% The present file IS NOT part of the babel system. +%% +%% The modifications are Copyright 2012 Khaled Hosny, Elie Roux, and Manuel +%% Pegourie-Gonnard, under LPPL version 1.3 or later. +%% +%% Here is the licence statement of the original hyphen.cfg file: +%% | +%% | Copyright 1989-2008 Johannes L. Braams and any individual authors +%% | Listed elsewhere in this file. All rights reserved. +%% | +%% | It may be distributed and/or modified under the +%% | Conditions of the LaTeX Project Public License, either version 1.3 +%% | Of this license or (at your option) any later version. +%% | The latest version of this license is in +%% | http://www.latex-project.org/lppl.txt +%% | And version 1.3 or later is part of all distributions of LaTeX +%% | Version 2003/12/01 or later. +%% | +%% | This work has the LPPL maintenance status "maintained". +%% | +%% | The Current Maintainer of this work is Johannes Braams. +%% | +%% `---=(licence statement of original hyphen.cfg)=--- +%% +\ifx\ProvidesFile\@undefined + \def\ProvidesFile#1[#2 #3 #4]{% + \wlog{File: #1 #4 #3 <#2>}% + \ifx\directlua\@undefined + \toks8{Babel <#3> and hyphenation patterns for }% + \else + \toks8{LuaTeX adaptation of babel <#3> + and hyphenation patterns for }% + \fi + \let\ProvidesFile\@undefined + } + \def\ProvidesLanguage#1[#2 #3 #4]{% + \wlog{Language: #1 #4 #3 <#2>}% + } +\else + \let\bbl@tempa\ProvidesFile + \def\ProvidesFile#1[#2 #3 #4]{% + \ifx\directlua\@undefined + \toks8{Babel <#3> and hyphenation patterns for }% + \else + \toks8{LuaTeX adaptation of babel <#3> + and hyphenation patterns for }% + \fi + \bbl@tempa#1[#2 #3 #4]% + \let\ProvidesFile\bbl@tempa} + \def\ProvidesLanguage#1{% + \begingroup + \catcode`\ 10 % + \@makeother\/% + \@ifnextchar[%] + {\@provideslanguage{#1}}{\@provideslanguage{#1}[]}} + \def\@provideslanguage#1[#2]{% + \wlog{Language: #1 #2}% + \expandafter\xdef\csname ver@#1.ldf\endcsname{#2}% + \endgroup} +\fi + +\ProvidesFile{hyphen.cfg} + [2012/04/16 v3.8m-luatex-1.5 % + Language switching mechanism for LuaTeX, adapted from babel v3.8m] +\ifx\AtBeginDocument\@undefined + \input plain.def\relax +\fi +\ifx\language\@undefined + \csname newcount\endcsname\language +\fi +\ifx\newlanguage\@undefined + \csname newcount\endcsname\last@language +\else + \countdef\last@language=19 +\fi +\ifx\newlanguage\@undefined + \def\addlanguage#1{% + \global\advance\last@language \@ne + \ifnum\last@language<\@cclvi + \else + \errmessage{No room for a new \string\language!}% + \fi + \global\chardef#1\last@language + \wlog{\string#1 = \string\language\the\last@language}} +\else + \def\addlanguage{\alloc@9\language\chardef\@cclvi} +\fi +\def\adddialect#1#2{% + \global\chardef#1#2\relax + \ifx\directlua\@undefined\else + \ifx\directlua\relax\else + \directlua{ + if not luatexhyphen then + luatexhyphen = require("luatex-hyphen") + end + luatexhyphen.adddialect("\string#1", "\string#2") + }% + \fi + \fi + \wlog{\string#1 = a dialect from \string\language#2}} +\def\iflanguage#1{% + \expandafter\ifx\csname l@#1\endcsname\relax + \@nolanerr{#1}% + \else + \bbl@afterfi{\ifnum\csname l@#1\endcsname=\language + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}% + \fi} +\edef\selectlanguage{% + \noexpand\protect + \expandafter\noexpand\csname selectlanguage \endcsname + } +\ifx\@undefined\protect\let\protect\relax\fi +\ifx\documentclass\@undefined + \def\xstring{\string\string\string} +\else + \let\xstring\string +\fi +\xdef\bbl@language@stack{} +\def\bbl@push@language{% + \xdef\bbl@language@stack{\languagename+\bbl@language@stack}% + } +\def\bbl@pop@lang#1+#2-#3{% + \def\languagename{#1}\xdef#3{#2}% + } +\def\bbl@pop@language{% + \expandafter\bbl@pop@lang\bbl@language@stack-\bbl@language@stack + \expandafter\bbl@set@language\expandafter{\languagename}% + } +\expandafter\def\csname selectlanguage \endcsname#1{% + \bbl@push@language + \aftergroup\bbl@pop@language + \bbl@set@language{#1}} +\def\bbl@set@language#1{% + \edef\languagename{% + \ifnum\escapechar=\expandafter`\string#1\@empty + \else \string#1\@empty\fi}% + \select@language{\languagename}% + \if@filesw + \protected@write\@auxout{}{\string\select@language{\languagename}}% + \addtocontents{toc}{\xstring\select@language{\languagename}}% + \addtocontents{lof}{\xstring\select@language{\languagename}}% + \addtocontents{lot}{\xstring\select@language{\languagename}}% + \fi} +\def\select@language#1{% + \expandafter\ifx\csname l@#1\endcsname\relax + \@nolanerr{#1}% + \else + \expandafter\ifx\csname date#1\endcsname\relax + \@noopterr{#1}% + \else + \bbl@patterns{\languagename}% + \originalTeX + \expandafter\def\expandafter\originalTeX + \expandafter{\csname noextras#1\endcsname + \let\originalTeX\@empty}% + \languageshorthands{none}% + \babel@beginsave + \csname captions#1\endcsname + \csname date#1\endcsname + \csname extras#1\endcsname\relax + \babel@savevariable\lefthyphenmin + \babel@savevariable\righthyphenmin + \expandafter\ifx\csname #1hyphenmins\endcsname\relax + \set@hyphenmins\tw@\thr@@\relax + \else + \expandafter\expandafter\expandafter\set@hyphenmins + \csname #1hyphenmins\endcsname\relax + \fi + \fi + \fi} +\long\def\otherlanguage#1{% + \csname selectlanguage \endcsname{#1}% + \ignorespaces + } +\long\def\endotherlanguage{% + \originalTeX + \global\@ignoretrue\ignorespaces + } +\expandafter\def\csname otherlanguage*\endcsname#1{% + \foreign@language{#1}% + } +\expandafter\def\csname endotherlanguage*\endcsname{% + \csname noextras\languagename\endcsname + } +\def\foreignlanguage{\protect\csname foreignlanguage \endcsname} +\expandafter\def\csname foreignlanguage \endcsname#1#2{% + \begingroup + \originalTeX + \foreign@language{#1}% + #2% + \csname noextras#1\endcsname + \endgroup + } +\def\foreign@language#1{% + \def\languagename{#1}% + \expandafter\ifx\csname l@#1\endcsname\relax + \@nolanerr{#1}% + \else + \bbl@patterns{\languagename}% + \languageshorthands{none}% + \csname extras#1\endcsname + \expandafter\ifx\csname #1hyphenmins\endcsname\relax + \set@hyphenmins\tw@\thr@@\relax + \else + \expandafter\expandafter\expandafter\set@hyphenmins + \csname #1hyphenmins\endcsname\relax + \fi + \fi + } +\def\bbl@patterns#1{% + \language=\expandafter\ifx\csname l@#1:\f@encoding\endcsname\relax + \csname l@#1\endcsname + \else + \csname l@#1:\f@encoding\endcsname + \fi\relax + \ifx\directlua\@undefined\else + \ifx\directlua\relax\else + \ifcsname lu@texhyphen@loaded@\the\language\endcsname \else + \global\@namedef{lu@texhyphen@loaded@\the\language}{}% + \directlua{ + if not luatexhyphen then + luatexhyphen = require("luatex-hyphen") + end + luatexhyphen.loadlanguage("\luatexluaescapestring{#1}", + \the\language)}% + \fi + \fi + \fi +} +\def\hyphenrules#1{% + \expandafter\ifx\csname l@#1\endcsname\@undefined + \@nolanerr{#1}% + \else + \bbl@patterns{#1}% + \languageshorthands{none}% + \expandafter\ifx\csname #1hyphenmins\endcsname\relax + \set@hyphenmins\tw@\thr@@\relax + \else + \expandafter\expandafter\expandafter\set@hyphenmins + \csname #1hyphenmins\endcsname\relax + \fi + \fi + } +\def\endhyphenrules{} +\def\providehyphenmins#1#2{% + \expandafter\ifx\csname #1hyphenmins\endcsname\relax + \@namedef{#1hyphenmins}{#2}% + \fi} +\def\set@hyphenmins#1#2{\lefthyphenmin#1\righthyphenmin#2} +\def\LdfInit{% + \chardef\atcatcode=\catcode`\@ + \catcode`\@=11\relax + \input babel.def\relax + \catcode`\@=\atcatcode \let\atcatcode\relax + \LdfInit} +\ifx\originalTeX\@undefined\let\originalTeX\@empty\fi +\ifx\babel@beginsave\@undefined\let\babel@beginsave\relax\fi +\ifx\PackageError\@undefined + \def\@nolanerr#1{% + \errhelp{Your command will be ignored, type to proceed}% + \errmessage{You haven't defined the language #1\space yet}} + \def\@nopatterns#1{% + \message{No hyphenation patterns were loaded for}% + \message{the language `#1'}% + \message{I will use the patterns loaded for \string\language=0 + instead}} + \def\@noopterr#1{% + \errmessage{The option #1 was not specified in \string\usepackage} + \errhelp{You may continue, but expect unexpected results}} + \def\@activated#1{% + \wlog{Package babel Info: Making #1 an active character}} +\else + \newcommand*{\@nolanerr}[1]{% + \PackageError{babel}% + {You haven't defined the language #1\space yet}% + {Your command will be ignored, type to proceed}} + \newcommand*{\@nopatterns}[1]{% + \PackageWarningNoLine{babel}% + {No hyphenation patterns were loaded for\MessageBreak + the language `#1'\MessageBreak + I will use the patterns loaded for \string\language=0 + instead}} + \newcommand*{\@noopterr}[1]{% + \PackageError{babel}% + {You haven't loaded the option #1\space yet}% + {You may proceed, but expect unexpected results}} + \newcommand*{\@activated}[1]{% + \PackageInfo{babel}{% + Making #1 an active character}} +\fi +\def\process@line#1#2 #3/{% + \ifx=#1 + \process@synonym#2 / + \else + \process@language#1#2 #3/% + \fi + } +\toks@{} +\def\process@synonym#1 /{% + \ifnum\last@language=\m@ne + \expandafter\chardef\csname l@#1\endcsname0\relax + \wlog{\string\l@#1=\string\language0} + \toks@\expandafter{\the\toks@ + \expandafter\let\csname #1hyphenmins\expandafter\endcsname + \csname\languagename hyphenmins\endcsname}% + \else + \expandafter\chardef\csname l@#1\endcsname\last@language + \wlog{\string\l@#1=\string\language\the\last@language} + \expandafter\let\csname #1hyphenmins\expandafter\endcsname + \csname\languagename hyphenmins\endcsname + \fi + } +\def\process@language#1 #2 #3/{% + \expandafter\addlanguage\csname l@#1\endcsname + \expandafter\language\csname l@#1\endcsname + \def\languagename{#1}% + \ifx\directlua\@undefined + \global\toks8\expandafter{\the\toks8#1, }% + \else + \directlua{ + if not luatexhyphen then + luatexhyphen = require("luatex-hyphen") + end + processnow = (tex.language == 0) or + (luatexhyphen.lookupname("\luatexluaescapestring{#1}") == nil)}% + \ifnum0=\directlua{tex.sprint(processnow and "0" or "1")}\relax + \global\toks8\expandafter{\the\toks8#1, }% + \global\@namedef{lu@texhyphen@loaded@\the\language}{}% + \fi + \fi + \begingroup + \bbl@get@enc#1:\@@@ + \ifx\bbl@hyph@enc\@empty + \else + \fontencoding{\bbl@hyph@enc}\selectfont + \fi + \lefthyphenmin\m@ne + \ifx\directlua\@undefined + \input #2\relax + \else + \ifnum0=\directlua{tex.sprint(processnow and "0" or "1")}\relax + \input #2\relax + \fi + \fi + \ifnum\lefthyphenmin=\m@ne + \else + \expandafter\xdef\csname #1hyphenmins\endcsname{% + \the\lefthyphenmin\the\righthyphenmin}% + \fi + \endgroup + \ifnum\the\language=\z@ + \expandafter\ifx\csname #1hyphenmins\endcsname\relax + \set@hyphenmins\tw@\thr@@\relax + \else + \expandafter\expandafter\expandafter\set@hyphenmins + \csname #1hyphenmins\endcsname + \fi + \the\toks@ + \fi + \toks@{}% + \def\bbl@tempa{#3}% + \ifx\bbl@tempa\@empty + \else + \ifx\bbl@tempa\space + \else + \ifx\directlua\@undefined + \input #3\relax + \else + \ifnum0=\directlua{tex.sprint(processnow and "0" or "1")}\relax + \input #3\relax + \fi + \directlua{processnow = nil}% + \fi + \fi + \fi + } +\def\bbl@get@enc#1:#2\@@@{% + \def\bbl@tempa{#1}% + \def\bbl@tempb{#2}% + \ifx\bbl@tempb\@empty + \let\bbl@hyph@enc\@empty + \else + \bbl@get@enc#2\@@@ + \edef\bbl@hyph@enc{\bbl@tempa}% + \fi} +\openin1 = language.dat +\ifeof1 + \message{I couldn't find the file language.dat,\space + I will try the file hyphen.tex} + \input hyphen.tex\relax + \def\l@english{0}% + \def\languagename{english}% +\else + \last@language\m@ne + \loop + \endlinechar\m@ne + \read1 to \bbl@line + \endlinechar`\^^M + \ifx\bbl@line\@empty + \else + \edef\bbl@line{\bbl@line\space/}% + \expandafter\process@line\bbl@line + \ifx\bbl@defaultlanguage\@undefined + \let\bbl@defaultlanguage\languagename + \fi + \fi + \iftrue \csname fi\endcsname + \csname if\ifeof1 false\else true\fi\endcsname + \repeat + \language=0 + \let\languagename\bbl@defaultlanguage + \let\bbl@defaultlanguage\@undefined +\fi +\closein1 +\let\process@language\@undefined +\let\process@synonym\@undefined +\let\process@line\@undefined +\let\bbl@tempa\@undefined +\let\bbl@tempb\@undefined +\let\bbl@eq@\@undefined +\let\bbl@line\@undefined +\let\bbl@get@enc\@undefined +\ifx\addto@hook\@undefined +\else + \expandafter\addto@hook\expandafter\everyjob\expandafter{% + \expandafter\typeout\expandafter{\the\toks8 loaded.}} +\fi +\endinput +%% +%% End of file `hyphen.cfg'. diff --git a/Master/texmf-dist/tex/luatex/hyph-utf8/luatex-hyphen.lua b/Master/texmf-dist/tex/luatex/hyph-utf8/luatex-hyphen.lua index 6b547fab7ac..fa7ed3851ca 100644 --- a/Master/texmf-dist/tex/luatex/hyph-utf8/luatex-hyphen.lua +++ b/Master/texmf-dist/tex/luatex/hyph-utf8/luatex-hyphen.lua @@ -12,8 +12,6 @@ -- -- This work is under the CC0 license. -- -luatexhyphen = luatexhyphen or {} -local luatexhyphen = luatexhyphen local function wlog(msg, ...) texio.write_nl('log', 'luatex-hyphen: '..msg:format(...)) end @@ -22,7 +20,7 @@ local function err(msg, ...) end local dbname = "language.dat.lua" local language_dat -local dbfile = kpse.find_file(dbname, 'lua') +local dbfile = kpse.find_file(dbname) if not dbfile then err("file not found: "..dbname) else @@ -42,7 +40,6 @@ local function lookupname(name) end end end -luatexhyphen.lookupname = lookupname local function loadlanguage(lname, id) if id == 0 then return @@ -79,7 +76,6 @@ local function loadlanguage(lname, id) end end end -luatexhyphen.loadlanguage = loadlanguage local function adddialect(dialect, language) if dialect ~= '0' then dialect = dialect:gsub('l@', '') @@ -90,6 +86,10 @@ local function adddialect(dialect, language) end end end -luatexhyphen.adddialect = adddialect +return { + lookupname = lookupname, + loadlanguage = loadlanguage, + adddialect = adddialect, +} -- -- End of File `luatex-hyphen.lua'. -- cgit v1.2.3