我看到很多问题表明可以使用 LaTeX 导入和格式化 csv 文件或数据库表(基于模板和现有的数据结构知识)。
我的问题是:LaTeX 是否是一种实用的(甚至是可能的)工具,可以从数据库导入数据并将其输出为报告?当我说报告时,我想象的是类似于基于各个字段和子报告构建 Microsoft Access 数据库报告的方式(以在表格的行之间生成分隔和迭代),而不是完整的、严格生成的表格?
如果有人知道任何可能有用的软件包,我会仔细研究我能找到的任何 MWE 或软件包文档并更新我的问题。
初步研究我欢迎对以下方面提出评论或反馈:
- http://ctan.org/topic/db-access(但我没有找到相关文档)
SWEAVE
- 解析数据库并自行编码为 tex 文件的脚本建议
我看到此应用程序允许我准备模板,以便创建:
- 会议议程 - 参见下面的示例图
- 数据和图形报告
- 具有审美的专业简历
- 纯文本无格式的简历版本(方便如今常见的在线提交)
使用嵌套 MS Access 报表和子报表制作的会议程序示例:
- 页眉和页脚格式
- 按时间顺序排列的事件
- 事件分类的常见格式
答案1
我一直在学习如何编写脚本来从数据源生成 Latex 报告和表格。不是直接使用 Latex 来执行此操作,而是使用您最喜欢的语言编写的脚本(必须支持多行原始字符串)在从外部源(文件、XML 等)读取数据时动态生成 Latex 代码。
该脚本格式化字段,构建 Latex 表,并执行其间所需的任何计算,将这些字段插入 Latex 流并将最终的 Latex 代码写入外部文件。
然后将 latex 文件编译为 pdf 和 HTML。下面是我用这种方法制作的一份报告的小图(这恰好与计算机代数有关,其中生成报告和表格的脚本的输入是带有逗号分隔字段的纯文本文件)。其中一些字段包含 Latex 中的方程式,这些方程式也是由计算机代数程序在解决积分问题后生成的。
有超过 70 个 PDF 文件以这种方式生成,其中一些文件长达几千页,全部来自同一程序。该程序循环输入、构建表格、进行统计并编写 Latex。
结果可见这里。这些页面都是用 Latex 制作的,使用 tex4ht 编译为 HTML,但 Latex 是由程序生成的。我发现这样做比使用 Latex 本身进行逻辑和处理更加灵活。
很少有语言能够很好地支持多行原始字符串(有时称为 HERE-DOCUMENT)。这些语言是:Python 和 C++11、Ruby 和 Perl。(Perl 6 将于今年推出!)
多行原始字符串的需求很重要,它允许人们在脚本中编写 Latex 代码,就像在 Latex 编辑器中一样自由。
唯一的区别是,使用这些语言进行逻辑和编程、数据库接口和任何数值计算比使用 Latex 本身要容易得多,而且可以动态地使用这种方法。
这是一个典型的 Python 脚本,它生成一个带有公式表的 Latex 文件:
import os
os.chdir("/home/me/data")
my_file = open("py_latex.tex", 'w')
num = 6
x=r"""
\documentclass{article}
\begin{document}
\begin{tabular}{|l|l|l|l|l|l|l|l|l|}\hline
"""
for i in range(1,num+1):
for j in range(1,num+1):
x=x+'$'+str(i)+' \\times '+str(j)+' = '+str(i*j)+'$'
if j<num :
x=x+'&'
else:
x=x+'\\\\ \n'
x=x+r"""\hline\end{tabular}
\end{document}"""
my_file.write(x)
my_file.close()
编译生成的 Latex 文件时,表格为
这关联有使用 Ruby、Perl、C++-11 和 Python 生成小型 Latex 文件的小示例。如果原始数据是 XML,则一旦加载(使用 XML API 库,这些语言都有一个),就可以应用与上述相同的方法。
另一个选择是使用 LuaLatex,并使用 Lua 代码来执行这些操作。但我发现 Lua 和 Latex 之间的接口有点难以管理。我发现使用脚本并直接动态生成所有 Latex 代码更简单。
无论如何,这也许能给你一些启发。这种方法可能并不适合所有人。它肯定需要时间来适应。