表面上看,这是一个简单的问题:如何从我的XML文档中获得外观漂亮的PDF?实际上,我的输入是带有一些自定义属性的XHTML子集(用于保存一些关于引用来源的信息等)。我一直在探索一些途径,如果有人之前尝试过其中的一些方法,我想听听他们的反馈。
注意:我考虑过使用XSL-FO生成PDF,但听说开源工具的排版质量仍远远落后于TeX。我猜最先进的工具可能是Apache FOP。但我真的很想要一个外观漂亮的PDF(否则我可以使用浏览器的打印对话框)。有什么想法或更新吗?
所以我一直在考虑使用XSLT将我的定制XML / XHTML方言转换为DocBook,然后从那里开始(通过XSLT使用DocBook将其转换为适当的HTML似乎也很好用,所以我可能也会用它来做)。但是我该如何从DocBook转换为TeX?我找到了许多解决方案。
- dblatex 一组XSLT样式表,用于输出LaTeX。
- db2latex 起初是dblatex的克隆,但现在提供更紧密的LaTeX包集成,并提供一个单独的脚本来输出PDF,非常不错。
- passiveTex 不使用XSLT,而是使用在TeX中编写的XML解析器。
- TeXML 实质上是LaTeX语言的XML序列化格式,可用作中间格式,附带一个将该XML格式转换为LaTeX/ConTeXt的Python工具。他们声称这避免了现有解决方案的特殊符号问题、丢失括号或空格以及仅支持Latin-1编码的问题。(这仍然是这种情况吗?)
由于我的输入XML可能包含许多用Unicode表示的特殊字符,所以最后一点对我来说尤其重要。我还考虑使用XeTeX代替pdfTeX来解决这个问题。(虽然我可能会失去一些排版质量,但也许仍然比当前的开源XSL-FO处理器更好?)因此,db2latex和TeXML似乎是最受欢迎的选择。那么,有人可以评论它们的稳定性吗?
或者,我直接使用ConTeXt可能会更加幸运,因为ConTeXt社区对XML非常感兴趣。特别是,我可能会深入研究“我的方式:从一个源获取Web内容和pdf输出”和“在ConTeXt MkIV中处理XML”的两个文档。这两个文档描述了一种结合LuaTeX使用ConTeXt的方法。(似乎DocBook In ConTeXt也是如此,但最新版本是2003年的。)第二个文档指出:
你可能会想为什么我们在TEX中进行这些操作而不使用xslt。集成方法的优点是简化了使用。不仅可以处理文档,还可以在同一运行中使用xml管理资源。xslt方法同样冗长(毕竟,您仍然需要生成TEX代码),并且可能更难以阅读。在MkIV的情况下,集成方法也更快,并且提供了使用Lua在运行时操纵内容的选项。你对此有何看法?请记住,我对XSLT和TeX都有一些经验,但从未深入研究过它们。从未尝试过许多不同的LaTeX包或替代方案,例如ConTeXt(或者使用XeTeX/LuaTeX而不是pdfTeX),但我愿意学习一些新东西,以获得最终的漂亮PDF文件;)
此外,我偶然发现了 Pandoc ,但找不到有关其与其他提到的方法的比较信息。最后,这里是一些非常详尽的文档链接,介绍如何使用 TeXML 和 ConTeXt。