我目前正在编写一份包含许多不同 .tex 文件的大型报告。我发现了一些能够处理单个文件的实用程序( aspell
、 ...)。ispell
是否有某个命令可以对我的项目中的所有文件进行拼写检查?
答案1
正如你提到的,一个好的起点是aspell
。话虽如此,我写了一个一行脚本来查找所有tex
文件,detex
然后将它们输入到aspell
:
find . -name \*.tex | awk '{print "echo "$0" && detex "$0" | aspell -a list"}' | bash | grep -Ev '(^$|^\*)' > misspelled.log
或多行:
find . -name \*.tex | \
awk '{print "echo "$0" && detex "$0" | aspell -a list"}' | \
bash | \
grep -Ev '(^$|^\*)' > \
misspelled.log
第一行查找所有 tex 文件并将其通过管道传输到命令awk
。Awk 通过管道传输的bash
操作如下:
- 打印文件地址(为了更容易跟踪拼写错误的单词)
detex
文件- 将已检测的文件通过管道传输到 aspell。
然后将 aspell 的输出发送到 grep,以过滤空行和无用的 aspell 输出。如果您查看输出aspell -a
,会发现有一些空行以及仅包含星号的行。正则表达式(^$|^\*)
会检测这些行并打印不包含此模式的行。
已知问题:
如您所知,detex
它并不完美,这会直接影响此脚本的输出。但是,您可以通过传递--personal
参数将单词白名单添加到 aspell 中,以过滤掉一些不完美之处。
您还可以添加第二个grep
过滤器以从最终输出中删除建议。
示例输出:
./abstract.tex
@(#) International Ispell Version 3.1.20 (but really Aspell 0.60.7-20110707)
& gratitudes 2 11: gratitude's, gratitude
& confgiruation 4 4: configuration, configurations, configuration's, reconfiguration
& includegraphics 2 2: include graphics, include-graphics
如您所见,最后一行是失败的地方!另外,如果您想在输出文件中添加行号,您应该稍微修改脚本(按照这stackoverflow 问题)。