当章节正式被称为章节时,按章节进行字数统计

当章节正式被称为章节时,按章节进行字数统计

我有一个 wordcount 宏,用来跟踪 的每个章节的字数book。每个章节都写在一个单独的文件中,我input从主文件中将其分离出来。当我处理单个章节时,我会在类的较小主文件中编译文本article,这样可以大大缩短编译时间。在 中book,章节自然由命令定义\chapter{}。为了用类编译单个章节article,我将\chapter命令映射到\section序言中。不幸的是,这会破坏我的 wordcount 宏。这与宏寻找不存在的章节有关。事实是我不明白我在grepsed什么。

欢迎提出建议。我可能需要一种比我使用的\chapter简单方法更全面的方式来重新定义命令。我的宏\letwordcountarticle(摘自平均能量损失) 如下:

\newcommand\wordcount{
    \immediate\write18{texcount -sub=section \jobname.tex  | grep "Section" | sed -e 's/+.*//' | sed -n \thesection p > 'wordcount.log'}
\marginpar{[\input{wordcount.log}words]}}

\chapter如果我手动替换每个实例\section,wordcount 宏就会起作用。但是当我用这个快捷方式将章节重新定义为节时,它就会中断:

\let\chapter\section 

平均能量损失编译时shell-escape启用(我使用XeLaTeX

% !TeX document-id = {965bf974-53c7-4aa7-bc9b-fb76fa6b22ae}
% !TeX TXS-program:compile = txs:///xelatex/[--shell-escape]
\documentclass{article}
\let\chapter\section % article class does not understand the \chapter command
\newcommand\wordcount{
    \immediate\write18{texcount -sub=section \jobname.tex  | grep "Section" | sed -e 's/+.*//' | sed -n \thesection p > 'wordcount.log'}
\marginpar{[\input{wordcount.log}words]}}

\begin{document}

\chapter{Introduction}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

\wordcount

\chapter{Main Section}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

\wordcount

\chapter{Conclusion}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. 

\wordcount

\end{document}

在此处输入图片描述

当我手动替换时\chapter\section它看起来像这样:

在此处输入图片描述

附注:我尝试使用blindtext包来制作平均能量损失更简洁,但即使使用标准命令,它也不适用于 wordcount 宏\section

这可能是我获得字数统计宏的地方: 动态计算并返回某一部分的字数,其他有用的交流如下: 有没有什么方法可以正确统计 LaTeX 文档的字数?

wordcount调整宏以适应该课程并不太难book

\newcommand\wordcount{
    \immediate\write18{texcount -sub=section \jobname.tex  | grep "Chapter" | sed -e 's/+.*//' | sed -n \thechapter p > 'wordcount.log'}
\marginpar{[\input{wordcount.log}words]}}

答案1

改进版请见本文末尾(2016/4/23)

情况比仅\chapter使用声明重命名等要复杂一些\let\chapter\section

  • texcount寻找真正的切片单元,sub=section或者sub=chapter-->\chapter需要sub=chapter
  • 如果找到章节,则 texcount 的输出类似于
File: wordcountchapters.tex
Encoding: ascii
Words in text: 409
Words in headers: 4
Words outside text (captions, etc.): 0
Number of headers: 3
Number of floats/tables/figures: 0
Number of math inlines: 0
Number of math displayed: 0
Subcounts:
  text+headers+captions (#headers/#floats/#inlines/#displayed)
  114+1+0 (1/0/0/0) Chapter: Introduction
  228+2+0 (1/0/0/0) Chapter: Main Section
  67+1+0 (1/0/0/0) Chapter: Conclusion

这意味着,grep必须寻找Chapter,而不是Section

→ 改为“Chapter”或更好grep -i "chapter"(忽略大小写)

  • 下一行替换+等,并用 捕获\thesection,即节(或章)的编号。必须用一些更棘手的语句替换它 \the\numexpr\value{chapter}(才能获得正确的值)

为了实现这一点,\let\c@chapter\c@section引入了一个假计数器——这样,计数器具有与计数器chapter相同的值section

我已将其全部放在下面:宏使用默认为 的可选参数chapter。在其他设置中,使用\wordcount[section]


\documentclass{article}

\let\chapter\section % article class does not understand the \chapter command
\makeatletter
\let\c@chapter\c@section % fake counter
\makeatother

\newcommand\wordcount[1][chapter]{%
  \immediate\write18{texcount -sub=#1 \jobname.tex  | grep -i "#1" | sed -e 's/+.*//' | sed -n \the\numexpr\value{#1}+1 p > 'wordcount.log'}%
  \marginpar{[\input{wordcount.log}words]}}

\begin{document}


\chapter{Introduction} 
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

\wordcount

\chapter{Main Section}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

\wordcount

\chapter{Conclusion}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. 

\wordcount

\end{document}

在此处输入图片描述

改良版

我已经扩展了上述解决方案,以便使用单个命令进行配置,\prepareforwordcount并且\presetkeys{wc}{sub=chapter}{}\presetkeys来自xkeyval包)

设置\prepareforwordcount命令\chapter等并\wordcount使用条目的预设值sub=...

由于flawshell 脚本的原因,\jobname不能包含子单元的名称,如果chapter要求,请不要使用带有“chapter”的作业名(texcount打印文件名,这将包含chapter,然后依次进行计数grep)。

\documentclass{article}

\usepackage{xkeyval}

\makeatletter
\define@key{wc}{sub}[section]{%
  \gdef\kvwc@sub{#1}%
}

\newcommand{\prepareforwordcount}[1][]{%
  \setkeys{wc}{#1}%
  \@ifundefined{\kvwc@sub}{%  e.g does \chapter exist?
    \expandafter\let\csname \kvwc@sub\endcsname\section%
    \expandafter\let\csname c@\kvwc@sub\endcsname\c@section% Generate a fake counter to be the same as \c@section 
  }{%
    % Nothing to be done!
  }%
}

\newcommand\wordcount[1][]{%
  \setkeys{wc}{#1}%
  \immediate\write18{texcount -sub='\kvwc@sub' \jobname.tex  | grep -i "\kvwc@sub" | sed -e 's/+.*//' | sed -n \the\numexpr\value{\kvwc@sub} p > 'wordcount.log'}%
  \marginpar{[\input{wordcount.log}words]}}

\makeatother

\presetkeys{wc}{sub=chapter}{}

\prepareforwordcount





\begin{document}

\chapter{Introduction} 
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

\wordcount

\chapter{Main Section}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

\wordcount

\chapter{Conclusion}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. 

\wordcount

\end{document}

答案2

克里斯蒂安·胡普弗回答了我的问题,并很好地解释了我使用的 wordcount 宏的不同部分的功能,以及为什么在我重新定义命令后它不起作用的原因\chapter。在这里,我想展示一种我后来发现的替代方法:它依赖于包xesearch而不是texcount程序。它不需要shell-escape,但它确实需要XeLaTeX

以下解决方案基于xesearch手册(参见ftp://ftp.fu-berlin.de/tex/CTAN/macros/xetex/generic/xesearch/xesearch.pdf)。

示例 1

wordcount命令在命令所在位置的右侧边缘打印字数。字数是累积的。在下面进一步探讨的其他示例中,字数计数器是非累积的。

% !TeX document-id = {965bf974-53c7-4aa7-bc9b-fb76fa6b22ae}
% !TeX TXS-program:compile = txs:///xelatex/[--shell-escape]
\documentclass{article}
\let\chapter\section % article class does not understand the \chapter command
\usepackage{xesearch}
\newcount\wordcounter
\let\shownumber\relax
\SearchList!{wordcounter}{\global\advance\wordcounter1\shownumber{}}
{a?,b?,c?,d?,e?,f?,g?,h?,i?,j?,k?,l?,m?,n?,o?,p?,q?,r?,s?,t?,u?,v?,w?,x?,y?,z?}
\UndoBoundary{'}
\SearchOrder{p;}
\newcommand{\wordcount}{
    \marginpar{~~[\expandafter\the\csname wordcounter\endcsname\ words]}
}

\begin{document}

\chapter{Introduction} 
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

\wordcount

\chapter{Main Section}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

\wordcount

\chapter{Conclusion}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. 

\wordcount

\end{document}

在此处输入图片描述

上面的宏给出了累计字数。要获得每个部分的字数,可以重置字数计数器。我探索了两种方法:提供一个命令来手动重置计数器和/或为每个部分自动重置计数器。


示例 2

环境countwords界定了字数统计的开始和结束。该donotcount{}命令用于包装注释和其他不应包含在字数统计中的单词。不提供累计字数统计。

% !TeX document-id = {965bf974-53c7-4aa7-bc9b-fb76fa6b22ae}
% !TeX TXS-program:compile = txs:///xelatex/[--shell-escape]
\documentclass{article}
\let\chapter\section % article class does not understand the \chapter command
\usepackage{xesearch}
\newcounter{wordscounter}
\newenvironment{countwords}{%
    \setcounter{wordscounter}{0}
    \SearchList!{wordcount}{\stepcounter{wordscounter}}
        {a?,b?,c?,d?,e?,f?,g?,h?,i?,j?,k?,l?,m?,
        n?,o?,p?,q?,r?,s?,t?,u?,v?,w?,x?,y?,z?}
    \UndoBoundary{'’-}
    \MakeBoundary{„“‚‘–}
    \SearchOrder{p;}}{%
        \StopSearching
        \marginpar{~[\arabic{wordscounter}~words]} 
}
%%  prevent words in the argument from being included in the word count
\newcommand{\donotcount}[1]{\StopSearching #1\StartSearching}% 

\begin{document}

\chapter{Introduction} 
\begin{countwords}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.
\end{countwords}

\chapter{Main Section}
\begin{countwords}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.\footnote{\donotcount{The words of this footnote will not be included in the wordcount.}}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.
\end{countwords}

\chapter{Conclusion}
\begin{countwords}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
\end{countwords}

\end{document}

示例 3

startwordcount命令启动字数统计器。该donotcount命令用于包装注释和其他不应包含在字数统计中的单词。该footnote命令被重新定义,使其内容不包含在字数统计中。该wordcount命令在页边空白处打印当前字数统计。该chapter命令未在article类中定义,它被映射到该section命令并自动重置字数统计器。

% !TeX document-id = {965bf974-53c7-4aa7-bc9b-fb76fa6b22ae}
% !TeX TXS-program:compile = txs:///xelatex/[--shell-escape]
\documentclass{article}
% The article class does not understand the \chapter command
% map \chapter to \section and reset wordcounter each time \chapter is invoked
\newcommand\chapter[2][\DefaultOpt]{%
  \def\DefaultOpt{#2}%
  \section[#1]{#2}\setcounter{wordcounter}{0}%
}
\usepackage{xesearch}% must be compiled with xelatex
\newcounter{wordcounter}% define a word counter
\newcommand\startwordcount{%
    \setcounter{wordcounter}{0}
    \SearchList!{wordcount}{\stepcounter{wordcounter}}
        {a?,b?,c?,d?,e?,f?,g?,h?,i?,j?,k?,l?,m?,
        n?,o?,p?,q?,r?,s?,t?,u?,v?,w?,x?,y?,z?}
    \UndoBoundary{'’-}
    \MakeBoundary{„“‚‘–}
    \SearchOrder{p;}
}
%%  print the wordcount counter in the margin
\newcommand\wordcount{%
    \marginpar{~[\arabic{wordcounter}~words]}%
}
%%  prevent words in the argument from being included in the word count
\newcommand{\donotcount}[1]{\StopSearching #1\StartSearching}% 

%%  redefine the \footnote command to take footnotes out of word count
\let\oldfootnote\footnote
\renewcommand\footnote[1]{%
\oldfootnote{\donotcount{#1}}}

\begin{document}

\startwordcount

\chapter{Introduction} 
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

\wordcount

\chapter{Main Section}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.\footnote{\donotcount{The words of this footnote will not be included in the wordcount.}}

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis facilisis sem. Nullam nec mi et neque pharetra sollicitudin. Praesent imperdiet mi nec ante. Donec ullamcorper, felis non sodales commodo, lectus velit ultrices augue, a dignissim nibh lectus placerat pede. Vivamus nunc nunc, molestie ut, ultricies vel, semper in, velit. Ut porttitor. Praesent in sapien. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis fringilla tristique neque. Sed interdum libero ut metus. Pellentesque placerat. Nam rutrum augue a leo. Morbi sed elit sit amet ante lobortis sollicitudin. Praesent blandit blandit mauris. Praesent lectus tellus, aliquet aliquam, luctus a, egestas a, turpis. Mauris lacinia lorem sit amet ipsum. Nunc quis urna dictum turpis accumsan semper.

\wordcount

\chapter{Conclusion}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 

\wordcount

\end{document}

这是第二和第三个示例的屏幕截图:

在此处输入图片描述

相关内容