diff options
author | Karl Berry <karl@freefriends.org> | 2020-02-25 01:20:35 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-02-25 01:20:35 +0000 |
commit | 17ea4c24b987d526d95d6b72406341fab755b78d (patch) | |
tree | 3edfdf57ec812dd8ca643ca586285920ba3dafb6 /Master/texmf-dist/scripts | |
parent | c1ab1e338ec295e77a4e66c90e809d183b4da895 (diff) |
luacolor (25feb20)
git-svn-id: svn://tug.org/texlive/trunk@53901 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts')
-rw-r--r-- | Master/texmf-dist/scripts/luacolor/luacolor.lua | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/Master/texmf-dist/scripts/luacolor/luacolor.lua b/Master/texmf-dist/scripts/luacolor/luacolor.lua deleted file mode 100644 index 38dd24e0f24..00000000000 --- a/Master/texmf-dist/scripts/luacolor/luacolor.lua +++ /dev/null @@ -1,221 +0,0 @@ --- --- 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: 2019/11/29 v1.13 --- --- Copyright (C) --- 2007, 2009-2011 Heiko Oberdiek --- 2016-2019 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-test1.tex, luacolor-test2.tex, luacolor-test3.tex, --- luacolor.lua, --- -oberdiek = oberdiek or {} -local luacolor = oberdiek.luacolor or {} -oberdiek.luacolor = luacolor -function luacolor.getversion() - tex.write("2019/11/29 v1.13") -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 --- --- End of File `luacolor.lua'. |