在乳胶文档中插入文件中的值
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}}
请注意,在此示例中,keys
和 values
使用逗号分隔。我的 .dat 文件如下所示:
number_participants,21
total_score,32.55
然后在您的 LaTeX 文档正文中使用此命令引用变量:\var{variable_name}
更多信息请观看this video。
如果有乳胶文档,我如何从文件中读取一些键值对并将它们插入到文档中?
像这样:
乳胶代码:
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}}
请注意,在此示例中,keys
和 values
使用逗号分隔。我的 .dat 文件如下所示:
number_participants,21
total_score,32.55
然后在您的 LaTeX 文档正文中使用此命令引用变量:\var{variable_name}
更多信息请观看this video。