如何在TexLive的patgen中正确使用translate_file?

如何在TexLive的patgen中正确使用translate_file?

这个问题如下前一个关于使用patgen

我安装了 TeX Live 2011(感谢 Martin)和 find patgen(版本 2.4)命令。根据手册,命令是:

 patgen dictionary_file pattern_file patout_file translate_file

我以同样的方式进行操作:

  patgen dic.dic pattern.pat out.out translate.tra

但它提示

  patgen.exe: translate.tra: No such file or directory

为什么?我将 4 个文件 ( dic.dic pattern.pat out.out translate.tra) 放在与 相同的目录中patgen.exe。这样对吗?

我的translate.tra是一个空文件(手册上说“如果翻译文件为空,则假定值为left_hyphen_min=2、,right_hyphen_min=3以及 26 个小写字母 a...z 及其大写表示 A...Z)。你能向我解释一下吗?

顺便问一下,如果我想要left_hyphen_min=1right_hyphen_min=126 个英文字母,我应该如何编写完整的翻译文件?

编辑:

上面说的手册日期是2009年的,我把TexLive 2011卸载了,重新安装了TexLive 2009,这次的patgen.exe版本是2.3(Web2C 2009),错误提示和TexLive 2011一模一样

patgen.exe: translate.tra: No such file or directory

我该如何修正?如果将translate.tra放在其他地方,我应该把它放在哪里?

TexLive 2008 能适用于它吗?

答案1

我不是 patgen 专家,但我认为我可以给你一些提示(我使用的是 TeX Live 2012 中的 patgen 2.4):

首先,你不应该有patout_file/out.out文件。这是 patgen 应该产生的输出——所以它不是必需的,但如果它已经存在,patgen运行速度会更快。

其次,可以将所有这些文件放在同一个目录中。否则,您必须在命令行上指定它们的路径,这可能会变得很丑陋。

第三,patgen似乎需要一个.tra文件,尽管文档上说了什么——但一个简单的空文件($ touch translate.tra)在我的 Linux 计算机上就可以工作。也许你的文件中有一些误导性的空格?

当然,给 patgen 一个“真正的”文件格式当然更好。patgen.tra的 man 页面解释了文件格式($ man patgen),但有点复杂:

翻译文件以一行开始left_hypen_min,其中包含第 1-2 列、right_hyphen_min第 3-4 列的值,[…] 接下来的每一行都定义一个“字母”[…]

实际上,.tra你想要的文件应该是这样的:

 1 1
 a A
 b B
 […]
 z Z

第一行定义了最小的左/右连字符,其余行是将小写字母和大写字母粘合在一起的简单规则/集合(第一行是用于连字符的规范)。因此,对于英语,您可能还需要指定一些其他罕见的字符,æ Æ例如œ Œ宇宙百科全书“ 或者历史的比如s S ſ。下面是一个真实的例子德语带有更多像变音符号这样的重音字符。

但回到.tra'文件格式:请注意前导空格! 行的第一个字符始终定义将行分隔成几部分的字符,因此您不能省略它!例如,对于希腊语,您可能想要编写更复杂的行,例如,#p#P#\varpi ##这意味着出于连字符的目的,pP\varpi等效的(这里是#分隔符,因为我们实际上想要在 之后有一个空格varpi,而末尾的双空格#是详细版本,以澄清此行/等效现已完成)。

但我们还没有准备好——说实话,patgen 的用户界面……很谦虚,很礼貌。让手册页再说一遍:

读取translate_file […]后,patgen请求用户终端的输入。

事实上,许多输入...虽然您可以在终端上手动输入(并且您应该第一次就这样做以习惯所有请求的整数!),但第二次/第三次/...时间这真的很烦人。

因此,我强烈建议您使用脚本来实现此目的:trennmuster 项目(旨在为德语创建更好的连字模式)在其 git 存储库中有这样一个脚本:制作完整模式.sh

最后,patgen 手册可在线获取。我希望这对你有一点帮助!

相关内容