From e6ecf62a1727571cc47129fa4b4e198eadbe2ed3 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 19 Mar 2019 21:27:38 +0000 Subject: csplain (19mar19) git-svn-id: svn://tug.org/texlive/trunk@50469 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/csplain/base/csplain.ini | 11 +- Master/texmf-dist/tex/csplain/base/hyphen.lan | 121 +++++++++--------- Master/texmf-dist/tex/csplain/base/lua-hyphen.lan | 142 ++++++++++++++++++++++ Master/texmf-dist/tex/csplain/base/t1code.tex | 4 +- 4 files changed, 215 insertions(+), 63 deletions(-) create mode 100644 Master/texmf-dist/tex/csplain/base/lua-hyphen.lan (limited to 'Master/texmf-dist/tex/csplain/base') diff --git a/Master/texmf-dist/tex/csplain/base/csplain.ini b/Master/texmf-dist/tex/csplain/base/csplain.ini index 16a0bcb2286..f19c71e652d 100644 --- a/Master/texmf-dist/tex/csplain/base/csplain.ini +++ b/Master/texmf-dist/tex/csplain/base/csplain.ini @@ -8,12 +8,11 @@ \ifx\pdfextension\undefined \else\input luatex85.sty \fi % LuaTeX specific \ifx\eTeXversion\undefined \else\input etex-mac.tex \fi % eTeX specific -\input il2code % extra codes for czech / slovak letters in ISO-8859-2 encoding \input hyphen.lan % czech / slovak hyphenation pattern (may be others too) \input plaina4 % \hsize and \vsize for A4 \everyjob=\expandafter{\the\everyjob - \message{The format: csplain .} + \message{The format: csplain .} \message{The cs-fonts are preloaded and A4 size implicitly defined.}} \ifx\xprncode\undefined \else %% The encTeX is detected \count255=128 % All codes > 128 are printable: @@ -37,6 +36,7 @@ \ifx\pdfoutput\undefined \else % added in Feb. 2005 \def\tmpa#1#2#3#4\relax{\def\tmpa{#1#2#3}}\expandafter\tmpa\jobname\relax + \ifx\directlua\undefined \else \def\tmpa{pdf}\fi \def\tmpb{pdf} \edef\tmpa{\meaning\tmpa} \edef\tmpb{\meaning\tmpb} \ifx\tmpa\tmpb %% PDFTeX with PDF output, \jobname starts by "pdf": \message {jobname=pdf*, PDF output initialised.} @@ -268,6 +268,13 @@ file extcode.tex renamed to il2code.tex (suggested by Jan Kasprzak) Jul. 2016: * etex-mac.tex: \endpinput -> \endinput, typo corrected + Mar. 2019: +* lua-hyphen.lan introduced (use dynamically loaded patterns for luatex) +* luatex -ini csplain.ini generates format with default pdf output. +* More hyphen patterns preloaded in pdftex: (pdf)csplain +* Only three hyphen patterns preloaded in xetex: pdfcsplain + + COPYRIGHT ========= diff --git a/Master/texmf-dist/tex/csplain/base/hyphen.lan b/Master/texmf-dist/tex/csplain/base/hyphen.lan index af264ab2a2e..5a097364e4e 100644 --- a/Master/texmf-dist/tex/csplain/base/hyphen.lan +++ b/Master/texmf-dist/tex/csplain/base/hyphen.lan @@ -2,24 +2,29 @@ % % Created by Oldrich Ulrych, January 5, 1993 % General changes by Petr Olsak November 2012 -% +% More default preloaded patterns March 2019 + % See the end of this file for more inforamtion -\def\loadpatterns #1#2 #3 #4#5#6#7#8#9{\ifx#1\undefined \else \chardef#1=#2 +\ifx\directlua\undefined \else \input lua-hyphen.lan \endinput \fi + +\input il2code % extra codes for czech / slovak letters in ISO-8859-2 encoding + +\def\loadpatterns #1#2 #3 #4#5#6#7#8#9{\ifx#1\undefined \else \global\chardef#1=#2 \begingroup \language=#2 \def\doaccents{\def\csaccentsmessage{}\csaccents} \let\global=\relax \message{Loading #4 encoding, \string#1=#2 (#3).} #5 \endgroup - \expandafter \def \csname lan:#2\endcsname {#3} - \expandafter \def \csname #3lang\endcsname {\langpatterntest#9% + \expandafter \gdef \csname lan:#2\endcsname {#3} + \expandafter \gdef \csname #3lang\endcsname {\langpatterntest#9% \language=#9\relax \initlanguage{#3}\frenchspacing \lefthyphenmin=#6\righthyphenmin=#7% \message{#3 hyphenation used (\string\language=\the\language). \string\frenchspacing\space is set on.}} \ifx#8\relax \else - \expandafter\def\expandafter#8\expandafter{#8\let#9#1}\fi - \edef\pattlist{\pattlist #1=#2 } - \advance\numpatterns by1 + \expandafter\gdef\expandafter#8\expandafter{#8\let#9#1}\fi + \xdef\pattlist{\pattlist #1=#2 } + \global\advance\numpatterns by1 \fi } \def\langpatterntest#1{\ifx\undefined#1\langpatterntestA#1\fi} @@ -65,8 +70,8 @@ \let\enPatt=\patterns % Default plainTeX US English :\let\enusPatt=\patterns % US English extended -:\let\engbPatt=\patterns % UK English -:\let\itPatt=\patterns % Italian +\let\engbPatt=\patterns % UK English +\let\itPatt=\patterns % Italian :\let\iaPatt=\patterns % Interlingua :\let\idPatt=\patterns % Indonesian @@ -81,23 +86,23 @@ %% pdftex -ini "\let\Cork=\relax \input csplain.ini" %% if you want to suppress the Cork (alias T1) encoded hyphenation patterns. +\ifx\tmp\empty \let\Cork=\relax \fi % Unicoded TeX need not Cork-encoded patterns + \ifx\Cork\undefined \let\csCork=\patterns % Czech \let\skCork=\patterns % Slovak -\ifx\tmp\empty\else - -:\let\deCork=\patterns % German -:\let\frCork=\patterns % French -:\let\plCork=\patterns % Polish +\let\deCork=\patterns % German +\let\frCork=\patterns % French +\let\plCork=\patterns % Polish :\let\cyCork=\patterns % Welsh :\let\daCork=\patterns % Danish -:\let\esCork=\patterns % Spanish -:\let\slCork=\patterns % Slovenian -:\let\svCork=\patterns % Swedish -:\let\fiCork=\patterns % Finnish -:\let\huCork=\patterns % Hungarian +\let\esCork=\patterns % Spanish +\let\slCork=\patterns % Slovenian +\let\svCork=\patterns % Swedish +\let\fiCork=\patterns % Finnish +\let\huCork=\patterns % Hungarian :\let\trCork=\patterns % Turkish :\let\etCork=\patterns % Estonian :\let\euCork=\patterns % Basque @@ -118,13 +123,12 @@ :\let\tkCork=\patterns % Turkmen :\let\laCork=\patterns % Latin -\fi\fi\fi +\fi\fi -%% test of Unicoded TeX engine -\ifx\tmp\empty +\ifx\tmp\empty %% test of Unicoded TeX engine -:\let\UnicodeLcUc=y % setting \lccodes, \uccodes for all Unicode characters +\let\UnicodeLcUc=y % setting \lccodes, \uccodes for all Unicode characters \let\csUnicode=\patterns % Czech \let\skUnicode=\patterns % Slovak :\let\deUnicode=\patterns % German @@ -145,7 +149,6 @@ :\let\nbUnicode=\patterns % Norwegian Bokmal :\let\nnUnicode=\patterns % Norwegian Nynorsk :\let\nlUnicode=\patterns % Dutch -:\let\huUnicode=\patterns % Hungarian :\let\ptUnicode=\patterns % Portuguese :\let\roUnicode=\patterns % Romanian :\let\hrUnicode=\patterns % Croatian @@ -210,105 +213,105 @@ \loadpatterns \skILtwo 6 sk {Slovak \patt in ISO-8859-2} {\doaccents \input skhyphen.tex \input skhyphen.ex }23 \iltwolangs \skPatt +\begingroup \ifx\Cork\undefined \input t1code \input conv-utf8-ec \fi + \loadpatterns \csCork 15 cs {Czech \patt in Cork} - {\input t1code \doaccents \input czhyphen.tex \input czhyphen.ex }23 - \corklangs \csPatt + {\input hyph-cs.tex }23 \corklangs \csPatt \loadpatterns \skCork 16 sk {Slovak \patt in Cork} - {\input t1code \doaccents \input skhyphen.tex \input skhyphen.ex }23 - \corklangs \skPatt + {\input hyph-sk.tex }23 \corklangs \skPatt \loadpatterns \deCork 21 de {German \patt in Cork} - {\input conv-utf8-ec \input hyph-de-1996 }22 \corklangs \dePatt + {\input hyph-de-1996 }22 \corklangs \dePatt \loadpatterns \frCork 22 fr {French \patt in Cork} - {\lccode`\'=`\' \input conv-utf8-ec \input hyph-fr }23 \corklangs \frPatt + {\lccode`\'=`\' \input hyph-fr }23 \corklangs \frPatt \loadpatterns \plCork 23 pl {Polish \patt in Cork} - {\input conv-utf8-ec \input hyph-pl }22 \corklangs \plPatt + {\input hyph-pl }22 \corklangs \plPatt \loadpatterns \cyCork 24 cy {Welsh \patt in Cork} - {\input conv-utf8-ec \input hyph-cy }23 \corklangs \cyPatt + {\input hyph-cy }23 \corklangs \cyPatt \loadpatterns \daCork 25 da {Danish \patt in Cork} - {\input conv-utf8-ec \input hyph-da }22 \corklangs \daPatt + {\input hyph-da }22 \corklangs \daPatt \loadpatterns \esCork 26 es {Spanish \patt in Cork} - {\input conv-utf8-ec \input hyph-es }22 \corklangs \esPatt + {\input hyph-es }22 \corklangs \esPatt \loadpatterns \slCork 28 sl {Slovenian \patt in Cork} - {\input conv-utf8-ec \input hyph-sl }22 \corklangs \slPatt + {\input hyph-sl }22 \corklangs \slPatt \loadpatterns \fiCork 29 fi {Finnish \patt in Cork} - {\input conv-utf8-ec \input hyph-fi }22 \corklangs \fiPatt + {\input hyph-fi }22 \corklangs \fiPatt \loadpatterns \huCork 30 hu {Hungarian \patt in Cork} - {\input conv-utf8-ec \input hyph-hu }22 \corklangs \huPatt + {\input hyph-hu }22 \corklangs \huPatt \loadpatterns \trCork 31 tr {Turkish \patt in Cork} - {\input conv-utf8-ec \input hyph-tr }22 \corklangs \trPatt + {\input hyph-tr }22 \corklangs \trPatt \loadpatterns \etCork 32 et {Estonian \patt in Cork} - {\input conv-utf8-ec \input hyph-et }23 \corklangs \etPatt + {\input hyph-et }23 \corklangs \etPatt \loadpatterns \euCork 33 eu {Basque \patt in Cork} - {\input conv-utf8-ec \input hyph-eu }22 \corklangs \euPatt + {\input hyph-eu }22 \corklangs \euPatt \loadpatterns \gaCork 34 ga {Irish \patt in Cork} - {\input conv-utf8-ec \input hyph-ga }23 \corklangs \gaPatt + {\input hyph-ga }23 \corklangs \gaPatt \loadpatterns \nbCork 35 nb {Norwegian Bokmal \patt in Cork} - {\input conv-utf8-ec \input hyph-nb }22 \corklangs \nbPatt + {\input hyph-nb }22 \corklangs \nbPatt \loadpatterns \nnCork 36 nn {Norwegian Nynorsk \patt in Cork} - {\input conv-utf8-ec \input hyph-nn }22 \corklangs \nnPatt + {\input hyph-nn }22 \corklangs \nnPatt \loadpatterns \nlCork 37 nl {Dutch \patt in Cork} - {\input conv-utf8-ec \input hyph-nl }22 \corklangs \nlPatt + {\input hyph-nl }22 \corklangs \nlPatt \loadpatterns \ptCork 38 pt {Portuguese \patt in Cork} - {\lccode`\-=`\- \input conv-utf8-ec \input hyph-pt }23 \corklangs \ptPatt + {\lccode`\-=`\- \input hyph-pt }23 \corklangs \ptPatt \loadpatterns \roCork 39 ro {Romanian \patt in Cork} - {\input conv-utf8-ec \input hyph-ro }22 \corklangs \roPatt + {\input hyph-ro }22 \corklangs \roPatt \loadpatterns \hrCork 40 hr {Croatian \patt in Cork} - {\input conv-utf8-ec \input hyph-hr }22 \corklangs \hrPatt + {\input hyph-hr }22 \corklangs \hrPatt \loadpatterns \zhCork 41 zh {Unaccented Pinyin Syllables \patt in Cork} {\lccode`\'=`\' \input hyph-zh-latn-pinyin.ec }11 \corklangs \zhPatt \loadpatterns \isCork 42 is {Icelandic \patt in Cork} - {\input conv-utf8-ec \input hyph-is }22 \corklangs \isPatt + {\input hyph-is }22 \corklangs \isPatt \loadpatterns \hsbCork 43 hsb {EC Upper Sorbian \patt in Cork} - {\input conv-utf8-ec \input hyph-hsb }22 \corklangs \hsbPatt + {\input hyph-hsb }22 \corklangs \hsbPatt \loadpatterns \afCork 44 af {Afrikaans \patt in Cork} - {\lccode`\-=`\- \lccode`\'=`\' - \input conv-utf8-ec \input hyph-af }22 \corklangs \afPatt + {\lccode`\-=`\- \lccode`\'=`\' \input hyph-af }22 \corklangs \afPatt \loadpatterns \glCork 45 gl {Galician \patt in Cork} - {\input conv-utf8-ec \input hyph-gl }22 \corklangs \glPatt + {\input hyph-gl }22 \corklangs \glPatt \loadpatterns \kmrCork 46 kmr {Kurmanji \patt in Cork} - {\input conv-utf8-ec \input hyph-kmr }22 \corklangs \kmrPatt + {\input hyph-kmr }22 \corklangs \kmrPatt \loadpatterns \tkCork 47 tk {Turkmen \patt in Cork} - {\lccode`\-=`\- \input conv-utf8-ec \input hyph-tk }22 \corklangs \tkPatt + {\lccode`\-=`\- \input hyph-tk }22 \corklangs \tkPatt \loadpatterns \laCork 48 la {Latin \patt in Cork} - {\lccode`\'=`\' \input conv-utf8-ec \input hyph-la }22 \corklangs \laPatt + {\lccode`\'=`\' \input hyph-la }22 \corklangs \laPatt + +\endgroup + \ifx\UnicodeLcUc y \input uni-lcuc \let\robustpatterns=\relax \fi \loadpatterns \csUnicode 115 cs {Czech \patt in Unicode} - {\ucodeset \doaccents \input czhyphen.tex \input czhyphen.ex }23 - \unicodelangs \csPatt + {\robustpatterns \input hyph-cs.tex }23 \unicodelangs \csPatt \loadpatterns \skUnicode 116 sk {Slovak \patt in Unicode} - {\ucodeset \doaccents \input skhyphen.tex \input skhyphen.ex }23 - \unicodelangs \skPatt + {\robustpatterns \input hyph-sk.tex }23 \unicodelangs \skPatt \loadpatterns \deUnicode 121 de {German \patt in Unicode} {\robustpatterns \input hyph-de-1996 }22 \unicodelangs \dePatt diff --git a/Master/texmf-dist/tex/csplain/base/lua-hyphen.lan b/Master/texmf-dist/tex/csplain/base/lua-hyphen.lan new file mode 100644 index 00000000000..790d52c6c18 --- /dev/null +++ b/Master/texmf-dist/tex/csplain/base/lua-hyphen.lan @@ -0,0 +1,142 @@ +% luaTeX: dynamical loaded patterns. Petr Olsak, March 2019 + +%\input hyphen % plain-TeX hyphen-patterns loaded as language 0 in csplain.ini +\global\chardef\enPatt=0 +\gdef\pattlist{\enPatt=0} +\gdef\langlist{en(USpreloaded)} +\gdef\enlang{\uselang{en}\enPatt23\nonfrenchspacing} % \lefthyph=2 \righthyph=3 + +\input uni-lcuc % \lccodes, \uccodes in unicode + +\def\preplang #1 #2 #3#4 #5 {% + \global\chardef#3=#4 + \expandafter \gdef \csname lan:#4\endcsname {#1} + \def\next{\expandafter\noexpand\csname #1lang\endcsname} + \expandafter\xdef \csname #1lang\endcsname {% + \noexpand\loadpattrs #2 #4 + \gdef\next{\noexpand\uselang{#1}#3#5}% + \next + } + \xdef\langlist{\langlist\space #1(#2)} +} +\def\loadpattrs#1 #2 {% + \directlua{ + require("luatex-hyphen") + luatexhyphen.loadlanguage("#1",#2) + }% +} +\def\uselang#1#2#3#4{\language=#2\lefthyphenmin=#3\righthyphenmin=#4\relax + \frenchspacing % \nonfrenchspacing can be set in \setlanguage{lan} + \setlanguage{#1}% +} +\def\setlanguage#1{} + +\preplang enus usenglishmax \enusPatt 100 23 +\preplang engb ukenglish \engbPatt 101 23 +\preplang it italian \itPatt 102 22 +\preplang ia interlingua \iaPatt 103 22 +\preplang id indonesian \idPatt 104 22 + +\preplang cs czech \csPatt 115 23 +\preplang sk slovak \skPatt 116 23 +\preplang de ngerman \dePatt 121 22 +\preplang fr french \frPatt 122 22 +\preplang pl polish \plPatt 123 22 +\preplang cy welsh \cyPatt 124 23 +\preplang da danish \daPatt 125 22 +\preplang es spanish \esPatt 126 22 +\preplang sl slovenian \slPatt 128 22 +\preplang fi finnish \fiPatt 129 22 +\preplang hy hungarian \huPatt 130 22 +\preplang tr turkish \trPatt 131 22 +\preplang et estoniak \etPatt 132 23 +\preplang eu basque \euPatt 133 22 +\preplang ga irish \gaPatt 134 23 +\preplang nb bokmal \nbPatt 135 22 +\preplang nn nynorsk \nnPatt 136 22 +\preplang nl dutch \nlPatt 137 22 +\preplang pt portuguese \ptPatt 138 23 +\preplang ro romanian \roPatt 139 22 +\preplang hr croatian \hrPatt 140 22 +\preplang zh pinyin \zhPatt 141 11 +\preplang is icelandic \isPatt 142 22 +\preplang hsb uppersorbian \hsbPatt 143 22 +\preplang af afrikaans \afPatt 144 12 +\preplang gl galician \glPatt 145 22 +\preplang kmr kurmanji \kmrPatt 146 22 +\preplang tk turkmen \tkPatt 147 22 +\preplang la latin \laPatt 148 22 +\preplang lac classiclatin \lacPatt 149 22 +\preplang lal liturgicallatin \lalPatt 150 22 +\preplang elm monogreek \elmPatt 201 11 +\preplang elp greek \elpPatt 202 11 +\preplang grc ancientgreek \grcPatt 203 11 +\preplang ca catalan \caPatt 204 22 +\preplang cop coptic \copPatt 205 11 +\preplang mn mongolian \mnPatt 206 22 +\preplang sa sanskrit \saPatt 207 13 +\preplang ru russian \ruPatt 208 22 +\preplang uk ukrainian \ukPatt 209 22 +\preplang hy armenian \hyPatt 210 12 +\preplang as assamese \asPatt 211 11 +\preplang hi hindi \hiPatt 212 11 +\preplang kn kannada \knPatt 213 11 +\preplang lv latvian \lvPatt 215 22 +\preplang lt lithuanian \ltPatt 216 22 +\preplang ml malayalam \mlPatt 217 11 +\preplang mr marathi \mrPatt 218 11 +\preplang or oriya \orPatt 219 11 +\preplang pa panjabi \paPatt 220 11 +\preplang ta tamil \taPatt 221 11 +\preplang te telugu \tePatt 222 11 + +% For backward compatibility: + +\let\uslang=\enlang \let\ehyph=\enlang +\def\chyph{\cslang} \def\shyph{\sklang} +\let\csUnicode=\csPatt \let\czUnicode=\csPatt \let\skUnicode=\skPatt + +\xdef\langlist{\langlist. + Use \string\lang to initialize language, + \string\cslang\space for example} +\message{Language hyph.patterns ready to load: \langlist} + +\endinput + +%%%%%%%%%%%%%%%%% + +The \lang macros are prepared, like \cslang, \delang, \pllang. +You can expand \langlist to see which languages are prepared. + +For example \preplang cs czech \csPatt 115 23 does: + + \global\chardef\csPatt=115 + \gdef\lan:115{cs} + \gdef\cslang{\loadpattrs czech 115 + \gdef\cslang{\uselang{cs}\csPatt23}% + \cslang} + \xdef\langlist{\langlist\space #1(#2)} + +and \uselang{cs}\csPatt23 does: + + \language=\csPatt \lefthyphenmin=2 \righthyphenmin=3 + \frenchspacing \setlanguage{cs} + +finally \setlanguage{cs} does nothing by default. But user can redefine +it and specify another features for selected lanuages here. For example: + +\def\setlanguage#1{\csname set#1lang\endcsname} +\def\setenuslang {\nonfrenchspacing} +\def\setcslang {...czech specific} +\def\setpllang {...polish specific} +\def\seteslang {...spanish specific} +\def\setrulang {...russian specific} +... + +You can see that \lang macros can be used more than once but +\loadpattrs will be done only once because \lang redefines itself. + + +%%%%%%%%%%%%%%%% + + \ No newline at end of file diff --git a/Master/texmf-dist/tex/csplain/base/t1code.tex b/Master/texmf-dist/tex/csplain/base/t1code.tex index 7d949c17760..24abdfb29cd 100644 --- a/Master/texmf-dist/tex/csplain/base/t1code.tex +++ b/Master/texmf-dist/tex/csplain/base/t1code.tex @@ -19,13 +19,13 @@ \ifx\chyph\undefined\else \ifx\czCork\undefined {\newlinechar=`^^J \errhelp={The hyphen patterns are not loaded in Cork encoding in csplain.^^J - Hyphen patterns are supported only in ISO-8859-2.^^J It means, you are using csplain pre Feb.2000 or^^J + or you are using Unicode csplain (XeTeX, LuaTeX) or^^J you initialised csplain by \let\Cork=\relax.^^J You can go on (press Return), but the czech/slovak^^J hyphenations will be work incorectly.} \errmessage - {The Cork encoding is not supported in this format} % Press h for more help. + {Hyphenation in Cork encoding is not supported in format} % Press h for more help. } \fi\fi \csname corklangs\endcsname -- cgit v1.2.3