summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/lualatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-03-15 21:32:40 +0000
committerKarl Berry <karl@freefriends.org>2020-03-15 21:32:40 +0000
commit7f4ddce7c9a68c530786b0addad1d0a659321212 (patch)
tree5986704864d95f46a33428aefe82fbb843e63761 /Master/texmf-dist/tex/lualatex
parent0eec602222f9b03c3593c74060c8560e00a7b29f (diff)
lua-ul (15mar20)
git-svn-id: svn://tug.org/texlive/trunk@54332 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/lualatex')
-rw-r--r--Master/texmf-dist/tex/lualatex/lua-ul/lua-ul.lua41
-rw-r--r--Master/texmf-dist/tex/lualatex/lua-ul/lua-ul.sty65
2 files changed, 92 insertions, 14 deletions
diff --git a/Master/texmf-dist/tex/lualatex/lua-ul/lua-ul.lua b/Master/texmf-dist/tex/lualatex/lua-ul/lua-ul.lua
index 1fe53eefe1c..e5d8ed91be0 100644
--- a/Master/texmf-dist/tex/lualatex/lua-ul/lua-ul.lua
+++ b/Master/texmf-dist/tex/lualatex/lua-ul/lua-ul.lua
@@ -71,15 +71,45 @@ local function set_underline()
end
tex.attribute[j] = token.scan_int()
end
+local function reset_underline()
+ local reset_all = token.scan_keyword'*'
+ local j
+ for i=1,#underlineattrs do
+ local attr = underlineattrs[i]
+ if tex.attribute[attr] ~= -0x7FFFFFFF then
+ if reset_all then
+ tex.attribute[attr] = -0x7FFFFFFF
+ else
+ j = attr
+ end
+ end
+ end
+ if not j then
+ if not reset_all then
+ tex.error("No underline active", {"You tried to disable \z
+ underlining but underlining was not active",
+ "in the first place. Maybe you wanted to ensure that \z
+ no underling can be active anymore?", "Then you should \z
+ append a *."})
+ end
+ return
+ end
+ tex.attribute[j] = -0x7FFFFFFF
+end
local functions = lua.get_functions_table()
+local set_lua = token.set_lua
local new_underline_type_func =
luatexbase.new_luafunction"luaul.new_underline_type"
local set_underline_func =
luatexbase.new_luafunction"luaul.set_underline_func"
-token.set_lua("LuaULNewUnderlineType", new_underline_type_func)
-token.set_lua("LuaULSetUnderline", set_underline_func, "protected")
+local reset_underline_func =
+ luatexbase.new_luafunction"luaul.reset_underline_func"
+set_lua("LuaULNewUnderlineType", new_underline_type_func)
+set_lua("LuaULSetUnderline", set_underline_func, "protected")
+set_lua("LuaULResetUnderline", reset_underline_func, "protected")
functions[new_underline_type_func] = new_underline_type
functions[set_underline_func] = set_underline
+functions[reset_underline_func] = reset_underline
local add_underline_h
local function add_underline_v(head, attr)
@@ -137,9 +167,10 @@ function add_underline_h(head, attr)
local width = node.rangedimensions(head, first)
local kern = node.new(kern_t)
kern.kern = -width
- kern.next = node.copy(underline_types[last_value])
- kern.next.width = width
- node.tail(head.head).next = kern
+ local lead = node.copy(underline_types[last_value])
+ lead.width = width
+ head.head = node.insert_before(head.head, first, lead)
+ node.insert_after(head, lead, kern)
end
end
local function filter(b, loc, prev, mirror)
diff --git a/Master/texmf-dist/tex/lualatex/lua-ul/lua-ul.sty b/Master/texmf-dist/tex/lualatex/lua-ul/lua-ul.sty
index 08069171817..72754a6ab49 100644
--- a/Master/texmf-dist/tex/lualatex/lua-ul/lua-ul.sty
+++ b/Master/texmf-dist/tex/lualatex/lua-ul/lua-ul.sty
@@ -20,7 +20,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage
{lua-ul}
- [2020/03/12 v0.0.1 Underlining and related functionality for LuaTeX]
+ [2020/03/15 v0.0.2 Underlining and related functionality for LuaTeX]
\ifx\directlua\undefined
\PackageError{lua-ul}{LuaLaTeX required}%
@@ -41,7 +41,12 @@
\fi
\csname#1\endcsname
}
-
+ \newcommand\luaul@defaultcontext{%
+ \number\dimexpr1ex
+ @\unless\ifx\undefined\LuaCol@Attribute
+ \the\LuaCol@Attribute
+ \fi
+ }
\NewDocumentCommand\newunderlinetype{mO{\luaul@defaultcontext}m}{%
\newcommand#1{}% "Reserve" the name
\protected\def#1{%
@@ -52,27 +57,69 @@
}}%
}
\ifluaul@predefined
- \newcommand\luaul@defaultcontext{%
- \number\dimexpr1ex
- @\unless\ifx\undefined\LuaCol@Attribute
- \the\LuaCol@Attribute
+ \newcommand\luaul@highlight@color{yellow}
+ \def\luaul@@setcolor\xcolor@#1#2{}
+ \newcommand\luaul@setcolor[1]{%
+ \ifx\XC@getcolor\undefined
+ \def\luaul@highlight@currentcolor{#1}
+ \else
+ \begingroup
+ \XC@getcolor{#1}\luaul@tmpcolor
+ \expanded{\endgroup
+ \def\noexpand\luaul@highlight@currentcolor{%
+ \expandafter\luaul@@setcolor\luaul@tmpcolor}}%
\fi
}
+\NewDocumentCommand\LuaULSetHighLightColor{om}{%
+ \edef\luaul@highlight@color{\IfValueTF{#1}{[#1]{#2}}{#2}}%
+}
\newunderlinetype\@underLine%
{\leaders\vrule height -.65ex depth .75ex}
\newcommand\underLine[1]{{\@underLine#1}}
\newunderlinetype\@strikeThrough%
{\leaders\vrule height .55ex depth -.45ex}
\newcommand\strikeThrough[1]{{\@strikeThrough#1}}
- \newunderlinetype\@highLight[\number\dimexpr1ex]%
- {\color{yellow}\leaders\vrule height 1.75ex depth .75ex}
- \newcommand\highLight[1]{{\@highLight#1}}
+
+ \newunderlinetype\@highLight[\number\dimexpr1ex@%
+ \luaul@highlight@currentcolor]%
+ {%
+ \ifx\XC@getcolor\undefined
+ \color{\luaul@highlight@currentcolor}%
+ \else
+ \expandafter\XC@undeclaredcolor\luaul@highlight@currentcolor
+ \fi
+ \leaders\vrule height 1.75ex depth .75ex
+ }
+ \newcommand\highLight[2][\luaul@highlight@color]{{%
+ \luaul@setcolor{#1}%
+ \@highLight#2%
+ }}
\ifluaul@soulnames
\let\textul\underLine \let\ul\textul
\let\textst\strikeThrough \let\st\textst
\let\texthl\highLight \let\hl\texthl
\fi
\fi
+\ifx \reset@font \normalfont
+ \let \reset@font \relax
+ \DeclareRobustCommand \reset@font {%
+ \normalfont
+ \LuaULResetUnderline*%
+ }
+\else
+ \MakeRobust \reset@font
+ \begingroup
+ \expandafter \let
+ \expandafter \helper
+ \csname reset@font \endcsname
+ \expandafter \endgroup
+ \expandafter \gdef
+ \csname reset@font \expandafter \endcsname
+ \expandafter {%
+ \helper%
+ \LuaULResetUnderline*%
+ }
+\fi
%%
%%
%% End of file `lua-ul.sty'.