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

Insert values from a file in a latex document

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

像这样:

乳胶代码:

customer ID: ${customerID}

文本文件:

customerID=123456

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

如果您在文件中有一些数据(例如您的客户 ID)保存为 'data/foo.dat',那么您可以在 .tex 文件中使用该值,如下所示:

This is the customerID: \input{data/foo.dat}.

然后pdf会显示

This is the customerID: 123456.

命令 \input 只是插入您提供的文件中的任何内容。我不太确定如何让键值对工作,但也许你可以做到这一点,以便将你需要的值存储在文件中,文件名是 "key" 。如果将这些文件放在某个子文件夹中,它不会弄乱您的工作目录,并且可能是存储数据的好地方。

我们总是可以编写一个 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{}= }
if(/\documentclass\{/       ) { $tex=1  }
if($tex)                       { s/$\{(\w+)\}/$v{} || "???"/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}

只需在序言中使用以下代码导入一个 .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