ラベルとテキストマージを使用した ISBN バーコード

ラベルとテキストマージを使用した 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 番号ではなくすべてゼロです。

ゼロだけのバーコード

これをどうすれば修正できますか?

答え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

最近、ISBN と ISSN をサポートするパッケージの適切なバージョン (>=0.0.10 が必要) を CTAN にアップロードしましたbarracuda。トークンの自動拡張が \directlua プリミティブに渡されるため、引数の拡張を自然に解決できるようになりました。

バンドルに展開されている LaTeX パッケージのおかげで、Lua コードを書く必要はありませんbarracuda.sty。barracuda は完全に Lua で書かれており、texluaSVG バーコードを生成するような通常のインタープリターでも動作します。

利点は、より洗練された入力および出力バーコード処理にあります。この例では、パッケージはシンボル上のラベル ISBN テキストを印刷する必要があるかどうかを決定できます。実際、基礎となる EAN コードに関して追加情報が提供されていない場合、ISBN 表記は作成されません。たとえば、入力コードにダッシュ文字が存在する場合、これは上部の ISBN ラベル追加に適した追加情報であると見なされますが、入力コードが単なる数字シーケンスである場合、ラベル オプションは選択されません。

いずれにしても、ユーザーはオプション を使用してこの動作を修正できますtext_isbn_enable。受け入れられる値はtruefalseまたは"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}

ありがとう。R.

関連情報