summaryrefslogtreecommitdiff
path: root/macros/luatex/latex/showhyphens/showhyphens.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/luatex/latex/showhyphens/showhyphens.sty
Initial commit
Diffstat (limited to 'macros/luatex/latex/showhyphens/showhyphens.sty')
-rw-r--r--macros/luatex/latex/showhyphens/showhyphens.sty68
1 files changed, 68 insertions, 0 deletions
diff --git a/macros/luatex/latex/showhyphens/showhyphens.sty b/macros/luatex/latex/showhyphens/showhyphens.sty
new file mode 100644
index 0000000000..38d1d2603a
--- /dev/null
+++ b/macros/luatex/latex/showhyphens/showhyphens.sty
@@ -0,0 +1,68 @@
+\ProvidesPackage{showhyphens}[2016/02/19 v0.5c Show hyphenation points (PGU)]
+\RequirePackage{ifluatex,luatexbase}
+% License: MIT style license
+
+% Copyright (c) 2011-2016 Patrick Gundlach patrick@gundla.ch
+
+% Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the
+% "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge,
+% publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do
+% so, subject to the following conditions:
+%
+% The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+%
+% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+% MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+% FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+% WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+\def\lua@SHcolor{1 0 0}% red
+\DeclareOption{blue}{\def\lua@SHcolor{0 0 1 }}% must be a rgb color
+\ProcessOptions
+
+\ifluatex
+\directlua{
+local show_hyph
+local hlist_node = node.id("hlist")
+local vlist_node = node.id("vlist")
+local disc_node = node.id("disc")
+local glyph_node = node.id("glyph")
+
+local function round(num)
+ return math.floor(num * 10^3 + 0.5) / 10^3
+end
+
+show_hyph = function(head)
+ while head do
+ if head.id == hlist_node or head.id == vlist_node then
+ show_hyph(head.list)
+ elseif head.id == disc_node then
+ if head.replace and head.replace.id == glyph_node and head.replace.components then
+ local wd = round(head.replace.width / 65781) or 0
+ local ht = round(head.replace.height / 65781) + 0.5 or 0
+ local r = node.new("whatsit","pdf_literal")
+ r.data = "q 0.3 w 0 " .. tostring(ht) .. " m " .. tostring(-wd) .. " " .. tostring(ht) .. " l S Q"
+ node.insert_after(head.replace,head.replace,r)
+ else
+ local n = node.new("whatsit","pdf_literal")
+ n.mode = 0
+ n.data = "q \lua@SHcolor RG 0.3 w 0 2 m 0 7 l S Q"
+ n.next = head.next
+ head.next.prev = n
+ n.prev = head
+ head.next = n
+ head = n
+ end
+ end
+ head = head.next
+ end
+ return true
+end
+
+
+luatexbase.add_to_callback("post_linebreak_filter",show_hyph,"show_hyph")
+}
+\else
+\errhelp{Please use LuaLaTeX when you require the package 'showhyphens'}
+\errmessage{Package showhyphens error: This works only with LuaLaTeX!}
+\fi