将 Arara 与 TexCount 结合使用

将 Arara 与 TexCount 结合使用

我正在运行 TeXShop,我有一个相当大的文档 - 我的博士论文。我想定期进行字数统计,不一定每次编译时都进行,但我希望如果我愿意的话,这些信息是可以访问的。

我已经安装了 TeXCount(和替代的 TeXCount300)引擎,并且可以让它们正常工作。

不过,我也使用 Arara 进行编译。我尝试将 arara 命令更改为:

% arara: pdflatex
% arara: pdflatex
% arara: bibtex
% arara: pdflatex
% arara: texcount

但后来我收到了这样的错误信息:

"Uh-oh, I could not find the 'texcount' rule in the search path.
Could you take a look if the rule name is correct and if the rule
is accessible through the search path?"

有人能帮助我整合 TeXCount 和 Arara 吗?

答案1

很抱歉答复迟了。

为了运行一项任务,arara需要一条规则来告诉它如何做,这就是为什么它% arara: texcount不起作用的原因。所以我们需要制定一条规则。:)

调用的非常简单的规则$ texcount mydocument.tex如下(必须命名文件texcount.yaml才能工作):

!config
identifier: texcount
name: TeXcount
command: texcount @{file}
arguments: []

我相信这是不言自明的。:)没有参数,只是调用texcount当前正在处理的文件(arara已经用特殊files参数处理了文件覆盖,所以我们不需要在规则上下文中担心它)。

当然,因为我有自定义规则,所以我需要告诉arara如何找到它。然后我需要araraconfig.yaml在我的主目录中创建一个名为的文件(/home/paulo在 Unix、C:\Users\PauloWindows 或/Users/pauloMac 中),并将规则位置添加到其中:

!config
paths:
- /home/paulo/myrulefolder

我们完成了!:)让我们用一个非常简单的 TeX 文档(名为)尝试这个新规则,mydoc.tex如下所示:

% arara: pdflatex
% arara: texcount
\documentclass{article}
\begin{document}
Hello world!
\end{document}

arara mydoc.tex在终端运行会得到以下输出:

[paulo@cambridge ~] $ arara mydoc.tex 
  __ _ _ __ __ _ _ __ __ _ 
 / _` | '__/ _` | '__/ _` |
| (_| | | | (_| | | | (_| |
 \__,_|_|  \__,_|_|  \__,_|

Running PDFLaTeX... SUCCESS
Running TeXcount... SUCCESS
[paulo@cambridge ~] $ 

哎呀。虽然texcount成功执行了,但我还是希望命令输出能够检查统计数据。我们可以使用该--verbose标志来显示arara幕后发生了什么:

[paulo@cambridge ~] $ arara mydoc.tex --verbose
  __ _ _ __ __ _ _ __ __ _ 
 / _` | '__/ _` | '__/ _` |
| (_| | | | (_| | | | (_| |
 \__,_|_|  \__,_|_|  \__,_|

Running PDFLaTeX... 

This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./mydoc.tex
LaTeX2e <2015/10/01> patch level 2
Babel <3.9m> and hyphenation patterns for 79 languages loaded.
(/usr/local/texlive/2015/texmf-dist/tex/latex/base/article.cls
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
(/usr/local/texlive/2015/texmf-dist/tex/latex/base/size10.clo)) (./mydoc.aux)
[1{/usr/local/texlive/2015/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./mydoc.aux) )</usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/
cm/cmr10.pfb>
Output written on mydoc.pdf (1 page, 11921 bytes).
Transcript written on mydoc.log.
Status: SUCCESS

Running TeXcount... 

File: mydoc.tex
Encoding: ascii
Words in text: 2
Words in headers: 0
Words outside text (captions, etc.): 0
Number of headers: 0
Number of floats/tables/figures: 0
Number of math inlines: 0
Number of math displayed: 0

Status: SUCCESS

[paulo@cambridge ~] $ 

好吧,它成功了,但是有没有办法可以很好地显示输出,而不是这种笨拙的解决方案?现在,可悲的是:对于 3.0 版本,我们可能需要一些技巧才能使事情正常进行。您可以在以下链接中阅读我的回答,以了解为什么我不能利用规则来做更复杂的事情:Arara 规则使用通配符删除文件

长话短说:版本 3.0 会预先评估规则。版本 4.0arara现在依赖于 REPL 工作流,但由于我仍在编写手册且该工具尚未正式发布,因此谈论它会不公平。

当新版本发布时,我会相应地更新此答案。

一个潜在的改进是编写一个包装器脚本(在我的示例中名为gtexcount.sh),其中包含以下内容(我也可以建议使用 bash 函数,如是否可以编写使用 bash 脚本的 arara 规则?):

#!/bin/bash
zenity --info --title='TeXcount' --text="$(texcount \"$1\")"

(我在这里使用zenity,但也有其他可用选项)

通过快速规则更新,我们现在可以调用此脚本而不是原始脚本texcount,并且一个漂亮的窗口将显示文件统计信息:

!config
identifier: texcount
name: TeXcount
command: /home/paulo/gtexcount.sh @{file}
arguments: []

(当然,$ chmod +x gtexcount.sh为了给它正确的执行权限我也这么做了)

让我们尝试一下新规则:

嘎嘎

点击OK按钮后,一切恢复正常:

[paulo@cambridge ~] $ arara mydoc.tex 
  __ _ _ __ __ _ _ __ __ _ 
 / _` | '__/ _` | '__/ _` |
| (_| | | | (_| | | | (_| |
 \__,_|_|  \__,_|_|  \__,_|

Running PDFLaTeX... SUCCESS
Running TeXcount... SUCCESS
[paulo@cambridge ~] $

虽然不是最好的解决方案,但我相信在 4.0 版本尚未推出时,它是完全可以接受的。希望它能有所帮助!:)

相关内容