有没有什么好的方法可以在 LaTeX 中制作字数统计宏?

有没有什么好的方法可以在 LaTeX 中制作字数统计宏?

我曾使用过这个命令来统计 LaTeX 中的单词数,但是它有一些缺点:

  • 尽管它应该抑制错误消息,但它并不总是这样做(见图)。
  • 它无法统计\lipsum命令(和类似命令)产生的字数。如果我有一个\producetext由 定义的宏\newcommand{\producetext}{This command produces a string of 8 words.},则它不包含在字数统计中。
    \newcommand{\quickwordcount}[1]{%
      \immediate\write18{texcount -1 -merge -sum -q #1.tex > #1-words.sum}%
       \input{#1-words.sum}%
    }

在此处输入图片描述

\documentclass{article}
\usepackage{lipsum}
% The command:
\newcommand{\quickwordcount}[1]{%
  \immediate\write18{texcount -1 -merge -sum -q #1.tex > #1-words.sum}%
   \input{#1-words.sum}%
}

\newcommand{\producetext}{This command produces a string of 8 words.}

\begin{filecontents}[overwrite]{body.tex}

Hello, here is some other text from another file that we have 
included. This produces an error...

\end{filecontents}

\title{This is a Test}
\author{vebjornzen}
\date{January, 2023}


\begin{document}

%TC:ignore
\maketitle
\begin{center}
    Words: \quickwordcount{word-counter}
\end{center}
%TC:endignore

% This is not included in the word count:
\producetext
\lipsum[1]

% This produces "(errors:1)":
\input{body.tex}
\include{body.tex}


\end{document}

以下是一些文档:


https://app.uio.no/ifi/texcount/documentation.html

https://www.overleaf.com/learn/how-to/Is_there_a_way_to_run_a_word_count_that_doesn%27t_include_LaTeX_commands%3F

我想要的是让宏计算(最终)PDF 中显示的单词数。我也不想在尝试打印字数时收到错误消息。有什么方法可以实现这一点吗?我不介意尝试不同的方法。

答案1

我最清楚答案应该是找出错误的原因并修复它。主要原因是错误消息表明 TeXcount 无法解释某些内容,虽然这可能无关紧要,但也可能表明 TeXcount 存在重大问题,导致字数不可靠。请注意,TeXcount 实际上并不进行排版,而是依赖于启发式规则来解释宏,这些规则并不总是准确的,因此即使在完全有效的文档上也可能出现问题。

TeXcount 的一个主要功能是它可以生成详细的输出,表明文档的每个元素是如何解释的。您可以在TeXcount 网络服务:只需剪切并粘贴您怀疑包含问题的段或文件,然后查看其如何计算。

但是,为了回答您的实际问题,有一个解决方案可以完全消除摘要输出中的错误。只需在主 TeX 文件中包含以下代码即可:

%TC:newtemplate
%TC:template {sum}

模板可用于指定自定义输出格式,而不是硬编码的输出格式。

您仍需要-sum -merge生成总数和合并文件的选项,并删除-1会覆盖模板格式的选项。不确定该-q选项是否会产生影响。

相关内容