Je suis actuellement à la recherche d'une application ou d'un script qui effectue un décompte correct mot pour un document LaTeX.
Jusqu'à présent, je n'ai rencontré que des scripts ne fonctionnant que sur un seul fichier, mais ce que je veux, c'est un script qui peut ignorer en toute sécurité les mots-clés LaTeX et parcourir les fichiers liés ... c'est-à-dire suivre les liens \include
et \input
pour produire un nombre de mots correct pour le document entier.
Avec vim, j'utilise actuellement ggVGg CTRL+G
, mais cela indique évidemment le nombre de fichiers pour le fichier actuel et n'ignore pas les mots-clés LaTeX.
Est-ce que quelqu'un connaît un script (ou une application) capable de faire ce travail?
J'utilise texcount
. La page Web a un script Perl à télécharger (et un manuel).
Il inclura les fichiers tex
inclus (\input
ou \include
) dans le document (voir -inc
), prenant en charge les macros et offrant de nombreuses autres fonctionnalités Nice.
En suivant les fichiers inclus, vous obtiendrez des détails sur chaque fichier séparé ainsi qu'un total. Par exemple, voici le résultat total pour un de mes documents de 12 pages:
TOTAL COUNT
Files: 20
Words in text: 4188
Words in headers: 26
Words in float captions: 404
Number of headers: 12
Number of floats: 7
Number of math inlines: 85
Number of math displayed: 19
Si vous ne vous intéressez qu'au total, utilisez l'argument -total
.
J'y suis allé avec le commentaire icio et ai fait un décompte de mots sur le pdf lui-même en piping la sortie de pdftotext
à wc
:
pdftotext file.pdf - | wc - w
latex file.tex
dvips -o - file.dvi | ps2ascii | wc -w
devrait vous donner un nombre de mots assez précis.
Pour ajouter à @aioobe,
Si vous utilisez pdflatex, faites juste
pdftops file.pdf
ps2ascii file.ps|wc -w
J'ai comparé ce nombre à celui de Microsoft Word dans un document Word de 1599 (selon Word). pdftotext
a produit un texte de plus de 1700 mots. texcount
n'inclut pas les références et produit 1088 mots. ps2ascii
a renvoyé 1603 mots. 4 de plus que dans Word.
Je dis que c'est un très bon compte. Je ne sais pas cependant où est la différence de 4 mots. :)
J'utilise le script VIM suivant:
function! WC()
let filename = expand("%")
let cmd = "detex " . filename . " | wc -w | Perl -pe 'chomp; s/ +//;'"
let result = system(cmd)
echo result . " words"
endfunction
… Mais il ne suit pas les liens. Cela impliquerait essentiellement analyse le fichier TeX pour obtenir tous les fichiers liés, n’est-ce pas?
L’avantage par rapport aux autres réponses est qu’il n’est pas nécessaire de générer un fichier de sortie (PDF ou PS) pour calculer le nombre de mots; il est donc potentiellement (selon l’utilisation) beaucoup plus efficace.
Bien que le commentaire d’icio soit théoriquement correct, j’ai trouvé que la méthode ci-dessus donnait une estimation assez précise du nombre de mots. Pour la plupart des textes, cela correspond bien à la marge de 5% utilisée dans de nombreuses tâches.
Pour un document de classe d'article très basique, je regarde simplement le nombre de correspondances pour une expression régulière afin de trouver des mots. J'utilise Sublime Text, cette méthode peut donc ne pas fonctionner dans un éditeur différent, mais je clique simplement sur Ctrl+F
(Command+F
sur Mac), puis, avec l'expression rationnelle activée, recherchez
(^|\s+|"|((h|f|te){)|\()\w+
qui doit ignorer le texte déclarant un environnement flottant ou des légendes sur les figures ainsi que la plupart des types d'équations de base et de déclarations \usepackage
, tout en incluant les citations et les parenthèses Il compte également les notes de bas de page et le texte \emph
asized et comptera les liens \hyperref
dans un seul mot. Ce n'est pas parfait, mais il est généralement précis à quelques dizaines de mots environ. Vous pouvez l’affiner pour qu’il fonctionne pour vous, mais un script est probablement une meilleure solution car le code source de LaTeX n’est pas un langage courant. Je pensais juste que je lancerais ça ici.