Code : Tout sélectionner
\documentclass{article}
\usepackage{luacode,lipsum}
\begin{luacode}
color_push = node.new(node.id("whatsit"),node.subtype("pdf_colorstack"))
color_pop = node.new(node.id("whatsit"),node.subtype("pdf_colorstack"))
color_push.command = 1
color_pop.command = 2
function uppercasecolor(head)
for line in node.traverse_id(node.id("hhead"),head) do
for upper in node.traverse_glyph(line.head) do
if node.has_attribute(upper,luatexbase.attributes.uppercasecolorattr) then
if (((upper.char > 64) and (upper.char < 91)) or ((upper.char > 57424) and (upper.char < 57451))) then
color_push.data = "255 0 0 rg"
line.head = node.insert_before(line.head,upper,node.copy(color_push))
node.insert_after(line.head,upper,node.copy(color_pop))
end
end
end
end
return head
end
luatexbase.add_to_callback("post_linebreak_filter",uppercasecolor,"uppercasecolor")
\end{luacode}
\begin{document}
\lipsum[1-1]
\end{document}