texlive[53901] Master/texmf-dist: luacolor (25feb20)
commits+karl at tug.org
commits+karl at tug.org
Tue Feb 25 02:20:35 CET 2020
Revision: 53901
http://tug.org/svn/texlive?view=revision&revision=53901
Author: karl
Date: 2020-02-25 02:20:35 +0100 (Tue, 25 Feb 2020)
Log Message:
-----------
luacolor (25feb20)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/luacolor/luacolor.pdf
trunk/Master/texmf-dist/source/latex/luacolor/luacolor.dtx
trunk/Master/texmf-dist/tex/latex/luacolor/luacolor.sty
Added Paths:
-----------
trunk/Master/texmf-dist/tex/latex/luacolor/luacolor.lua
Removed Paths:
-------------
trunk/Master/texmf-dist/scripts/luacolor/
Modified: trunk/Master/texmf-dist/doc/latex/luacolor/luacolor.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/luacolor/luacolor.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/luacolor/luacolor.dtx 2020-02-25 01:20:13 UTC (rev 53900)
+++ trunk/Master/texmf-dist/source/latex/luacolor/luacolor.dtx 2020-02-25 01:20:35 UTC (rev 53901)
@@ -1,12 +1,12 @@
% \iffalse meta-comment
%
% File: luacolor.dtx
-% Version: 2019/11/29 v1.13
+% Version: 2020-02-22 v1.14
% Info: Color support via LuaTeX's attributes
%
% Copyright (C)
% 2007, 2009-2011 Heiko Oberdiek
-% 2016-2019 Oberdiek Package Support Group
+% 2016-2020 Oberdiek Package Support Group
% https://github.com/ho-tex/luacolor/issues
%
% This work may be distributed and/or modified under the
@@ -80,7 +80,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: luacolor 2019/11/29 v1.13 Color support via LuaTeX's attributes (HO)}
+\Msg{* Package: luacolor 2020-02-22 v1.14 Color support via LuaTeX's attributes (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -92,11 +92,11 @@
This is a generated file.
Project: luacolor
-Version: 2019/11/29 v1.13
+Version: 2020-02-22 v1.14
Copyright (C)
2007, 2009-2011 Heiko Oberdiek
- 2016-2019 Oberdiek Package Support Group
+ 2016-2020 Oberdiek Package Support Group
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either
@@ -118,7 +118,6 @@
This work consists of the main source file luacolor.dtx
and the derived files
luacolor.sty, luacolor.pdf, luacolor.ins, luacolor.drv,
- luacolor-test1.tex, luacolor-test2.tex, luacolor-test3.tex,
luacolor.lua,
\endpreamble
@@ -129,14 +128,6 @@
\file{luacolor.drv}{\from{luacolor.dtx}{driver}}%
\usedir{tex/latex/luacolor}%
\file{luacolor.sty}{\from{luacolor.dtx}{package}}%
-% \usedir{doc/latex/luacolor/test}%
-% \file{luacolor-test1.tex}{\from{luacolor.dtx}{test1}}%
-% \file{luacolor-test2.tex}{\from{luacolor.dtx}{test2}}%
-% \file{luacolor-test3.tex}{\from{luacolor.dtx}{test3}}%
- \nopreamble
- \nopostamble
-% \usedir{source/latex/luacolor/catalogue}%
-% \file{luacolor.xml}{\from{luacolor.dtx}{catalogue}}%
}
\def\MetaPrefix{-- }
\def\defaultpostamble{%
@@ -178,7 +169,7 @@
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{luacolor.drv}%
- [2019/11/29 v1.13 Color support via LuaTeX's attributes (HO)]%
+ [2020-02-22 v1.14 Color support via LuaTeX's attributes (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}[2011/11/22]
\usepackage{paralist}
@@ -194,26 +185,11 @@
% \fi
%
%
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
%
% \GetFileInfo{luacolor.drv}
%
% \title{The \xpackage{luacolor} package}
-% \date{2019/11/29 v1.13}
+% \date{2020-02-22 v1.14}
% \author{Heiko Oberdiek\thanks
% {Please report any issues at \url{https://github.com/ho-tex/luacolor/issues}}}
%
@@ -356,7 +332,7 @@
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{luacolor}%
- [2019/11/29 v1.13 Color support via LuaTeX's attributes (HO)]
+ [2020-02-22 v1.14 Color support via LuaTeX's attributes (HO)]
% \end{macrocode}
%
% \subsection{Check for \LuaTeX}
@@ -363,19 +339,12 @@
%
% Without \LuaTeX\ there is no point in using this package.
% \begin{macrocode}
-\RequirePackage{infwarerr}[2010/04/08]%
-\RequirePackage{iftex}[2019/11/07]%
-\RequirePackage{ltxcmds}[2011/04/18]%
\RequirePackage{color}
% \end{macrocode}
-% require ltluatex rather than luatex package support for \LuaTeX\ allocations.
+%
% \begin{macrocode}
-\ifluatex
- \ifx\newattribute\@undefined
- \RequirePackage{ltluatex}%
- \fi
-\else
- \@PackageError{luacolor}{%
+\ifx\directlua\@undefined
+ \PackageError{luacolor}{%
This package may only be run using LuaTeX%
}\@ehc
\expandafter\LuaCol at AtEnd
@@ -382,18 +351,12 @@
\fi%
% \end{macrocode}
%
-% \begin{macro}{\LuaCol at directlua}
-% \begin{macrocode}
- \let\LuaCol at directlua\directlua
-% \end{macrocode}
-% \end{macro}
-%
% \subsection{Check for disabled colors}
%
% \begin{macrocode}
\ifcolors@
\else
- \@PackageWarningNoLine{luacolor}{%
+ \PackageWarningNoLine{luacolor}{%
Colors are disabled by option `monochrome'%
}%
\def\set at color{}%
@@ -407,15 +370,15 @@
% \subsection{Load module and check version}
%
% \begin{macrocode}
-\LuaCol at directlua{%
+\directlua{%
require("luacolor")%
}
% \end{macrocode}
% \begin{macrocode}
\begingroup
- \edef\x{\LuaCol at directlua{tex.write("2019/11/29 v1.13")}}%
+ \edef\x{\directlua{tex.write("2020-02-22 v1.14")}}%
\edef\y{%
- \LuaCol at directlua{%
+ \directlua{%
if oberdiek.luacolor.getversion then %
oberdiek.luacolor.getversion()%
end%
@@ -423,7 +386,7 @@
}%
\ifx\x\y
\else
- \@PackageError{luacolor}{%
+ \PackageError{luacolor}{%
Wrong version of lua module.\MessageBreak
Package version: \x\MessageBreak
Lua module: \y
@@ -435,7 +398,7 @@
% \subsection{Find driver}
%
% \begin{macrocode}
-\ifpdf
+\ifnum\outputmode=\@ne
\else
\begingroup
\def\current at color{}%
@@ -446,12 +409,12 @@
\endgroup
}%
\edef\reserved at a{%
- \LuaCol at directlua{%
+ \directlua{%
oberdiek.luacolor.dvidetect()%
}%
}%
\ifx\reserved at a\@empty
- \@PackageError{luacolor}{%
+ \PackageError{luacolor}{%
DVI driver detection failed because of\MessageBreak
unrecognized color \string\special
}\@ehc
@@ -458,9 +421,9 @@
\endgroup
\expandafter\expandafter\expandafter\LuaCol at AtEnd
\else
- \@PackageInfoNoLine{luacolor}{%
+ \PackageInfo{luacolor}{%
Type of color \string\special: \reserved at a
- }%
+ \@gobble}%
\fi%
\endgroup
\fi
@@ -470,17 +433,9 @@
%
% \begin{macro}{\LuaCol at Attribute}
% \begin{macrocode}
-\ltx at IfUndefined{newluatexattribute}{%
- \newattribute\LuaCol at Attribute
-}{%
- \newluatexattribute\LuaCol at Attribute
-}
-\ltx at IfUndefined{setluatexattribute}{%
- \let\LuaCol at setattribute\setattribute
-}{%
- \let\LuaCol at setattribute\setluatexattribute
-}
-\LuaCol at directlua{%
+\newattribute\LuaCol at Attribute
+\let\LuaCol at setattribute\setattribute
+\directlua{%
oberdiek.luacolor.setattribute(\number\allocationnumber)%
}
% \end{macrocode}
@@ -490,7 +445,7 @@
% \begin{macrocode}
\protected\def\set at color{%
\LuaCol at setattribute\LuaCol at Attribute{%
- \LuaCol at directlua{%
+ \directlua{%
oberdiek.luacolor.get("\luaescapestring{\current at color}")%
}%
}%
@@ -508,7 +463,7 @@
% \begin{macro}{\luacolorProcessBox}
% \begin{macrocode}
\def\luacolorProcessBox#1{%
- \LuaCol at directlua{%
+ \directlua{%
oberdiek.luacolor.process(\number#1)%
}%
}
@@ -527,44 +482,26 @@
\set at color
% \end{macrocode}
%
-% \subsection{\cs{pdfxform} support}
+% \subsection{\cs{pdfxform}/\cs{saveboxresource} support}
%
% \begin{macrocode}
-\ifpdf
- \ifx\pdfxform\@undefined
- \let\pdfxform\saveboxresource
- \fi
- \ltx at IfUndefined{pdfxform}{%
- \directlua{%
- tex.enableprimitives('',{%
- 'pdfxform','pdflastxform','pdfrefxform'%
- })%
+\ifnum\outputmode=\@ne
+ \let\LuaCol at org@pdfxform\saveboxresource
+% \end{macrocode}
+% This is written in Lua so the integer setting is expandable and does not interfere with
+% a preceding \verb|\immediate|.
+% \begin{macrocode}
+ \protected\def\saveboxresource{%
+ \directlua{
+ local c = token.scan_int()
+ oberdiek.luacolor.process(c)
+ token.put_next(token.create'LuaCol at org@pdfxform', token.new(c, token.command_id'char_given'))
}%
- }{}%
- \ltx at IfUndefined{protected}{%
- \directlua{tex.enableprimitives('',{'protected'})}%
- }{}%
- \ltx at IfUndefined{pdfxform}{%
- \@PackageWarning{luacolor}{\string\pdfxform\space not found}%
- }{%
- \let\LuaCol at org@pdfxform\pdfxform
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname protected\endcsname\relax
- \@PackageWarning{luacolor}{\string\protected\space not found}%
- \else
- \expandafter\protected
- \fi
- \def\pdfxform{%
- \begingroup
- \afterassignment\LuaCol at pdfxform
- \count@=%
}%
- \def\LuaCol at pdfxform{%
- \luacolorProcessBox\count@
- \LuaCol at org@pdfxform\count@
- \endgroup
- }%
- }%
+% \end{macrocode}
+% Legacy alias.
+% \begin{macrocode}
+ \let\pdfxform\saveboxresource
\fi
% \end{macrocode}
%
@@ -589,7 +526,7 @@
% \begin{macro}{getversion()}
% \begin{macrocode}
function luacolor.getversion()
- tex.write("2019/11/29 v1.13")
+ tex.write("2020-02-22 v1.14")
end
% \end{macrocode}
% \end{macro}
@@ -784,8 +721,10 @@
traverse(n.leader, color, DRY_FALSE or dry)
else
traverse(n.leader, '', DRY_FALSE or dry)
+% \end{macrocode}
% The color status is unknown here, because the leader box
% will or will not be set.
+% \begin{macrocode}
color = ''
end
elseif t == COLOR then
@@ -829,160 +768,21 @@
end
% \end{macrocode}
% \end{macro}
-%
+% For recent versions of luaotfload, we can register a callback to
+% control how coloring glyph is handled for the color feature.
% \begin{macrocode}
-%</lua>
+if luaotfload.set_colorhandler then
+ local set_attribute = node.direct.set_attribute
+ luaotfload.set_colorhandler(function(head, n, color)
+ set_attribute(n, attribute, luacolor.getvalue(color))
+ return head, n
+ end)
+end
% \end{macrocode}
%
-% \section{Test}
-%
% \begin{macrocode}
-%<*test1>
-\documentclass{article}
-\usepackage{color}
-%</test1>
+%</lua>
% \end{macrocode}
-% \subsection{Catcode checks for loading}
-%
-% \begin{macrocode}
-%<*test1>
-% \end{macrocode}
-% \begin{macrocode}
-\catcode`\{=1 %
-\catcode`\}=2 %
-\catcode`\#=6 %
-\catcode`\@=11 %
-\expandafter\ifx\csname count@\endcsname\relax
- \countdef\count@=255 %
-\fi
-\expandafter\ifx\csname @gobble\endcsname\relax
- \long\def\@gobble#1{}%
-\fi
-\expandafter\ifx\csname @firstofone\endcsname\relax
- \long\def\@firstofone#1{#1}%
-\fi
-\expandafter\ifx\csname loop\endcsname\relax
- \expandafter\@firstofone
-\else
- \expandafter\@gobble
-\fi
-{%
- \def\loop#1\repeat{%
- \def\body{#1}%
- \iterate
- }%
- \def\iterate{%
- \body
- \let\next\iterate
- \else
- \let\next\relax
- \fi
- \next
- }%
- \let\repeat=\fi
-}%
-\def\RestoreCatcodes{}
-\count@=0 %
-\loop
- \edef\RestoreCatcodes{%
- \RestoreCatcodes
- \catcode\the\count@=\the\catcode\count@\relax
- }%
-\ifnum\count@<255 %
- \advance\count@ 1 %
-\repeat
-
-\def\RangeCatcodeInvalid#1#2{%
- \count@=#1\relax
- \loop
- \catcode\count@=15 %
- \ifnum\count@<#2\relax
- \advance\count@ 1 %
- \repeat
-}
-\def\RangeCatcodeCheck#1#2#3{%
- \count@=#1\relax
- \loop
- \ifnum#3=\catcode\count@
- \else
- \errmessage{%
- Character \the\count@\space
- with wrong catcode \the\catcode\count@\space
- instead of \number#3%
- }%
- \fi
- \ifnum\count@<#2\relax
- \advance\count@ 1 %
- \repeat
-}
-\def\space{ }
-\expandafter\ifx\csname LoadCommand\endcsname\relax
- \def\LoadCommand{\input luacolor.sty\relax}%
-\fi
-\def\Test{%
- \RangeCatcodeInvalid{0}{47}%
- \RangeCatcodeInvalid{58}{64}%
- \RangeCatcodeInvalid{91}{96}%
- \RangeCatcodeInvalid{123}{255}%
- \catcode`\@=12 %
- \catcode`\\=0 %
- \catcode`\%=14 %
- \LoadCommand
- \RangeCatcodeCheck{0}{36}{15}%
- \RangeCatcodeCheck{37}{37}{14}%
- \RangeCatcodeCheck{38}{47}{15}%
- \RangeCatcodeCheck{48}{57}{12}%
- \RangeCatcodeCheck{58}{63}{15}%
- \RangeCatcodeCheck{64}{64}{12}%
- \RangeCatcodeCheck{65}{90}{11}%
- \RangeCatcodeCheck{91}{91}{15}%
- \RangeCatcodeCheck{92}{92}{0}%
- \RangeCatcodeCheck{93}{96}{15}%
- \RangeCatcodeCheck{97}{122}{11}%
- \RangeCatcodeCheck{123}{255}{15}%
- \RestoreCatcodes
-}
-\Test
-\csname @@end\endcsname
-\end
-% \end{macrocode}
-% \begin{macrocode}
-%</test1>
-% \end{macrocode}
-%
-% \subsection{Driver detection}
-%
-% \begin{macrocode}
-%<*test2>
-\NeedsTeXFormat{LaTeX2e}
-\ifcsname driver\endcsname
- \expandafter\PassOptionsToPackage\expandafter{\driver}{color}%
- \pdfoutput=0 %
-\fi
-\documentclass{minimal}
-\usepackage{luacolor}[2018/11/01]
-\csname @@end\endcsname
-\end
-%</test2>
-% \end{macrocode}
-%
-% \begin{macrocode}
-%<*test3>
-\NeedsTeXFormat{LaTeX2e}
-% \end{macrocode}
-% \begin{macrocode}
-\documentclass{minimal}
-\usepackage{luacolor}[2018/11/01]
-\usepackage{qstest}
-\IncludeTests{*}
-\LogTests{log}{*}{*}
-\makeatletter
-% \end{macrocode}
-% \begin{macrocode}
-\@@end
-%</test3>
-% \end{macrocode}
-%
% \section{Installation}
%
% \subsection{Download}
@@ -1236,6 +1036,14 @@
% Documentation updates.
% \item Use \xpackage{iftex} directly.
% \end{Version}
+% \begin{Version}{2020-02-22 v1.14}
+% \item Drop use of \textsf{iftex} \textsf{ltxcmds} and \textsf{infwarerr}.
+% \item Assume \textsf{ltluatex} preloaded into format (true since 2015).
+% \item Patch \verb|\saveboxresource| rather than \verb|\pdfxform| (keep old name as alias).
+% \item Grab the number via Lua so that a \verb|\immediate| prefix still works with
+% \verb|\saveboxresource|\slash \verb|\pdfxform|.
+% \item Added handler for the color feature of luaotfload
+% \end{Version}
% \end{History}
%
% \PrintIndex
Added: trunk/Master/texmf-dist/tex/latex/luacolor/luacolor.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/luacolor/luacolor.lua (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/luacolor/luacolor.lua 2020-02-25 01:20:35 UTC (rev 53901)
@@ -0,0 +1,227 @@
+--
+-- This is file `luacolor.lua',
+-- generated with the docstrip utility.
+--
+-- The original source files were:
+--
+-- luacolor.dtx (with options: `lua')
+--
+-- This is a generated file.
+--
+-- Project: luacolor
+-- Version: 2020-02-22 v1.14
+--
+-- Copyright (C)
+-- 2007, 2009-2011 Heiko Oberdiek
+-- 2016-2020 Oberdiek Package Support Group
+--
+-- This work may be distributed and/or modified under the
+-- conditions of the LaTeX Project Public License, either
+-- version 1.3c of this license or (at your option) any later
+-- version. This version of this license is in
+-- https://www.latex-project.org/lppl/lppl-1-3c.txt
+-- and the latest version of this license is in
+-- https://www.latex-project.org/lppl.txt
+-- and version 1.3 or later is part of all distributions of
+-- LaTeX version 2005/12/01 or later.
+--
+-- This work has the LPPL maintenance status "maintained".
+--
+-- The Current Maintainers of this work are
+-- Heiko Oberdiek and the Oberdiek Package Support Group
+-- https://github.com/ho-tex/luacolor/issues
+--
+--
+-- This work consists of the main source file luacolor.dtx
+-- and the derived files
+-- luacolor.sty, luacolor.pdf, luacolor.ins, luacolor.drv,
+-- luacolor.lua,
+--
+oberdiek = oberdiek or {}
+local luacolor = oberdiek.luacolor or {}
+oberdiek.luacolor = luacolor
+function luacolor.getversion()
+ tex.write("2020-02-22 v1.14")
+end
+local ifpdf = tonumber(tex.outputmode or tex.pdfoutput) > 0
+local prefix
+local prefixes = {
+ dvips = "color ",
+ dvipdfm = "pdf:sc ",
+ truetex = "textcolor:",
+ pctexps = "ps::",
+}
+local patterns = {
+ ["^color "] = "dvips",
+ ["^pdf: *begincolor "] = "dvipdfm",
+ ["^pdf: *bcolor "] = "dvipdfm",
+ ["^pdf: *bc "] = "dvipdfm",
+ ["^pdf: *setcolor "] = "dvipdfm",
+ ["^pdf: *scolor "] = "dvipdfm",
+ ["^pdf: *sc "] = "dvipdfm",
+ ["^textcolor:"] = "truetex",
+ ["^ps::"] = "pctexps",
+}
+local function info(msg, term)
+ local target = "log"
+ if term then
+ target = "term and log"
+ end
+ texio.write_nl(target, "Package luacolor info: " .. msg .. ".")
+ texio.write_nl(target, "")
+end
+function luacolor.dvidetect()
+ local v = tex.box[0]
+ assert(v.id == node.id("hlist"))
+ for v in node.traverse_id(node.id("whatsit"), v.head) do
+ if v and v.subtype == node.subtype("special") then
+ local data = v.data
+ for pattern, driver in pairs(patterns) do
+ if string.find(data, pattern) then
+ prefix = prefixes[driver]
+ tex.write(driver)
+ return
+ end
+ end
+ info("\\special{" .. data .. "}", true)
+ return
+ end
+ end
+ info("Missing \\special", true)
+end
+local map = {
+ n = 0,
+}
+function luacolor.get(color)
+ tex.write("" .. luacolor.getvalue(color))
+end
+function luacolor.getvalue(color)
+ local n = map[color]
+ if not n then
+ n = map.n + 1
+ map.n = n
+ map[n] = color
+ map[color] = n
+ end
+ return n
+end
+local attribute
+function luacolor.setattribute(attr)
+ attribute = attr
+end
+function luacolor.getattribute()
+ return attribute
+end
+local LIST = 1
+local LIST_LEADERS = 2
+local LIST_DISC = 3
+local COLOR = 4
+local RULE = node.id("rule")
+local node_types = {
+ [node.id("hlist")] = LIST,
+ [node.id("vlist")] = LIST,
+ [node.id("rule")] = COLOR,
+ [node.id("glyph")] = COLOR,
+ [node.id("disc")] = LIST_DISC,
+ [node.id("whatsit")] = {
+ [node.subtype("special")] = COLOR,
+ [node.subtype("pdf_literal")] = COLOR,
+ [node.subtype("pdf_save")] = COLOR,
+ [node.subtype("pdf_restore")] = COLOR, -- probably not needed
+-- TODO (DPC) [node.subtype("pdf_refximage")] = COLOR,
+ },
+ [node.id("glue")] =
+ function(n)
+ if n.subtype >= 100 then -- leaders
+ if n.leader.id == RULE then
+ return COLOR
+ else
+ return LIST_LEADERS
+ end
+ end
+ end,
+}
+local function get_type(n)
+ local ret = node_types[n.id]
+ if type(ret) == 'table' then
+ ret = ret[n.subtype]
+ end
+ if type(ret) == 'function' then
+ ret = ret(n)
+ end
+ return ret
+end
+local mode = 2 -- luatex.pdfliteral.direct
+local WHATSIT = node.id("whatsit")
+local SPECIAL = node.subtype("special")
+local PDFLITERAL = node.subtype("pdf_literal")
+local DRY_FALSE = false
+local DRY_TRUE = true
+local function traverse(list, color, dry)
+ if not list then
+ return color
+ end
+ local head
+ if get_type(list) == LIST then
+ head = list.head
+ elseif get_type(list) == LIST_DISC then
+ head = list.replace
+ else
+ texio.write_nl("!!! Error: Wrong list type: " .. node.type(list.id))
+ return color
+ end
+ for n in node.traverse(head) do
+ local t = get_type(n)
+ if t == LIST or t == LIST_DISC then
+ color = traverse(n, color, dry)
+ elseif t == LIST_LEADERS then
+ local color_after = traverse(n.leader, color, DRY_TRUE)
+ if color == color_after then
+ traverse(n.leader, color, DRY_FALSE or dry)
+ else
+ traverse(n.leader, '', DRY_FALSE or dry)
+ color = ''
+ end
+ elseif t == COLOR then
+ local v = node.has_attribute(n, attribute)
+ if v then
+ local newColor = map[v]
+ if newColor ~= color then
+ color = newColor
+ if dry == DRY_FALSE then
+ local newNode
+ if ifpdf then
+ newNode = node.new(WHATSIT, PDFLITERAL)
+ newNode.mode = mode
+ newNode.data = color
+ else
+ newNode = node.new(WHATSIT, SPECIAL)
+ newNode.data = prefix .. color
+ end
+ head = node.insert_before(head, n, newNode)
+ end
+ end
+ end
+ end
+ end
+ if get_type(list) == LIST then
+ list.head = head
+ else
+ list.replace = head
+ end
+ return color
+end
+function luacolor.process(box)
+ local color = ""
+ local list = tex.getbox(box)
+ traverse(list, color, DRY_FALSE)
+end
+if luaotfload.set_colorhandler then
+ local set_attribute = node.direct.set_attribute
+ luaotfload.set_colorhandler(function(head, n, color)
+ set_attribute(n, attribute, luacolor.getvalue(color))
+ return head, n
+ end)
+end
+--
+-- End of File `luacolor.lua'.
Property changes on: trunk/Master/texmf-dist/tex/latex/luacolor/luacolor.lua
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/luacolor/luacolor.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/luacolor/luacolor.sty 2020-02-25 01:20:13 UTC (rev 53900)
+++ trunk/Master/texmf-dist/tex/latex/luacolor/luacolor.sty 2020-02-25 01:20:35 UTC (rev 53901)
@@ -9,11 +9,11 @@
%% This is a generated file.
%%
%% Project: luacolor
-%% Version: 2019/11/29 v1.13
+%% Version: 2020-02-22 v1.14
%%
%% Copyright (C)
%% 2007, 2009-2011 Heiko Oberdiek
-%% 2016-2019 Oberdiek Package Support Group
+%% 2016-2020 Oberdiek Package Support Group
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -35,7 +35,6 @@
%% This work consists of the main source file luacolor.dtx
%% and the derived files
%% luacolor.sty, luacolor.pdf, luacolor.ins, luacolor.drv,
-%% luacolor-test1.tex, luacolor-test2.tex, luacolor-test3.tex,
%% luacolor.lua,
%%
\begingroup\catcode61\catcode48\catcode32=10\relax%
@@ -90,25 +89,17 @@
\edef\LuaCol at AtEnd{\LuaCol at AtEnd\noexpand\endinput}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{luacolor}%
- [2019/11/29 v1.13 Color support via LuaTeX's attributes (HO)]
-\RequirePackage{infwarerr}[2010/04/08]%
-\RequirePackage{iftex}[2019/11/07]%
-\RequirePackage{ltxcmds}[2011/04/18]%
+ [2020-02-22 v1.14 Color support via LuaTeX's attributes (HO)]
\RequirePackage{color}
-\ifluatex
- \ifx\newattribute\@undefined
- \RequirePackage{ltluatex}%
- \fi
-\else
- \@PackageError{luacolor}{%
+\ifx\directlua\@undefined
+ \PackageError{luacolor}{%
This package may only be run using LuaTeX%
}\@ehc
\expandafter\LuaCol at AtEnd
\fi%
- \let\LuaCol at directlua\directlua
\ifcolors@
\else
- \@PackageWarningNoLine{luacolor}{%
+ \PackageWarningNoLine{luacolor}{%
Colors are disabled by option `monochrome'%
}%
\def\set at color{}%
@@ -117,13 +108,13 @@
\def\define at color#1#2{}%
\expandafter\LuaCol at AtEnd
\fi%
-\LuaCol at directlua{%
+\directlua{%
require("luacolor")%
}
\begingroup
- \edef\x{\LuaCol at directlua{tex.write("2019/11/29 v1.13")}}%
+ \edef\x{\directlua{tex.write("2020-02-22 v1.14")}}%
\edef\y{%
- \LuaCol at directlua{%
+ \directlua{%
if oberdiek.luacolor.getversion then %
oberdiek.luacolor.getversion()%
end%
@@ -131,7 +122,7 @@
}%
\ifx\x\y
\else
- \@PackageError{luacolor}{%
+ \PackageError{luacolor}{%
Wrong version of lua module.\MessageBreak
Package version: \x\MessageBreak
Lua module: \y
@@ -138,7 +129,7 @@
}\@ehc
\fi
\endgroup
-\ifpdf
+\ifnum\outputmode=\@ne
\else
\begingroup
\def\current at color{}%
@@ -149,12 +140,12 @@
\endgroup
}%
\edef\reserved at a{%
- \LuaCol at directlua{%
+ \directlua{%
oberdiek.luacolor.dvidetect()%
}%
}%
\ifx\reserved at a\@empty
- \@PackageError{luacolor}{%
+ \PackageError{luacolor}{%
DVI driver detection failed because of\MessageBreak
unrecognized color \string\special
}\@ehc
@@ -161,28 +152,20 @@
\endgroup
\expandafter\expandafter\expandafter\LuaCol at AtEnd
\else
- \@PackageInfoNoLine{luacolor}{%
+ \PackageInfo{luacolor}{%
Type of color \string\special: \reserved at a
- }%
+ \@gobble}%
\fi%
\endgroup
\fi
-\ltx at IfUndefined{newluatexattribute}{%
- \newattribute\LuaCol at Attribute
-}{%
- \newluatexattribute\LuaCol at Attribute
-}
-\ltx at IfUndefined{setluatexattribute}{%
- \let\LuaCol at setattribute\setattribute
-}{%
- \let\LuaCol at setattribute\setluatexattribute
-}
-\LuaCol at directlua{%
+\newattribute\LuaCol at Attribute
+\let\LuaCol at setattribute\setattribute
+\directlua{%
oberdiek.luacolor.setattribute(\number\allocationnumber)%
}
\protected\def\set at color{%
\LuaCol at setattribute\LuaCol at Attribute{%
- \LuaCol at directlua{%
+ \directlua{%
oberdiek.luacolor.get("\luaescapestring{\current at color}")%
}%
}%
@@ -189,7 +172,7 @@
}
\def\reset at color{}
\def\luacolorProcessBox#1{%
- \LuaCol at directlua{%
+ \directlua{%
oberdiek.luacolor.process(\number#1)%
}%
}
@@ -198,41 +181,16 @@
\luacolorProcessBox\AtBeginShipoutBox
}
\set at color
-\ifpdf
- \ifx\pdfxform\@undefined
- \let\pdfxform\saveboxresource
- \fi
- \ltx at IfUndefined{pdfxform}{%
- \directlua{%
- tex.enableprimitives('',{%
- 'pdfxform','pdflastxform','pdfrefxform'%
- })%
+\ifnum\outputmode=\@ne
+ \let\LuaCol at org@pdfxform\saveboxresource
+ \protected\def\saveboxresource{%
+ \directlua{
+ local c = token.scan_int()
+ oberdiek.luacolor.process(c)
+ token.put_next(token.create'LuaCol at org@pdfxform', token.new(c, token.command_id'char_given'))
}%
- }{}%
- \ltx at IfUndefined{protected}{%
- \directlua{tex.enableprimitives('',{'protected'})}%
- }{}%
- \ltx at IfUndefined{pdfxform}{%
- \@PackageWarning{luacolor}{\string\pdfxform\space not found}%
- }{%
- \let\LuaCol at org@pdfxform\pdfxform
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname protected\endcsname\relax
- \@PackageWarning{luacolor}{\string\protected\space not found}%
- \else
- \expandafter\protected
- \fi
- \def\pdfxform{%
- \begingroup
- \afterassignment\LuaCol at pdfxform
- \count@=%
}%
- \def\LuaCol at pdfxform{%
- \luacolorProcessBox\count@
- \LuaCol at org@pdfxform\count@
- \endgroup
- }%
- }%
+ \let\pdfxform\saveboxresource
\fi
\LuaCol at AtEnd%
\endinput
More information about the tex-live-commits
mailing list.