这个问题如下前一个关于使用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=1
和right_hyphen_min=1
26 个英文字母,我应该如何编写完整的翻译文件?
编辑:
上面说的手册日期是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 ##
这意味着出于连字符的目的,p
和P
是\varpi
等效的(这里是#
分隔符,因为我们实际上想要在 之后有一个空格varpi
,而末尾的双空格#
是详细版本,以澄清此行/等效现已完成)。
但我们还没有准备好——说实话,patgen 的用户界面……很谦虚,很礼貌。让手册页再说一遍:
读取translate_file […]后,patgen请求用户终端的输入。
事实上,许多输入...虽然您可以在终端上手动输入(并且您应该第一次就这样做以习惯所有请求的整数!),但第二次/第三次/...时间这真的很烦人。
因此,我强烈建议您使用脚本来实现此目的:trennmuster 项目(旨在为德语创建更好的连字模式)在其 git 存储库中有这样一个脚本:制作完整模式.sh
最后,patgen 手册可在线获取。我希望这对你有一点帮助!