Ich erstelle ein Blatt mit ISBN-Barcodes wie folgt:
\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}
Leider bestehen die Barcodes nur aus Nullen und nicht aus ISBN-Nummern:
Wie kann ich das beheben?
Antwort1
AlsMarijnwie bereits erwähnt, ist die Lösung so einfach wie \expandafter\EANBarcode\expandafter{\isbn}
anstelle von \EANBarcode{ISBN \isbn}
. Ich habe dies vor dem Posten versucht, aber vergessen, das „ISBN“-Füllzeichen aus der GS1-Dokumentation zu entfernen, sodass eine Fehlermeldung angezeigt wurde und ich dachte, das Problem sei dadurch nicht behoben. Der Vollständigkeit halber ist hier das vollständige funktionierende Beispiel:
\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}
Antwort2
Ich habe vor Kurzem eine geeignete Version (>=0.0.10 ist erforderlich) des Pakets barracuda
mit ISBN- und ISSN-Unterstützung auf CTAN hochgeladen. Jetzt können Sie die Argumenterweiterung auf natürliche Weise auflösen, da die automatische Erweiterung von Token an das \directlua-Primitiv übergeben wird.
Dank des im Paket enthaltenen LaTeX-Pakets müssen Sie keinen Lua-Code schreiben barracuda.sty
– Barracuda ist fast vollständig in Lua geschrieben und funktioniert möglicherweise auch mit einem normalen Interpreter, um beispielsweise texlua
SVG-Barcodes zu erstellen.
Der Vorteil besteht in einer ausgefeilteren Verarbeitung von Barcodes bei der Eingabe und Ausgabe. In Ihrem Beispiel kann das Paket entscheiden, ob der ISBN-Text auf dem Etikett auf das Symbol gedruckt werden muss oder nicht. Wenn keine zusätzlichen Informationen zum zugrunde liegenden EAN-Code bereitgestellt werden, wird tatsächlich keine ISBN-Notation vorgenommen. Wenn beispielsweise im Eingabecode Bindestriche vorhanden sind, wird davon ausgegangen, dass dies eine zusätzliche Information ist, die für die obere ISBN-Etikettenergänzung geeignet ist, während keine Etikettenoption ausgewählt wird, wenn der Eingabecode lediglich eine Ziffernfolge ist.
Der Benutzer kann dieses Verhalten jedoch mit der Option korrigieren text_isbn_enable
. Der akzeptierte Wert ist true
oder false
dass "auto"
dies der Standardwert ist.
Als letzte Bemerkung: Wenn die Prüfsumme korrekt ist, barracuda
wird sie gleichermaßen als ISBN-Code mit einer Länge von 10 Ziffern oder als EAN-Äquivalent mit einer Länge von 13 akzeptiert.
Die \barracuda
Makrosyntax ist: \barracuda[option]{encoder}{input code}
wie in:
\barracuda[text_isbn_enable = false]{ean-isbn}{0201134489}
Das Codebeispiel für LuaLaTeX ist wie folgt ( barracuda
funktioniert nicht mit der PDFLatex-Engine):
% !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}
Vielen Dank.