我去布拉格拜访了我的一位同事,捷克 TeXist Karel Horák,他向我提出了一个很棒的 TeX 问题。他希望从 TeX 文件中获取 PDF 文件。听起来很简单!
Kvant 的问题(量化分析师的数学问题书) 期刊已于一段时间前公开发布 (TeX,PDF,http://www.kvant.info/zkm_main.htm)。
他遇到的第一个问题是文件是用哪种编码编写的。他尝试了 TeXworks 中的所有编码,但都没有成功。我尝试了几种自动检测系统(第一个站点,第二个站点)。他们识别了 SJIS 和 UTF-8,这是错误的。我还没有测试过沙尔代Python 中的包(这是我的一种待办事项)。
我尝试过不同的策略。我希望测试iconv
程序中的所有编码。我创建了一个独立的 Lua 脚本来帮我做这件事。我们运行texlua mal-split.lua
:
-- I'm mal-split.lua...
-- I test all encodings from iconv -l...
os.execute("iconv -l >list.txt")
content=io.lines("list.txt")
for line in content do
for term in string.gmatch(line,"[^ ]+") do
print("Processing "..term)
command="iconv -f "..term.." -t UTF-8 zkm_main.tex >zkm_main-"..term..".tex"
os.execute(command)
end -- for term
end -- for line
然后我尝试在众多 TeX 文件中从 PDF 文件(复制+粘贴)中找出一些单词。就这样!使用的编码可能是以下之一:CP866
,CP1125
或CP1131
。
从该 TeX 文件获取 PDF 文件还存在一些其他问题:
- 我们缺少所有图片,请参阅
\epsfbox
命令。我们需要以某种方式从服务器下载它们(如果它们存在的话)或从 PDF 文件或附带的 HTML+PNG 文件中提取它们。我们猜测其中一些是在 Metapost 中创建的。我们可以通过\def\epsfbox#1{}
在文件开头进行定义来消除此问题。我既没有找到带有图片的必要文件,也没有找到字体文件。我用了wget -r -N http://www.kvant.info/
(2 GB)。我给网站管理员写了一封电子邮件,询问他们是否可以提供。
这是对我获取图形源代码的卑微请求的答复:
Hello, Pavel! I'm afraid the most of the data you requested is lost...
It has been a long time since *.tex files were produced. It's a chance
that you can find some pictures here
http://www.kvant.info/zkm_main.htm
Unfortunately it's not possible to contact the author of the files...
С уважением,
sergereal
加载的图片HTML网页(GIF、JPG、SWF)位于/zkm_in/
文件夹中,它们在这里:
http://striz7.fame.utb.cz/docasne/zkm_im.rar
- 该文件缺少前言,应该有一些,因为有未定义的命令,如
\LARGE
。我在该服务器上找不到其他 TeX 文件。 - 我们可能应该加载一些支持包,因为它们在命令名称中使用西里尔字母。或者我们需要将引擎更改为
latex
其他引擎... - PDF 文件中的字体列表为:jour10、scbbx10、scbex10、scbit10、scbmi10、scbr10、scbsy10 和 T1 到 T9。
因此,任务是重建序言,这是我最好的猜测。我正在尝试通过任何必要的方式编译 TeX 文件来重现 PDF 文件。
这些是一些转换的 TeX 文件来自 CP866,来自 CP1125和来自 CP1131转换为 UTF-8,以防您无法运行 iconv 工具。我附上了 PDF 文件第一页的预览。
答案1
我认为,第一步也是绝对必要的一步是找回原版字体。没有字体,你就无法重现原版的行和分页符或整体外观。
查看字体的名称,它们遵循“计算机现代”传统,因此它们可能最初用 METAFONT 或 METAPOST 编写,如果您无法从备份磁带中获取它们,可能仍然在某些服务器(ftp、listserv 存储库、gopher 等)上吸引人。
如果找不到它们,你可以从 pdf 文件中剥离出字形(字母形状)(而且,由于文件太旧,你可能会在一次尝试中得到完整的字体,而不是得到每个 pdf 文件不同的重叠子集)。但必要的 tfm 文件仍然缺失……
有了这些之后,下一步就是测量页面尺寸并为 LaTeX 制作试用文档类。这不仅仅是写一个序言,而且比重建丢失的字体更可行。