我正在尝试设计一种(可能简单的)方法来取代我们的文档系统。
目前,我们被束缚在两个不同且显然不可调和的系统中:
- 在内部我们使用基于纺织品的维基系统。
- 所有外部文档均为MSWord格式。
这两个系统都有(明显的)缺点:
- Textile 无法真正生成具有专业外观的文档(并且所有“转换器”实际上都很糟糕),因为它旨在生成 html 输出。
- MSWord 可以生成“漂亮”的 PDF,但它给作者留下了很大的自由度,最重要的,很难自动生成文档(我们使用大量的代码生成,这些代码也可用于生成表格等以包含在文档中)。
LaTeX 确实能够提供我们需要的那种 (PDF) 文档(首页、自定义页眉和页脚、页面水印等),而无需借助 MS 软件。
我对 LaTeX 有一定的(过时的)知识,我认为我可以设法设置一个合适的页面模板和一些专用的代码生成器来满足我们的需求。
问题是:目前建议使用什么页面布局包来实现此目的?
我使用“memoir”编写了我以前的文档(实际上是书)生成器;这仍然是一个有效的选择吗?我应该坚持使用带有辅助类的“简单”样式(例如 fancyhdr)吗?有这么多包,我有点迷茫,我很难理解什么是“当前”的,什么是“过时的”。
请注意我会不是想要发动一场圣战。
底线:我想使用一些简单的标记语言(纺织品是最好的选择,因为我们已经使用它)来生成一些代码,插入标准模板(可能是手工制作的),以便生成“MSWord 质量”文档(PDF)。
我已经做好充分准备来编写代码来解析标记并生成相当复杂的结构。
我想避免浪费时间探索死胡同。
更新:按照@marmot 的建议进行澄清:
我的目标是:
- 根据我们的规范准备自定义文档模板;这些包括:
- 具体字体选择
- 带有客户徽标的首页
- 带有多个徽标图像的标题
- 页脚包含标题、修订和页码“# of ##”
- 背景(水印)图像。
- 修订表
- 表中的内容
- “标准”表格样式的定义
- “标准”多级枚举/逐项列表的定义。
- “标准”章节、节……方面的定义(编号)。
- 能够使用由 Textile(或 markdown)片段(可能是从代码中提取或以编程方式生成)生成的“blob”填充模板。
- Textile 和类似的标记主要面向网页生成;这不是我的需求;我需要找到(或编写)一些合适的转换器。幸运的是,我需要一个非常标准化的输出。
- 有些图像应该由植物UML,但这应该不是问题,因为 PlantUML 正在开始支持 LaTeX。
答案1
这个答案将重点关注第一部分(LaTeX 部分)中的包的选择,并将在第二部分中提到一些其他选项。
问题是:目前建议使用什么页面布局包来实现此目的?
基本上,您可以在以下包“生态系统”之间进行选择:
- 有像
article
、book
等默认类report
,它们非常灵活,可以通过加载像这样的外部包来实现像您描述的布局fancyhdr
。 - 您可以选择 KOMA-Script(类如
scrartcl
、scrreprt
等scrbook
)。它允许使用层进行非常复杂的布局,以及通过诸如 之类的软件包提供的所有花哨的附加功能scrlayer-scrpage
。 - 当然,它
memoir
仍然是自定义样式的不错选择。请注意,它memoir
不像其他选择那样模块化,但您可以集中精力阅读一本手册。
话虽如此,我个人现在会选择 KOMA,但目前我还不想发动圣战,所以这真的取决于你。无论你选择什么,你都可以按照自己的意愿创建一个简单的模板。
除了软件包之外,引擎的选择也很重要。当然,你可以使用 pdflatex,但你会错过许多重要功能。随着 LuaTeX 的成熟,我建议使用它,因为你可以访问 OpenType 字体、软件包,markdown
最重要的是脚本语言 Lua,在这种情况下,它可以访问许多 TeX 组件。
因此,为了解决您的更新问题:上述软件包和引擎决策已经允许您使用特定字体、自定义标题页、自定义页眉和页脚(对于修订,您需要一个数据源,但这并不难,对于您想要的页码,您应该查看软件包lastpage
)。如果您选择 KOMA 生态系统,分层还允许您添加水印(否则您可能需要一个软件包)。
根据修订版本的定义方式(git?),您可以使用 LuaTeX 的 Lua 集成来解析当前版本控制工具的命令行输出(它们可能提供某种历史记录)。以类似目录的方式显示它并不难。
考虑到您对标准样式的要求,您可能希望将其enumitem
用于列表环境(itemize、enumerate、description 或某些自己的环境)。更改分段命令的默认样式也非常容易,KOMA 确实为此提供了自己的命令(我相信 memoir 也是如此),并且为标准类包提供了如下命令titlesec
相当灵活。
默认表格布局有点困难。该cellprops
包试图解决这个问题,但它很新,我还没有广泛测试过它,但当然,为具有统一样式的表格材料定义自己的环境并不难。
底线:我想使用一些简单的标记语言(纺织品是最好的选择,因为我们已经使用它)来生成一些代码,插入标准模板(可能是手工制作的),以便生成“MSWord 质量”文档(PDF)。
所以这是第二部分,我不会在这一部分中推荐任何 LaTeXy。你说你已经在使用 Textile。这很棒,因为它生成的 HTML 可以转换为 XML – 只需付出合理的努力。因此,只需一个额外的步骤,你就可以拥有一个良好的数据源。
我建议你不要使用 LaTeX,而是看看 ConTeXt。它的 MkIV 基于 LuaTeX,你可以享受现代字体、分层系统、开箱即用的 PDF 制作等所有优势(包括我在关于 LaTeX 的部分中提到的所有选项)。此外,如果要制作文档用于存档,你可以“轻松”制作 PDF/A。这应该很容易达到“MSWord 质量”。
但是为什么我还是推荐 ConTeXt 呢?它具有 XML 解析功能。因此,您可能不必像使用 LaTeX 那样编写那么多代码。您可以在网上找到这方面的例子,例如在以下文档中这。