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}

関連情報