From 6ea3ea065d72f1dd1229cd1ab37be377019501ad Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 22 May 2014 22:00:35 +0000 Subject: polyglossia (22may14) git-svn-id: svn://tug.org/texlive/trunk@34205 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/latex/polyglossia/polyglossia.dtx | 334 +++++---------------- 1 file changed, 68 insertions(+), 266 deletions(-) (limited to 'Master/texmf-dist/source/latex/polyglossia') diff --git a/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx b/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx index 396ec705c6a..f7c32211489 100644 --- a/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx +++ b/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx @@ -11,7 +11,7 @@ ¦----------------------------------------------¦ ¦ ¦ - ¦ THE POLYGLOSSIA PACKAGE v1.33.4 ¦ + ¦ THE POLYGLOSSIA PACKAGE v1.33.5 ¦ ¦ ¦ ¦ Modern multilingual typesetting ¦ ¦ with XeLaTeX and LuaLaTeX ¦ @@ -63,7 +63,7 @@ http://github.com/reutenauer/polyglossia/issues The polyglossia package (C) 2008–2010 François Charette - (C) 2011-2013 Arthur Reutenauer + (C) 2011-2014 Arthur Reutenauer (C) 2013 Elie Roux License information appended @@ -71,7 +71,7 @@ http://github.com/reutenauer/polyglossia/issues \endpreamble \postamble - Copyright (C) 2013 by Arthur Reutenauer + Copyright (C) 2014 by Arthur Reutenauer This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 @@ -169,7 +169,6 @@ http://github.com/reutenauer/polyglossia/issues \generate{\file{farsidigits.map}{\from{polyglossia.dtx}{farsidigits.map}}} \generate{\file{thaidigits.map}{\from{polyglossia.dtx}{thaidigits.map}}} \def\MetaPrefix{-- } -\generate{\file{polyglossia-brpt.lua}{\from{polyglossia.dtx}{polyglossia-brpt.lua}}} \generate{\file{polyglossia-frpt.lua}{\from{polyglossia.dtx}{polyglossia-frpt.lua}}} \generate{\file{polyglossia-tibt.lua}{\from{polyglossia.dtx}{polyglossia-tibt.lua}}} \generate{\file{polyglossia.lua}{\from{polyglossia.dtx}{polyglossia.lua}}} @@ -574,6 +573,15 @@ http://github.com/reutenauer/polyglossia/issues % does not appear to support the script of that language, an error message is % displayed. % +% \section{Hyphenation disabling} +% +% In some very specific contexts (such as music score creation), \TeX{} hyphenation +% is something to avoid as it may cause troubles. \pkg{polyglossia} provides two +% functions: \cmd\disablehyphenation and \cmd\enablehyphenation . Note that when +% you select a new language, hyphenation will be in the same state (enabled or +% disabled) as before. When you reenable it, it will take the last selected +% language. +% % \section{Language-specific options and commands}\label{specific} % % This section gives a list of all languages for which options and end-user commands are defined. @@ -679,6 +687,8 @@ http://github.com/reutenauer/polyglossia/issues % \subsection{german}\label{german} % \textbf{Options}: % \begin{itemize} +% \item\TB{variant} = \textit{german} or austrian.\new{v1.33.4} +% Setting variant=austrian uses some austrian lexical variants. % \item \TB{spelling} = \textit{new} (= 1996) or old (= 1901): % indicates whether hyphenation patterns for traditional (1901) or reformed % (1996) orthography should be used. The latter is the default. @@ -708,8 +718,8 @@ http://github.com/reutenauer/polyglossia/issues % \item ¦"<¦ for French left double quotes («) % \item ¦">¦ for French right double quotes (»). % \end{itemize} -% \item\TB{script} = \textit{latin} or fraktur.\new{v1.2.0} -% Setting script=fraktur modifies the captions for typesetting German in Fraktur. +% \item\TB{script} = \textit{latin} or fraktur.\new{v1.2.0} +% Setting script=fraktur modifies the captions for typesetting German in Fraktur. % \end{itemize} % % \subsection{greek}\label{greek} @@ -1899,8 +1909,7 @@ and may look very wrong.} } \ifluatex - \newluatexattribute\xpg@frpt - \directlua{polyglossia.load_frpt()} + % TODO \else \newXeTeXintercharclass\breton@punctthin % ! ? ; \newXeTeXintercharclass\breton@punctthick % : @@ -1911,8 +1920,7 @@ and may look very wrong.} \def\breton@punctuation{% \ifluatex - \global\xpg@frpt=1\relax - \directlua{polyglossia.activate_frpt()}% + % TODO \else \XeTeXinterchartokenstate=1% \XeTeXcharclass `\! \breton@punctthin @@ -1926,7 +1934,7 @@ and may look very wrong.} \def\nobreton@punctuation{% \ifluatex - \global\xpg@frpt=0\relax + % TODO \else \XeTeXcharclass `\! \z@ \XeTeXcharclass `\? \z@ @@ -2309,23 +2317,23 @@ and may look very wrong.} \def\contentsname{Sadržaj}% \def\listfigurename{Popis slika}% \def\listtablename{Popis tablica}% - \def\indexname{Indeks}% + \def\indexname{Kazalo}% \def\figurename{Slika}% \def\tablename{Tablica}% \def\partname{Dio}% \def\pagename{Stranica}% \def\seename{Vidjeti}% - \def\alsoname{Vidjeti i}% + \def\alsoname{Također vidjeti}% \def\enclname{Prilozi}% - \def\ccname{Kopije}% + \def\ccname{Kopija}% \def\headtoname{Prima}% \def\proofname{Dokaz}% - \def\glossaryname{Kazalo}% + \def\glossaryname{Pojmovnik}% } \def\datecroatian{% \def\today{\number\day.~\ifcase\month\or siječnja\or veljače\or ožujka\or travnja\or svibnja\or - lipnja\or srpnja\or kolovoza\or rujna\or listopada\or studenog\or + lipnja\or srpnja\or kolovoza\or rujna\or listopada\or studenoga\or prosinca\fi \space \number\year.}} % \end{macrocode} @@ -3304,6 +3312,15 @@ and may look very wrong.} \fi } +\newif\if@austrian@locale +\@austrian@localefalse +\def\tmp@austrian{austrian} +\define@key{german}{variant}[german]{% + \def\@tmpa{#1}% + \ifx\@tmpa\tmp@austrian\@austrian@localetrue\else + \@austrian@localefalse% + \fi} + \newif\if@german@fraktur \def\tmp@fraktur{fraktur} \define@key{german}{script}[latin]{% @@ -3396,13 +3413,17 @@ and may look very wrong.} } \def\date@german{% \def\today{\number\day.% - \space \ifcase\month%TODO add option for Austrian forms (Jänner etc) - \or Januar\or Februar\or März\or April\or Mai\or Juni\or% - Juli\or August\or September\or Oktober\or November\or% - Dezember\fi + \space \ifcase\month% + \or\if@austrian@locale Jänner\else Januar\fi\or Februar\or März\or% + April\or Mai\or Juni\or Juli\or August\or September\or Oktober\or% + November\or Dezember\fi \space \number\year}% } +\def\captions@german@austrian{% + \def\enclname{Beilage(n)}% +} + %%Strings for Fraktur contributed by Gerrit \def\captions@german@fraktur{% \captions@german% @@ -3414,15 +3435,16 @@ and may look very wrong.} \def\date@german@fraktur{% \def\today{\number\day.% - \space \ifcase\month%TODO add option for Austrian forms (Jänner etc) - \or Januar\or Februar\or März\or April\or Mai\or Juni\or% - Juli\or Auguſt\or September\or Oktober\or November\or% - Dezember\fi + \space \ifcase\month% + \or\if@austrian@locale Jänner\else Januar\fi\or Februar\or März\or% + April\or Mai\or Juni\or Juli\or Auguſt\or September\or Oktober\or% + November\or Dezember\fi \space \number\year}% } \def\captionsgerman{% \if@german@fraktur\captions@german@fraktur\else\captions@german\fi + \if@austrian@locale\captions@german@austrian\fi } \def\dategerman{% @@ -4691,7 +4713,7 @@ and may look very wrong.} \def\abstractname{Santrauka}% \def\bibname{Literatūra}% \def\prefacename{Pratarmė}% - \def\chaptername{skyrius}% + \def\chaptername{Skyrius}% \def\appendixname{Priedas}% \def\contentsname{Turinys}% \def\listfigurename{Iliustracijų sąrašas}% @@ -5419,17 +5441,17 @@ and may look very wrong.} \def\appendixname{Dodatek}% \def\contentsname{Spis treści}% \def\listfigurename{Spis rysunków}% - \def\listtablename{Spis tablic}% + \def\listtablename{Spis tabel}% \def\indexname{Indeks}% \def\figurename{Rysunek}% - \def\tablename{Tablica}% + \def\tablename{Tabela}% \def\partname{Część}% \def\enclname{Załącznik}% \def\ccname{Kopie:}% \def\headtoname{Do}% \def\pagename{Strona}% - \def\seename{Porównaj}% - \def\alsoname{Porównaj także}% + \def\seename{Zobacz}% + \def\alsoname{Zobacz też}% \def\proofname{Dowód}% \def\glossaryname{Glossary}% <-- Needs translation } @@ -5623,7 +5645,7 @@ and may look very wrong.} \define@key{russian}{numerals}[latin]{% \ifstrequal{#1}{cyrillic}% {\cyrillic@numeralstrue} - {\cyrillic@numeralsfalse} + {\cyrillic@numeralsfalse}% } \define@boolkey{russian}[russian@]{babelshorthands}[false]{} @@ -5666,7 +5688,7 @@ and may look very wrong.} \ifx\tempx@\tempa@\@Acdash\else \ifx\tempx@\tempb@\@Bcdash\else \ifx\tempx@\tempc@\@Ccdash\else - \errmessage{Wrong usage of cdash}\fi\fi\fi} + \errmessage{Wrong usage of cdash}\fi\fi\fi}% \def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi \cyrdash\hskip.2em\ignorespaces}% \def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi @@ -7050,30 +7072,36 @@ and may look very wrong.} fontsetup=true } +% TODO Add \ifluatex branch everywhere +\ifxetex \newXeTeXintercharclass\turkish@punctthin % ! : \newXeTeXintercharclass\turkish@punctthick % = +\fi \def\turkish@punctthinspace{{\ifdim\lastskip>\z@\unskip\penalty\@M\thinspace\fi}} \def\turkish@punctthickspace{{\unskip\nobreakspace}} \def\turkish@punctuation{% + \ifxetex \XeTeXinterchartokenstate=1% \XeTeXcharclass `\! \turkish@punctthin \XeTeXcharclass `\: \turkish@punctthin \XeTeXcharclass `\= \turkish@punctthick \XeTeXinterchartoks \z@ \turkish@punctthin = \turkish@punctthinspace \XeTeXinterchartoks \z@ \turkish@punctthick = \turkish@punctthickspace + \fi } \def\noturkish@punctuation{% + \ifxetex \XeTeXcharclass `\! \z@ \XeTeXcharclass `\: \z@ \XeTeXcharclass `\= \z@ \XeTeXinterchartokenstate=0% + \fi } \def\turkish@casing{% - \message{\string\turkish@casing\space called.} \lccode`\I=`\ı \uccode`\i=`\İ } @@ -7710,239 +7738,6 @@ U+0039 <> U+0E59 ; % \end{macrocode} % \iffalse % -%<*polyglossia-brpt.lua> -% \fi -% \clearpage -% -% \subsection{polyglossia-brpt.lua} -% \begin{macrocode} -require('polyglossia') -- just in case... - -local add_to_callback = luatexbase.add_to_callback -local remove_from_callback = luatexbase.remove_from_callback -local priority_in_callback = luatexbase.priority_in_callback - -local get_quad = luaotfload.aux.get_quad -- needs luaotfload > 20130516 - -local next, type = next, type - -local nodes, fonts, node = nodes, fonts, node - -local nodecodes = nodes.nodecodes - -local insert_node_before = node.insert_before -local insert_node_after = node.insert_after -local remove_node = nodes.remove -local has_attribute = node.has_attribute -local node_copy = node.copy -local new_node = node.new - -local end_of_math = node.end_of_math -if not end_of_math then -- luatex < .76 - local traverse_nodes = node.traverse_id - local math_code = nodecodes.math - local end_of_math = function (n) - for n in traverse_nodes(math_code, n.next) do - return n - end - end -end - --- node types according to node.types() -local glue_code = nodecodes.glue -local glue_spec_code = nodecodes.glue_spec -local glyph_code = nodecodes.glyph -local penalty_code = nodecodes.penalty -local kern_code = nodecodes.kern - --- we make a new node, so that we can copy it later on -local penalty_node = new_node(penalty_code) -penalty_node.penalty = 10000 - -local function get_penalty_node() - return node_copy(penalty_node) -end - --- same for glue node -local kern_node = new_node(kern_code) - -local function get_kern_node(dim) - local n = node_copy(kern_node) - n.kern = dim - return n -end - --- we have here all possible space characters, referenced by their --- unicode slot number, taken from char-def.lua -local space_chars = {[32]=1, [160]=1, [5760]=1, [6158]=1, [8192]=1, [8193]=1, [8194]=1, [8195]=1, - [8196]=1, [8197]=1, [8198]=1, [8199]=1, [8200]=1, [8201]=1, [8202]=1, [8239]=1, [8287]=1, [12288]=1} - --- from nodes-tst.lua, adapted -local function somespace(n,all) - if n then - local id = n.id - if id == glue_code then - return (all or (n.spec.width ~= 0)) and glue_code - elseif id == kern_code then - return (all or (n.kern ~= 0)) and kern_code - elseif id == glyph_code then - if space_chars[n.char] then - return true - else - return false - end - end - end - return false -end - --- idem -local function somepenalty(n,value) - if n then - local id = n.id - if id == penalty_code then - if value then - return n.penalty == value - else - return true - end - end - end - return false -end - -local xpgfrptattr = luatexbase.attributes['xpg@frpt'] - -local left=1 -local right=2 -local byte = unicode.utf8.byte - --- Now there is a good question: how do we now, in lua, what a \thinspace is? --- In the LaTeX source (ltspace.dtx) it is defined as: --- \def\thinspace{\kern .16667em }. I see no way of seeing if it has been --- overriden or not... So we stick to this value. -local thinspace = 0.16667 --- thickspace is defined in amsmath.sty as: --- \renewcommand{\;}{\mspace+\thickmuskip{.2777em}}. Same problem as above, we --- stick to this fixed value. -local thickspace = 0.2777 -- 5/18 - -local mappings = { - [byte(':')] = {left, thickspace}, --really? - [byte('!')] = {left, thinspace}, - [byte('?')] = {left, thinspace}, - [byte(';')] = {left, thinspace}, - [byte('‼')] = {left, thinspace}, - [byte('⁇')] = {left, thinspace}, - [byte('⁈')] = {left, thinspace}, - [byte('⁉')] = {left, thinspace}, - [byte('»')] = {left, thinspace}, - [byte('>')] = {left, thinspace}, - [byte('«')] = {right, thinspace}, - [byte('‹')] = {right, thinspace}, - } - -local function set_spacings(thinsp, thicksp) - for _, m in pairs(mappings) do - if m[2] == thinspace then - m[2] = thinsp - elseif m[2] == thickspace then - m[2] = thicksp - end - end - thickspace = thicksp - thinspace = thinsp -end - --- from typo-spa.lua -local function process(head) - local done = false - local start = head - -- head is always begin of par (whatsit), so we have at least two prev nodes - -- penalty followed by glue - while start do - local id = start.id - if id == glyph_code then - local attr = has_attribute(start, xpgfrptattr) - if attr and attr > 0 then - local char = start.char - local map = mappings[char] - --node.unset_attribute(start, xpgfrptattr) -- needed? - if map then - local quad = get_quad(start.font) -- might be optimized - local prev = start.prev - if map[1] == left and prev then - local prevprev = prev.prev - local somespace = somespace(prev,true) - -- TODO: there is a question here: do we override a preceding space or not?... - if somespace then - local somepenalty = somepenalty(prevprev,10000) - if somepenalty then - head = remove_node(head,prev,true) - head = remove_node(head,prevprev,true) - else - head = remove_node(head,prev,true) - end - end - insert_node_before(head,start,get_penalty_node()) - insert_node_before(head,start,get_kern_node(map[2]*quad)) - done = true - end - local next = start.next - if map[1] == right and next then - local nextnext = next.next - local somepenalty = somepenalty(next,10000) - if somepenalty then - local somespace = somespace(nextnext,true) - if somespace then - head = remove_node(head,next,true) - head = remove_node(head,nextnext,true) - end - else - local somespace = somespace(next,true) - if somespace then - head = remove_node(head,next,true) - end - end - insert_node_after(head,start,get_kern_node(map[2]*quad)) - insert_node_after(head,start,get_penalty_node()) - done = true - end - end - end - elseif id == math_code then - -- warning: this is a feature of luatex > 0.76 - start = end_of_math(start) -- weird, can return nil .. no math end? - end - if start then - start = start.next - end - end - return head, done -end - -local callback_name = "pre_linebreak_filter" - -local function activate() - if not priority_in_callback (callback_name, "polyglossia-frpt.process") then - add_to_callback(callback_name, process, "polyglossia-frpt.process", 1) - end -end - -local function desactivate() - if priority_in_callback (callback_name, "polyglossia-frpt.process") then - remove_from_callback(callback_name, "polyglossia-frpt.process") - end -end - -polyglossia.activate_frpt = activate -polyglossia.desactivate_frpt = desactivate -polyglossia.set_spacings = set_spacings -polyglossia.thinspace = thinspace -polyglossia.thickspace = thickpace -% \end{macrocode} -% \iffalse -% %<*polyglossia-frpt.lua> % \fi % \clearpage @@ -8391,7 +8186,7 @@ polyglossia.enable_hyphenation = enable_hyphenation ¦----------------------------------------------¦ ¦ ¦ - ¦ THE POLYGLOSSIA PACKAGE v1.33.4 ¦ + ¦ THE POLYGLOSSIA PACKAGE v1.33.5 ¦ ¦ ¦ ¦ Modern multilingual typesetting ¦ ¦ with XeLaTeX and LuaLaTeX ¦ @@ -8428,6 +8223,13 @@ Hum, sorry, wishful thinking. Please report any bugs, problems or requests on: http://github.com/reutenauer/polyglossia/issues % %<*Changelog> +1.33.4 (21-05-2014) + * Option to disable hyphenation entirely, by Élie Roux + * Fix spurious spaces in gloss-russian.ldf, by Oleg Domanov + * Support for the Austrian variant of German, by Jürgen Spitzmüller + * Changes to the Croatian translations, by Ivan Kokan + * Correction to the Lithuanian translations, by Ignas Anikevičius + 1.33.4 (27-06-2013) * Emergency release for a bug introduced in babelsh.def -- cgit v1.2.3