在乳胶文档中插入文件中的值

时间:2015-03-16 13:31:20

标签: pdf pdf-generation latex pdflatex

如果有一个乳胶文档,我如何从文件中读取一些键值对并将它们插入到文档中?

这样的事情:

乳胶代码:

customer ID: ${customerID}

文字档案:

customerID=123456

生成的.pdf文件应包含客户ID。

3 个答案:

答案 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}}

请注意,在此示例中,keysvalues 使用逗号分隔。我的 .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”作为文件名。如果您将这些文件放在某个子文件夹中,它不会使您的工作目录混乱,并且可能与存储您的数据一样好。