使用 Scriban 进行模板制作

使用 Scriban 进行模板制作

我想使用 JSON 对象中的动态数据创建 PDF。我对 LaTeX 略知一二,对模板引擎知之甚少,我正在努力实现引擎并调整 .tex 文件以适应它。

我已经阅读了抄写员所以我熟悉语法,但实际上任何基于 C# 的模板引擎都可以使用。我谷歌搜索了类似的东西LaTeX 与 Scriban乃至在 LaTeX 中使用模板引擎

我已经调查过使用模板引擎生成 LaTeX 代码但他似乎没有深入讨论模板引擎的实际用途。有没有关于模板引擎的参考资料?在 tex 文件中实际使用它们?

  1. 如何使用 .tex 文件中的变量
  2. 我如何告诉我的 .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 代码。缩进也会按原样呈现,因此模板会一直添加到左侧。

相关内容