[Lualatex] Afficher toutes les majuscules en rouge

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux membres inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
MB
Administrateur
Administrateur
Messages : 7898
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

[Lualatex] Afficher toutes les majuscules en rouge

Message non lu par MB »

Voici un exemple, inspiré du paquet chickenize, permettant d'afficher en rouge toutes les lettres majuscules d'un document. Il s'agit d'un exemple.

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}
lualatex_red_uppercase.png
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.