我想将一些 Tex-and-friends 代码转换为 C,以便我可以对其进行修改。据我了解,该过程如下:
(1)tangle 实用程序将 foo.web 转换为 foo.p(Pascal)文件,然后
(2)我使用 web2c 将 foo.p 转换为 foo.c
我设法使步骤 #1 工作,但我卡在步骤 #2 上。我在 .../texk/web2c/web2c(在 Live Tex 发行版中)中找到了“convert”函数及其组件。我希望我可以切换到该目录并键入“make”来编译/构建 web2c 实用程序。但此目录不包含典型的 Makefile。它有 Makefile.am 和 Makefile.in,但据我所知,它们似乎不进行任何编译(尽管我对 make 文件知之甚少)。
因此,问题是:
(1)我可以在哪儿获得预构建的 web2c 转换工具(适用于 Windows),或者
(2) 有人可以给我提供详细的说明,让我可以自己构建它吗?
编辑:甚至更好...
(3) 哪里可以找到 TeX 和 Metafont 的 C 代码?此代码是作为 TeX 构建过程的一部分生成的,但显然它在编译后必须被丢弃,因为我似乎在任何地方都找不到它。
编辑:关于方法 3,我研究了 Y&Y TeX、LuaTex 和 CXTeX。它们有 C 代码,但据我所知,它们都不包含 Metafont,而 Metafont 是我最感兴趣的子系统。
输入“Build”的结果:
configure: WARNING: Sorry, neither Carbon framework nor fontconfig library: disabling xetex
configure: error: terminating.
=== configuring in web2c failed
在 config.log 中我发现:
configure:18449: checking for installed fontconfig headers and library
configure:18482: gcc -o conftest.exe -g -O2 conftest.c -lfontconfig >&5
conftest.c:48:35: fatal error: fontconfig/fontconfig.h: No such file or directory
compilation terminated.
configure:18482: $? = 1
configure: failed program was:
| /* confdefs.h */
但是,正如 Khaled 指出的那样,如果我做更多的研究,我本来可以避免构建这些组件。
避免上述错误 如果它能帮助我的任何新手和白痴同伴......
出现此错误是因为缺少字体配置。构建说明的“先决条件”部分会告诉您如何避免此问题。您必须使用
--disable-xetex
--disable-xdvipdfmx.
答案1
如果你使用内置的 Build 脚本构建了 TeX Live,转换后的文件应该位于 下Work/texk/web2c/
;在那里你会找到等tex0.c
。mf0.c
如果只构建 TeX 和 MetaFont,你可以传递类似的内容--disable-all-pkgs --enable-tex --enable-mf --without-mf-x-toolkit --without-x
(configure
请参阅README.config
常规构建选项文档)
总而言之,我认为破解生成的 C 文件不是一个好主意,它被剥离了所有文档和宏,这使得它很难阅读。
Taco Hoekwater 编写了“手动转换的 C 版 TeX”(实际上看起来像 PDFTeX)这里,但没有 MetaFont。MetaPost 已经转换为 C 一段时间了,LuaTeX 也是如此(两者也主要由 Taco 维护)。
答案2
我最近使用 Microsoft 的 Visual Studio 创建了 Web2c.exe 的 (Windows) 版本,并在我的博客上发布了一些描述该过程的说明。到目前为止,我已经从他们的 .web 和 .ch 文件构建了 tangle 和 weave:下一步是 TeX!这些说明并未涵盖每个步骤,但如果您想自己尝试一下,无论您使用的是 Windows 还是 Linux,它们都可能有所帮助。您可以在此处找到该帖子:http://www.readytext.co.uk/?p=2529