summaryrefslogtreecommitdiff
path: root/macros/luatex/generic
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-01-11 03:01:24 +0000
committerNorbert Preining <norbert@preining.info>2021-01-11 03:01:24 +0000
commit5187d8af76756cc8c101de4a50c9ccfb9acd0c9a (patch)
tree5699e7dfdf3ec8f07725f09ea89e72f2b75b7b18 /macros/luatex/generic
parentef57fc77f3c939d55d51322d428e40a5a3c9ed8e (diff)
CTAN sync 202101110301
Diffstat (limited to 'macros/luatex/generic')
-rw-r--r--macros/luatex/generic/luavlna/README.md2
-rw-r--r--macros/luatex/generic/luavlna/luavlna-doc.pdfbin91137 -> 91253 bytes
-rw-r--r--macros/luatex/generic/luavlna/luavlna-doc.tex5
-rw-r--r--macros/luatex/generic/luavlna/luavlna.lua28
-rw-r--r--macros/luatex/generic/luavlna/luavlna.sty4
-rw-r--r--macros/luatex/generic/luavlna/luavlna.tex12
6 files changed, 37 insertions, 14 deletions
diff --git a/macros/luatex/generic/luavlna/README.md b/macros/luatex/generic/luavlna/README.md
index 853a3683ff..de38ed0c67 100644
--- a/macros/luatex/generic/luavlna/README.md
+++ b/macros/luatex/generic/luavlna/README.md
@@ -1,4 +1,4 @@
-# Luavlna, version v0.1g, 2020-06-02
+# Luavlna, version 0.1h, 2021-01-08
# Introduction
diff --git a/macros/luatex/generic/luavlna/luavlna-doc.pdf b/macros/luatex/generic/luavlna/luavlna-doc.pdf
index 84e384611f..40cca34546 100644
--- a/macros/luatex/generic/luavlna/luavlna-doc.pdf
+++ b/macros/luatex/generic/luavlna/luavlna-doc.pdf
Binary files differ
diff --git a/macros/luatex/generic/luavlna/luavlna-doc.tex b/macros/luatex/generic/luavlna/luavlna-doc.tex
index eb39ca3ac9..20a83ae127 100644
--- a/macros/luatex/generic/luavlna/luavlna-doc.tex
+++ b/macros/luatex/generic/luavlna/luavlna-doc.tex
@@ -83,7 +83,8 @@ Co třeba í znaky š diakritikou?
Různé možnosti [v závorkách <i jiných znacích
-Podpora iniciál a titulů: M. J. Hegel, Ing. Běháková, Ph.D., Ž. Zíbrt.
+Podpora iniciál a titulů: M. J. Hegel, Ing. Běháková, Ph.D., Ž. Zíbrt,
+Ch. Borner.
Podpora jednotek: 100,5 MN\cdot{}s, 100.5 kJ, 200 µA, $-1$ dag,
12 MiB, 1 m$^3$/s.
@@ -110,7 +111,7 @@ Co třeba í znaky š diakritikou?
Různé možnosti [v závorkách \textless i jiných znacích
-Podpora iniciál a titulů: M. J. Hegel, Ing. Běháková, Ph.D., Ž. Zíbrt.
+Podpora iniciál a titulů: M. J. Hegel, Ing. Běháková, Ph.D., Ž. Zíbrt, Ch. Borner.
Podpora jednotek: 100,5 MN\cdot{}s, 100.5 kJ, 200 µA, $-1$ dag, 12 MiB, 1 m$^3$/s.
diff --git a/macros/luatex/generic/luavlna/luavlna.lua b/macros/luatex/generic/luavlna/luavlna.lua
index 511ee859a1..be833905f2 100644
--- a/macros/luatex/generic/luavlna/luavlna.lua
+++ b/macros/luatex/generic/luavlna/luavlna.lua
@@ -166,6 +166,20 @@ end
local init_buffer = ""
local is_initial = function(c, lang)
+ -- space is not initial
+ if c == " " then
+ init_buffer = ""
+ return false
+ end
+ -- look in the initals table
+ if lang then
+ -- insert the current character to the init_buffer
+ -- and try to find the string in the initial table
+ -- for the current language
+ init_buffer = init_buffer .. c
+ local tbl = initials[lang] or {}
+ if tbl[init_buffer] then return true end
+ end
return is_uppercase(c)
end
@@ -295,7 +309,7 @@ local function prevent_single_letter (head)
space = false
-- handle initials
-- uppercase letter followed by period (code 46)
- elseif no_initials~=true and init and head.id == glyph_id and head.char == period_char and nextn.id == glue_id and utf_len(word) == 1 then
+ elseif no_initials~=true and init and head.id == glyph_id and head.char == period_char and nextn.id == glue_id then
head = insert_penalty(head)
elseif head.id == glyph_id then
local char = getchar(head)
@@ -334,7 +348,7 @@ end
-- detect if the current character is a hyphen
local function is_breakable_hyphen(n)
- return n.id == glyph_id and hyphenate_langs[n.lang] and n.char == hyphenchar
+ return n.id == glyph_id and hyphenate_langs[n.lang] and n.char == hyphenchar and n.next
end
-- don't process hyphens if the next node is penalty
@@ -346,6 +360,14 @@ local function is_next_penalty(n)
end
end
+-- split hyphens should be active only inside words, there is no need to break
+-- standalone hyphens
+local function is_next_glyph(n)
+ local next_node = n.next
+ return next_node and next_node.id == glyph_id
+end
+
+
-- Enable hyphenation of words that contain hyphens
-- and repeating of the explicit hyphen on a new line when
-- the hyphen is hyphenated
@@ -357,7 +379,7 @@ local break_hyphens = function(head, tail)
local n = head
while n do
local skip = node.has_attribute(n, M.preventsingleid)
- if skip ~= 1 and is_breakable_hyphen(n) and not is_next_penalty(n) and not is_hyphen_ligature(n) then
+ if skip ~= 1 and is_breakable_hyphen(n) and not is_next_penalty(n) and is_next_glyph(n) and not is_hyphen_ligature(n) then
-- Insert an infinite penalty before, and a zero-width glue node after, the hyphen.
-- Like writing "\nobreak-\hspace{0pt}" or equivalently "\penalty10000-\hskip0pt"
local p = node.new(node.id('penalty'))
diff --git a/macros/luatex/generic/luavlna/luavlna.sty b/macros/luatex/generic/luavlna/luavlna.sty
index aa6f623aa9..89e6d47543 100644
--- a/macros/luatex/generic/luavlna/luavlna.sty
+++ b/macros/luatex/generic/luavlna/luavlna.sty
@@ -1,4 +1,4 @@
-\ProvidesPackage{luavlna}[2019/10/30 luavlna]
+\ProvidesPackage{luavlna}[2021-01-08 luavlna]
\RequirePackage{kvoptions}
@@ -23,7 +23,7 @@
\def\enablesplithyphens#1{%
\ifcsname l@#1\endcsname%
- \typeout{set lang #1, \the\csname l@#1\endcsname}%
+ \typeout{set lang #1, \the\csname l@#1\endcsname}
\directlua{enable_split_hyphens("\the\csname l@#1\endcsname")}%
\fi%
}
diff --git a/macros/luatex/generic/luavlna/luavlna.tex b/macros/luatex/generic/luavlna/luavlna.tex
index 0b6540a5cc..ab47b8d6fc 100644
--- a/macros/luatex/generic/luavlna/luavlna.tex
+++ b/macros/luatex/generic/luavlna/luavlna.tex
@@ -71,20 +71,20 @@ end
% Set letters which are prevented from breaking
\def\singlechars#1#2{%
-\directlua{set_singlechars("#1","#2")}%
+\directlua{set_singlechars("#1","#2")}
}
% Define compound initials
\def\compoundinitials#1#2{%
-\directlua{set_compounds("#1","#2")}%
+\directlua{set_compounds("#1","#2")}
}
% Enable inserting of visual marks for debugging
\def\preventsingledebugon{%
-\directlua{luavlna.debug(true)}%
+\directlua{luavlna.debug(true)}
}
\def\preventsinglelang#1{%
- \directlua{set_main_language("#1")}%
+ \directlua{set_main_language("#1")}
}
%\newluatexattribute\preventsinglestatus
@@ -94,12 +94,12 @@ end
\preventsinglestatus=2
}
-\def\preventsingleoff{%
+\def\preventsingleoff{
\preventsinglestatus=1
}
% Disable inserting of visual marks for dewbugging
\def\preventsingledebugoff{%
-\directlua{luavlna.debug(false)}%
+\directlua{luavlna.debug(false)}
}
% enable/disable split hyphens for a language