我想了解 LaTeX 是否适合我的用例。我不了解 LaTeX,很难确定这些事情是否都可行,或者这更多的是一个编译器问题?
- 我正在尝试为一个软件产品创建一个文档,该产品会根据我们销售给的客户进行重新命名。
- 需要基于文本的文档,以便多个开发人员可以更新它,并且可以将其合并在一起而不会在版本控制中出现问题。
- 文档需要支持主题——不同的颜色和样式(外观和感觉)
- 该文档需要能够使用转换时可替换的变量。例如{客户名称}->编译为 PDF->沃尔玛
- 文档应该支持条件,或者以某种方式支持可以在编译时附加的“客户风格”。例如:
compile latex --customer:walmart.style
- 需要输出 PDF,也可以选择输出 HTML。
在互联网上搜索时,我不断回到 LaTeX,但我很难区分文档语言提供的内容与编译器提供的内容。
那么,这可以用 LaTeX 来实现吗?如果可以,我需要一个特定的编译器吗?如果不需要,有没有可以提供类似功能的产品推荐?
编辑1
哇,这是一个非常活跃和乐于助人的社区,感谢大家的回复!
以下是今天使用的但不能满足需求的一个例子:
开发人员/人类使用 markdown 编写文档
<snip> that help your institution function more effectively. ![](md_images/media/image2.png){ width=90% } # Hardware Requirements 1. Single Tier system (windows + CIE + SQL) - recommended for low-medium volume sites: **BASE** (supports up to 4 Channels high volume): <snip>
然后通过 Pandoc 和 MiKTeX 以及
.css
样式来生成.doc
、HTML 和 PDF。但是,它不能很好地处理变量或条件,并且外观和感觉需要全部在 CSS 中完成,这会增加很多开销,尤其是尝试跨越输出文件类型时。这将产生如下输出:
希望有某种与此类似的系统(现在还不起作用,只是经过了 Photoshop 处理):
# Hardware Requirements for {customer}
会输出类似这样的内容:
编辑2:
尝试解决保留问题:
- LaTeX 支持品牌化吗?例如,外观和感觉、可替换变量和条件文本。
- LaTeX 可以输出为 PDF、HTML 并
.docx
使用单个基础文档 + 品牌样式表吗?
答案1
这个问题有点模糊和开放式,但您可以使用的一种方法是为每个客户设置单独的“样式”文件,然后让主文件在您编译文档时动态加载适当的样式。
更明确地说,假设你的主文档文件是有点人造的main.tex
\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{enumitem}
\setlist[description]{
font=\sffamily\bfseries\color{DodgerBlue},
labelwidth=\textwidth
}
\newif\ifPaying
\expandafter\usepackage\expandafter{\customer}% load customer data
\begin{document}
\begin{description}
\item[Customer name] \customerName
\item[Address] \address
\ifPaying\item[Account] \accountNumber\fi
\end{description}
\end{document}
并且有两个客户文件customer1.sty
\newcommand\customerName{Alfred}
\newcommand\address{Mexico}
\Payingtrue
\newcommand\accountNumber{10309-190123-9}
和customer2.sty
\newcommand\customerName{Julie}
\newcommand\address{Spain}
\Payingfalse
customer1
然后,您可以使用以下技巧在编译文档时动态设置客户 :
pdflatex -jobname=main "\def\customer{customer1}\input{main}"
使用上述文件将生成一个 PDF 文件main.pdf
:
类似地,命令
pdflatex -jobname=main "\def\customer{customer2}\input{main}"
将产生“相同”文档的变体customer2
:
顺便说一句,你也可以使用类似
pdflatex -jobname=main-customer2 "\def\customer{customer2}\input{main}"
生成自定义的 PDF 文件名main-customer2.pdf
,或任何您喜欢的名称。
在上面的例子中,我使用了颜色和条件,\ifPaying
因为这些特征在问题中提到过,但这个例子有点牵强,我可能不会在实践中使用这样的代码(例如,\ifPaying
我可能会\iscsdef{accountNumber}
使用电子工具箱包)。请考虑添加最小工作示例回答你的问题以更好地说明你真正想要的。
转换为 HTML 可能会有问题。如果您的文档“不太复杂”,这应该很简单,但复杂的文档总是更难转换。无论哪种方式,我建议从 LaTeX 使用tex4ht。这是高度可配置的,几乎肯定可以做你想做的事,但高度可配置的另一面是你需要学习如何配置它。使用类似 sphinx 的东西,如评论中所建议的那样,或者编写代码来动态生成 latex 或 html 输出可能是更好的方法。如果没有更具体的细节说明你需要什么、你的客户数据是什么样子以及如何存储和访问它,就不可能推荐任何特定的方法。