![将多语言词典与 aspell 结合使用](https://linux22.com/image/104507/%E5%B0%86%E5%A4%9A%E8%AF%AD%E8%A8%80%E8%AF%8D%E5%85%B8%E4%B8%8E%20aspell%20%E7%BB%93%E5%90%88%E4%BD%BF%E7%94%A8.png)
我有一个包含两种语言的大型 .tex 文件,我想在不发疯的情况下对其进行拼写检查。因此,仅对一种语言进行拼写检查并针对另一种语言的单词按“忽略”是不可行的。
所以我阅读了 aspell 并发现你可以定义自己的.multi
文件来组合字典。但显然你不能对不同语言的字典执行此操作,它会抛出错误(或者,如果你使用 GUI 工作,字典将显示为空)。
另外,我发现了一份错误报告,将此功能列入愿望清单,但似乎还没有人实现它。
所以,我的问题是:是否有任何明智的方法可以同时使用两种不同语言的两个词典?
这个问题让我很头疼,而且互联网上几乎没有关于如何做到这一点的文档。因此,我将把我找到的解决方法作为答案,以节省其他人(包括未来的我)的麻烦。但如果您有更好的解决方案,请发布。
答案1
所以,这是我的方法:
第 1 步:在您的系统上找到您的拼写词典。我在 中找到了它们/usr/lib/aspell/
。您将看到.multi
和.rws
文件。以下所有命令都将在该目录中执行。
第 2 步:从您想要的词典生成单词列表。如果词典中存储了单词的词缀,则需要扩展它们。
aspell --lang=en --master=en.multi dump master > /home/user/meinwoerterbuch.txt
aspell -d de dump master | aspell -l de expand | perl -e 'while(<>){ print join("\n", split), "\n";}' >> /home/user/meinwoerterbuch.txt
这里必须扩展德语词典,因为我想要每行一个单词,所以我使用 perl 每行获取几个单词并将每个单词打印在额外的一行上。只需查看 aspell (我推荐)的输出head
即可确定是否需要扩展字典。
步骤 3:为您的词典选择一个语言名称。我选择匈牙利语,因为我很确定我永远不会真正使用匈牙利语词典进行拼写检查,这样就很容易找到。我认为它必须是具有有效 ISO 语言代码的东西。对于匈牙利语来说,那就是hu
。
第四步:创建hu.dat
文件hu_phonet.dat
。似乎最有效的精简版本是:
hu.dat
:
name hu
charset iso8859-1
soundslike hu
hu_phonet.dat
:
version 0.1-2002.12.15-3
第 5 步:创建合并字典
sudo aspell --lang=hu --encoding=utf-8 create master ./hu.rws < /home/user/meinwoerterbuch.txt
我必须把encoding=utf-8,因为txt文件是utf-8编码的。没有它它会抛出错误。
第 6 步:创建一个适当的hu.multi
文件,如下所示:
add hu.rws
第 7 步:在拼写检查器中选择匈牙利语并开始拼写检查。