LaTeX vs DocBook

时间:2009-04-28 04:22:35

标签: latex docbook

我对LaTeX,基本格式,基本数学公式等知之甚少。我发现LaTeX很难配置自己的味道。最近,我听说过Docbook,它也是一种排版机制,但由于它使用XML,因此更容易。所以,如果我使用LaTeX / Docbook的主要工作是编写一个带有一些数学的简单文档(而不是一本类书),我想要简单的配置,以及一个高度可构建的应用程序,哪个更好,并且有关于Docbook的任何好书?

12 个答案:

答案 0 :(得分:36)

DocBook不是“排版机制”。 DocBook就是将表示与内容分离。 DocBook仅处理内容;它用于创建书籍,文章等的抽象表示。根据预定义的模板,有numerous tools布局DocBook。 Some of these tools use LaTeX。 AFAIK,O'Reilly使用稍微修改过的DocBook语言来编写他们的内容,然后他们将这些XML提供给与Adobe FrameMaker集成的自定义脚本来布局他们的书籍。

LaTeX本质上是尝试将演示文稿与TeX中的内容分开,但它并没有完全实现IMO的目标。在大多数情况下,演示文稿仍与内容混合在一起。我认为LaTeX是目前用于布局分页文档的最佳开源工具。但是,像InDesign这样的专有工具有很多功能(比如良好的 OpenType支持),TeX没有(XeTeX 添加了OpenType支持)。无论哪种方式,如果你正在写一本书,我强烈建议使用DocBook来编写你的内容而不是LaTeX。

那就是说,这听起来像是在写一些简短的,一次性的文档并且有点数学。我认为LaTeX可能是你最好的选择。如果你需要很多的可定制性,你可能需要使用Plain TeX而不是LaTeX,但这需要你做很多工作。

答案 1 :(得分:34)

好吧,我没有使用DocBook,但是快速浏览维基百科和谷歌:

  1. DocBook does not have elements to describe mathematics.
  2. 正如你所说,DocBook就是XML。对我而言,这使得手写(或者更确切地说,使用基本文本编辑器)变得非常糟糕。也许你喜欢编写XML,或者拥有一个好的IDE。我想你可以看一下this question
  3. DocBook的Wikipedia page列出了几本你可能想看的书,但我显然不能说它们是否是“好书”。

    我建议去LaTeX。让某人给你一个基本的模板,然后编写LaTeX就像:

    \section{Introduction}
    
    This is my introduction.
    
    \section{Stuff}
    
    Here is some stuff.
    
    \subsection{Particular stuff}
    
    A particular type of stuff.  With maths:
    
    $\int_{x=1}^n 3x^2$
    
    % etc.
    

    Google是您的朋友,可以找到您可以从中开始的基本模板:

    要从源代码转到文档,您需要安装LaTeX(这超出了本答案的范围,但如果您使用的是Linux,则非常容易)。理想情况下,您的LaTeX安装将包含pdflatex。然后你就跑了:

    pdflatex source.tex
    

    (如果您有参考书目,还有一些工作要做 - 但这是另一个问题的主题)

答案 2 :(得分:27)

DocBook的优点在于它是基于XML的 - 因此章节是完整的子树,部分是完整的子树,等等。在LaTeX中,分离仅由线性扫描期间文档的结构决定。

关于Docbook的最糟糕的事情是它是基于XML的 - 较低级别的东西非常脏并且手动编码很烦人。

答案 3 :(得分:15)

虽然我已经相当广泛地使用了LaTeX,但我并不熟悉DocBook。 LaTeX的想法是来生成一个自定义文档,它是为了生成一个可读的,有吸引力的文档。它是围绕TeX的一组库,模板,宏等,由知道他们在文档设计方面做了什么的人建立。当然,你有他们无法预料的特殊需求,所以你也需要做一些调整。它是一种非常高级的声明性语言,旨在反映文档的内容和结构,而不是它应该是什么样子,这个想法是你的想法和它们的组织方式是你应该关注的,不是页面上文字的布局。如果你需要更多的控制,那么存在一个巨大的额外样式和宏等库(CTAN),其中一些(回忆录浮现在脑海中)会给你很多控制权。

如果你正在将很多复杂的格式化内容推入LaTeX文档的正文,那么你做错了。您需要做的是将您的内容放在那里,并将文档结构化为章节,章节和子部分,然后重新进入并担心格式化。此时你不应该进入文档的主体;它应该都是适用于整个文档的一般内容,最好是以可重用的方式。这确保了一致性。

答案 4 :(得分:9)

