Gere códigos de barras com um loop for

Gere códigos de barras com um loop for

Quero criar etiquetas com códigos de barras. Os códigos de barras individuais devem ser uma sequência de números que identificam objetos. Depois de algumas tentativas e erros, o GS1pacote pareceu funcionar para mim.

Como tenho uma sequência de números, parece natural usar um loop for. O problema que surge é que todos os códigos de barras gerados têm valor 0.

Talvez o problema seja que \EANBarcodeespera uma string em vez de um número inteiro. Não sei como o LaTeX lida com tipos de variáveis ​​e como converter o número 1 na string "1" e se isso é relevante aqui.

\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}

Responder1

Você tem que passar \EANBarcodeum número explícito:

\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}

insira a descrição da imagem aqui

Código mais curto com 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}

informação relacionada