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}

관련 정보