XML到TeX或如何从类似XHTML的源获取漂亮的PDF

mb2*_*b21 8 xml xsl-fo docbook tex

从表面上看,一个简单的问题是:如何从我的XML文档中获得外观漂亮的PDF?实际上,我的输入是XHTML的一个子集,添加了一些自定义属性(以保存引用源的一些信息等).我一直在探索一些路线,并希望得到一些反馈,如果有人之前尝试了一些.

注意:我已经考虑过XSL-FO生成PDF但是听说开源工具的印刷质量仍然落后于TeX.猜猜最先进的是Apache FOP.但我真的对看起来很棒的PDF感兴趣(否则我可以使用浏览器的打印对话框).有什么想法,更新吗?

所以我一直在考虑使用XSLT将我的自定义XML/XHTML方言转换为DocBook并从那里开始(DocBook通过XSLT到正确的HTML似乎工作得很好,所以我也可以使用它).但是如何从DocBook转到TeX?我遇到了很多解决方案.

  • dblatex一组输出LaTeX的XSLT样式表.
  • db2latex作为dblatex的克隆开始,但现在提供与LaTex包的更紧密集成,并提供单个脚本来输出PDF,这是非常好的.
  • passiveTex它使用用TeX编写的XML解析器而不是XSLT.
  • TeXML本质上是LaTeX语言的XML序列化,可以用作中间格式和随附的python工具,从该XML格式转换为LaTeX/ConTeXt.他们声称这可以避免现有解决方案的特殊符号问题,丢失一些大括号或空格,并仅支持latin-1编码.(这仍然是这样吗?)

由于我的输入XML可能包含Unicode中表示的很多特殊字符,因此最后一点对我来说尤为重要.我一直在考虑使用XeTeX而不是pdfTeX来解决这个问题.(虽然我可能会放弃一些印刷质量,但可能仍然比现有的开源XSL-FO处理器更好?)所以db2latex和TeXML似乎是最受欢迎的.那么有人可以评论那些的稳健性吗?

或者,我可能会更直接地使用ConTeXt,因为似乎对XML中的ConTeXt社区非常感兴趣.特别是,我可能会更深入地研究"我的方式:从一个来源获取Web内容和pdf输出""在ConTeXt MkIV中处理XML".两篇文档都描述了使用ConTeXt结合LuaTeX的方法.(DocBook In ConTeXt似乎做的大致相同,但最新版本是2003年.)第二份文件说明:

您可能想知道为什么我们在TEX中进行这些操作而不是使用xslt.集成方法的优点是简化了使用.不仅要考虑处理文档,还要使用xml来管理同一次运行中的资源.xslt方法同样冗长(毕竟,您仍然需要生成TEX代码)并且可能性较差.对于MkIV,集成方法也更快,并且允许我们使用Lua在运行时操作内容.

你怎么看待这件事?请记住,我对XSLT和TeX都有一些经验,但从来没有深入到其中任何一个.从来没有尝试过许多不同的LaTeX软件包或替代品,如ConTeXt(或XeTeX/LuaTeX而不是pdfTeX),但我愿意学习一些新东西,最终得到我漂亮的PDF文件;)

此外,我偶然发现Pandoc,但无法找到任何有关它与其他提到的方法相比的信息.最后,链接到一些关于如何将TeXML与ConTeXt一起使用的相当广泛的文档.

mb2*_*b21 1

最后,我决定使用Pandoc,它似乎是非常完善和可靠的代码库。一个潜在的缺点是,您必须限制自己在 Pandoc 内部表示中可用的标记功能的数量,该内部表示基本上一对一地映射到其扩展 markdown

因为我认为从类似 XHTML 的源代码生成 markdown 不是一个好主意,所以我成功启动了一个读取 DocBook 的 pandoc 组件,该组件当前位于 Pandoc 开发存储库的 master 分支中。现在我有了一个简单的 XSLT 样式表,可以将 XHTML 方言转换为 DocBook(也是 XML),然后使用 Pandoc 导出到其他格式的提升机,包括通过 ConTeXt 的 PDF。