私は次のような 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}
答え2
最近、ISBN と ISSN をサポートするパッケージの適切なバージョン (>=0.0.10 が必要) を CTAN にアップロードしましたbarracuda
。トークンの自動拡張が \directlua プリミティブに渡されるため、引数の拡張を自然に解決できるようになりました。
バンドルに展開されている LaTeX パッケージのおかげで、Lua コードを書く必要はありませんbarracuda.sty
。barracuda は完全に Lua で書かれており、texlua
SVG バーコードを生成するような通常のインタープリターでも動作します。
利点は、より洗練された入力および出力バーコード処理にあります。この例では、パッケージはシンボル上のラベル ISBN テキストを印刷する必要があるかどうかを決定できます。実際、基礎となる EAN コードに関して追加情報が提供されていない場合、ISBN 表記は作成されません。たとえば、入力コードにダッシュ文字が存在する場合、これは上部の ISBN ラベル追加に適した追加情報であると見なされますが、入力コードが単なる数字シーケンスである場合、ラベル オプションは選択されません。
いずれにしても、ユーザーはオプション を使用してこの動作を修正できますtext_isbn_enable
。受け入れられる値はtrue
、false
または"auto"
デフォルトです。
最後に、チェックサムが正しければ、barracuda
ISBN 10 桁の入力コードまたは EAN 13 と同等に受け入れられます。
マクロ\barracuda
の構文は\barracuda[option]{encoder}{input code}
次のようになります:
\barracuda[text_isbn_enable = false]{ean-isbn}{0201134489}
LuaLaTeX のコード例は次のとおりです ( barracuda
pdflatex エンジンでは動作しません)。
% !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.