我正在制作一张地址标签。这是我的第一次迭代:
\documentclass[letterpaper,12pt]{article}
\usepackage[newdimens]{labels}
\LabelCols=4
\LabelRows=6
\LeftPageMargin=20mm
\RightPageMargin=20mm
\TopPageMargin=13mm
\BottomPageMargin=12.5mm
\InterLabelColumn=8mm
\InterLabelRow=5mm
\LeftLabelBorder=0.2mm
\RightLabelBorder=0.2mm
\TopLabelBorder=0.2mm
\BottomLabelBorder=0mm
\LabelGridtrue % show grid for labels
\LabelInfotrue % show info for labels
\begin{document}
\begin{labels}
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
\end{labels}
\end{document}
我不想手动将所有标签写入文档正文中,而是想将它们存储在外部文件中。因此,我使用了包textmerg
,例如
其他
问题。
\documentclass[letterpaper,12pt]{article}
\usepackage{textmerg}
\usepackage[newdimens]{labels}
\LabelCols=4
\LabelRows=6
\LeftPageMargin=20mm
\RightPageMargin=20mm
\TopPageMargin=13mm
\BottomPageMargin=12.5mm
\InterLabelColumn=8mm
\InterLabelRow=5mm
\LeftLabelBorder=0.2mm
\RightLabelBorder=0.2mm
\TopLabelBorder=0.2mm
\BottomLabelBorder=0mm
\LabelGridtrue % show grid for labels
\LabelInfotrue % show info for labels
\usepackage{filecontents}
\begin{filecontents*}{\jobname.dat}
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
\end{filecontents*}
\begin{document}
\Fields{\mylabel}
\Merge{\jobname.dat}{%
\addresslabel{
\mylabel
}%
}%
\end{document}
不幸的是,转换过程中格式被打乱了。特别是,当我使用 Adobe Acrobat Reader DC 中的“测量”工具测量列间距时,结果显示约为 9.5 毫米,而不是 8 毫米。在打印到粘性标签上时,这是一个严重的问题。
以下是两者的比较:
原始版本为黑色,第二版本为红色。
如何在保持原始尺寸的同时迭代外部文件?
(如果有办法来实现textmerg
这一点,我会同意,但是使用datatool
或者的方法catchfile
也可以。)
如果你感兴趣的话,可以点击这里查看 Github repo 的链接亲自尝试一下:
答案1
软件包的 定义中有一个虚假空格\ParseFields
。这是一个错误,应报告给维护者。
同时,您可以在序言中提供更正的定义。
\def\ParseFields#1{%
\ifx#1\EndParseFields
\let\NextParse\relax
\else
\let\NextParse\ParseFields
\ifx#1+\DontAllowBlank
\else
\ifx#1-\AllowBlank
\else\ReadIn#1% <= remove space here
\fi
\fi
\fi\NextParse}
\begin{filecontents*}{\jobname.dat}
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
\end{filecontents*}
\documentclass[letterpaper,12pt]{article}
\usepackage{geometry}% without this I get A4
\usepackage{textmerg}
\usepackage[newdimens]{labels}
\LabelCols=4
\LabelRows=6
\LeftPageMargin=20mm
\RightPageMargin=20mm
\TopPageMargin=13mm
\BottomPageMargin=12.5mm
\InterLabelColumn=8mm
\InterLabelRow=5mm
\LeftLabelBorder=0.2mm
\RightLabelBorder=0.2mm
\TopLabelBorder=0.2mm
\BottomLabelBorder=0mm
\LabelGridtrue % show grid for labels
\LabelInfotrue % show info for labels
\usepackage{background}
\backgroundsetup{contents=\includegraphics{\jobname-a},scale=1,angle=0,opacity=1}
\def\ParseFields#1{%
\ifx#1\EndParseFields
\let\NextParse\relax
\else
\let\NextParse\ParseFields
\ifx#1+\DontAllowBlank
\else
\ifx#1-\AllowBlank
\else\ReadIn#1% <= remove space here
\fi
\fi
\fi\NextParse}
\begin{document}
\Fields{\mylabel}%
\Merge{\jobname.dat}{%
\addresslabel{%
\mylabel
}%
}%
\end{document}