我正在製作一張 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
barracuda
我最近向 CTAN 上傳了一個支援 ISBN 和 ISSN 的軟體包的合適版本(需要 >=0.0.10) 。現在您可以自然地解決參數擴展,因為標記的自動擴展被傳遞給 \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。