如果有一个乳胶文档,我如何从文件中读取一些键值对并将它们插入到文档中?
这样的事情:
乳胶代码:
customer ID: ${customerID}
文字档案:
customerID=123456
生成的.pdf
文件应包含客户ID。
答案 0 :(得分:3)
只需在序言中使用以下代码导入 .dat 文件:
% package to open file containing variables
\usepackage{datatool, filecontents}
\DTLsetseparator{,}% Set the separator between the columns.
% import data
\DTLloaddb[noheader, keys={thekey,thevalue}]{mydata}{../mydata.dat}
% Loads mydata.dat with column headers 'thekey' and 'thevalue'
\newcommand{\var}[1]{\DTLfetch{mydata}{thekey}{#1}{thevalue}}
请注意,在此示例中,keys
和 values
使用逗号分隔。我的 .dat 文件如下所示:
number_participants,21
total_score,32.55
然后在您的 LaTeX 文档正文中使用以下命令引用变量:\var{variable_name}
欲了解更多信息,请观看this video。
答案 1 :(得分:2)
我们总是可以写一个perl脚本来扩展它们......
defs.txt:
customerID=123456
customerTel=22530000000
doc.tex:
\documentclass{article}
\begin{document}
latex
customer ID: ${customerID}
and ${address}
costum telphone ID: ${customerTel}
\end{document}
perl脚本tex-defs:
#!/usr/bin/perl -n
BEGIN{$tex=0;}
if(not $tex and /^(\w+)=(.*)/) { $v{$1}=$2 }
if(/\\documentclass\{/ ) { $tex=1 }
if($tex) { s/\$\{(\w+)\}/$v{$1} || "???$1"/ge; print }
测试(在chmod之后......):
$ tex-defs defs.txt doc.tex
\documentclass{article}
\begin{document}
latex
customer ID: 123456
and ???address
costum telphone ID: 22530000000
\end{document}
答案 2 :(得分:1)
如果您在保存为'data / foo.dat'的文件中有一些数据(例如您的customerID),那么您可以在.tex文件中使用该值,如下所示:
This is the customerID: \input{data/foo.dat}.
然后pdf会显示
This is the customerID: 123456.
命令 \ input 只会插入您提供的文件中的内容。我不太确定如何使键值对工作,但也许你可以这样做,以便你需要的值存储在文件夹中,以“key”作为文件名。如果您将这些文件放在某个子文件夹中,它不会使您的工作目录混乱,并且可能与存储您的数据一样好。