73 votes

Nombre de mots correct d'un document LaTeX

Je suis actuellement à la recherche d'une application ou d'un script qui fait un compte correct des mots pour un document LaTeX.

Jusqu'à présent, je n'ai rencontré que des scripts qui fonctionnent uniquement 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 aussi parcourir les fichiers liés... c'est-à-dire suivre les liens \include et \input pour produire un compte de mots correct pour l'ensemble du document.

Avec vim, j'utilise actuellement ggVGg CTRL+G mais évidemment cela montre le compte 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) qui peut faire ce travail ?

4 votes

Essayer de trouver un outil qui compte les mots dans votre PDF publié - la plupart des comptages de mots LaTeX échouent à comprendre ce qui est réellement imprimé.

2 votes

@icio - Les mots à trait d'union, les formules mathématiques, les en-têtes et les pieds de page rendent assez difficile le comptage des mots dans un PDF.

1 votes

@Geoff - Je suis d'accord, mais c'est une faiblesse commune entre les compteurs de mots pour les documents PDF et TeX que je connais jusqu'à présent.

74voto

Geoff Points 3621

J'utilise texcount. La page web a un script Perl à télécharger (et un manuel).

Il inclura des fichiers tex qui sont inclus (\input ou \include) dans le document (voir -inc), prend en charge les macros, et a de nombreuses autres fonctionnalités intéressantes.

Lorsque vous suivez les fichiers inclus, vous obtiendrez des détails sur chaque fichier séparé ainsi qu'un total. Par exemple, voici la sortie totale pour un document de 12 pages que j'ai:

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 êtes uniquement intéressé par le total, utilisez l'argument -total.

0 votes

Mais suit-il les liens vers les fichiers \include et \input ?

3 votes

Oui, c'est ce que le paramètre -inc fait (je vais éditer ma réponse).

0 votes

Brillant. Juste testé ce script et il fonctionne très bien! Cheers Geoff

13voto

Andreas Grech Points 39188

Je suis allé avec le commentaire de icio et j'ai fait un comptage de mots sur le PDF lui-même en redirigeant la sortie de pdftotext vers wc:

pdftotext file.pdf - | wc - w

3 votes

Faites attention à cela. Je crois qu'un mot écrit avec un trait d'union sur deux lignes apparaîtra comme 2 mots, et non un seul. Les en-têtes et les pieds de page seront également comptés. Regardez la sortie de pdftotext et vérifiez si cela vous convient. Si vous voulez un décompte exact, je n'utiliserais pas cette solution.

1 votes

Cette solution est assez proche si vous voulez juste avoir une idée grossière de la taille des documents. Je suis d'accord avec Geoff sur le fait que ce n'est pas adapté pour vous tenir à des comptes de mots spécifiques liés à la publication.

0 votes

J'aime votre idée car elle inclut des éléments de bibliographie!

7voto

aioobe Points 158466
latex file.tex
dvips -o - file.dvi | ps2ascii | wc -w

devrait vous donner un décompte de mots assez précis.

0 votes

Si vous utilisez pdflatex, il suffit de faire pdftops fichier.tex puis ps2ascii|wc -w J'ai comparé ce décompte au décompte dans Word et de tous ceux ici, c'était celui avec le chiffre le plus proche. Voir mes comparaisons dans ma réponse

1 votes

@fiacobelli cela devrait être pdftops file.pdf

5voto

fiacobelli Points 869

Pour ajouter à @aioobe,

Si vous utilisez pdflatex, faites simplement

pdftops fichier.pdf
ps2ascii fichier.ps|wc -w

J'ai comparé ce décompte au décompte dans Microsoft Word dans un document de 1599 mots (selon Word). pdftotext a produit un texte avec plus de 1700 mots. texcount n'a pas inclus les références et a produit 1088 mots. ps2ascii a retourné 1603 mots. 4 de plus qu'avec Word.

Je dirais que c'est un décompte assez précis. Je ne suis pas sûr d'où vient la différence de 4 mots, cependant. :)

0 votes

C'est probablement des mots avec des tirets sur plusieurs lignes ou des ligatures.

1voto

Konrad Rudolph Points 231505

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 . " mots"
endfunction

... mais il ne suit pas les liens. Cela consisterait essentiellement à analyser le fichier TeX pour obtenir tous les fichiers liés, non?

L'avantage par rapport aux autres réponses est qu'il n'est pas nécessaire de produire un fichier de sortie (PDF ou PS) pour calculer le nombre de mots, donc c'est potentiellement (selon l'utilisation) beaucoup plus efficace.

Quoique le commentaire d'icio soit théoriquement correct, j'ai constaté que la méthode ci-dessus donne des estimations assez précises du nombre de mots. Pour la plupart des textes, cela se situe largement dans la marge de 5 % qui est utilisée dans de nombreux devoirs.

0 votes

Cheers pour le script mais suivre les liens suivants est nécessaire pour moi car mon document est largement structuré avec des \includes

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X