我正在运行 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\Paulo
Windows 或/Users/paulo
Mac 中),并将规则位置添加到其中:
!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 版本尚未推出时,它是完全可以接受的。希望它能有所帮助!:)