用于标签的 envlab 和 datatool

用于标签的 envlab 和 datatool

我正在尝试使用datatoolenvlab在 biglabel 上打印发件人和收件人地址。目前我的代码很接近,但还不够。它会在一页上打印一个发件人和收件人的组合,并且边距严重不正确等。MW 代码是,

\documentclass[12pt]{letter}

% Generates the correct label sheet size
\usepackage[paperwidth=5in, paperheight=7in]{geometry}

\usepackage{datatool}
% loads the csv addr.csv, one row per dest
\DTLloaddb{mailing-list}{addr.csv}

\usepackage[nocapaddress,printbarcodes]{envlab}
%\SetBigLabel{W}{H}{t}{l}{r}{Nc}{Nr}
\SetBigLabel{5in}{7in}{0.25in}{0.25in}{0.25in}{1}{3}
\makelabels

\begin{document}
\startlabels

\DTLforeach{mailing-list}{%
  \name=Name,%
  \street=Street,%
  \suite=Suite,%
  \town=City,%
  \state=State,%
  \zip=Zip,%
  \country=Country%,
}{%
\mlabel{%
Joe Casanova\\1 Lambda Street\\Anyplace, NY 12345}{%
\name\\\street\\\town, \state, \zip}}
\end{document}

据我所知,envlabdatatool在此示例中是矛盾的,但我不明白如何让彼此了解对方。如果我创建三个\mlabel环境,它将从中打印相同的信息datatooldatatool通过尝试增加它的技巧可以工作,但这是一个肮脏的补丁,因为我需要\mlabel在代码中定义相同数量的环境,因为一张单独的工作表上有标签,这是很笨拙的。

有人能提供见解吗?我想要的设置是 5 英寸 x 7 英寸的标签纸,由 3 个垂直标签组成,间隔和边距为 0.25 英寸。每个标签的左上角应为回邮地址,右下角应为目的地地址。

答案1

我不太了解,envlab但我猜它首先从中收集信息\mlabel,然后在文档末尾处理所有标签,但它是在没有扩展的情况下收集标签信息,这意味着所有标签都使用类似这样的命令\name,但到标签排版等时,\name其值是 csv 文件最后一行的值。我认为解决这个问题的最简单方法是定义一个命令,在将信息传递给之前对其进行扩展\mlabel。像这样:

\documentclass[12pt]{letter}

\usepackage{etoolbox}
\usepackage{datatool}

\begin{filecontents}{addr.csv}
Name,Street,Suite,City,State,Zip,Country
name1,street1,suite1,city1,state1,zip1,country1
name2,street2,suite2,city2,state2,zip2,country2
\end{filecontents}

\DTLloaddb{mailing-list}{addr.csv}

\usepackage[nocapaddress,printbarcodes]{envlab}

\SetBigLabel{5in}{7in}{0.25in}{0.25in}{0.25in}{1}{3}
\makelabels

\newcommand{\xmlabel}[2]{%
 \edef\domlabel{\noexpand\mlabel{\expandonce{#1}}{\expandonce{#2}}}%
 \domlabel
}

\begin{document}
\startlabels

\DTLforeach{mailing-list}{%
  \name=Name,%
  \street=Street,%
  \suite=Suite,%
  \town=City,%
  \state=State,%
  \zip=Zip,%
  \country=Country%,
}{%
\xmlabel{%
Joe Casanova\\1 Lambda Street\\Anyplace, NY 12345}{%
\name\\\street\\\town, 
\state, \zip}%
}
\end{document}

相关内容