我想使用 JSON 对象中的动态数据创建 PDF。我对 LaTeX 略知一二,对模板引擎知之甚少,我正在努力实现引擎并调整 .tex 文件以适应它。
我已经阅读了抄写员所以我熟悉语法,但实际上任何基于 C# 的模板引擎都可以使用。我谷歌搜索了类似的东西LaTeX 与 Scriban乃至在 LaTeX 中使用模板引擎。
我已经调查过使用模板引擎生成 LaTeX 代码但他似乎没有深入讨论模板引擎的实际用途。有没有关于模板引擎的参考资料?在 tex 文件中实际使用它们?
- 如何使用 .tex 文件中的变量
- 我如何告诉我的 .tex 文件期待这些变量?
答案1
使用 Scriban,您可以在 C# 代码中编写模板并在模板中使用变量。当您运行 C# 程序时,模板将被呈现。渲染的结果是 LaTeX 代码,您可以将其保存到 C# 文件中。当然,也可以将模板写入您从 C# 程序加载到变量中的文件中。
之后,您需要使用 LaTeX 编译器编译 LaTeX 文件,当然也可以编写脚本,可以从 C# 程序内部编写,也可以使用外部脚本(首先运行 C# 程序,然后运行 LaTeX)。
梅威瑟:
using System;
using System.Collections.Generic;
using Scriban;
namespace LatexTemplate
{
class Program
{
static void Main(string[] args)
{
var template = Template.Parse(@"
\documentclass{article}
\begin{document}
\begin{itemize}
{{ for product in products }}\item {{product}}
{{ end }}\end{itemize}
\end{document}
");
var prod = new List<string>() { "apples", "pears", "cherries" };
var result = template.Render(new { Products = prod });
System.IO.File.WriteAllText(@"C:\myfolder\myfile.tex", result);
}
}
}
结果文件myfile.tex
:
\documentclass{article}
\begin{document}
\begin{itemize}
\item apples
\item pears
\item cherries
\end{itemize}
\end{document}
使用 LaTeX 编译:
请注意,模板中的换行符将在 LaTeX 文件中呈现为换行符,用于编写 for 循环的换行符也是如此,因此在上面的示例中,循环的间隔有点奇怪,以便生成美观的 LaTeX 代码。缩进也会按原样呈现,因此模板会一直添加到左侧。