Генерация штрихкодов с помощью цикла for

Генерация штрихкодов с помощью цикла for

Я хочу создать этикетки со штрихкодами. Отдельные штрихкоды должны быть последовательностью чисел, которые идентифицируют объекты. После некоторых проб и ошибок пакет, GS1похоже, сработал для меня.

Поскольку у меня есть последовательность чисел, кажется естественным использовать цикл for. Проблема, которая возникает, заключается в том, что все сгенерированные штрихкоды имеют нулевое значение.

Может быть, проблема в том, что \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}

Связанный контент