Я хочу создать этикетки со штрихкодами. Отдельные штрихкоды должны быть последовательностью чисел, которые идентифицируют объекты. После некоторых проб и ошибок пакет, 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}