使用 for 循环生成条形码

使用 for 循环生成条形码

我想创建带有条形码的标签。单个条形码应该是用于标识对象的数字序列。经过反复尝试,这个GS1包似乎对我有用。

由于我有一个数字序列,因此使用 for 循环似乎很自然。出现的问题是生成的条形码都是 0 值。

也许问题在于它\EANBarcode需要一个字符串而不是整数。我不知道 LaTeX 如何处理变量类型以及如何将数字 1 转换为字符串“1”,以及这是否与此相关。

\documentclass[a4paper]{article}
\usepackage{labels}
\usepackage{GS1}
\usepackage{forloop}

\LabelCols=4
\LabelRows=11

\GSSetup{module_height=15mm}

\begin{document}
    \newcounter{loop}
    \forloop{loop}{1}{\value{loop} < 45}{
        \addresslabel{
            \EANBarcode{\arabic{loop}}
        }
    }
\end{document}

答案1

您必须传递\EANBarcode一个明确的数字:

\documentclass[a4paper]{article}
\usepackage{labels}
\usepackage{GS1}
\usepackage{forloop}

\LabelCols=4
\LabelRows=11

\GSSetup{module_height=15mm}

\begin{document}

\newcounter{loop}
\forloop{loop}{1}{\value{loop} < 45}{%
  \addresslabel{%
    \expandafter\EANBarcode\expandafter{\the\value{loop}}%
  }%
}

\end{document}

在此处输入图片描述

更短的代码如下expl3

\documentclass[a4paper]{article}
\usepackage{labels}
\usepackage{GS1}
\usepackage{expl3}

\LabelCols=4
\LabelRows=11

\GSSetup{module_height=15mm}

\begin{document}

\ExplSyntaxOn
\int_step_inline:nnnn { 1 } { 1 } { 44 }
 {
  \addresslabel{\EANBarcode{#1}}
 }
\ExplSyntaxOff

\end{document}

相关内容