Ich suche derzeit nach einer Anwendung oder einem Skript, das die korrekte Wortzählung für ein LaTeX-Dokument ausführt.
Bis jetzt habe ich nur Skripte auf , daß nur die Arbeit an einer einzigen Datei , aber was ich will , ist ein Skript , das bedenkenlos ignorieren LaTeX Schlüsselwörter und kann auch Dateien Traverse verbunden ... dh folgen \include
und \input
Links , um eine korrekte Wortanzahl für die zur Herstellung von ganzes Dokument.
Mit vim verwende ich derzeit ggVGg CTRL+G
aber offensichtlich, dass die Anzahl für die aktuelle Datei angezeigt wird und LaTeX-Schlüsselwörter nicht ignoriert werden.
Kennt jemand ein Skript (oder eine Anwendung), das diesen Job ausführen kann?
latex
word-count
Andreas Grech
quelle
quelle
Antworten:
Ich benutze
texcount
. Die Webseite verfügt über ein Perl-Skript zum Herunterladen (und ein Handbuch).Es enthält
tex
Dateien, die im Dokument enthalten sind (\input
oder\include
) (siehe-inc
), Makros unterstützen und viele andere nützliche Funktionen haben.Wenn Sie den enthaltenen Dateien folgen, erhalten Sie Details zu jeder einzelnen Datei sowie eine Gesamtzahl. Hier ist zum Beispiel die Gesamtausgabe für ein 12-seitiges Dokument von mir:
Wenn Sie nur an der Summe interessiert sind, verwenden Sie das
-total
Argument.quelle
\include
und\input
Dateien?-inc
macht der Parameter (ich werde meine Antwort bearbeiten).grep bibcite paper.aux | wc
, wopaper.aux
die richtige sein sollteaux
Datei für das Dokument, aber Sie werden das Dokument kompilieren müssen , um das zu bekommenaux
Datei.Ich ging mit icios Kommentar und zählte das PDF selbst, indem ich die Ausgabe von
pdftotext
anwc
:quelle
pdftotext
und prüfen Sie, ob sie für Sie in Ordnung ist. Wenn Sie eine genaue Zählung wünschen, würde ich diese Lösung nicht verwenden.sollte Ihnen eine ziemlich genaue Wortzahl geben.
quelle
pdftops file.tex
und dann habeps2ascii|wc -w
ich diese Anzahl mit der Anzahl in Word verglichen, und von allen hier war es die mit der nächsten Nummer. Siehe meine Vergleiche in meiner Antwortpdftops file.pdf
Um @aioobe hinzuzufügen,
Wenn Sie pdflatex verwenden, tun Sie es einfach
Ich habe diese Anzahl mit der Anzahl in Microsoft Word in einem 1599-Word-Dokument (gemäß Word) verglichen.
pdftotext
produzierte einen Text mit mehr als 1700 Wörtern.texcount
enthielt nicht die Referenzen und produzierte 1088 Wörter.ps2ascii
gab 1603 Wörter zurück. 4 mehr als in Word.Ich sage, das ist eine ziemlich gute Zählung. Ich bin mir jedoch nicht sicher, wo der Unterschied von 4 Wörtern liegt. :) :)
quelle
In der Texmaker-Oberfläche können Sie die Wortzahl abrufen, indem Sie mit der rechten Maustaste in die PDF-Vorschau klicken:
quelle
Overleaf hat eine Wortzählfunktion:
Overleaf v2:
Overleaf v1:
quelle
Ich verwende das folgende VIM-Skript:
function! WC() let filename = expand("%") let cmd = "detex " . filename . " | wc -w | perl -pe 'chomp; s/ +//;'" let result = system(cmd) echo result . " words" endfunction
… Aber es folgt keinen Links. Dies würde im Grunde bedeuten, die TeX-Datei zu analysieren , um alle verknüpften Dateien zu erhalten, nicht wahr?
Der Vorteil gegenüber den anderen Antworten besteht darin, dass keine Ausgabedatei (PDF oder PS) erstellt werden muss, um die Wortanzahl zu berechnen, sodass sie möglicherweise (je nach Verwendung) viel effizienter ist.
Obwohl der Kommentar von icio theoretisch korrekt ist, stellte ich fest, dass die obige Methode ziemlich genaue Schätzungen für die Anzahl der Wörter liefert. Bei den meisten Texten liegt es gut innerhalb der 5% -Marge, die in vielen Aufgaben verwendet wird.
quelle
\include
s strukturiert istFür ein sehr einfaches Artikelklassendokument schaue ich mir nur die Anzahl der Übereinstimmungen für einen regulären Ausdruck an, um Wörter zu finden. Ich verwende Sublime Text, daher funktioniert diese Methode möglicherweise nicht für Sie in einem anderen Editor, aber ich drücke einfach
Ctrl+F
(Command+F
auf dem Mac) und suche dann bei aktiviertem Regex nach(^|\s+|"|((h|f|te){)|\()\w+
Dabei sollte Text ignoriert werden, der eine schwebende Umgebung oder Beschriftungen in Abbildungen deklariert, sowie die meisten Arten von Grundgleichungen und
\usepackage
Deklarationen, einschließlich Zitaten und Klammern. Es zählt auch Fußnoten und\emph
asized Text und zählt\hyperref
Links als ein Wort. Es ist nicht perfekt, aber normalerweise auf ein paar Dutzend Wörter genau. Sie könnten es verfeinern, um für Sie zu arbeiten, aber ein Skript ist wahrscheinlich eine bessere Lösung, da LaTeX-Quellcode keine reguläre Sprache ist. Ich dachte nur, ich würde das hier hochwerfen.quelle
Wenn die Verwendung eines Vim-Plugins zu Ihnen passt, hat das Vimtex- Plugin das
texcount
Tool recht gut integriert.Hier ist ein Auszug aus ihrer Dokumentation:
:VimtexCountLetters Shows the number of letters/characters or words in :VimtexCountWords the current project or in the selected region. The count is created with `texcount` through a call on the main project file similar to: > texcount -nosub -sum [-letter] -merge -q -1 FILE < Note: Default arguments may be controlled with |g:vimtex_texcount_custom_arg|. Note: One may access the information through the function `vimtex#misc#wordcount(opts)`, where `opts` is a dictionary with the following keys (defaults indicated): > 'range' : [1, line('$')] 'count_letters' : 0/1 'detailed' : 0 < If `detailed` is 0, then it only returns the total count. This makes it possible to use for e.g. statusline functions. If the `opts` dict is not passed, then the defaults are assumed. *VimtexCountLetters!* *VimtexCountWords!* :VimtexCountLetters! Similar to |VimtexCountLetters|/|VimtexCountWords|, but :VimtexCountWords! show separate reports for included files. I.e. presents the result of: > texcount -nosub -sum [-letter] -inc FILE < *VimtexImapsList* *<plug>(vimtex-imaps-list)*
Das Schöne daran ist, wie erweiterbar es ist. Zusätzlich zum Zählen der Anzahl der Wörter in Ihrer aktuellen Datei können Sie eine visuelle Auswahl treffen (z. B. zwei oder drei Absätze) und dann den Befehl nur auf Ihre Auswahl anwenden.
quelle