バーコード付きのラベルを作成したいです。個々のバーコードは、オブジェクトを識別する一連の数字である必要があります。何度か試行錯誤した結果、この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}