라벨과 textmerg를 사용한 ISBN 바코드

라벨과 textmerg를 사용한 ISBN 바코드

다음과 같은 ISBN 바코드 시트를 만들고 있습니다.

\documentclass{article}

\usepackage{GS1}
\usepackage{textmerg}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.dat}
  0201134489
  978-0201529838
  978-3-319-23796-1
  978-0321173850
  9781847199867
  978-0201362992
\end{filecontents*}

\usepackage[newdimens]{labels}
\LabelCols=3
\LabelRows=5

\LabelGridtrue % show grid for labels

\begin{document}

\Fields{\isbn}

\Merge{\jobname.dat}{%
  \addresslabel{
    \EANBarcode{ISBN \isbn}
  }%
}%

\end{document}

불행히도 바코드는 ISBN 번호 대신 모두 0입니다.

0만 있는 바코드

이 문제를 어떻게 해결할 수 있나요?

답변1

처럼마린\expandafter\EANBarcode\expandafter{\isbn}지적 했듯이 해결책은 \EANBarcode{ISBN \isbn}. 게시하기 전에 이 작업을 시도했지만 GS1 문서에서 "ISBN" 필러를 제거하는 것을 잊어버렸기 때문에 오류가 발생하고 문제가 해결되지 않은 줄 알았습니다. 완전성을 위한 전체 작업 예제는 다음과 같습니다.

\documentclass{article}

\usepackage{GS1}
\usepackage{textmerg}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.dat}
  0201134489
  978-0201529838
  978-3-319-23796-1
  978-0321173850
  9781847199867
  978-0201362992
\end{filecontents*}

\usepackage[newdimens]{labels}
\LabelCols=3
\LabelRows=5

\LabelGridtrue % show grid for labels

\begin{document}

\Fields{\isbn}

\Merge{\jobname.dat}{%
  \addresslabel{
    \expandafter\EANBarcode\expandafter{\isbn}
  }%
}%

\end{document}

ISBN 바코드가 올바르게 렌더링됨

답변2

barracuda나는 최근 ISBN 및 ISSN을 지원하는 패키지의 적합한 버전(>=0.0.10 필요)을 CTAN에 업로드했습니다 . 이제 \directlua 프리미티브에 전달되는 토큰의 자동 확장으로 인해 인수 확장을 자연스럽게 해결할 수 있습니다.

번들로 배포된 LaTeX 패키지 덕분에 Lua 코드를 작성할 필요가 없습니다 barracuda.sty. barracuda는 완전히 Lua로 작성되었으며 texluaSVG 바코드 생성과 같은 일반 인터프리터에서도 작동할 수 있습니다.

이점은 더욱 정교한 입력 및 출력 바코드 처리로 구성됩니다. 귀하의 예에서 패키지는 기호의 ISBN 텍스트 레이블을 인쇄해야 하는지 여부를 결정할 수 있습니다. 실제로 기본 EAN 코드와 관련하여 추가 정보가 제공되지 않으면 ISBN 표기가 작성되지 않습니다. 예를 들어, 입력 코드에 대시 문자가 있는 경우 이는 상위 ISBN 라벨 추가에 적합한 추가 정보로 간주되며, 입력 코드가 단순한 숫자 시퀀스인 경우 라벨 옵션이 선택되지 않습니다.

어쨌든 사용자는 옵션을 사용하여 이 동작을 수정할 수 있습니다 text_isbn_enable. 허용되는 값 은 이거나 true기본값 입니다.false"auto"

마지막으로 체크섬이 정확하면 barracudaISBN 10자리 입력 코드 또는 이에 상응하는 EAN 13을 동일하게 받아들입니다.

매크로 \barracuda구문은 \barracuda[option]{encoder}{input code}다음과 같습니다.

\barracuda[text_isbn_enable = false]{ean-isbn}{0201134489}

LuaLaTeX의 코드 예제는 다음과 같습니다( barracudapdflatex 엔진에서는 작동하지 않음):

% !TeX program = LuaLaTeX
\documentclass{article}
\usepackage{fontspec}
\setmainfont{ocrb10}
\usepackage{barracuda}

\usepackage{textmerg}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.dat}
  0201134489
  978-0201529838
  978-3-319-23796-1
  978-0321173850
  9781847199867
  978-0201362992
\end{filecontents*}

\usepackage[newdimens]{labels}
\LabelCols=3
\LabelRows=5

\LabelGridtrue % show grid for labels

\begin{document}
\Fields{\isbn}

\Merge{\jobname.dat}{%
  \addresslabel{
    \barracuda{ean-isbn}{\isbn}% naturally expanded
  }%
}%
\end{document}

감사합니다. 아르 자형.

관련 정보