我承认这个问题可能有点超出本页的范围,但请耐心等待!
在工作中,我将建立一个框架来生成一些非常基本的报告,这些报告可以是每月或每季度的报告。数据源是一个生成.csv
输出的在线报告系统。
当然,这可以通过制作一个简单的 Excel 文件来手动完成,其中输入数字,输出结果,然后将结果复制粘贴到 Word 文档模板中。坦率地说,感觉这个过程可以而且应该完全自动化。因此,我想利用这个机会学习如何构建一个更全面的工具,它当然应该生成一个 latex 格式的 PDF。然而,我发现自己不了解如何解决这个问题。这个网站上有几个关于自动生成 LaTeX 文档的问题,但我发现它们没有回答我关于完全自动化过程的问题。
我的需求如下:
- 一个简单的界面来设置每月或每季度的数据操作
- 在程序中包含 latex 分布或调用在线生成器(我不能保证该程序的未来用户会知道 LaTeX)
- 使用数据源数字进行一些简单的计算
- 将这些数字插入
.tex
文件中,编译并将 PDF 提供给用户。
工作流程示例:
用户将在一个简单的 GUI 中选择生成 2016 年 1 月的报告。按“生成报告”按钮,程序将从文件中导入 16 年 1 月的数字.csv
,进行一些非常基本的计算,并将结果推送到预制的 LaTeX 模板中,编译并输出 PDF。
我对此有一些非常具体的问题:
- 有没有一种编程语言/工具可以作为我的基础?例如模板语言,例如猎豹或者我需要一些完全不同的东西,比如 Excel?
- 是否可以在这样的程序中包含一个基本的 latex 引擎以及一些精心挑选的软件包,称为在线编译器或类似程序?重要的是,tex 发行版不需要安装在运行该程序的计算机上。我假设该程序将位于服务器上的文件夹中。
答案1
霍伦,
我过去也做过类似的事情。例如,我曾经组织过一次科学会议。有一个网站,与会者可以通过填写给定的 HTML 表单进行注册。插入的数据存储在数据库中(第一次尝试时是一个简单的文本文件,后来是 SQL 数据库)。
带有注册表单的 HTML 页面进行了一些检查,以确保提供的数据是合理的。之后,将数据存储在数据库中,并使用从 HTML 表单插入的数据通过 LaTeX 排版注册信,并将最终的 PostScript 文件自动发送到附近的打印机。
后来,在注册完成后,我使用数据库的内容创建了与会者列表(按字母顺序或邮政编码排序)。为此,我创建了一些 LaTeX 宏,这有助于我将所有内容置于整洁、有代表性的布局中。最大的优势是,您用来从数据库中提取数据的脚本不需要知道有关最终布局的任何信息......
我还使用相同的数据库条目为与会者创建名牌。还有另一个 LaTeX 宏,它能够检测出是普通与会者、发言人还是当地组织成员(或者甚至是三者) :-)。
所有这些脚本都是用 PHP 编写的;它们负责显示 HTML 页面、与 SQL 数据库通信、生成临时 LaTeX 文档以及调用 LaTeX 生成 PS 文件。
今天,我使用我们学生学习平台(如果您感兴趣:stud.IP)的导出功能来生成课程的参加者名单。系统会将此名单导出为 CSV 列表。我编写了一个 bash 脚本,该脚本读取 csv 列表,使用 SED 和 AWK 删除前 3 行,过滤我感兴趣的信息,并将结果输出为完整的 LaTeX 文件,以供 pdfLaTeX 编译。这次,我甚至考虑编写自己的类。最后,我又编写了一个样式文件,它有三个包选项。通过这些选项,我能够操纵一个相同 LaTeX 命令的布局,以生成三个完全不同的输出。参加者名单、放在学生面前的大名牌,最后但并非最不重要的是,成功完成课程后颁发的证书。
我想澄清的是,您尝试使用 LaTeX 来自动生成 PDF 文件是绝对正确的。对我来说,这绝对有意义。
这只取决于你的工作环境、你手头的工具和你能掌握的工具。不幸的是,你没有给出关于这三件事的任何具体提示。因此我的答案是
- 是的。确实,你可以使用的语言肯定不止一种。这只取决于:你使用哪个平台,哪种语言可用(bash、SED、AWK、Perl、PHP、Lisp、C、C++、C# 等)以及你熟练和训练过哪种语言。
- 我不会将 LaTeX 融入你的语言中。相反,我认为,你应该让你的脚本、程序、编程语言进行系统调用来完成 LaTeX 的脏活。例如:如果你在普通的 shell 中编程(例如 Linux 和 MacOS 计算机上的 Bash、sh、csh 等,在较新的 Windows 系统上可能是 Powershell 甚至 Bash),你只需说一句话
pdflatex jan2016-report.tex
,它就会为你生成相应的 PDF 输出。
您应该做什么:您应该仔细检查可以从数据库中提取哪种数据。尝试以这种方式构建提取例程,以便数据库的所有输出(您提到的 CSV 文件)都以完全相同的方式格式化,无论您是构建月度报告还是季度报告。然后您应该尝试将相关数据分成小部分,这些部分可以通过 LaTeX-Macros(最多可容纳 9 个参数)轻松处理。尝试编写一些您自己的宏,提供一些有用的 LaTeX 命令和环境。您唯一要做的就是编写报告脚本,将这些 LaTeX 宏和环境添加到数据库查询给您的结果中。
玩得开心
简