[lualatex] Exemples d'utilisation

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 : 7768
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: [lualatex] Exemples d'utilisation

Message non lu par MB »

Oui car comme on peut le voir le programme considère que les mots sont séparés par des espaces. Ainsi le texte a . b compte comme trois mots.

Il faudrait affiner les choses si besoin, mais ça doit fonctionner assez correctement pour des textes classiques et correctement typographiés. Pour les formules mathématiques il faudrait d'ailleurs préciser la notion de mot.
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.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2035
Inscription : samedi 29 décembre 2007, 00:58

Re: [lualatex] Exemples d'utilisation

Message non lu par projetmbc »

J'aurais tendance à ignorer les formules.

Sais-tu repérer ce genre de chose en LuaTeX ?
MB
Administrateur
Administrateur
Messages : 7768
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: [lualatex] Exemples d'utilisation

Message non lu par MB »

Je propose éventuellement code suivant, qui compte 6 mots.

On utilise le fait que le mode math débute par un noeud de type math et de sous-type 0 et se termine par un noeud de type math et de sous-type 1.

Code : Tout sélectionner

\documentclass{article}
\usepackage{luacode,lipsum,xcolor}
\begin{luacode}
wordnumber = 0

function countwords(head)
    local mathmode = false
    for n in node.traverse(head) do
        if n.id == node.id("math") then
            mathmode = (n.subtype == 0)
        elseif (n.id == node.id("glyph") and n.next.id == node.id("glue") and not mathmode) then
            wordnumber = wordnumber+1
        end
    end
    wordnumber = wordnumber+1
    return head
end

function printwordnumber()
    texio.write_nl("wordnumber=" .. wordnumber)
end

luatexbase.add_to_callback("pre_linebreak_filter",countwords,"countwords")
luatexbase.add_to_callback("stop_run",printwordnumber,"printwordnumber")
\end{luacode}
\AtEndDocument{\par\vfill\hfill\textcolor{red}{[wordnumber=\directlua{tex.sprint(wordnumber) wordnumber=wordnumber-1}]}}
\begin{document}

Voici une formule $a+b=c$ entourée de texte.

\end{document}
Il resterait à gérer le problème du cas Voici une formule $a+b=c$. qui compterait 4 mots (à cause du point final), mais l'objectif de ce topic n'est que de mettre en évidence certaines fonctionnalités de lualatex.
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.
MB
Administrateur
Administrateur
Messages : 7768
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Re: [lualatex] Exemples d'utilisation

Message non lu par MB »

J'en profite pour signaler le paquet nodetree qui permet d'afficher la liste des noeuds avec certaines de leurs caractéristiques.

Code : Tout sélectionner

\documentclass{article}
\usepackage{nodetree}
\begin{document}
Voici une formule $a+b=c$.
\end{document}
nodetree.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.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2035
Inscription : samedi 29 décembre 2007, 00:58

Re: [lualatex] Exemples d'utilisation

Message non lu par projetmbc »

Super.

Je creuserais de mon côté le comptage.