it-swarm.dev

Conteggio parole corretto di un documento LaTeX

Attualmente sto cercando un'applicazione o uno script che faccia un conteggio di correct Word per un documento LaTeX.

Fino ad ora, ho incontrato solo script che funzionano solo su un singolo file, ma quello che voglio è uno script che può tranquillamente ignorare le parole chiave di LaTeX e anche attraversare i file collegati ... cioè seguire i collegamenti \include e \input per produrre un correggere il conteggio delle parole per il documento whole.

Con vim, attualmente utilizzo ggVGg CTRL+G ma ovviamente questo mostra il conteggio per il file corrente e non ignora le parole chiave LaTeX.

Qualcuno sa di qualsiasi script (o applicazione) che può fare questo lavoro?

64
Andreas Grech

Io uso texcount. La pagina web ha uno script Perl da scaricare (e un manuale).

Comprenderà i file tex che sono inclusi (\input o \include) nel documento (vedi -inc), supporta le macro e ha molte altre funzionalità di Nice.

Quando segui i file inclusi, otterrai dettagli su ciascun file separato e su un totale. Ad esempio, ecco l'output totale di un mio documento di 12 pagine:

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

Se ti interessa solo il totale, usa l'argomento -total.

67
Geoff

Sono andato con il commento di icio e ho fatto un conteggio delle parole sul pdf stesso convogliando l'output di pdftotext a wc:

pdftotext file.pdf - | wc - w 
11
Andreas Grech
latex file.tex
dvips -o - file.dvi | ps2ascii | wc -w

dovrebbe darti un conteggio delle parole abbastanza accurato.

7
aioobe

Nell'interfaccia di Texmaker puoi ottenere il conteggio delle parole facendo clic destro nell'anteprima PDF:

 enter image description here

 enter image description here

4

Per aggiungere a @aioobe, 

Se usi pdflatex, fallo e basta 

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

Ho confrontato questo conteggio con il conteggio in Microsoft Word in un documento Word 1599 (secondo Word). pdftotext ha prodotto un testo con oltre 1700 parole. texcount non ha incluso i riferimenti e ha prodotto 1088 parole. ps2ascii ha restituito 1603 parole. 4 in più rispetto a Word.

Dico che è un bel conto. Non sono sicuro di dove sia la differenza di 4 parole, però. :)

3
fiacobelli

Io uso il seguente script VIM:

function! WC()
    let filename = expand("%")
    let cmd = "detex " . filename . " | wc -w | Perl -pe 'chomp; s/ +//;'"
    let result = system(cmd)
    echo result . " words"
endfunction

... ma non segue i collegamenti. Ciò comporterebbe fondamentalmente analizzare il file TeX per ottenere tutti i file collegati, vero?

Il vantaggio rispetto alle altre risposte è che non deve produrre un file di output (PDF o PS) per calcolare il conteggio delle parole, quindi è potenzialmente (a seconda dell'utilizzo) molto più efficiente.

Sebbene il commento di Icio sia teoricamente corretto, ho scoperto che il metodo sopra riportato fornisce stime abbastanza accurate per il numero di parole. Per la maggior parte dei testi, è ben all'interno del margine del 5% utilizzato in molti compiti.

1
Konrad Rudolph

Per un documento di classe di articolo molto semplice, guardo solo il numero di corrispondenze per una regex per trovare le parole. Uso Sublime Text, quindi questo metodo potrebbe non funzionare in un editor diverso, ma ho appena premuto Ctrl+F (Command+F su Mac) e quindi, con regex abilitato, cerco

(^|\s+|"|((h|f|te){)|\()\w+

che dovrebbe ignorare il testo che dichiara un ambiente fluttuante o didascalie sulle figure, nonché la maggior parte dei tipi di equazioni di base e le dichiarazioni \usepackage, incluse le citazioni e le parentesi. Conta anche note a piè di pagina e \emph testo personalizzato e conteggia i collegamenti \hyperref come una sola parola. Non è perfetto, ma in genere è preciso in poche decine di parole o giù di lì. Potresti affinarlo per funzionare, ma uno script è probabilmente una soluzione migliore, dal momento che il codice sorgente LaTeX non è una lingua normale. Ho pensato di buttarlo qui.

0
ocket8888

Sul retro è presente una funzione di conteggio parole:

Sul retro v2:

 enter image description here

 enter image description here

Sul retro v1:

 enter image description here

 enter image description here

0