ISBN-Barcodes mithilfe von Etiketten und Textmerg

ISBN-Barcodes mithilfe von Etiketten und Textmerg

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:

Barcodes mit nur Nullen

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}

ISBN-Barcodes werden korrekt wiedergegeben

Antwort2

Ich habe vor Kurzem eine geeignete Version (>=0.0.10 ist erforderlich) des Pakets barracudamit 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 texluaSVG-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 trueoder falsedass "auto"dies der Standardwert ist.

Als letzte Bemerkung: Wenn die Prüfsumme korrekt ist, barracudawird 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 \barracudaMakrosyntax ist: \barracuda[option]{encoder}{input code}wie in:

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

Das Codebeispiel für LuaLaTeX ist wie folgt ( barracudafunktioniert 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.

verwandte Informationen