关于web2c、c代码转换

关于web2c、c代码转换

我想将一些 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.cmf0.c如果只构建 TeX 和 MetaFont,你可以传递类似的内容--disable-all-pkgs --enable-tex --enable-mf --without-mf-x-toolkit --without-xconfigure请参阅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

相关内容