Estoy haciendo una hoja de códigos de barras ISBN como esta:
\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}
Desafortunadamente, los códigos de barras son todos ceros en lugar de números ISBN:
¿Cómo puedo arreglar esto?
Respuesta1
ComomarijnComo señaló, la solución es tan simple como \expandafter\EANBarcode\expandafter{\isbn}
en lugar de \EANBarcode{ISBN \isbn}
. Intenté esto antes de publicar, pero olvidé eliminar el relleno "ISBN" de la documentación de GS1, así que recibí un error y pensé que no había solucionado el problema. Aquí está el ejemplo de trabajo completo para que esté completo:
\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}
Respuesta2
Recientemente subí a CTAN una versión adecuada (se requiere>=0.0.10) del paquete barracuda
con soporte para ISBN e ISSN. Ahora puede resolver la expansión del argumento de forma natural porque la expansión automática de los tokens se pasa a la primitiva \directlua.
No necesita escribir código Lua gracias al barracuda.sty
paquete LaTeX implementado en el paquete. Barracuda está escrita completamente en Lua y puede funcionar también con un intérprete normal como texlua
para producir códigos de barras SVG.
El beneficio consiste en un procesamiento más sofisticado de códigos de barras de entrada y salida. En su ejemplo, el paquete puede decidir si el texto ISBN de la etiqueta sobre el símbolo debe imprimirse o no. De hecho, si no se proporciona información adicional con respecto al código EAN subyacente, no se realiza ninguna notación ISBN. Por ejemplo, si en el código de entrada hay caracteres de guión, se supone que se trata de información adicional adecuada para agregar la etiqueta ISBN superior, mientras que si el código de entrada es simplemente una secuencia de dígitos, no se elige ninguna opción de etiqueta.
De todos modos, el usuario podría corregir este comportamiento con la opción text_isbn_enable
. El valor aceptado es true
, false
o "auto"
que sea el predeterminado.
Como observación final, si la suma de verificación es correcta, barracuda
se acepta igualmente un código de entrada ISBN de 10 dígitos o un equivalente EAN 13.
La \barracuda
sintaxis de la macro es: \barracuda[option]{encoder}{input code}
como en:
\barracuda[text_isbn_enable = false]{ean-isbn}{0201134489}
El ejemplo de código para LuaLaTeX es el siguiente ( barracuda
no funciona con el motor 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}
Gracias. r.