是的,LaTeX很难配置以生成您想要的那种布局。我建议您查看the LaTeX class memoir手册,了解它可以让您制作哪种布局。

DocBook available online上有一本书。看一下,看看你可以制作什么样的布局,以及是否可以使用DocBook轻松格式化你想要的数学内容。

我建议如果你必须写任何非平凡的数学,那么就选择LaTeX,当然这取决于你发现哪种格式更容易使用。

答案 5 :(得分:8)

大约两年前,我试图喜欢和使用DocBook;然而,我回到了LaTeX,因为至少在当时,LaTeX产生了更好的质量输出(PDF)。我从未设法将DocBook转换为LaTeX到PDF翻译工作。我的问题可能是“操作员错误”,但我建议在选择一个简单文档之前尝试使用DocBook(和LaTeX)。

以下几点让我选择了LaTeX:

  • BibTeX用于参考书目JabREF作为GUI
  • 优质PDF输出
  • 互联网上有很多例子,包括几个类似我喜欢的格式
  • 好书,如"A Guide to LaTeX"

如果您喜欢GUI,请查看LyX

答案 6 :(得分:7)

我不想走“更容易”或更好的路线,因为我认为这是一种品味和习惯。我认为docbook是XML的优势,因为它可以通过使用XSLT变成几乎任何你喜欢的东西。结合其自包含性,感觉更像是构建Latex所做的内容。特别是记录开源软件Docbook的确被广泛使用。您可以轻松获取例如模板和样式表。 Hibernate和/或Spring并根据您的需要调整它们。

我想指出的另一个方面是构建系统中的集成。对于Maven,有一个名为docbkx的插件,可以根据内容和适当的XSLT吐出PDF,HTML和任何你喜欢的内容。无需进一步安装。我已经看到用Latex完成这项工作的唯一方法是在构建操作系统中安装一些软件包并围绕它构建自己的脚本。恕我直言,这不是一个可行的方法,特别是如果你建立跨平台。

关于编辑,我可以建议XMLmind XMLEditor带来很多痛苦,并为docbook提供了一个很好的WYSIWYG方法。

如果你依赖数学表达式,我也宁愿选择Latex,因为docbook中没有任何相同的功能。

答案 7 :(得分:6)

使用DocBook中心的真正原因是让您的文档有意义地进行标记,能够对其进行验证,并将其转换为多种用途,而不仅仅是发布。 LaTeX和其他宏集添加了一层语义标记,但您可以随时自由地引入TeX代码,并从其他源添加宏。从根本上说,TeX文档是一种只能由TeX处理器解析的计算机程序。

对于数学和DocBook:DocBook是XML,它允许您适当地使用其他XML技术;在这种情况下MathML。已经提到的XMLmind XMLEditor提供了一个GUI数学编辑器,并包含样式表,用于格式化Web和打印以及DocBook内容。

还有一些工具可以将XML文档翻译成其他语言(xml2po很简单,http://heartsome.net/EN/home.html是一个整套)。

答案 8 :(得分:3)

无论谁创建专业的科学文件(研究论文,书籍,技术指南等),都会知道为什么TeX是更好的选择。

对于那些不了解某些事实的人来说,这是一个很好的例子:在好的大学里,如果他没有正确地引用其他人的作品,学生的工作可能会被完全拒绝。我相信,有数百种“官方”引用和引用的方式,哈佛学校有自己的,ACM自己,计算机科学家之间的数字(温哥华)表示法是最常见的。许多专业组织都有自己的风格,并坚持下去。据我所知,TeX是唯一知道这一点的排版系统,在BiBTeX的帮助下,它成为作者的极其强大的工具。它可以节省数小时甚至数天的工作量。

如果我是一位小说作家,或某些非技术文档的作者,我可能会选择DocBook。

答案 9 :(得分:2)

你看过ConTeXt吗?与LaTeX相比,它更灵活,更容易配置。

答案 10 :(得分:2)

FWIW我通过xmlmind(http://xmlmind.com/)使用docbook来生成html和.chm文件。我也设置了fop来制作pdf,但它们并不漂亮。

完成docbook源代码后,我使用xsltprocdocbook.xsl文件进行烹饪。这是旷日持久和痛苦的设置,但一旦它工作它很甜。

另一种方法是使用pandoc(扩展的markdown类型工具)从markdown到DocBook。这会切断xml编辑器,但你仍然需要对输出格式进行转换。

答案 11 :(得分:0)

Arbortext支持原生LaTeX。您可以发送发布引擎或打印作曲家LaTeX,它将通过它。它还支持许多其他组合语言。