Moin, ich würde gerne am Ende meines Dokuments die Anzahl der Zeichen ausgeben. Ich wollte wissen, ob dies automatisch möglich ist, oder ob man es händisch eingeben muss Die folgenden Möglichkeiten zur manuellen Ermittlugn der Wörter/Zeichen, kenne ich bereits: gefragt 11 Jun '18, 14:34 latex_user
Ergebnis 5 von 7
show 2 more comments
|
In ConTeXt kann man dafür das Spellchecker-Modul verwenden. Jedes Wort wird zusammen mit seiner Häufigkeit der Liste in der Datei mit der Endung Öffne in Overleaf
\setupspellchecking[state=start,method=2] \ctxlua{languages.words.threshold=1} \starttext \setupspellchecking[state=stop] \completecontent \setupspellchecking[state=start] \startsection[title=Knuth] \input knuth \startformula x_{1,2} = \frac{-b\pm\sqrt{b^2-4ac}}{2a} \stopformula \input ward \m{E = m c^2} \stopsection \startsection[title=Ward] \input ward \stopsection \startsection[title=Zapf] \input zapf \stopsection \startluacode local wordfile = "\jobname.words" if file.is_readable(wordfile) then local data = dofile(wordfile) local characters = 0 for word, count in pairs(data.categories.document.languages.en.list) do characters = characters + #word*count end context("Total characters: " .. characters) end \stopluacode \stoptext beantwortet 12 Jun '18, 01:36 Henri @IjonTichy Satzzeichen und Zahlen werden, soweit ich das sehen kann, nicht mitgezählt.
(12 Jun '18, 12:25)
Henri
|
Basierend auf den Hinweisen auf saputellos Kommentare könnte man in der Tat das eigentliche Dokument zweimal verarbeiten: Einmal ganz normal und einmal mit zusätzlichen Einstellungen, die dafür sorgen, dass nur die Zeichen in der Ausgabe landen, die auch wirklich gezählt werden sollten. Dieses Zähldokument lässt man dann ebenfalls erstellen, macht beispielsweise mit Die Erzeugung des Zähldokuments kann sehr einfach aus dem Hauptdokument per Die benötigten Aufrufe, um aus dem Zähldokument schließlich die Anzahl der Zeichen zu erhalten, kann man in den Dokumenterstellungsvorgang ähnlich dem Aufruf von Angenommen, wir haben ein Dokument Öffne in Overleaf
\RequirePackage{filecontents} \begin{filecontents*}{normseiten.tex} \makeatletter \newcommand*{\GenerateInfoPage}{% \usepackage[hyphen=false,just=false,parskip]{stdpage}% \let\tableofcontents\relax \let\listoffigures\relax \let\maketitle\relax \let\ps@plain\ps@empty \let\ps@headings\ps@empty \renewcommand*{\includegraphics}[2][]{}% } \makeatother \input{test-hauptdatei.tex} \end{filecontents*} \documentclass{article} \usepackage[T1]{fontenc} \usepackage{graphicx} \newcommand*{\BeispielMakro}{Das ist nur irgend ein Beispielmakro} \usepackage{mwe} \usepackage{shellesc} \providecommand*{\GenerateInfoPage}{% \AtEndDocument{% \typeout{Es erfolgt die Ermittlung der Zeichen.}% \ShellEscape{pdflatex normseiten.tex}% Normseiten erstellen. \ShellEscape{pdftotext normseiten.pdf normseiten.txt}% In Text wandeln \ShellEscape{wc -m normseiten.txt | cut -d' ' -f1 > test-anzahlseiten.txt}% Zeichen zählen \clearpage \IfFileExists{test-anzahlseiten.txt}{% Dieses Dokument hat ohne diese Seite \input{test-anzahlseiten.txt}Zeichen. }{% Um die Anzahl der Zeichen in diesem Dokument zu bestimmen, ist Option \texttt{--shell-escape} beim Aufruf von \texttt{pdflatex} erforderlich! }% }% } \pagestyle{headings} \GenerateInfoPage% Sollte die letzte Anweisung vor \begin{document} sein! \begin{document} \title{Titel} \author{Ijon Tichy} \maketitle \tableofcontents \listoffigures \blinddocument \begin{figure} \includegraphics{example-image} \caption{Testbild mit \BeispielMakro} \end{figure} \end{document} dann erhält man auf diese Weise als letzte Seite den Hinweis: Wie zu sehen ist, ist das Einbinden des Zählergebnisses selbst dabei das kleinere Problem. Entscheidender ist in der Tat, dass man wirklich genau das zählt, was man wirklich zählen will. Das sollte man anhand der Datei Um die Infoseite nicht mit zu zählen wurde ein einfacher Trick verwendet. Die Anweisung, die diese Infoseite erzeugt, wird nur dann definiert, wenn sie nicht bereits definiert ist. Im Zähldokument wiederum wird diese Anweisung bereits vorab, also vor dem Einlesen des Hauptdokument, definiert und enthält dann die ganzen Änderungen, die nur für das Zähldokument gelten. Wollte man die Infoseite mitzählen, müsste man hier stattdessen unterschiedliche Befehle verwenden und den für das Zähldokument im Hauptdokument nur ausführen, wenn er definiert ist. beantwortet 12 Jun '18, 09:24 gast3 |
Erst muss man wissen, wie die Anzahl der Zeichen bestimmt werden soll. Das ist nämlich bei LaTeX keineswegs eindeutig. So muss man sich fragen, ob die Zeichen im Quelltext oder im PDF maßgeblich sind. Beim PDF stellt sich die Frage, ob Dinge wie Trennstriche, Seitenzahlen, Kopfzeilen, Verzeichnisse mitgezählt werden sollten. Dann ist noch nicht geklärt, ob die Zeichen in Abbildungen ebenfalls zu zählen sind … Wenn man alle Fragen geklärt hat, dann erst kann man sich die Frage stellen, ob es eine Möglichkeit gibt, die Anzahl der Zeichen automatisch zu bestimmen. Wenn ja, ist der Rest machbar.
In meinem Fall soll die Zeichenzahl des Haupttextes (also des fertigen PDFs) gezählt werden (ohne Deckblatt, ohne Inhaltsverzeichnis, ohne Literaturverzeichnis, ohne Erklärung zur Selbstständigkeit, ohne Anhang, ohne Fußnoten und ohne Leerzeichen).
Das beantworte leider bei weitem nicht alle offenen Fragen. Also anders: Wenn Du ein Programm hast, dass die gewünschte Zeichenzahl liefert, dann kannst Du dessen Ausgabe auch in eine Datei schreiben lassen und bei einem weiteren LaTeX-Lauf diese Datei per
\input
lesen. Die benötigten Aufrufe kann man in den build-Prozess einfügen. Entweder mit Hilfe eines Editors, der zusätzliche Aufrufe unterstützt oder mit einem zusätzlichen build-Prozessor wiearara
.BTW: Gerade weil die Anzahl der Zeichen allgemein sehr wenig spezifiziert und damit sehr wenig aussagekräftig ist, gibt es zu Abrechnungszwecken (beispielsweise für Auftragsautoren, Übersetzer etc.) das Prinzip der Normseiten. LaTeX-seitig versucht das Paket
stdpage
dies umzusetzen.Es gibt ein Perl-Script namens 'wordcount'; sowas ähnliches brauchst Du. Ich weiß es nicht, aber ich glaube LaTeX alleine kann das nicht.
@saputello
Die Zeichen im PDF sind maßgeblich. Trennstriche, Seitenzahlen, Kopfzeile, Verzeichnise und Zeichen in Abbildungen werden NICHT mitgezählt. Welche Fragen müssen noch beantwortet werden?
Um stdpage nutzen zu können müsssen irgendwie die Latex Macros entfernt werden, da diese sonst mit auf der Normseite landen. Mit detex? Dann werden aber natürlich auch Referenzen entfernt (Kapitel 1 etc.) Oder gibt es eine Möglichkeit den Hauptteil des Textes als .txt auszugeben? pdftotext?
Merci für die Anregungen schon mal! :)
Um
stdpage
nutzen zu können, muss man keine LaTeX Macros entfernen. Ich würde in der Tat, damit beginnen,stdpage
mit Optionen wiehyphen=false
einzubinden. Dazu alle Seitenstile auf Seitenstilempty
mappen (z. B.\let\ps@plain=\ps@empty
, außerdem die Verzeichnisse deaktivieren (z. B.\let\tableofcontents=\relax
). Wenn alles deaktiviert ist, was nicht mit gezählt werden soll, kann man in der Tatpdftotext
verwenden und dann etwas wiewc
. Die ganzen Einstellungen verpackt man in einer eigenen Datei, die nur für das Zähldokument verwendet wird.