summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/pst-barcode/pst-barcode-doc.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-04-16 22:17:59 +0000
committerKarl Berry <karl@freefriends.org>2017-04-16 22:17:59 +0000
commit1b09f4bdca618bcbfca16d25489b96ab22875230 (patch)
tree2aeb2a57631dfc263677c46ccf370a286a8b5771 /Master/texmf-dist/doc/generic/pst-barcode/pst-barcode-doc.tex
parente2f647f28d1d99392613d28f7b1a751a57f7bbd1 (diff)
pst-barcode (14apr17)
git-svn-id: svn://tug.org/texlive/trunk@43856 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/pst-barcode/pst-barcode-doc.tex')
-rw-r--r--Master/texmf-dist/doc/generic/pst-barcode/pst-barcode-doc.tex7083
1 files changed, 5548 insertions, 1535 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-barcode/pst-barcode-doc.tex b/Master/texmf-dist/doc/generic/pst-barcode/pst-barcode-doc.tex
index 20acf8a4be7..6a0f839a51e 100644
--- a/Master/texmf-dist/doc/generic/pst-barcode/pst-barcode-doc.tex
+++ b/Master/texmf-dist/doc/generic/pst-barcode/pst-barcode-doc.tex
@@ -1,1636 +1,5649 @@
-%% $Id: pst-bezier-doc.tex 104 2009-03-04 16:06:54Z herbert $
-\documentclass[11pt,english,BCOR10mm,DIV14,bibliography=totoc,parskip=false,smallheadings
- headexclude,footexclude,twoside]{pst-doc}
-\usepackage[utf8]{inputenc}
-\usepackage{pst-barcode,blindtext,multicol}
-\let\pstBarcodeFV\fileversion
-\lstset{preset=\centering,pos=l,wide=false,vsep=5mm,language=PSTricks,%width=0.5\linewidth,
- morekeywords={multidipole,parallel},basicstyle=\footnotesize\ttfamily}
-%
-\def\bgImage{\begin{pspicture}(1in,1in)
-\psbarcode{Herbert Voss Freie Universitaet Berlin}{rows=52 columns=52}{datamatrix}
-\end{pspicture}}
-
-\begin{filecontents*}{demo.tex}
-\documentclass{article}
-\usepackage{pst-barcode,fancyvrb}
-\begin{document}
-\VerbatimInput{\jobname.tex}% test
-
-\begin{pspicture}(2in,2in)
- \psbarcode[file]{\jobname.tex}{}{qrcode}
-\end{pspicture}
-\end{document}
-\end{filecontents*}
-
-\begin{document}
-
-\title{\texttt{pst-barcode}}
-\subtitle{A PSTricks package for drawing barcodes; v.\pstBarcodeFV}
-\author{Terry Burton \\Herbert Vo\ss}
-\docauthor{Herbert Vo\ss}
-\date{\today}
-\maketitle
-
-\tableofcontents
-
-\clearpage
-
-\begin{abstract}
-\noindent
-The \LPack{pstricks} related package provides (essentially) one macro
-for printing barcodes. The type of the code is defined by a parameter
-and passed to postscript.
-
-%\vfill\noindent
-%Thanks to: \\
-% Jean-C\^ome Charpentier.
-\end{abstract}
-
-\section{Introduction}
-The \LPack{pstricks} package provides (essentially) one macro
-for printing barcodes. The type of the code is defined by a parameter
-and passed to postscript.
-To install the package put the three files in a place, where \TeX{} will search
-for the files:
-
-\bigskip\noindent
-\begin{tabular}{@{} l l l @{}}\hline
-\emph{name} & \emph{meaning}& \emph{target dir} \\\hline
-\verb+pst-barcode.tex+ & \LaTeX\ style file -- wrapper & \verb+$LOCALTEXMF/tex/generic/pstricks/+\\
-\verb+pst-barcode.sty+ & \TeX\ file -- PS interface &\verb+$LOCALTEXMF/tex/latex/pstricks/+\\
-\verb+pst-barcode.pro+ & PostScript file & \verb+$LOCALTEXMF/dvips/pstricks/+ \\
-\verb+pst-barcode-doc.tex+ & documentation source & \verb+$LOCALTEXMF/doc/pstricks/+\\
-\verb+pst-barcode-doc.bib+ & bibliography source & \verb+$LOCALTEXMF/doc/pstricks/+\\
-\verb+pst-barcode-doc.pdf+ & documentation & \verb+$LOCALTEXMF/doc/pstricks/+ \\\hline%$
-\end{tabular}
-
-\bigskip
-There is only one macro \verb+\psbarcode+ with the usual PSTricks syntax
-\begin{BDef}
-\Lcs{psbarcode}\OptArgs\Largb{text or filename}\Largb{PS options}\Largb{barcode type}
-\end{BDef}
-
-Important is the fact, that the barcode is printed in a \TeX\ box of zero dimension.
-If you want to save some space in your text, use the \Lenv{pspicture} environment
-or the \Lcs{makebox} macro.
-
-
-
-\section{The options}
-\subsection{The \TeX\ options}
-
-\begin{tabular}{@{}lll@{}}\hline
-\emph{name} & \emph{default} & \emph{remarks}\\\hline
-\Lkeyword{transx} & 0 & horizontal shift\\
-\Lkeyword{transy} & 0 & vertical shift\\
-\Lkeyword{scalex} & 1 & horizontal scaling\\
-\Lkeyword{scaley} & 1 & vertical scaling\\
-\Lkeyword{rotate} & 0 & rotating angle in degrees\\\hline
-\Lkeyword{file} & false & load an external file for the text\\\hline
-\end{tabular}
-
-\subsection{The PostScript options}
-
-\begin{tabularx}{\textwidth}{@{}llX@{}}\hline
-\emph{name} & \emph{default} & \emph{remarks}\\\hline
-\Lps{height} & 1 & dimension is inch\\
-\Lps{textsize} & 10 & dimension is pt\\
-\Lps{textpos} & -2 & dimension is pt; it is the shift for additional code text\\
-\Lps{inkspread} & 0.15 & dimension is pt\\
-\Lps{showborder} & -- & - \\
-\Lps{borderwidth} & 0.5 & dimension in pt \\
-\Lps{borderleft} & 10 & dimension in pt\\
-\Lps{borderright} & 10 & dimension in pt\\
-\Lps{bordertop} & 1 & dimension in pt\\
-\Lps{borderbottom} & 1 & dimension in pt\\
-\Lps{borderwidth} & 0.5 & dimension in pt\\
-\Lps{width} & -- & dimension in inch\\
-%
-\Lps{font} & /Helvetica & must be a PostScript font\\
-\Lps{includetext} & -- & enable human readable text \\
-\Lps{includecheck} & -- & enable check digit \\
-\Lps{includecheckintext} & -- & check digit visible in text\\
-\Lps{parse} & -- & parse variable field für decimal values, like \^{}032 for space, and convert them to ASCII\\\hline
-\end{tabularx}
-
-
-
-\subsection{Examples for the TeX options}
-
-\begin{LTXexample}[pos=t,preset=\centering,wide]
-\psframebox{\begin{pspicture}(2.5,1in)
-\psbarcode{01335583}{includetext}{ean8}
-\end{pspicture}}\quad
-\psframebox{\begin{pspicture}(-2.6,-1.5)(0.4,0.2in)
-\psbarcode[rotate=180,linecolor=red]{01335583}{includetext guardwhitespace height=0.6}{ean8}
-\end{pspicture}}\quad
-\psframebox{\begin{pspicture}(3.8,1in)
-\psbarcode[scalex=1.5,scaley=0.5,transy=1]{01335583}{includetext inkspread=0.5}{ean8}
-\end{pspicture}}
-\end{LTXexample}
-
-
-\begin{LTXexample}[pos=t,preset=\centering,wide]
-\begin{pspicture}(2in,2in)
- \psbarcode[file]{demo.tex}{}{qrcode}
-\end{pspicture}
-\end{LTXexample}
-
-The contents of the external file \texttt{demo.tex}:
-
-\VerbatimInput{demo.tex}
-
-
-
-\newpage
-\subsection{Examples for the PostScript options}
-
-\begin{LTXexample}[pos=t,preset=\centering]
-\begin{pspicture}(3.5,1.2in)
-\psbarcode{01335583}{includetext guardwhitespace height=0.6}{ean8}
-\end{pspicture}
-\begin{pspicture}(3.5,1.2in)
-\psbarcode{01335583}{textsize=15 includetext guardwhitespace height=0.6}{ean8}
-\end{pspicture}
-\begin{pspicture}(3.5,1.2in)
-\psbarcode{01335583}{includetext inkspread=0.5}{ean8}
-\end{pspicture}
-\begin{pspicture}(3.5,1.2in)
-\psbarcode{01335583}{includetext textpos=0}{ean8}
-\end{pspicture}
-\end{LTXexample}
-
-
-
-\begin{LTXexample}[pos=t,preset=\centering]
-\begin{pspicture}(3.5,1.2in)
-\psbarcode{01335583}{includetext guardwhitespace}{ean8}
-\end{pspicture}
-\begin{pspicture}(3.5,1.2in)
-\psbarcode{01335583}{textsize=15 includetext guardwhitespace width=2}{ean8}
-\end{pspicture}
-\end{LTXexample}
-
-
-
-
-
-\section{Usage}
-By default the barcode has a width and a height of zero. Using the \Lcs{parbox}
-macro or the \Lenv{pspicture} environment can reserve the needed space for
-the barcode. The \Lcs{fbox} in the following examples is used
-only for demonstration.
-
-\xLps{code39}
-\begin{LTXexample}[width=.5\linewidth]
-foo
-\fbox{%
- \parbox[b][1in]{1.5in}{\psbarcode{241078}{includetext width=1.5 height=1}{code39}}}
-bar
-\end{LTXexample}
-
-\xLps{code39}
-\bigskip
-\begin{LTXexample}[pos=l,width=.5\linewidth]
-foo
-\fbox{%
-\begin{pspicture}(0,-8pt)(1.5in,1in)
- \psbarcode{241078}{includetext width=1.5 height=1}{code39}
-\end{pspicture}}
-bar
-\end{LTXexample}
-
-
-\section{Possible barcodes}
-
-The following list shows all available bacodes. Some of it are
-shown as an example.
-
-\begin{multicols}{2}
-\begin{itemize}
-\item EAN-13 (EAN, UCC-13, JAN, JAN-13, EAN-13+2, EAN-13+5, EAN-99),
-\item EAN-8 (UCC-8, JAN-8, EAN-8+2, EAN-8+5, EAN-Velocity),
-\item UPC-A (UPC, UCC-12, UPC-A+2, UPC-A+5),
-\item UPC-E (UPC-E0, UPC-E1, UPC-E+2, UPC-E+5),
-\item ISBN (ISBN-13, ISBN-10, Bookland EAN-13),
-\item ISMN,
-\item ISSN,
-\item EAN-5 \& EAN-2 (EAN/UPC add-ons),
-\item GS1 DataBar Omnidirectional (RSS-14),
-\item GS1 DataBar Stacked (RSS-14 Stacked),
-\item GS1 DataBar Stacked Omnidirectional (RSS-14 Stacked Omnidirectional),
-\item GS1 DataBar Truncated (RSS-14 Truncated),
-\item GS1 DataBar Limited (RSS Limited),
-\item GS1 DataBar Expanded (RSS Expanded),
-\item GS1 DataBar Expanded Stacked (RSS Expanded Stacked),
-\item GS1-128 (UCC/EAN-128, EAN-128, UCC-128),
-\item SSCC-18 (EAN-18, NVE),
-\item EAN-14 (UCC-14),
-\item ITF-14 (UPC SCS),
-\item QR Code (Quick Response Code),
-\item Micro QR Code,
-\item GS1 QR Code,
-\item Data Matrix (Data Matrix ECC 200, Data Matrix Rectangular Extension),
-\item GS1 DataMatrix,
-\item Aztec Code (Compact Aztec Code),
-\item Aztec Runes,
-\item PDF417,
-\item Compact PDF417 (Truncated PDF417),
-\item MicroPDF417,
-\item Han Xin Code (Chinese Sensible),
-\item MaxiCode (UPS Code, Code 6),
-\item Codablock F, Code 16K (USS-16K),
-\item Code 49 (USS-49),
-\item Code One (Code 1, Code 1S),
-\item USPS POSTNET,
-\item USPS PLANET,
-\item USPS Intelligent Mail (USPS OneCode),
-\item USPS FIM,
-\item Royal Mail (RM4SCC, CBC),
-\item Royal TNT Post (KIX),
-\item Japan Post,
-\item Australia Post,
-\item Deutsche Post Identcode (DHL Identcode),
-\item Deutsche Post Leitcode (DHL Leitcode),
-\item Pharmacode (Pharmaceutical Binary Code),
-\item Two-track Pharmacode (Two-track Pharmaceutical Binary Code),
-\item Italian-Pharmacode (Code 32, IMH),
-\item PZN (Pharmazentralnummer, PZN-8, PZN-7),
-\item Code 39 (Code 3 of 9, LOGMARS, Alpha39, USD-3, USD-2, USS-39),
-\item Code 39 Extended (Code 39 Full ASCII),
-\item Code 93 (USD-7, USS-93),
-\item Code 93 Extended (Code 93 Full ASCII),
-\item Code 128 (Code 128A, Code 128B, Code 128C, USD-6, USS-128),
-\item Code 25 (Code 2 of 5, Industrial 2 of 5),
-\item IATA-2 of 5,
-\item Datalogic 2 of 5,
-\item Matrix 2 of 5,
-\item COOP 2 of 5,
-\item Interleaved 2 of 5 (ITF, Code 2 of 5 Interleaved, USD-1, USS-Interleaved 2 of 5),
-\item Code 11 (USD-8),
-\item Codabar (Rationalized Codabar, Ames Code, NW-7, USD-4, USS-Codabar, Monarch, Code 2 of 7),
-\item Plessey (Anker Code),
-\item MSI Plessey (MSI, MSI Modified Plessey),
-\item Telepen (Telepen Alpha, Telepen Full ASCII),
-\item Telepen Numeric,
-\item Channel Code,
-\item PosiCode (PosiCode A, PosiCode B),
-\item BC412 (BC412 SEMI, BC412 IBM),
-\item GS1 Composite Symbols (EAN-13 Composite, EAN-8 Composite, UPC-A Composite, UPC-E Composite, GS1 DataBar Omnidirectional Composite, GS1 DataBar Stacked Composite, GS1 DataBar Stacked Omni Composite, GS1 DataBar Truncated Composite, GS1 DataBar Limited Composite, GS1 DataBar Expanded Composite, GS1 DataBar Expanded Stacked Composite, GS1-128 Composite),
-\item HIBC barcodes (HIBC Code 39, HIBC Code 128, HIBC Data Matrix, HIBC PDF417, HIBC MicroPDF417, HIBC QR Code, HIBC Codablock F)
-\end{itemize}
-\end{multicols}
-
-
-
-
-
-
-%section shows the symbologies that are supported by
-%the encoders, including the available features for each.
-This list
-may not be up-to-date. If it does not contain any of the formats or
-features that you require then check the project source code or
-try the support mailing list.
-
-\subsection{EAN-13}
-
-\begin{description}
-\item[Characters] \verb+0123456789+
-\item[Data] 12 or 13 digits
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\\hline
- \texttt{includetext} & Enable human readable text\\
- \end{tabular}
-\item[Notes] If just 12 digits are entered then the check digit is calculated automatically
-\end{description}
-
-\xLps{ean13}
-\begin{LTXexample}[width=.3\linewidth]
-\begin{pspicture}(3,1.2in)
-\psbarcode[scalex=0.8,scaley=0.8]{9783865415561}{includetext guardwhitespace}{ean13}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{EAN-8}
-
-\begin{description}
-\item[Characters] \verb+0123456789+
-\item[Data] 8 digits
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\
- \hline
- \texttt{includetext} & Enable human readable text\\
- \end{tabular}
-\end{description}
-
-\xLps{ean8}
-\begin{LTXexample}[width=.3\linewidth]
-\begin{pspicture}(-2,-1.2)(0,0.2in)
-\psbarcode[rotate=180,linecolor=red]{01335583}{includetext guardwhitespace height=0.6}{ean8}
-\end{pspicture}
-\end{LTXexample}
-
-
-\subsection{UPC-A}
-
-\begin{description}
-\item[Characters] \verb+0123456789+
-\item[Data] 11 or 12 digits
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\
- \hline
- \texttt{includetext} & Enable human readable text\\
- \end{tabular}
-\item[Notes] If just 11 digits are entered then the check digit is
- calculated automatically
-\end{description}
-
-\xLps{upca}
-\begin{LTXexample}[pos=l,width=.3\linewidth,wide]
-\begin{pspicture}(3,1.2in)
-\psbarcode[transx=15pt,transy=10pt]{78858101497}{includetext}{upca}
-\qdisk(0,0){3pt}\rput[lb](5pt,-10pt){Origin}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{UPC-E}
-
-\begin{description}
-\item[Characters] \verb+0123456789+
-\item[Data] 7 or 8 digits
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\
- \hline
- \texttt{includetext} & Enable human readable text\\
- \end{tabular}
-\item[Notes] If just 7 digits are entered then the check digit is calculated automatically
-\end{description}
-
-\xLps{upce}
-\begin{LTXexample}[pos=l,width=.3\linewidth]
-\begin{pspicture}(1.5,1.2in)
-\psbarcode{0123456}{includetext}{upce}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{EAN-5}
-
-\begin{description}
-\item[Characters] \verb+0123456789+
-\item[Data] 5 digits
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\ \hline
- \texttt{includetext} & Enable human readable text\\
- \end{tabular}
-\end{description}
-
-\xLps{ean5}
-\begin{LTXexample}[pos=l,width=.3\linewidth]
-\begin{pspicture}(2,1in)
-\psbarcode{90200}{includetext guardwhitespace}{ean5}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{EAN-2}
-
-\begin{description}
-\item[Characters] \verb+0123456789+
-\item[Data] 2 digits
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\\hline
- \texttt{includetext} & Enable human readable text\\
- \end{tabular}
-\end{description}
-
-\xLps{ean2}
-\begin{LTXexample}[pos=l,width=.3\linewidth]
-\begin{pspicture}(1,1in)
-\psbarcode{38}{includetext guardwhitespace}{ean2}
-\end{pspicture}
-\end{LTXexample}
-
-
-\subsection{ISBN}
-An ISBN symbol is really an EAN-13 with a particular prefix, 978 for the older ISBN-10 format, and others for the new ISBN-13 format.
-
-\begin{description}
-\item[Characters] \verb+-0123456789+
-\item[Data] 9 or 10 digits for ISBN-10 seperated appropriately with dashes
-\item[Data] 12 or 13 digits for ISBN-13 seperated appropriately with dashes
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\ \hline
- \texttt{includetext} & Enable human readable text\\
- \end{tabular}
-\item[Notes] If just 9 (ISBN-10) or 12 (ISBN-13) digits are entered then the human readable,
- ISBN check digit is calculated automatically
-\end{description}
-
-\xLps{isbn}
-\smallskip
-\begin{LTXexample}[pos=l,width=.3\linewidth]
-\begin{pspicture}(3,1in)
-\psbarcode{3-86541-114}{includetext guardwhitespace}{isbn}
-\end{pspicture}
-\end{LTXexample}
-
-\bigskip\enlargethispage{2ex}
-\begin{LTXexample}[pos=l,width=.3\linewidth]
-\begin{pspicture}(3,1in)
-\psbarcode{978-3-86541-114}{includetext guardwhitespace}{isbn}
-\end{pspicture}
-\end{LTXexample}
-
-
-\subsection{Code-39}
-
-\begin{description}
-\item[Characters] \verb+0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*+ %$
-\item[Data] Variable number of characters, digits and any of the symbols \texttt{-.\@ *\$/+\%}.
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\ \hline
- \texttt{includecheck} & Enable check digit\\
- \texttt{includetext} & Enable human readable text\\
- \texttt{includecheckintext} & Make check digit visible in text\\
- \end{tabular}
-\end{description}
-
-
-\begin{LTXexample}[pos=l,width=.4\linewidth,wide]
-\begin{pspicture}(5,1in)
-\psbarcode{CODE-39}{includecheck includetext}{code39}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{Code-128 and UCC/EAN-128}
-
-\begin{description}
-\item[Characters] \verb|!"#$%&'\(\)*+,-./0...9:;<=>?@A...Z[\\]^_`a...z|\verb+{|}~+ %$
-\item[Data] Variable number of ASCII characters and special
-funtion symbols, starting with the approriate start character
-for the initial character set. UCC/EAN-128s must have a manditory
-\texttt{FNC 1} symbol immediately following the start character.
-\item[Options]~\\
- \begin{tabularx}{\linewidth}{@{} l|X @{}}
- Option & Feature\\ \hline
- \texttt{includetext} & Enable human readable text\\
-% \texttt{includecheckintext} & Make check digit visible in text\\
- \texttt{parse} & Any instances of \verb|^NNN| in the data field are replaced with their
- equivalent ASCII value, useful for specifying unprintable characters, e.\,g. \verb|^029| for GS, etc.\\
- \texttt{parsefnc} & Non-data function characters like \verb|^FNC1|.
- The special pseudo characters \verb|^LNKA| and \verb|^LNKC| at the end of the symbol
- indicate that a GS1-128 symbol includes a CC-A/B or CC-C GS1 composite 2D component.\\
- \texttt{raw} & The data field provides the input as pre-encoded codewords in
- \verb|^NNN| format, suitable for direct low-level encoding.
- \end{tabularx}
-\item[Notes] Any non-printable character can be entered via its escaped
- ordinal value, for example \texttt{\^{}070} for \texttt{ACK}
- and \texttt{\^{}102} for \texttt{FNC 1}. Since a caret symbol
- serves as an escape character it must be escaped as \texttt{\^{}062}
- if used in the data. The check character is always added automatically.
-\end{description}
-
-\begin{LTXexample}[width=.5\linewidth]
-\begin{pspicture}(5,1in)
-\psbarcode{^104^102Count^0991234^101!}{includetext}{code128}
-\end{pspicture}
-\end{LTXexample}
-
-\begin{LTXexample}[width=.5\linewidth]
-\begin{pspicture}(5,1in)
-\psbarcode{^FNC3L09}{parsefnc includetext}{code128}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{Rationalized Codabar}
-
-\begin{description}
-\item[Characters] \verb!0123456789-$:/.+ABCD! %$
-\item[Data] Variable number of digits and any of the symbols \texttt{-\$:/.+ABCD}.
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\ \hline
- \texttt{includecheck} & Enable check digit\\
- \texttt{includetext} & Enable human readable text\\
- \texttt{includecheckintext} & Make check digit visible in text\\
- \end{tabular}
-\end{description}
-
-\begin{LTXexample}[pos=l,width=.4\linewidth]
-\begin{pspicture}(4,1in)
-\psbarcode{A0123456789B}{includetext}{rationalizedCodabar}
-\end{pspicture}
-\end{LTXexample}
-
-
-\subsection{Interleaved 2 of 5 and ITF-14}
-
-\begin{description}
-\item[Characters] \verb!0123456789!
-\item[Data] Variable number of digits. An ITF-14 is 14 characters and
- does not have a check digit.
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\ \hline
- \texttt{includecheck} & Enable check digit\\
- \texttt{includetext} & Enable human readable text\\
- \texttt{includecheckintext} & Make check digit visible in text\\
- \end{tabular}
-\item[Notes] The data may be automatically prefixed with 0 to make the
- data, including optional check digit, of even length.
-\end{description}
-
-\begin{LTXexample}[width=.5\linewidth]
-\begin{pspicture}(5,0.7in)
-\psbarcode{05012345678900}{includecheck height=0.7}{interleaved2of5}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{Code 2 of 5}
-
-\begin{description}
-\item[Characters] \verb!0123456789!
-\item[Data] Variable number of digits
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\ \hline
- \texttt{includetext} & Enable human readable text\\
- \end{tabular}
-\end{description}
-
-\begin{LTXexample}[width=.5\linewidth]
-\begin{pspicture}(5,1.2in)
-\psbarcode{0123456789}{includetext textpos=75 textfont=Helvetica textsize=16}{code2of5}
-\end{pspicture}
-\end{LTXexample}
-
-
-
-\subsection{Postnet}
-
-\begin{description}
-\item[Characters] \verb!0123456789!
-\item[Data] Variable number digits
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\ \hline
- \texttt{includetext} & Enable human readable text\\
- \texttt{includecheckintext} & Make the check digit visible in the text
- \end{tabular}
-\item[Notes] Check digit is always added automatically
-\end{description}
-
-\begin{LTXexample}[width=.6\linewidth]
-\begin{pspicture}(7,0.3in)
-\psbarcode{01234}{includetext textpos=-10 textfont=Helvetica textsize=10}{postnet}
-\end{pspicture}
-\end{LTXexample}
-
-
-\subsection{Royal Mail}
-
-\begin{description}
-\item[Characters] \verb!ZUVWXY501234B6789AHCDEFGNIJKLMTOPQRS!
-\item[Data] Variable number digits and capital letters
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\ \hline
- \texttt{includetext} & Enable human readable text\\
- \texttt{includecheckintext} & Make the check digit visible in the text
- \end{tabular}
-\item[Notes] Check digit is always added automatically
-\end{description}
-
-\begin{LTXexample}[pos=l,width=.4\linewidth]
-\begin{pspicture}(5,0.5in)
-\psbarcode{LE28HS9Z}{includetext}{royalmail}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{Kix (Customer index) -- Dutch Mail}
-
-\begin{description}
-\item[Characters] \verb!ZUVWXY501234B6789AHCDEFGNIJKLMTOPQRS!
-\item[Data] Variable number digits and capital letters
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\ \hline
- \texttt{includetext} & Enable human readable text\\
-% \texttt{includecheckintext} & Make the check digit visible in the text
- \end{tabular}
-\item[Notes] Check digit is always added automatically
-\end{description}
-
-\begin{LTXexample}[pos=l,width=.4\linewidth]
-\begin{pspicture}(5,0.3in)
-\psbarcode{1203AA12}{includetext}{kix}
-\end{pspicture}
-\end{LTXexample}
-
-
-\subsection{Australian postal service}
-
-\begin{description}
-\item[Characters] \verb!ZUVWXY501234B6789AHCDEFGNIJKLMTOPQRSabc...xyz!
-\item[Data] Variable number digits and letters
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\ \hline
- \texttt{includetext} & Enable human readable text\\
- \texttt{includecheckintext} & Make the check digit visible in the text
- \end{tabular}
-%\item[Notes] Check digit is always added automatically
-\end{description}
-
-\begin{LTXexample}[pos=l,width=.4\linewidth]
-\begin{pspicture}(5,0.3in)
-\psbarcode{1139549554}{includetext}{auspost}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{Japan post service}
-
-\begin{description}
-\item[Characters] \verb!ZUVWXY501234B6789AHCDEFGNIJKLMTOPQRSabc...xyz!
-\item[Data] Variable number digits and letters
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\ \hline
- \texttt{includetext} & Enable human readable text\\
- \texttt{includecheckintext} & Make the check digit visible in the text
- \end{tabular}
-%\item[Notes] Check digit is always added automatically
-\end{description}
-
-\begin{LTXexample}[pos=t]
-\begin{pspicture}(0,-5mm)(7,0.5in)
-\psbarcode{6540123789-A-K-Z}{includetext textxalign=center}{japanpost}
-\end{pspicture}
-\end{LTXexample}
-
-
-
-\subsection{onecode}
-%United States Postal Service, replaces POSTNET and PLANET symbols.
-%Each barcode can be 20, 25, 29, or 31 digits long, depending on the type of ZIP code present. Each digit has four possible states, so one digit represents numbers 0-3.
-\begin{description}
-\item[Characters] \verb!0123456789!
-\item[Data] Variable number digits
-\iffalse
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\ \hline
- \texttt{includetext} & Enable human readable text\\
- \end{tabular}
-\fi
-\end{description}
-
-\begin{LTXexample}[pos=t,preset=\centering]
-\begin{pspicture}(0,-5mm)(5,0.3in)
-\psbarcode{0123456709498765432101234567891}{includetext}{onecode}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{Symbol}
-The purpose of the symbol encoder is to store the definitions of miscellaneous barcode
-symbols such as the FIM symbols used by the US Postal Service on their reply mail.
-
-
-\begin{LTXexample}[pos=l,width=.4\linewidth]
-\begin{pspicture}(1cm,1.5cm)
-\psbarcode{fima}{}{symbol}
-\end{pspicture}
-\end{LTXexample}
-
-\begin{LTXexample}[pos=l,width=.4\linewidth]
-\begin{pspicture}(1cm,1.5cm)
-\psbarcode{fimb}{}{symbol}
-\end{pspicture}
-\end{LTXexample}
-
-\begin{LTXexample}[pos=l,width=.4\linewidth]
-\begin{pspicture}(1cm,1.5cm)
-\psbarcode{fimc}{}{symbol}
-\end{pspicture}
-\end{LTXexample}
-
-\begin{LTXexample}[pos=l,width=.4\linewidth]
-\begin{pspicture}(1cm,1.5cm)
-\psbarcode{fimd}{}{symbol}
-\end{pspicture}
-\end{LTXexample}
-
-
-\subsection{MSI}
-
-\begin{description}
-\item[Characters] \verb!0123456789!
-\item[Data] Variable number digits
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\\hline
- \texttt{includecheck} & Enable check digit\\
- \texttt{includetext} & Enable human readable text\\
- \texttt{includecheckintext} & Make check digit visible in the text
- \end{tabular}
-\end{description}
-
-\begin{LTXexample}[pos=l,width=.5\linewidth,wide]
-\begin{pspicture}(6,1in)
-\psbarcode{0123456789}{includecheck includetext}{msi}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{Plessey}
-
-\begin{description}
-\item[Characters] \verb!01234B6789ABCDEF!
-\item[Data] Variable number of hexadecimal characters
-\item[Options]~\\
- \begin{tabular}{l|l}
- Option & Feature\\\hline
- \texttt{includetext} & Enable human readable text\\
- \texttt{includecheckintext} & Make the check digits visible in the text
- \end{tabular}
-\item[Notes] Check digits are always added automatically.
-\end{description}
-
-\begin{LTXexample}[pos=t,preset=\centering]
-\begin{pspicture}(0,-2mm)(12,1in)
-\psbarcode{0123456789ABCDEF}{includetext}{plessey}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{Reduced Space Symbology (RSS)}
-This is a family that includes RSS-14\textregistered, RSS Limited\textregistered,
-and RSS Expanded\textregistered{} (\url{http://www.gs1.org/productssolutions/barcodes/technical/rss.html}).
-RSS-14 and RSS Limited encode Global Trade Item
-Numbers (GTINs). RSS Expanded will encode any of the GS1 System identification
-numbers as well as all other Application Identifiers.
-RSS is used in the healthcare industry.
-
-\begin{description}
-\item[Characters] \verb!0123456789!
-\item[Data] Variable number digits
-\end{description}
-
-\subsubsection{rss14 (databaromni)}
-
-\begin{LTXexample}[width=.3\linewidth]
-\begin{pspicture}(12,.3in)
-\psbarcode{(01)24012345678905}{format=truncated includetext height=0.3}{databaromni}
-\end{pspicture}
-\end{LTXexample}
-
-\subsubsection{rsslimited (databarlimited)}
-\begin{LTXexample}[pos=l,width=.3\linewidth]
-\begin{pspicture}(12,.3in)
-\psbarcode{(01)15012345678907}{height=0.3}{databarlimited}
-\end{pspicture}
-\end{LTXexample}
-
-\subsubsection{rssexpanded (databarexpanded)}
-\begin{LTXexample}[pos=l,width=.3\linewidth]
-\begin{pspicture}(12,.3in)
-\psbarcode{(10)12A}{height=0.3}{databarexpanded}
-\end{pspicture}
-\end{LTXexample}
-
-
-\subsection{Pharmacode}
-For a documentation see \url{http://www.laetus.com/laetus.php?request=file&id=69}.
-
-\begin{description}
-\item[Characters] \verb!0123456789!
-\item[Data] Variable number digits
-\end{description}
-
-\begin{LTXexample}[pos=l,width=.3\linewidth]
-\begin{pspicture}(12,.3in)
-\psbarcode{117480}{}{pharmacode}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{PDF417}
-For a documentation see \url{http://de.wikipedia.org/wiki/Strichcode#PDF417}.
-
-\begin{description}
-\item[Characters] \verb!0123456789!
-\item[Data] Variable number characters
-\end{description}
-
-\begin{LTXexample}[pos=l,width=2in,wide]
-\begin{pspicture}(2in,0.3in)
-\psbarcode{^453^178^121^239}{columns=2 rows=10}{pdf417}
-\end{pspicture}
-\end{LTXexample}
-
-\subsection{Data matrix}
-For a documentation see \url{http://de.wikipedia.org/wiki/Strichcode#DataMatrix}.
-It is a 2D matrix-style barcode that can encode full 256 character extended-ASCII.
+\section{Symbology Reference}\label{symbology-reference}
+
+\subsection{Point of Sale}\label{point-of-sale}
+
+\hypertarget{ean-13}{\subsubsection{EAN-13}\label{ean-13}}
+
+\textbf{EAN-13} is an extension of the \protect\hyperlink{upc-a}{UPC-A}
+barcode symbology that usually carries a GTIN-13. It was designed by the
+International Article Numbering Association in 1976 for identification
+of retail goods at point of sale outside of the US.
+
+Also known as: EAN, UCC-13, European Article Number, International
+Article Number, JAN, JAN-13.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ EAN-13+2 is an extension of EAN-13 that includes a
+ \protect\hyperlink{ean-2}{two-digit add-on}.
+\item
+ EAN-13+5 is an extension of EAN-13 that includes a
+ \protect\hyperlink{ean-5}{five-digit add-on}.
+\item
+ EAN-99 is a special form of EAN-13 starting with \texttt{99} that is
+ used as an in-store coupon.
+\item
+ \protect\hyperlink{ean-8}{EAN-8} is a barcode symbology derived from
+ EAN-13 that is designed for small packaging. It uses a distinct
+ numbering system based on GTIN-8.
+\item
+ \protect\hyperlink{isbn}{ISBN} is a variant of EAN-13 used to identify
+ books.
+\item
+ \protect\hyperlink{ismn}{ISMN} is a variant of EAN-13 used to identify
+ printed music.
+\item
+ \protect\hyperlink{issn}{ISSN} is a variant of EAN-13 used to identify
+ periodicals.
+\item
+ \protect\hyperlink{gs1-composite-symbols}{EAN-13 Composite} is a
+ variant of EAN-13 that should be used when a CC-A or CC-B GS1
+ Composite 2D component is required.
+\end{itemize}
+
+Standards: ISO/IEC 15420, BS EN 797, GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field for a EAN-13 may contain twelve or thirteen digits,
+ optionally followed by a space then two or five digits if an
+ \protect\hyperlink{ean-2}{EAN-2} or \protect\hyperlink{ean-5}{EAN-5}
+ add-on is required.
+\item
+ If twelve digits of primary data are supplied then the check digit is
+ calculated automatically. Otherwise the provided check digit must be
+ correct.
+\item
+ The \textbf{includetext} option should normally be supplied.
+\item
+ The \textbf{guardwhitespace} option enables the display of whitespace
+ guard marks.
+\end{itemize}
+
+\paragraph{Examples}\label{examples}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: 9771473968012
+Options: includetext guardwhitespace
+Encoder: ean13
+\end{verbatim}
+
+\begin{verbatim}
+Data: 977147396801
+Options: includetext guardwhitespace
+Encoder: ean13
+\end{verbatim}
+
+\includegraphics{images/ean13-1.eps}
+
+A symbol that includes a \protect\hyperlink{ean-5}{five-digit add-on}:
+
+\begin{verbatim}
+Data: 9771473968012 54499
+Options: includetext guardwhitespace
+Encoder: ean13
+\end{verbatim}
+
+\includegraphics{images/ean13-2.eps}
+
+\hypertarget{ean-8}{\subsubsection{EAN-8}\label{ean-8}}
+
+\textbf{EAN-8} is derived from the \protect\hyperlink{ean-13}{EAN-13}
+barcode symbology and is designed for small packaging. It usually
+carries a GTIN-8.
+
+Also known as: UCC-8, JAN-8.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ EAN-8+2 is an extension of EAN-8 that includes a
+ \protect\hyperlink{ean-2}{two-digit add-on}.
+\item
+ EAN-8+5 is an extension of EAN-8 that includes a
+ \protect\hyperlink{ean-5}{five-digit add-on}.
+\item
+ EAN-Velocity is a special form of EAN-8 starting with \texttt{0} that
+ is used for in-store coupons.
+\item
+ \protect\hyperlink{ean-13}{EAN-13} is a longer variant of EAN-8 which
+ has a distinct number system based on GTIN-13.
+\item
+ \protect\hyperlink{gs1-composite-symbols}{EAN-8 Composite} is a
+ variant of EAN-8 that should be used when a CC-A or CC-B GS1 composite
+ 2D component is required.
+\end{itemize}
+
+Standards: ISO/IEC 15420, BS EN 797, GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-1}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field takes either seven or eight digits, optionally followed
+ by a space then two or five digits if an
+ \protect\hyperlink{ean-2}{EAN-2} or \protect\hyperlink{ean-5}{EAN-5}
+ add-on is required.
+\item
+ If seven digits of primary data are supplied then the check digit is
+ calculated automatically. Otherwise the provided check digit must be
+ correct.
+\item
+ The \textbf{includetext} option should normally be supplied.
+\item
+ The \textbf{guardwhitespace} option enables the display of white space
+ guard marks.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-1}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: 01335583
+Options: includetext
+Encoder: ean8
+\end{verbatim}
+
+\begin{verbatim}
+Data: 0133558
+Options: includetext
+Encoder: ean8
+\end{verbatim}
+
+\includegraphics{images/ean8-1.eps}
+
+Truncated with white space guards:
+
+\begin{verbatim}
+Data: 01335583
+Options: includetext height=0.5 guardwhitespace
+Encoder: ean8
+\end{verbatim}
+
+\includegraphics{images/ean8-2.eps}
+
+\hypertarget{upc-a}{\subsubsection{UPC-A}\label{upc-a}}
+
+The \textbf{UPC-A} barcode symbology is used for identification of
+retail goods at point of sale inside of the US. It usually carries a
+GTIN-12.
+
+Also known as: UPC, UCC-12, Universal Product Code.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ UPC-A+2 is an extension of UPC-A that includes a
+ \protect\hyperlink{ean-2}{two-digit add-on}.
+\item
+ UPC-A+5 is an extension of UPC-A that includes a
+ \protect\hyperlink{ean-5}{five-digit add-on}.
+\item
+ \protect\hyperlink{upc-e}{UPC-E} is a barcode symbology derived from
+ UPC-A that is designed for small packaging.
+\item
+ \protect\hyperlink{gs1-composite-symbols}{UPC-A Composite} is a
+ variant of UPC-A that should be used when a CC-A or CC-B
+ \protect\hyperlink{gs1-composite-symbols}{GS1 composite} 2D component
+ is required.
+\item
+ A UPC-A symbol can be converted to an
+ \protect\hyperlink{ean-13}{EAN-13} symbol by prefixing the GTIN-12
+ with 0 to make the equivalent GTIN-13.
+\end{itemize}
+
+Standards: ISO/IEC 15420, BS EN 797, GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-2}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field for a UPC-A may contain eleven or twelve digits,
+ optionally followed by a space then two or five digits if an
+ \protect\hyperlink{ean-2}{EAN-2} or \protect\hyperlink{ean-5}{EAN-5}
+ add-on is required.
+\item
+ Alternatively, the data field may contain seven or eight digits of a
+ \protect\hyperlink{upc-e}{UPC-E} to produce the equivalent UPC-A
+ symbol.
+\item
+ If eleven digits of primary data are supplied then the check digit is
+ calculated automatically. Otherwise the provided check digit must be
+ correct.
+\item
+ The \textbf{includetext} option should normally be supplied.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-2}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: 788581014974
+Options: includetext
+Encoder: upca
+\end{verbatim}
+
+\begin{verbatim}
+Data: 78858101497
+Options: includetext
+Encoder: upca
+\end{verbatim}
+
+\includegraphics{images/upca-1.eps}
+
+A symbol that includes a \protect\hyperlink{ean-5}{five-digit add-on}:
+
+\begin{verbatim}
+Data: 788581014974 54499
+Options: includetext guardwhitespace
+Encoder: upca
+\end{verbatim}
+
+\includegraphics{images/upca-2.eps}
+
+\hypertarget{upc-e}{\subsubsection{UPC-E}\label{upc-e}}
+
+\textbf{UPC-E} is a compacted form of the
+\protect\hyperlink{upc-a}{UPC-A} barcode symbology that usually carries
+a GTIN-12 with a number system of \emph{0} or \emph{1} that has been
+zero compressed.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ UPC-E0 is a UPC-E with a number system of \emph{0}.
+\item
+ UPC-E1 is a UPC-E with a number system of \emph{1}.
+\item
+ UPC-E+2 is an extension of UPC-E that includes a
+ \protect\hyperlink{ean-2}{two-digit add-on}.
+\item
+ UPC-E+5 is an extension of UPC-E that includes a
+ \protect\hyperlink{ean-5}{five-digit add-on}.
+\item
+ \protect\hyperlink{upc-a}{UPC-A} is the full size form of UPC-E.
+\item
+ \protect\hyperlink{gs1-composite-symbols}{UPC-E Composite} is a
+ variant of UPC-E that should be used when a CC-A or CC-B GS1 Composite
+ 2D component is required.
+\end{itemize}
+
+Standards: ISO/IEC 15420, BS EN 797, GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-3}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field takes either seven or eight digits, optionally followed
+ by a space then two or five digits if an
+ \protect\hyperlink{ean-2}{EAN-2} or \protect\hyperlink{ean-5}{EAN-5}
+ add-on is required.
+\item
+ Alternatively, the data field may contain eleven or twelve digits of a
+ \protect\hyperlink{upc-a}{UPC-A} to produce the equivalent UPC-E
+ symbol, provided that the input can be zero suppressed.
+\item
+ If seven digits of primary data are supplied then the check digit is
+ calculated automatically. Otherwise the provided check digit must be
+ correct.
+\item
+ The \textbf{includetext} option should normally be supplied.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-3}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: 01234565
+Options: includetext
+Encoder: upce
+\end{verbatim}
+
+\begin{verbatim}
+Data: 0123456
+Options: includetext
+Encoder: upce
+\end{verbatim}
+
+\includegraphics{images/upce-1.eps}
+
+A truncated symbol:
+
+\begin{verbatim}
+Data: 01234565
+Options: includetext height=0.5
+Encoder: upce
+\end{verbatim}
+
+\includegraphics{images/upce-2.eps}
+
+\hypertarget{isbn}{\subsubsection{ISBN}\label{isbn}}
+
+An \textbf{ISBN} barcode is a variant of
+\protect\hyperlink{ean-13}{EAN-13} that is used to identify books.
+
+Also known as: ISBN-13, International Standard Book Number, Bookland
+EAN-13.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ ISBN-10 is a legacy format that was depreciated for public use after
+ 1st January 2007.
+\end{itemize}
+
+Standards: ISO 2108, ISO/IEC 15420, BS EN 797, GS1 General
+Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-4}
+
+\begin{itemize}
+\tightlist
+\item
+ The data should contain twelve or thirteen digits separated
+ appropriately by dash characters \emph{-}.
+\item
+ The data can also be provided in legacy ISBN-10 format as nine or ten
+ digits separated appropriately by dash characters \emph{-}. This will
+ be automatically upgraded to the ISBN-13 format.
+\item
+ If the last digit of the primary data is not given then the ISBN check
+ digit is calculated automatically.
+\item
+ The \textbf{legacy} option prevents ISBN-10 input from being upgraded
+ to ISBN-13 and will result in a symbol that is obsolete and should not
+ be used at point of sale.
+\item
+ The primary data can optionally be followed by a space then two or
+ five digits if an \protect\hyperlink{ean-2}{EAN-2} or
+ \protect\hyperlink{ean-5}{EAN-5} add-on is required.
+\item
+ The \textbf{includetext} option should normally be supplied.
+\item
+ The \textbf{guardwhitespace} option enables the display of white space
+ guard marks.
+\item
+ The following options are also relevant to this barcode symbology:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \textbf{isbntextfont}: Font name for text above symbol
+ \item
+ \textbf{isbntextsize}: Font size for the text above symbol, in
+ points
+ \item
+ \textbf{isbntextxoffset}: Horizontal position of ISBN text, in
+ points
+ \item
+ \textbf{isbntextyoffset}: Vertical position of ISBN text, in points
+ \end{itemize}
+\end{itemize}
+
+\paragraph{Example ISBN}\label{example-isbn}
+
+Identical symbols, input provided with and without an ISBN check digit:
+
+\begin{verbatim}
+Data: 978-1-873671-00-9
+Options: includetext
+Encoder: isbn
+\end{verbatim}
+
+\begin{verbatim}
+Data: 978-1-873671-00
+Options: includetext
+Encoder: isbn
+\end{verbatim}
+
+\includegraphics{images/isbn-1.eps}
+
+An ISBN with a \protect\hyperlink{ean-5}{five-digit add-on}:
+
+\begin{verbatim}
+Data: 978-1-873671-00-9 54499
+Options: includetext guardwhitespace
+Encoder: isbn
+\end{verbatim}
+
+\includegraphics{images/isbn-2.eps}
+
+The following ISBN-10 input will be automatically upgraded to a valid
+ISBN-13 symbol:
+
+\begin{verbatim}
+Data: 1-86074-271-2
+Options: includetext
+Encoder: isbn
+\end{verbatim}
+
+\begin{verbatim}
+Data: 1-86074-271
+Options: includetext
+Encoder: isbn
+\end{verbatim}
+
+\includegraphics{images/isbn-3.eps}
+
+\paragraph{Example ISBN-10}\label{example-isbn-10}
+
+Note that ISBN-10 is legacy format not for use at P.O.S.
+
+The following will generate an obsolete ISBN-10 symbol:
+
+\begin{verbatim}
+Data: 1-86074-271-8
+Options: legacy includetext guardwhitespace
+Encoder: isbn
+\end{verbatim}
+
+\begin{verbatim}
+Data: 1-86074-271
+Options: legacy includetext guardwhitespace
+Encoder: isbn
+\end{verbatim}
+
+\includegraphics{images/isbn-4.eps}
+
+\hypertarget{ismn}{\subsubsection{ISMN}\label{ismn}}
+
+An \textbf{ISMN} barcode is a variant of
+\protect\hyperlink{ean-13}{EAN-13} with a prefix \emph{979} that is used
+to identify printed music.
+
+Also known as: International Standard Music Number, ISMN-13.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ ISMN-10 is a legacy format that was depreciated for public use.
+\end{itemize}
+
+Standards: ISO 10957, ISO/IEC 15420, BS EN 797, GS1 General
+Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-5}
+
+\begin{itemize}
+\tightlist
+\item
+ The data should contain twelve or thirteen digits separated
+ appropriately by dash characters \emph{-}.
+\item
+ The data can also be provided in legacy ISMN-10 format start \emph{M-}
+ then eight or nine digits separated appropriately by dash characters
+ \emph{-}. This will be automatically upgraded to the ISMN-13 format.
+\item
+ The \textbf{legacy} option prevents ISMN-10 input from being upgraded
+ to ISMN-13 and will result in a symbol that is obsolete and should not
+ be used at point of sale.
+\item
+ If the last digit of the primary data is not given then the ISMN check
+ digit is calculated automatically.
+\item
+ The primary data can optionally be followed by a space then two or
+ five digits if an \protect\hyperlink{ean-2}{EAN-2} or
+ \protect\hyperlink{ean-5}{EAN-5} add-on is required.
+\item
+ The \textbf{includetext} option should normally be supplied.
+\item
+ The \textbf{guardwhitespace} option enables the display of white space
+ guard marks.
+\item
+ The following options are also relevant to this barcode symbology:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \textbf{ismntextfont}: Font name for text above symbol
+ \item
+ \textbf{ismntextsize}: Font size for the text above symbol, in
+ points
+ \item
+ \textbf{ismntextxoffset}: Horizontal position of ISMN text, in
+ points
+ \item
+ \textbf{ismntextyoffset}: Vertical position of ISMN text, in points
+ \end{itemize}
+\end{itemize}
+
+\paragraph{Example ISMN}\label{example-ismn}
+
+Identical symbols, input provided with and without an ISMN check digit:
+
+\begin{verbatim}
+Data: 979-0-2600-0043-8
+Options: includetext
+Encoder: ismn
+\end{verbatim}
+
+\begin{verbatim}
+Data: 979-0-2600-0043
+Options: includetext
+Encoder: ismn
+\end{verbatim}
+
+\includegraphics{images/ismn-1.eps}
+
+The following ISMN-10 input will be automatically upgraded to a valid
+ISMN-13 symbol:
+
+\begin{verbatim}
+Data: M-345-24680-5
+Options: includetext
+Encoder: ismn
+\end{verbatim}
+
+\begin{verbatim}
+Data: M-345-24680
+Options: includetext
+Encoder: ismn
+\end{verbatim}
+
+\includegraphics{images/ismn-2.eps}
+
+\paragraph{Example ISMN-10}\label{example-ismn-10}
+
+Note that ISMN-10 is a legacy format not for use at P.O.S.
+
+The following will generate an obsolete ISMN-10 symbol:
+
+\begin{verbatim}
+Data: M-345-24680-5
+Options: legacy includetext guardwhitespace
+Encoder: ismn
+\end{verbatim}
+
+\begin{verbatim}
+Data: M-345-24680
+Options: legacy includetext guardwhitespace
+Encoder: ismn
+\end{verbatim}
+
+\includegraphics{images/ismn-3.eps}
+
+\hypertarget{issn}{\subsubsection{ISSN}\label{issn}}
+
+An \textbf{ISSN} barcode is an \protect\hyperlink{ean-13}{EAN-13} with
+prefix \emph{977} used to identify periodicals.
+
+Also known as: International Standard Serial Number.
+
+Standards: ISO 3297, ISO/IEC 15420, BS EN 797, GS1 General
+Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-6}
+
+\begin{itemize}
+\tightlist
+\item
+ The data should contain the seven or eight digits ISSN separated by a
+ dash characters \emph{-}, followed by a two-digit sequence variant,
+ optionally followed by two or five digits if a
+ \protect\hyperlink{ean-2}{two-digit add-on} or
+ \protect\hyperlink{ean-5}{five-digit add-on} is required.
+\item
+ If the last digit of the ISSN data is not given then the ISSN check
+ digit is calculated automatically.
+\item
+ The \textbf{includetext} option should normally be supplied.
+\item
+ The \textbf{guardwhitespace} option enables the display of white space
+ guard marks.
+\item
+ The following options are also relevant to this barcode symbology:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \textbf{issntextfont}: Font name for text above symbol
+ \item
+ \textbf{issntextsize}: Font size for the text above symbol, in
+ points
+ \item
+ \textbf{issntextxoffset}: Horizontal position of ISSN text, in
+ points
+ \item
+ \textbf{issntextyoffset}: Vertical position of ISSN text, in points
+ \end{itemize}
+\end{itemize}
+
+A sequence variant is a two-digit number that usually starts at zero and
+is incremented whenever the recommended retail price is amended, where
+applicable.
+
+\paragraph{Example}\label{example}
+
+Identical symbols, input provided with and without an ISSN check digit
+and having sequence number \emph{00}:
+
+\begin{verbatim}
+Data: 0317-8471 00
+Options: includetext guardwhitespace
+Encoder: issn
+\end{verbatim}
+
+\begin{verbatim}
+Data: 0317-847 00
+Options: includetext guardwhitespace
+Encoder: issn
+\end{verbatim}
+
+\includegraphics{images/issn-1.eps}
+
+An ISSN with sequence number \emph{03} and a
+\protect\hyperlink{ean-2}{two-digit add-on} representing issue number
+\emph{17}:
+
+\begin{verbatim}
+Data: 0317-8471 03 17
+Options: includetext guardwhitespace
+Encoder: issn
+\end{verbatim}
+
+\begin{verbatim}
+Data: 0317-847 03 17
+Options: includetext guardwhitespace
+Encoder: issn
+\end{verbatim}
+
+\includegraphics{images/issn-2.eps}
+
+\subsection{Two-Dimensional}\label{two-dimensional}
+
+\hypertarget{aztec-code}{\subsubsection{Aztec Code}\label{aztec-code}}
+
+\textbf{Aztec Code} is a 2D matrix-style barcode symbology. It can
+encode full 256-character extended-ASCII.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{aztec-runes}{Aztec Runes} are a set of small
+ barcode symbols that are used for special applications.
+\end{itemize}
+
+Standards: ISO/IEC 24778, ANSI/AIM BC13 - ISS Aztec Code.
+
+\paragraph{Data and Options}\label{data-and-options-7}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field can contain any extended ASCII data.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters.
+\item
+ The \textbf{eclevel} option is used to specify the percentage of error
+ correction to be applied when expanding the data, by default
+ \texttt{23}.
+\item
+ The \textbf{ecaddchars} option is used to specify how many additional
+ error correction characters to apply the data once expanded by the
+ eclevel percentage, by default \texttt{3}.
+\item
+ The \textbf{layers} option is used to specify a particular number of
+ layers in which to encode the data, between \texttt{1} and
+ \texttt{32}. By default the encoder will create a symbol with be
+ minimal number of layers to encode the given data.
+\item
+ The \textbf{format} option is used to select between
+ \texttt{format=full} and \texttt{format=compact} symbol types. By
+ default the encoder will choose the most appropriate format to create
+ a symbol of minimal size.
+\item
+ \emph{Deprecated: Use \protect\hyperlink{aztec-runes}{Aztec Runes}
+ instead. The \textbf{format} option can also be used to create Aztec
+ Code ``runes'', using \texttt{format=rune}. In this case the rune
+ symbol number should be given in the data field.}
+\item
+ The \textbf{readerinit} option denotes that the symbol is used for
+ programming the barcode reader.
+\item
+ The \textbf{raw} option denotes that the data field is providing the
+ input as a pre-encoded bitstream suitable for direct low-level
+ encoding.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-4}
+
+\begin{verbatim}
+Data: This is Aztec Code
+Options:
+Encoder: azteccode
+\end{verbatim}
+
+\includegraphics{images/aztec-1.eps}
+
+\begin{verbatim}
+Data: This is ^065ztec Code
+Options: parse eclevel=50 ecaddchars=0
+Encoder: azteccode
+\end{verbatim}
+
+\includegraphics{images/aztec-6.eps}
+
+\begin{verbatim}
+Data: ABC123
+Options: layers=3 format=full
+Encoder: azteccode
+\end{verbatim}
+
+\includegraphics{images/aztec-2.eps}
+
+\begin{verbatim}
+Data: ABC123
+Options: format=compact
+Encoder: azteccode
+\end{verbatim}
+
+\includegraphics{images/aztec-5.eps}
+
+\begin{verbatim}
+Data: 00100111001000000101001101111000010100111100101000000110
+Options: raw
+Encoder: azteccode
+\end{verbatim}
+
+\includegraphics{images/aztec-4.eps}
+
+\hypertarget{aztec-runes}{\subsubsection{Aztec
+Runes}\label{aztec-runes}}
+
+\textbf{Aztec Runes} are a set of small barcode symbols that are used
+for special applications.
+
+Variants:
+
+\protect\hyperlink{aztec-code}{Aztec Code} is a 2D matrix-style barcode
+symbology that can encode full 256 character extended-ASCII.
+
+Standards: ISO/IEC 24778, ANSI/AIM BC13 - ISS Aztec Code.
+
+\paragraph{Data and Options}\label{data-and-options-8}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field contains the rune number \texttt{0} to \texttt{255}.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-5}
+
+\begin{verbatim}
+Data: 25
+Options:
+Encoder: aztecrune
+\end{verbatim}
+
+\includegraphics{images/aztec-3.eps}
+
+\hypertarget{data-matrix}{\subsubsection{Data
+Matrix}\label{data-matrix}}
+
+The \textbf{Data Matrix} symbology is 2D matrix-style barcode that can
+encode full 256 character extended-ASCII.
+
Also known as: Data Matrix ECC 200.
+
Variants:
-\begin{description}
-\item[GS1] DataMatrix is a variant of Data Matrix that should be used when encoding data that is in
-GS1 Application Identifier standard format.
- \item[HIBC] Data Matrix is a variant of Data Matrix that should be used when encoding
- HIBC formatted data.
-\end{description}
-Standards: ISO/IEC 16022, ANSI/AIM BC11 ISS.
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{gs1-datamatrix}{GS1 DataMatrix} is a variant of
+ Data Matrix that should be used when encoding data that is in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format}.
+\item
+ \protect\hyperlink{hibc-symbols}{HIBC Data Matrix} is a variant of
+ Data Matrix that should be used when encoding HIBC formatted data.
+\end{itemize}
-Data and Options
+Standards: ISO/IEC 16022, ANSI/AIM BC11 - ISS Data Matrix.
+
+\paragraph{Data and Options}\label{data-and-options-9}
\begin{itemize}
-\item The data field can contain any extended ASCII data.
-\item When the parse option is specified, any instances of \verb|^NNN| in the data field
-are replaced with their equivalent ASCII value, useful for specifying unprintable characters.
-\item When the parsefnc option is specified, non-data function characters can be specified by \verb|^FNC1|.
-\item The columns and rows options are used to specify the size of the symbol, either square or rectangular, one of:
- Square: 10x10, 12x12, 14x14, 16x16, 18x18, 20x20, 22x22, 24x24, 26x26, 32x32, 36x36, 40x40,
- 44x44, 48x48, 52x52, 64x64, 72x72, 80x80, 88x88, 96x96, 104x104, 120x120, 132x132, 144x144
- Rectangular: 8x18, 8x32, 12x26, 12x36, 16x36, 16x48
-\item If the columns and rows are unspecified, the encoder will default to creating a (non-rectangular)
-symbol that is the minimum size to represent the given data.
-\item The raw option denotes that the data field is providing the input as a pre-encoded codewords in \verb|^NNN|
-format, suitable for direct low-level encoding.
-\item The encoding option specifies how the data is to be encoded. Possible values are:
+\tightlist
+\item
+ The data field can contain any extended ASCII data.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value. This is useful for specifying unprintable characters.
+\item
+ When the \textbf{parsefnc} option is specified, non-data function
+ characters can be specified by \texttt{\^{}FNC1}, \texttt{\^{}PROG},
+ \texttt{\^{}MAC5}, \texttt{\^{}MAC6}.
+\item
+ The \textbf{format} option is used to specify the shape of the symbol,
+ either \texttt{square} (default) or \texttt{rectangle}.
+\item
+ The \textbf{dmre} option enable Data Matrix Rectangular Extension with
+ increases the number of rectangular symbol sizes available.
+\item
+ The \textbf{columns} and \textbf{rows} options are used to specify the
+ size of the symbol.
+\item
+ The \textbf{version} option can also be used to specify the symbol
+ size, as \texttt{version=RxC}. Valid options are:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ With \texttt{format=square}: \emph{10x10}, \emph{12x12},
+ \emph{14x14}, \emph{16x16}, \emph{18x18}, \emph{20x20},
+ \emph{22x22}, \emph{24x24}, \emph{26x26}, \emph{32x32},
+ \emph{36x36}, \emph{40x40}, \emph{44x44}, \emph{48x48},
+ \emph{52x52}, \emph{64x64}, \emph{72x72}, \emph{80x80},
+ \emph{88x88}, \emph{96x96}, \emph{104x104}, \emph{120x120},
+ \emph{132x132}, \emph{144x144}
+ \item
+ With \texttt{format=rectangle}: \emph{8x18}, \emph{8x32},
+ \emph{12x26}, \emph{12x36}, \emph{16x36}, \emph{16x48}
+ \item
+ With \texttt{format=rectangle} and \texttt{dmre}: \emph{8x18},
+ \emph{8x32}, \emph{8x48}, \emph{8x64}, \emph{12x26}, \emph{12x36},
+ \emph{12x64}, \emph{16x36}, \emph{16x48}, \emph{16x64},
+ \emph{24x32}, \emph{24x36}, \emph{24x48}, \emph{24x64},
+ \emph{26x32}, \emph{26x40}, \emph{26x48}, \emph{26x64}
+ \end{itemize}
+\item
+ If \textbf{columns}, \textbf{rows} and \textbf{version} are
+ unspecified the encoder will default to creating a symbol of the
+ specified \textbf{format} that is the minimum size to represent the
+ given data.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-6}
+
+\begin{verbatim}
+Data: This is Data Matrix
+Options:
+Encoder: datamatrix
+\end{verbatim}
+
+\begin{verbatim}
+Data: This is ^068ata Matrix
+Options: parse
+Encoder: datamatrix
+\end{verbatim}
+
+\includegraphics{images/datamatrix-1.eps}
+
+\begin{verbatim}
+Data: Fixed size
+Options: rows=48 columns=48
+Encoder: datamatrix
+\end{verbatim}
+
+\includegraphics{images/datamatrix-2.eps}
+
+\begin{verbatim}
+Data: Rectangular
+Options: format=rectangle version=16x48
+Encoder: datamatrix
+\end{verbatim}
+
+\includegraphics{images/datamatrix-3.eps}
+
+\subsubsection{Han Xin Code}\label{han-xin-code}
+
+The \textbf{Han Xin Code} symbology is a 2D matrix-style barcode
+symbology that can encode full 256 character extended-ASCII.
+
+Also known as: Chinese Sensible.
+
+Standards: GB/T 21049-2007.
+
+\paragraph{Data and Options}\label{data-and-options-10}
+
\begin{itemize}
-\item encoding=ascii - Extended ASCII data (default).
-\item encoding=c40 - Optimized encoding for upper-case alphanumeric data. Can also encode extended ASCII
-data but incurs extra codeword overhead.
-\item encoding=text - Optimized encoding for lower-case alphanumeric data. Can also encode
-extended ASCII data but incurs extra codeword overhead.
-\item encoding=x12 - Optimized encoding restricted to upper-case alphanumeric data plus the characters \verb|\r * >| and space.
-\item encoding=raw - Same as the raw option.
+\tightlist
+\item
+ The data field can contain any extended ASCII data.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters.
+\item
+ The \textbf{eclevel} option is used to specify the error correction
+ level:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{eclevel=L1} - Lowest
+ \item
+ \texttt{eclevel=L2}
+ \item
+ \texttt{eclevel=L3}
+ \item
+ \texttt{eclevel=L4} - Highest
+ \end{itemize}
+\item
+ The \textbf{version} option is used to specify the size of the symbol,
+ 1 to 84.
+\item
+ If unspecified the encoder will select the version of the symbol that
+ is the minimum size to represent the given data at the selected error
+ correction level.
\end{itemize}
-\item The prefix option allows adding a special codeword to the symbol prior to the data. Possible values are:
+
+\paragraph{Examples}\label{examples-7}
+
+\begin{verbatim}
+Data: Han Xin Code
+Options: version=10 eclevel=L4
+Encoder: hanxin
+\end{verbatim}
+
+\includegraphics{images/hanxin-1.eps}
+
+\hypertarget{micropdf417}{\subsubsection{MicroPDF417}\label{micropdf417}}
+
+The \textbf{MicroPDF417} barcode symbology is 2D stacked-linear barcode
+based on \protect\hyperlink{pdf417}{PDF417} that can encode full 256
+character extended-ASCII.
+
+Variants:
+
\begin{itemize}
-\item prefix=MAC5 - Prefixes the data with the 05 Macro codeword.
-\item prefix=MAC6 - Prefixes the data with the 06 Macro codeword.
-\item prefix=PROG - Prefixes the data with the reader programming codeword. May require encoding=c40, depending on the reader.
-\item prefix=FNC1 - Prefixes the data with the FNC1 codeword.
+\tightlist
+\item
+ \protect\hyperlink{pdf417}{PDF417} is a larger variant of the
+ MicroPDF417 barcode.
+\item
+ \protect\hyperlink{hibc-symbols}{HIBC MicroPDF417} is a variant of
+ MicroPDF417 that should be used when encoding HIBC formatted data.
\end{itemize}
+
+Standards: ISO/IEC 24728, AIM ISS - MicroPDF417.
+
+\paragraph{Data and Options}\label{data-and-options-11}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field can contain any extended ASCII data.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters.
+\item
+ The \textbf{columns} and \textbf{rows} options are used to specify the
+ size of the symbol. Valid values are:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \emph{1x11}, \emph{1x14}, \emph{1x17}, \emph{1x20}, \emph{1x24},
+ \emph{1x28}, \emph{2x8}, \emph{2x11}, \emph{2x14}, \emph{2x17},
+ \emph{2x20}, \emph{2x23}, \emph{2x26}, \emph{3x6}, \emph{3x8},
+ \emph{3x10}, \emph{3x12}, \emph{3x15}, \emph{3x20}, \emph{3x26},
+ \emph{3x32}, \emph{3x38}, \emph{3x44}, \emph{4x4}, \emph{4x6},
+ \emph{4x8}, \emph{4x10}, \emph{4x12}, \emph{4x15}, \emph{4x20},
+ \emph{4x26}, \emph{4x32}, \emph{4x38}, \emph{4x44}
+ \end{itemize}
+\item
+ If the \textbf{columns} and \textbf{rows} are unspecified the encoder
+ will default to creating a symbol that is the minimum size to
+ represent the given data.
+\item
+ The \textbf{rowmult} option is used to specify how tall each bar is,
+ with respect to the minimum module width. The default is 3.
+\item
+ The \textbf{raw} option denotes that the data field is providing the
+ input as a pre-encoded codewords in \texttt{\^{}NNN} format, suitable
+ for direct low-level encoding.
+\item
+ The \textbf{cca} option identifies this symbol as a \emph{CC-A} 2D
+ component of a \protect\hyperlink{gs1-composite-symbols}{GS1
+ Composite} symbol.
+\item
+ The \textbf{ccb} option identifies this symbol as a \emph{CC-B} 2D
+ component of a \protect\hyperlink{gs1-composite-symbols}{GS1
+ Composite} symbol.
+\item
+ Note: Special size rules apply when the \textbf{cca} option is given,
+ in which case the \textbf{columns} and \textbf{rows} options that are
+ used to specify the size of the symbol must be one of:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \emph{2x5}, \emph{2x6}, \emph{2x7}, \emph{2x8}, \emph{2x9},
+ \emph{2x10}, \emph{2x12}, \emph{3x4}, \emph{3x5}, \emph{3x6},
+ \emph{3x7}, \emph{3x8}, \emph{4x3}, \emph{4x4}, \emph{4x5},
+ \emph{4x6}, \emph{4x7}
+ \end{itemize}
\end{itemize}
+\paragraph{Examples}\label{examples-8}
+\begin{verbatim}
+Data: MicroPDF417
+Options:
+Encoder: micropdf417
+\end{verbatim}
-\begin{description}
-\item[Characters] extended ASCII
-\item[Data] Variable number characters
-\end{description}
+\includegraphics{images/micropdf417-1.eps}
-\begin{LTXexample}[pos=l,width=1.6in,wide]
-\begin{pspicture}(1.5in,1.5in)
-\psbarcode{Herbert Voss ^142^164^186}{rows=48 columns=48 parse}{datamatrix}
-\end{pspicture}
-\end{LTXexample}
+\begin{verbatim}
+Data: MicroP^068F417
+Options: parse rows=15 columns=4
+Encoder: micropdf417
+\end{verbatim}
+\includegraphics{images/micropdf417-2.eps}
-\begin{LTXexample}[pos=l,width=1.6in,wide]
-\begin{pspicture}(1in,1in)
-\psbarcode{^098^099^100^142^164^186^101^102^103^104^105}{raw}{datamatrix}
-\end{pspicture}
-\end{LTXexample}
+\hypertarget{pdf417}{\subsubsection{PDF417}\label{pdf417}}
+The \textbf{PDF417} barcode symbology is 2D stacked-linear barcode that
+can encode full 256 character extended-ASCII.
+Variants:
-\subsection{2D Maxi code}
-For a documentation see \url{http://www.logicalconcepts.eu/wDeutsch/autoid/barcodetypen/index.html?navid=21}.
-MaxiCode is a fixed-sized two-dimensional symbology created by the
-United Parcel Service that is primarily used for freight sortation
-and tracking. It's symbols have modules arranged in a hexagonal
-grid around a circular finder pattern which can be read omnidirectionally.
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{compact-pdf417}{Compact PDF417} is a shortened form
+ of the PDF417 barcode that is used in applications where the space for
+ the symbol is restricted.
+\item
+ \protect\hyperlink{micropdf417}{MicroPDF417} is a smaller variant of
+ the PDF417 barcode.
+\item
+ \protect\hyperlink{hibc-symbols}{HIBC PDF417} is a variant of PDF417
+ that should be used when encoding HIBC formatted data.
+\end{itemize}
+
+Standards: ISO/IEC 15438, DD ENV 12925, AIM USS - PDF417.
+
+\paragraph{Data and Options}\label{data-and-options-12}
\begin{itemize}
-\item MaxiCode has five alphabets A, B, C, D and E, each containing 64 characters.
+\tightlist
+\item
+ The data field can contain any extended ASCII data.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters.
+\item
+ The \textbf{eclevel} option is used to specify the error correction
+ level, from 1 to 5. The default is to choose a standard level of error
+ correction that is determined by the encoded data length.
+\item
+ The \textbf{columns} option specifies the number of columns (or groups
+ of bars) in the output symbol, from 1 to 30.
+\item
+ The \textbf{rows} option specifies the minimum number of rows in the
+ symbol, from 3 to 90.
+\item
+ If \textbf{rows} is unspecified the encoder will select a number that
+ creates a symbol that is the minimum size to represent the given data.
+\item
+ The \textbf{rowmult} option is used to specify how tall each bar is,
+ with respect to the minimum module width. The default is 3.
+\item
+ \emph{Deprecated: Use \protect\hyperlink{compact-pdf417}{Compact
+ PDF417} instead. The \textbf{compact} option is used to create a
+ compact/truncated PDF417 symbol that has fewer bars per row that a
+ standard symbol and hence is more narrow.}
+\item
+ The \textbf{raw} option denotes that the data field is providing the
+ input as a pre-encoded codewords in \texttt{\^{}NNN} format, suitable
+ for direct low-level encoding.
+\item
+ The \textbf{ccc} option identifies this symbol as a \emph{CC-C} 2D
+ component of a \protect\hyperlink{gs1-composite-symbols}{GS1
+ Composite} symbol.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-9}
+
+\begin{verbatim}
+Data: PDF417
+Options:
+Encoder: pdf417
+\end{verbatim}
+
+\includegraphics{images/pdf417-1.eps}
+
+\begin{verbatim}
+Data: P^068F417
+Options: parse columns=2 rows=15
+Encoder: pdf417
+\end{verbatim}
+
+\includegraphics{images/pdf417-2.eps}
+
+\begin{verbatim}
+Data: Strong error correction
+Options: columns=2 eclevel=5
+Encoder: pdf417
+\end{verbatim}
+
+\includegraphics{images/pdf417-4.eps}
+
+\begin{verbatim}
+Data: ^453^178^121^239
+Options: raw columns=2
+Encoder: pdf417
+\end{verbatim}
+
+\includegraphics{images/pdf417-5.eps}
+
+\hypertarget{compact-pdf417}{\subsubsection{Compact
+PDF417}\label{compact-pdf417}}
+
+\textbf{Compact PDF417} is a shortened form of the
+\protect\hyperlink{pdf417}{PDF417} barcode that is used in applications
+where the space for the symbol is restricted.
+
+Also known as: Truncated PDF417
+
+Variants:
+
\begin{itemize}
- \item Alphabet A contains mostly upper case letters, numbers and some common ASCII symbols.
- \item Alphabet B contains mostly lower case letters and common ASCII symbols.
- \item Alphabet C contains mostly upper case letters from the extended ASCII character set and less common ASCII symbols.
- \item Alphabet D contains mostly lower case letters from the extended ASCII character set and less common ASCII symbols.
- \item Alphabet E contains mostly the special ASCII characters and unprintable symbols.
+\tightlist
+\item
+ \protect\hyperlink{pdf417}{PDF417} is the larger, more popular
+ variant.
+\item
+ \protect\hyperlink{micropdf417}{MicroPDF417} is a smaller variant of
+ the PDF417 barcode.
+\item
+ \protect\hyperlink{hibc-symbols}{HIBC PDF417} is a variant of PDF417
+ that should be used when encoding HIBC formatted data.
\end{itemize}
-\item Non-printable/typable characters can be entered as their escaped ordinal values, e.g. \textasciicircum 028 for FS and \textasciicircum 059 for [shift B], etc.
-\item The symbol always starts in alphabet A which is suitable for the most basic contents.
-\item You can switch the working alphabet within the data using the [latch B], [latch A], ... characters.
-\item You can temporarily shift to another alphabet for a varying number of characters using the [shift A], [2 shift A], [3 shift A], ... characters.
-\item You can remain in an alphabet to which you have shifted using the [lock in C], [lock in D], ... characters.
-\item There are also more advanced features for encoding for which a thorough reading of the specification is required as these cannot be described succinctly here.
+
+Standards: ISO/IEC 15438, DD ENV 12925, AIM USS - PDF417.
+
+\paragraph{Data and Options}\label{data-and-options-13}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field can contain any extended ASCII data.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters.
+\item
+ The \textbf{eclevel} option is used to specify the error correction
+ level, from 1 to 5. The default is to choose a standard level of error
+ correction that is determined by the encoded data length.
+\item
+ The \textbf{columns} option specifies the number of columns (or groups
+ of bars) in the output symbol, from 1 to 30.
+\item
+ The \textbf{rows} option specifies the minimum number of rows in the
+ symbol, from 3 to 90.
+\item
+ If \textbf{rows} is unspecified the encoder will select a number that
+ creates a symbol that is the minimum size to represent the given data.
+\item
+ The \textbf{rowmult} option is used to specify how tall each bar is,
+ with respect to the minimum module width. The default is 3.
+\item
+ The \textbf{raw} option denotes that the data field is providing the
+ input as a pre-encoded codewords in \texttt{\^{}NNN} format, suitable
+ for direct low-level encoding.
\end{itemize}
-The modes:
+\paragraph{Examples}\label{examples-10}
+
+\begin{verbatim}
+Data: A truncated PDF417
+Options: columns=4
+Encoder: pdf417compact
+\end{verbatim}
+
+\includegraphics{images/pdf417-3.eps}
+
+\hypertarget{qr-code}{\subsubsection{QR Code}\label{qr-code}}
+
+The \textbf{QR Code} symbology is a 2D matrix-style barcode symbology
+that can encode full 256 character extended-ASCII.
+
+Also known as: Quick Response Code.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{micro-qr-code}{Micro QR Code} is a small QR Code
+ that is used in applications that require a small symbol space.
+\item
+ \protect\hyperlink{gs1-qr-code}{GS1 QR Code} is a variant of Data
+ Matrix that should be used when encoding data that is in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format}.
+\item
+ \protect\hyperlink{hibc-symbols}{HIBC QR Code} is a variant of QR Code
+ that should be used when encoding HIBC formatted data.
+\end{itemize}
+
+Standards: ISO/IEC 18004, JIS X 0510, ITS - QR Code, AIM ISS - QR Code.
+
+\paragraph{Data and Options}\label{data-and-options-14}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field can contain any extended ASCII data.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters.
+\item
+ The \textbf{eclevel} option is used to specify the error correction
+ level:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{eclevel=L} - Low
+ \item
+ \texttt{eclevel=M} - Medium (default)
+ \item
+ \texttt{eclevel=Q} - Quality
+ \item
+ \texttt{eclevel=H} - High
+ \end{itemize}
+\item
+ The \textbf{version} option is used to specify the size of the symbol,
+ 1 to 40.
+\item
+ If unspecified the encoder will select the version of the symbol that
+ is the minimum size to represent the given data at the selected error
+ correction level.
+\item
+ The \textbf{format} option is used to select between
+ \texttt{format=full} and \texttt{format=micro} (deprecated) symbol
+ types. Alternatively, \texttt{format=any} will select the optimal
+ symbol format for the given data. By default \emph{full} format
+ symbols will be generated.
+\item
+ Note: It is recommended that the
+ \protect\hyperlink{micro-qr-code}{Micro QR Code} encoder is used for
+ such symbols.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-11}
+
+\begin{verbatim}
+Data: QR Code
+Options:
+Encoder: qrcode
+\end{verbatim}
+
+\begin{verbatim}
+Data: QR ^067ode
+Options: parse
+Encoder: qrcode
+\end{verbatim}
+
+\includegraphics{images/qrcode-1.eps}
+
+\begin{verbatim}
+Data: QR CODE 1234
+Options: version=10 eclevel=Q
+Encoder: qrcode
+\end{verbatim}
+
+\includegraphics{images/qrcode-2.eps}
+
+\hypertarget{micro-qr-code}{\subsubsection{Micro QR
+Code}\label{micro-qr-code}}
+
+The \textbf{Micro QR Code} symbology is a smaller variant of
+\protect\hyperlink{qr-code}{QR Code} that is used in applications that
+require a small symbol space.
+
+Also known as: Micro Quick Response Code.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{qr-code}{QR Code} is the more popular, larger
+ variant.
+\end{itemize}
+
+Standards: ISO/IEC 18004, JIS X 0510, ITS - QR Code, AIM ISS - QR Code.
+
+\paragraph{Data and Options}\label{data-and-options-15}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field can contain any extended ASCII data and will select the
+ appropriate size symbol to work around the following restrictions:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ An M1 symbol is only compatible with numeric data.
+ \item
+ An M2 symbol is only compatible with alphanumeric data.
+ \end{itemize}
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters.
+\item
+ The \textbf{version} option is used to specify the size of the symbol,
+ either \texttt{version=M1}, \texttt{version=M2}, \texttt{version=M3}
+ or \texttt{version=M4}.
+\item
+ The \textbf{eclevel} option is used to specify the error correction
+ level:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{eclevel=L} - Low (default)
+ \item
+ \texttt{eclevel=M} - Medium; Not compatible with M1 symbols
+ \item
+ \texttt{eclevel=Q} - Quality; Only compatible with M4 symbols
+ \end{itemize}
+\item
+ If unspecified the encoder will select the version of the symbol that
+ is the minimum size to represent the given data at the selected error
+ correction level.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-12}
+
+\begin{verbatim}
+Data: 01234567
+Options:
+Encoder: microqrcode
+\end{verbatim}
+
+\includegraphics{images/qrcode-5.eps}
+
+\subsection{One-Dimensional}\label{one-dimensional}
+
+\hypertarget{code-128}{\subsubsection{Code 128}\label{code-128}}
+
+\textbf{Code 128} is an arbitrarily long, high-density barcode symbology
+that can be used to encode full 256 character extended-ASCII.
+
+Also known as: USD-6, USS-128, Code 128A, Code 128B, Code 128C.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{gs1-128}{GS1-128} is a variant of Code 128 that
+ should be used when encoding data that is in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format}.
+\item
+ \protect\hyperlink{hibc-symbols}{HIBC Code 128} is a variant of Code
+ 128 that should be used when encoding HIBC formatted data.
+\end{itemize}
+
+Standards: ISO/IEC 15417, ANSI/AIM BC4 - ISS Code 128, BS EN 799.
+
+\paragraph{Data and Options}\label{data-and-options-16}
+
\begin{itemize}
-\item Mode 0 - Obsolete. (Older printers will produce Mode 0 if the firmware is outdated. Mode 0 MaxiCodes can be visually determined by examining the two horizontal hexagons in the upper right-hand corner. They will be white if the Mode is 0. For all other modes, they are black.)
-\item Mode 2 - Used for Numeric postal codes. (Primary use is US domestic destinations.)
-\item Mode 3 - Used for Alphanumeric postal codes. (Primary use is Int'l destinations.)
-\item Mode 4 - Standard Error Correction.
-\item Mode 5 - Enhanced Error Correction.
-\item Mode 6 - Used for programming hardware devices.
+\tightlist
+\item
+ The input can consist of any extended ASCII data.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII or extended-ASCII value, useful for specifying unprintable
+ characters, e.g. \texttt{\^{}029} for \emph{GS}, \texttt{\^{}209} for
+ \emph{Ñ}, etc.
+\item
+ \emph{FNC4} function characters will be inserted automatically to
+ allow the encoding of extended ASCII characters.
+\item
+ When the \textbf{parsefnc} option is specified, non-data function
+ characters can be specified by \texttt{\^{}FNC1} through
+ \texttt{\^{}FNC3}.
+\item
+ When the \textbf{parsefnc} option is specified, the special pseudo
+ characters \texttt{\^{}LNKA} and \texttt{\^{}LNKC} at the end of the
+ symbol indicate that a GS1-128 symbol includes a \emph{CC-A/B} or
+ \emph{CC-C} GS1 composite 2D component.
+\item
+ The \textbf{raw} option denotes that the data field is providing the
+ input as pre-encoded codewords in \texttt{\^{}NNN} format, suitable
+ for direct low-level encoding.
+\item
+ The mandatory check digit is calculated automatically.
\end{itemize}
+\paragraph{Example}\label{example-1}
+
+\begin{verbatim}
+Data: Count0123456789!
+Options: includetext
+Encoder: code128
+\end{verbatim}
+
+\includegraphics{images/code128-1.eps}
+
+\hypertarget{code-39}{\subsubsection{Code 39}\label{code-39}}
-%(^059^042^041^059^040^03001^02996152382802^029840^029001^0291Z00004951^029UPSN^02906X610^029159^0291234567^0291^0471^029^029Y^029634
-%ALPHA DR^029PITTSBURGH^029PA^030^062^004^063) (mode 2 parse) maxicode barcode
+The \textbf{Code 39} barcode symbology is discrete, variable length and
+self-checking.
+
+Also known as: Code 3 of 9, LOGMARS, Alpha39, USD-3, USS-39.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{code-39-extended}{Code 39 Extended} is a variant of
+ Code 39 that can be used to encode full 128 character ASCII with the
+ use of shift character combinations.
+\item
+ \protect\hyperlink{hibc-symbols}{HIBC Code39} is a variant of Code 39
+ that should be used when encoding HIBC formatted data.
+\item
+ AIM USD-2 is a subset of Code 39 containing the characters A-Z, 0-9,
+ \emph{space}, \texttt{-} and \texttt{.}.
+\end{itemize}
-\begin{description}
-\item[Characters] \verb!@ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!
-\item[Data] Variable number characters
-\end{description}
+Standards: ISO/IEC 16388, ANSI/AIM BC1 - USS Code 39, BS EN 800, MIL STD
+1189.
-\begin{LTXexample}[width=1in,wide]
-\begin{pspicture}(1in,1in)
-\expandafter\psbarcode{[\string\)>^03001^02996152382802^029840^029001^0291Z00004951^029UPSN^02906X610^029159^0291234567^0291/1^029^029Y^029634 ALPHA DR^029PITTSBURGH^029PA^029^004}{mode=2 parse}{maxicode}
-\end{pspicture}
-\end{LTXexample}
+\paragraph{Data and Options}\label{data-and-options-17}
+\begin{itemize}
+\tightlist
+\item
+ The data field can hold any of the following:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Numbers 0-9
+ \item
+ Capital letters A-Z
+ \item
+ Symbols \texttt{-.\$/+\%*} and \emph{space}
+ \end{itemize}
+\item
+ The \textbf{includecheck} option calculates the check digit.
+\item
+ The \textbf{includecheckintext} option makes the calculated checksum
+ appear in the human readable text.
+\item
+ The \textbf{hidestars} option suppresses the asterisks in the human
+ readable text.
+\end{itemize}
+\paragraph{Examples}\label{examples-13}
-\subsection{Aztec Code}
-Aztec Code is a 2 dimensional matrix style bar code symbology.
-Aztec Code was invented by Andrew Longacre (USA) in 1995
-(\url{http://de.wikipedia.org/wiki/Aztec_Code}).
+\begin{verbatim}
+Data: CODE39
+Options: includetext
+Encoder: code39
+\end{verbatim}
+\includegraphics{images/code39-1.eps}
-\begin{description}
-\item[Characters] \verb!0123456789!
-\item[Data] Variable number characters
-\end{description}
+\begin{verbatim}
+Data: CODE39
+Options: includecheck includetext includecheckintext
+Encoder: code39
+\end{verbatim}
-\begin{LTXexample}[pos=l,width=1in,wide]
-\begin{pspicture}(1in,1in)
-\psbarcode{0123456789}%
- {format=compact layers=3}{azteccode}
-\end{pspicture}
-\end{LTXexample}
+\includegraphics{images/code39-2.eps}
-%315 140 moveto (00100111001000000101001101111000010100111100101000000110) (format=compact layers=3) azteccode barcode
-%0 -10 rmoveto (Aztec Code) show
+\begin{verbatim}
+Data: CODE39
+Options: hidestars includecheck includetext
+Encoder: code39
+\end{verbatim}
+\includegraphics{images/code39-3.eps}
-\subsection{itf14}
-%Aztec Code is a 2 dimensional matrix style bar code symbology.
-%Aztec Code was invented by Andrew Longacre (USA) in 1995
-%(\url{http://de.wikipedia.org/wiki/Aztec_Code}).
+\hypertarget{code-39-extended}{\subsubsection{Code 39
+Extended}\label{code-39-extended}}
+The \textbf{Code 39 Extended} barcode symbology is discrete, variable
+length and self-checking. It is based on
+\protect\hyperlink{code-39}{Code 39} but can encode full 128 character
+ASCII by using shift combinations.
-\begin{description}
-\item[Characters] \verb!0123456789!
-\item[Data] Variable number characters
-\end{description}
+Also known as: Code 39 Full ASCII.
-\begin{LTXexample}[width=1.5in,wide]
-\begin{pspicture}(1in,1in)
-\psbarcode{1001234567890}{showborder borderwidth=4 borderleft=15 borderright=15 height=0.5 includecheck includetext includecheckintext textyoffset=-10}{interleaved2of5}
-\end{pspicture}
-\end{LTXexample}
+Variants:
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{code-39}{Code 39} is a simpler variant of Code 39
+ Extended.
+\end{itemize}
-\subsection{QR Code}
-A QR Code (Quick Response) is a 2 dimensional matrix code created by Japanese
-corporation Denso-Wave in 1994 (\url{http://de.wikipedia.org/wiki/QR_Code}).
-
-
-\begin{description}
-\item[Characters] \verb!0123456789!
-\item[Data] Variable number characters
-\end{description}
-
-The data field can contain any extended ASCII data.
-When the parse option is specified, any instances of \verb|^NNN| in the data field are
-replaced with their equivalent ASCII value, useful for specifying unprintable characters.
-
- The eclevel option is used to specify the error correction level:
-\begin{description}
-\item[eclevel=L] - Low (default for micro format symbols)
-\item[eclevel=M] - Medium (default for full format symbols)
-\item[eclevel=Q] - Quality
-\item[eclevel=H] - High
-\end{description}
-
-The eclevel will be opportunistically raised when this does not result in an increased symbol size.
-The encoding option is used to specify a desired encoding for the input data which can sometimes result in a more optimal symbol size:
-
-\begin{description}
-\item[encoding=alphanumeric] - Alphanumeric data
-\item[encoding=numeric] - Numeric data
-\item[encoding=byte] - Byte based encoding
-\item[encoding=kanji] - Kanji characters based on Shift JIS
-\item[encoding=raw] - Equivalent to the raw option
- If left unspecified the optimal available encoding will be chosen for the given data in
- the following order of preference: numeric, alphanumeric, kanji, byte.
- The version option is used to specify the size of the symbol, 1 to 40 for full
- format symbols or \verb|version=M1|, \verb|version=M2|, \verb|version=M3| or \verb|version=M4|
- for micro format symbols.
- If unspecified, the encoder will select the version of the symbol that is the minimum
- size to represent the given data at the selected error correction level.
- The format option is used to select between format=full and format=micro symbol
- types. By default, full format symbols will be generated.
- The raw option denotes that the data field is providing the input as a pre-encoded
- bitstream (excluding the terminator bits) suitable for direct low-level encoding.
-\end{description}
-
-
-\begin{LTXexample}[pos=l,width=1in]
-\begin{pspicture}(1in,1in)
-\psbarcode{http://www.dante.de}{}{qrcode}
-\end{pspicture}
-\end{LTXexample}
-
-\begin{LTXexample}[width=1.5in]
-\begin{pspicture}(1in,1in)
-\psbarcode{http://www.dante.de}{eclevel=M}{qrcode}
-\end{pspicture}
-\end{LTXexample}
-
-
-\begin{LTXexample}[width=1.5in]
-\begin{pspicture}(1in,1in)
-\psbarcode{QR ^067ode}{parse}{qrcode}
-\end{pspicture}
-\end{LTXexample}
-
-\begin{LTXexample}[width=1.5in]
-\begin{pspicture}(2in,2in)
-\psbarcode{QR CODE 1234}{version=10 eclevel=Q}{qrcode}
-\end{pspicture}
-\end{LTXexample}
-
-\begin{LTXexample}[width=1.5in]
-\begin{pspicture}(0.5in,0.5in)
-\psbarcode{01234567}{format=micro}{qrcode}
-\end{pspicture}
-\end{LTXexample}
-
-\begin{LTXexample}[width=1.5in]
-\begin{pspicture}(1in,1in)
-\psbarcode{000100000010000000001100010101100110000110000}{raw}{qrcode}
-\end{pspicture}
-\end{LTXexample}
-
-%\begin{LTXexample}[width=1in,wide]
-%\begin{pspicture}(0.5in,0.5in)
-%\psbarcode{0010000000000110001010110011010100110111000010100111010100101}{raw format=micro}{qrcode}
-%\end{pspicture}
-%\end{LTXexample}
-
-
-
-
-\section{Code Commentary}
-This commentary assumes familiarity with the PostScript
-language\footnote{The PostScript Language Tutorial and Cookbook
-(a.k.a. the Blue Book), which is freely available online, serves
-as both a useful tutorial and reference manual to the language.}.
-
-The code is split cleanly into two types of procedure:
-
-\begin{description}
-\item[The encoders]{Each of these represents a barcode
-symbology\footnote{By symbology we mean an accepted standard for
-representation of data as a barcode},
-e.g. EAN-13 or Code-128. It takes a string containing the barcode
-data and a string containing a list of options that modify the
-output of the encoder. It generates
-a structured representation of the barcode and its text for the
-symbology, including the calculation of check digits where necessary.}
-\item[The renderer]{This takes the output of an encoder and
-generates a visual representation of the barcode.}
-\end{description}
-
-This means that all barcodes can be generated simply in a similar
-manner:
-
-\begin{lstlisting}
-(78858101497) (includetext height=0.6) upca barcode
-(0123456789) (includecheck) interleaved2of5 barcode
-\end{lstlisting}
-
-
-\subsection{The Barcode Data Structure}
-\label{datastructure}
-The following table describes the structured representation of a
-barcode that is passed by an encoder to the renderer as a
-dictionary when the PostScript is executed.
-
-\begin{center}
-
-\begin{tabular}{l|c|p{6.5cm}}\hline
-\emph{Element} & \emph{Key} & \emph{Value} \\\hline
-Space bar succession & \texttt{sbs} &
-String containing the integer widths, in points, of each bar and
-space, starting with the leftmost bar.\\
-
-Bar height succession & \texttt{bhs} &
-Array containing the height of each bar in inches, starting with
-the leftmost bar.\\
-
-Bar base succession & \texttt{bbs} &
-Array containing the offset of the base of each bar in inches,
-starting with the leftmost bar.\\
-
-Human readable text & \texttt{txt} &
-Array of arrays that contain the character, position, height,
-font and scale factor (font size), in points, for each of the visible
-text characters.\\\hline
-\end{tabular}
-
-\end{center}
-
-
-\subsection{An Encoder}
-
-The procedure labelled code2of5 is a simple example of an encoder,
-which we will now consider. Its purpose is to accept as input a string
-containing the barcode contents and a string containing a list of options,
-and to process these in a way
-that is specific to this encoder, and finally to output an
-instance of the dictionary-based data structure described in section
-\ref{datastructure} that represents the barcode contents in the
-Code 2 of 5 symbology.
-
-As with all of the encoders, the input string is assumed to be valid for
-the corresponding symbology, otherwise the behaviour is undefined.
-
-The variables that we use in this procedure are confined to local
-scope by declaring the procedure as follows:
-
-\begin{lstlisting}
-/code2of5 {
-
- 0 begin
-
-...
-
- end
-
-} bind def
-/code2of5 load 0 1 dict put
-\end{lstlisting}
-
-We start by immediately reading the contents strings that are passed as
-arguments to this procedure by the user.
-
-\begin{lstlisting}
- /options exch def
- /barcode exch def
-\end{lstlisting}
-
-We initialise a few default variables. Those variables corresponding to
-options that can be enabled with the options argument are initially
-set to false.
-
-\begin{lstlisting}
- /includetext false def
- /textfont /Courier def
- /textsize 10 def
- /textpos -7 def
- /height 1 def
-\end{lstlisting}
-
-The options string is tokenised with each successive token defining either a
-name value pair which we instantiate or a lone variable that we define as true,
-allowing us to override the given default variables given above.
-
-\begin{lstlisting}
-options {
- token false eq {exit} if dup length string cvs (=) search
- true eq {cvlit exch pop exch def} {cvlit true def} ifelse
-} loop
-\end{lstlisting}
-
-Since any user given options create variables that are strings we need to convert
-them back to their intended types.
-
-\begin{lstlisting}
-/textfont textfont cvlit def
-/textsize textsize cvr def
-/textpos textpos cvr def
-/height height cvr def
-\end{lstlisting}
-
-We then create an array of string encodings for each of the available
-characters which we then declare in another string. This information
-can be derived from careful reading of the relevant specification,
-although this is often surprisingly difficult to obtain.
-
-\begin{lstlisting}
- /encs
- [ (1111313111) (3111111131) (1131111131) (3131111111)
- (1111311131) (3111311111) (1131311111) (1111113131)
- (3111113111) (1131113111) (313111) (311131)
- ] def
-
- /barchars (0123456789) def
-\end{lstlisting}
-
-We now store the length of the content string and calculate the
-total number of bars and spaces in the resulting barcode.
-We initialise a string of size dependant on this length into
-which we will build the space bar succession. Similarly, we create
-an array into which we will add the human readable text information.
-
-\begin{lstlisting}
- /barlen barcode length def
- /sbs barlen 10 mul 12 add string def
- /txt barlen array def
-\end{lstlisting}
-
-We now begin to populate the space bar succession by adding the
-encoding of the start character to the beginning.
-
-\begin{lstlisting}
- sbs 0 encs 10 get putinterval
-\end{lstlisting}
-
-We now enter the main loop which iterates over the content string
-from start to finish, looking up the encoding for each character,
-adding this to the space bar succession.
-
-It is important to understand how the encoding for a given character
-is derived. Firstly, given a character, we find its position in the
-string of all available characters. We then use
-this position to index the array of character encodings to obtain
-the encoding for the given character, which is added to the space/bar
-succession. Likewise, the character is added to the array of human
-readable text along with positioning and font information.
-
-\begin{lstlisting}
- 0 1 barlen 1 sub {
- /i exch def
- barcode i 1 getinterval barchars exch search
- pop
- length /indx exch def
- pop pop
- /enc encs indx get def
- sbs i 10 mul 6 add enc putinterval
- txt i [barcode i 1 getinterval i 14 mul 10 add -7
- textfont textsize] put
- } for
-\end{lstlisting}
-
-The encoding for the end character is obtained and added to
-the end of the space bar succession.
-
-\begin{lstlisting}
- sbs barlen 10 mul 6 add encs 11 get putinterval
-\end{lstlisting}
-
-Finally we prepare to push a dictionary containing the space bar
-succession (and any additional information defined in section
-\ref{datastructure}) that will be passed to the renderer.
-
-\begin{lstlisting}
- /retval 1 dict def
- retval (sbs) sbs put
- retval (bhs) [sbs length 1 add 2 idiv {height} repeat] put
- retval (bbs) [sbs length 1 add 2 idiv {0} repeat] put
- includetext {
- retval (txt) txt put
- } if
- retval
-\end{lstlisting}
-
-
-\subsection{The Renderer}
-
-The procedure labelled barcode is known as the renderer, which we now
-consider. Its purpose is to accept as input an instance of the
-dictionary-based data structure described in section
-\ref{datastructure} that represents a barcode in some arbitrary
-symbology and produce a visual rendering of this at the current
-point.
-
-The variables that we use in this procedure are confined to local
-scope by declaring the procedure as follows:
-
-\begin{lstlisting}
-/barcode {
-
- 0 begin
-
-...
-
- end
-
-} bind def
-/barcode load 0 1 dict put
-\end{lstlisting}
-
-We then immediately read the dictionary-based data structure which
-is passed as a single argument to this procedure by an encoder, from
-which we extract the space bar succession, bar height succession and bar
-base succession.
-
-\begin{lstlisting}
- /args exch def
- /sbs args (sbs) get def
- /bhs args (bhs) get def
- /bbs args (bbs) get def
-\end{lstlisting}
-
-We attempt to extract from the dictionary the array containing the
-information about human readable text. However, this may not exist
-in the dictionary in which case we create a default empty array.
-
-\begin{lstlisting}
- args (txt) known
- {
- /txt args (txt) get def
- }
- {
- /txt [] def
- } ifelse
-\end{lstlisting}
-
-We have extracted or derived all of the necessary information
-from the input, and now use the space bar succession, bar height
-succession and bar base succession in calculations that create a
-single array containing elements that give coordinates for each of
-the bars in the barcode.
-
-We start by creating a bars array that is half the length of the
-space bar succession. We build this by repeatedly adding array elements
-that contain the height, x-coordinate, y-coordinate and width of
-single bars. The height and y-coordinates are read from the bar
-height succession and the bar base succession, respectively, whilst
-the x-coordinate and the width are made from a calculation of the
-total indent, based on the space bar succession and a compensating
-factor that accounts for ink spread.
-
-\begin{lstlisting}
- /bars sbs length 1 add 2 idiv array def
- /x 0.00 def
- 0 1 sbs length 1 sub {
- /i exch def
- /d sbs i get 48 sub def
- i 2 mod 0 eq
- {
- /h bhs i 2 idiv get 72 mul def
- /c d 2 div x add def
- /y bbs i 2 idiv get 72 mul def
- /w d 0.15 sub def
- bars i 2 idiv [h c y w] put
- } if
- /x x d add def
- } for
-\end{lstlisting}
-
-Finally, we perform the actual rendering in two phases. Firstly we
-use the contents of the bars array that we just built to render each
-of the bars, and secondly we use the contents of the text array
-extracted from the input argument to render the
-text. We make an efficiency saving here by not performing loading and
-rescaling of a font if the scale factor for the font size is 0. The graphics
-state is preserved across calls to this procedure to prevent
-unexpected interference with the users environment.
-
-\begin{lstlisting}
- gsave
-
- bars {
- {} forall
- setlinewidth moveto 0 exch rlineto stroke
- } forall
-
- txt {
- {} forall
- dup 0 ne {exch findfont exch scalefont setfont}
- {pop pop}
- ifelse
- moveto show
- } forall
-
- grestore
-\end{lstlisting}
-
-\subsection{Notes Regarding Coding Style}
-
-PostScript programming veterans are encouraged to remember that the
-majority of people who read the code are likely to have little,
-if any, prior knowledge of the language.
-
-To encourage development, the code has been written with these
-goals in mind:
-
-\begin{itemize}
-\item[-]{That it be easy to use and to comprehend}
-\item[-]{That it be easy to modify and enhance}
-\end{itemize}
-
-To this end the following points should be observed for all new
-code submissions:
-
-\begin{itemize}
-\item[-]{New encoders should be based on the code of a similar
-existing encoder}
-\item[-]{Include comments where these clarify the operations
-involved, particular where something unexpected happens}
-\item[-]{Prefer simplicity to efficency and clarity to
-obfuscation, except where this will be a problem}
-\end{itemize}
-
-\subsection{Installing the Barcode Generation Capability into a Printer's Virtual Machine}
-
-Most genuine PostScript printers allow procedures to be defined such
-that they persist across different jobs through the use of the \texttt{exitserver}
-command. If your printer supports this then you will be able to print
-the main code containing the definitons of all the encoders and the
-renderer once, e.g. soon after the device is turned on, and later omit
-these definitons from each of the barcode documents that you print.
-
-To install the barcode generation capabilities into the
-virtual machine of a PostScript printer you need to uncomment a line near the
-top of the code so that it reads:
+Standards: ISO/IEC 16388, ANSI/AIM BC1 - USS Code 39, BS EN 800.
-\begin{lstlisting}
-serverdict begin 0 exitserver
-\end{lstlisting}
+\paragraph{Data and Options}\label{data-and-options-18}
-Once this code is printed the procedural definitions for the encoders and
-the renderer will remain defined across all jobs until the device is reset
-either by power-cycling or with the following code:
+\begin{itemize}
+\tightlist
+\item
+ The data field can consist of any ASCII data.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters, e.g.
+ \texttt{\^{}029} for \emph{GS}, etc.
+\item
+ The \textbf{includecheck} option calculates the check digit.
+\item
+ The \textbf{includecheckintext} causes the calculated check digit to
+ appear in the human readable text.
+\item
+ The \textbf{hidestars} option suppresses the asterisks in the human
+ readable text.
+\end{itemize}
-\begin{lstlisting}
-serverdict begin 0 exitserver systemdict /quit get exec
-\end{lstlisting}
+\paragraph{Examples}\label{examples-14}
+\begin{verbatim}
+Data: Code39 Ext!
+Options: includetext includecheck
+Encoder: code39ext
+\end{verbatim}
-\section{QR code in the margin}
-The marginnotes are placed with the help of the macro of the same name \Lcs{marginnote},
-which itself needs package \LPack{narginnote}. It is loaded by default if the macro
-doesn't exists.
+\includegraphics{images/code39ext-1.eps}
-\begin{lstlisting}
-\QR[1]<barcode>{http://mirror.ctan.org/help/Catalogue/bytopic.html\#barcode}
-\blindtext
+\begin{verbatim}
+Data: Code39^029Extended
+Options: parse includecheck
+Encoder: code39ext
+\end{verbatim}
-{\psset{fontstyle=\scriptsize\ttfamily}%
- \QR[1]{http://mirror.ctan.org/help/Catalogue/bytopic.html\#barcode}%
-}
-\blindtext
+\includegraphics{images/code39ext-2.eps}
-\QR{http://mirror.ctan.org/usergrps/dante/dtk/doc/beispiel.pdf}
-\blindtext
-\QR<Beispiel>{http://mirror.ctan.org/usergrps/dante/dtk/doc/beispiel.pdf}
-\blindtext
+\hypertarget{code-93}{\subsubsection{Code 93}\label{code-93}}
-\QR{http://de.wikipedia.org/wiki/QR-Code}
-\blindtext
-\end{lstlisting}
+\textbf{Code 93} is a continuous, variable length, self-checking barcode
+symbology.
-\QR[1]<barcode>{http://mirror.ctan.org/help/Catalogue/bytopic.html\#barcode}
-\blindtext
+Also known as: USD-7, USS-93.
-{\psset{fontstyle=\scriptsize\ttfamily}%
- \QR[1]{http://mirror.ctan.org/help/Catalogue/bytopic.html\#barcode}%
-}
-\blindtext
+Variants:
-\QR{http://mirror.ctan.org/usergrps/dante/dtk/doc/beispiel.pdf}
-\blindtext
-\QR<Beispiel>{http://mirror.ctan.org/usergrps/dante/dtk/doc/beispiel.pdf}
-\blindtext
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{code-93-extended}{Code 93 Extended} is a variant of
+ Code 93 that can be used to encode full 128 character ASCII with the
+ use of special shift character combinations.
+\end{itemize}
-\QR{http://de.wikipedia.org/wiki/QR-Code}
-\blindtext
+Standards: ANSI/AIM BC5 - USS Code 93, ITS 93i.
-\section{List of all optional arguments for \texttt{pst-barcode}}
+\paragraph{Data and Options}\label{data-and-options-19}
-\xkvview{family=pst-barcode,columns={key,type,default}}
+\begin{itemize}
+\tightlist
+\item
+ The data field can hold any of the following:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Numbers 0-9
+ \item
+ Capital letters A-Z
+ \item
+ Symbols \texttt{-.\$/+\%*} and \emph{space}
+ \end{itemize}
+\item
+ The \textbf{parsefnc} option allows the special shift characters to be
+ supplied as \texttt{\^{}SFT\$}, \texttt{\^{}SFT\%}, \texttt{\^{}SFT/}
+ and \texttt{\^{}SFT+}.
+\item
+ The \textbf{includecheck} option calculates the two check digits.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-15}
+
+\begin{verbatim}
+Data: CODE93
+Options: includecheck
+Encoder: code93
+\end{verbatim}
+
+\includegraphics{images/code93-1.eps}
+
+Code 93 including a special shift combination \texttt{(/)A} representing
+\emph{!}:
+
+\begin{verbatim}
+Data: CODE93^SFT/A
+Options: parsefnc includecheck
+Encoder: code93
+\end{verbatim}
+
+\includegraphics{images/code93-2.eps}
+
+\hypertarget{code-93-extended}{\subsubsection{Code 93
+Extended}\label{code-93-extended}}
+
+The \textbf{Code 93 Extended} barcode symbology is continuous, variable
+length and self-checking. It is based on
+\protect\hyperlink{code-93}{Code 93} but can encode full 128 character
+ASCII using four additional shift characters: \emph{(\$)} \emph{(\%)}
+\emph{(/)} \emph{(+)}
+
+Also known as: Code 93 Full ASCII.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{code-93}{Code 93} is a simpler variant of the Code
+ 93 Extended barcode symbology.
+\end{itemize}
+
+Standards: ANSI/AIM BC5 - USS Code 93, ITS 93i.
+
+\paragraph{Data and Options}\label{data-and-options-20}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field can consist of any ASCII data.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters, e.g.
+ \texttt{\^{}029} for \emph{GS}, etc.
+\item
+ The \textbf{includecheck} option calculates the two check digits.
+\end{itemize}
+\paragraph{Examples}\label{examples-16}
-\bgroup
-\raggedright
-\nocite{*}
-\bibliographystyle{plain}
-\bibliography{\jobname}
-\egroup
+\begin{verbatim}
+Data: Code93Ext!
+Options: includecheck
+Encoder: code93ext
+\end{verbatim}
-\printindex
-\end{document}
+\includegraphics{images/code93ext-1.eps}
+
+\begin{verbatim}
+Data: Code93^029Extended
+Options: parse includecheck
+Encoder: code93ext
+\end{verbatim}
+
+\includegraphics{images/code93ext-2.eps}
+
+\hypertarget{interleaved-2-of-5}{\subsubsection{Interleaved 2 of
+5}\label{interleaved-2-of-5}}
+
+\textbf{Interleaved 2 of 5} is a high-density numeric barcode symbology.
+
+Also known as: ITF, Code 2 of 5 Interleaved, USD-1, USS-Interleaved 2 of
+5.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{itf-14}{ITF-14} is a variant of Interleaved 2 of 5
+ that should be used when encoding a fourteen-digit GTIN.
+\end{itemize}
+
+Standards: ISO/IEC 16390, ANSI/AIM BC2 - USS Interleaved 2 of 5, BS EN
+801.
+
+\paragraph{Data and Options}\label{data-and-options-21}
+
+\begin{itemize}
+\tightlist
+\item
+ The data can consist of any number of digits.
+\item
+ The \textbf{includecheck} option calculates the check digit.
+\item
+ The \textbf{includecheckintext} option makes the calculated checksum
+ appear in the human readable text.
+\item
+ If the length of the symbol including the possible check digit would
+ be odd then the data is prefixed by \emph{0}.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-17}
+
+\begin{verbatim}
+Data: 0123456789
+Options:
+Encoder: interleaved2of5
+\end{verbatim}
+
+\includegraphics{images/itf-1.eps}
+
+\begin{verbatim}
+Data: 2401234567
+Options: includecheck includetext includecheckintext
+Encoder: interleaved2of5
+\end{verbatim}
+
+\includegraphics{images/itf-2.eps}
+
+\subsection{Supply Chain}\label{supply-chain}
+
+\hypertarget{gs1-datamatrix}{\subsubsection{GS1
+DataMatrix}\label{gs1-datamatrix}}
+
+\textbf{GS1 DataMatrix} is an implementation of the
+\protect\hyperlink{data-matrix}{Data Matrix} (ECC 200) barcode symbology
+with \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+formatted} data.
+
+Standards: ISO/IEC 16022, ANSI/AIM BC11 ISS, GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-22}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field input is provided in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format} starting with the mandatory
+ \emph{(01)} Application Identifier.
+\item
+ The \textbf{format} option is used to specify the shape of the symbol,
+ either \texttt{square} (default) or \texttt{rectangle}.
+\item
+ The \textbf{columns} and \textbf{rows} options are used to specify the
+ size of the symbol.
+\item
+ The \textbf{version} option can also be used to specify the symbol
+ size, as \texttt{version=RxC}. Valid options are:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ With \texttt{format=square}: \emph{10x10}, \emph{12x12},
+ \emph{14x14}, \emph{16x16}, \emph{18x18}, \emph{20x20},
+ \emph{22x22}, \emph{24x24}, \emph{26x26}, \emph{32x32},
+ \emph{36x36}, \emph{40x40}, \emph{44x44}, \emph{48x48},
+ \emph{52x52}, \emph{64x64}, \emph{72x72}, \emph{80x80},
+ \emph{88x88}, \emph{96x96}, \emph{104x104}, \emph{120x120},
+ \emph{132x132}, \emph{144x144}
+ \item
+ With \texttt{format=rectangle}: \emph{8x18}, \emph{8x32},
+ \emph{12x26}, \emph{12x36}, \emph{16x36}, \emph{16x48}
+ \end{itemize}
+\item
+ If \textbf{columns}, \textbf{rows} and \textbf{version} are
+ unspecified the encoder will default to creating a symbol of the
+ specified \textbf{format} that is the minimum size to represent the
+ given data.
+\end{itemize}
+
+\paragraph{Example}\label{example-2}
+
+\begin{verbatim}
+Data: (01)95012345678903(3103)000123
+Options:
+Encoder: gs1datamatrix
+\end{verbatim}
+
+\includegraphics{images/gs1datamatrix-1.eps}
+
+\hypertarget{gs1-qr-code}{\subsubsection{GS1 QR
+Code}\label{gs1-qr-code}}
+
+\textbf{GS1 QR Code} is an implementation of the
+\protect\hyperlink{qr-code}{QR Code} barcode symbology with
+\protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+formatted data}.
+
+Standards: ISO/IEC 18004, ITS - QR Code, GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-23}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field input is provided in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format} starting with the mandatory
+ \emph{(01)} and \emph{(8200)} Application Identifiers.
+\item
+ The \textbf{eclevel} option is used to specify the error correction
+ level:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{eclevel=L} - Low
+ \item
+ \texttt{eclevel=M} - Medium (default)
+ \item
+ \texttt{eclevel=Q} - Quality
+ \item
+ \texttt{eclevel=H} - High
+ \end{itemize}
+\item
+ The \textbf{version} option is used to specify the size of the symbol,
+ 1 to 40.
+\item
+ If the \textbf{version} is unspecified the encoder will default to
+ creating a symbol that is the minimum size to represent the given data
+ at the selected error correction level.
+\end{itemize}
+
+\paragraph{Example}\label{example-3}
+
+\begin{verbatim}
+Data: (01)03453120000011(8200)http://www.abc.net
+Options:
+Encoder: gs1qrcode
+\end{verbatim}
+
+\includegraphics{images/gs1qrcode-1.eps}
+
+\begin{verbatim}
+Data: (01)03453120000011(8200)http://abc.net(10)XYZ(410)9501101020917
+Options:
+Encoder: gs1qrcode
+\end{verbatim}
+
+\includegraphics{images/gs1qrcode-2.eps}
+
+\hypertarget{gs1-128}{\subsubsection{GS1-128}\label{gs1-128}}
+
+\textbf{GS1-128} is an implementation of the
+\protect\hyperlink{code-128}{Code 128} barcode symbology which carries
+\protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+formatted} data, including a GTIN-14.
+
+Also known as: UCC/EAN-128, EAN-128, UCC-128.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{gs1-composite-symbols}{GS1-128 Composite} is a
+ variant of GS1-128 that should be used when a CC-A, CC-B or CC-C GS1
+ composite 2D component is required.
+\item
+ \protect\hyperlink{ean-14}{EAN-14} is a variant of GS1-128 that should
+ be used when encoding a fourteen-digit GTIN.
+\item
+ \protect\hyperlink{sscc-18}{SSCC-18} is a variant of GS1-128 that
+ should be used when encoding an eighteen-digit SSCC.
+\end{itemize}
+
+Standards: ISO/IEC 15417, ANSI/AIM BC4-1999 ISS, BS EN 799, GS1 General
+Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-24}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field input is provided in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format}.
+\item
+ The \textbf{linkagea} option specifies that the symbol includes a
+ \emph{CC-A} or \emph{CC-B} GS1 composite 2D component.
+\item
+ The \textbf{linkagec} option specifies that the symbol includes a
+ \emph{CC-C} GS1 composite 2D component.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-18}
+
+GTIN \emph{95012345678903}; Weight \emph{0.123kg}:
+
+\begin{verbatim}
+Data: (01)95012345678903(3103)000123
+Options: includetext
+Encoder: gs1-128
+\end{verbatim}
+
+\includegraphics{images/ean128-1.eps}
+
+GTIN \emph{0061414199996}; Expiration date \emph{1st Jan 2010}; Batch
+\emph{123ABC}; Serial \emph{1234567890}:
+
+\begin{verbatim}
+Data: (01)0061414199996(17)100101(10)123ABC(21)1234567890
+Options: includetext
+Encoder: gs1-128
+\end{verbatim}
+
+\includegraphics{images/ean128-2.eps}
+
+\hypertarget{ean-14}{\subsubsection{EAN-14}\label{ean-14}}
+
+\textbf{EAN-14} is an implementation of the
+\protect\hyperlink{gs1-128}{GS1-128} barcode symbology with \emph{AI
+(01)} that is typically used to encode a GTIN-14.
+
+Also known as: UCC-14.
+
+Standards: ISO/IEC 15417, ANSI/AIM BC4-1999 ISS, BS EN 799, GS1 General
+Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-25}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field input is provided in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format} and must be a solitary
+ \emph{AI (01)} with thirteen or fourteen digits of a GTIN, i.e.
+ \texttt{(01)...}.
+\item
+ Arbitrary spacing may be placed between the digits to format the human
+ readable text without interfering with the encoded data.
+\item
+ If thirteen digits of primary data are supplied then the check digit
+ is calculated automatically. Otherwise the provided check digit must
+ be correct.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-19}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: (01)04601234567893
+Options: includetext
+Encoder: ean14
+\end{verbatim}
+
+\begin{verbatim}
+Data: (01)0460123456789
+Options: includetext
+Encoder: ean14
+\end{verbatim}
+
+\includegraphics{images/ean14-1.eps}
+
+\hypertarget{itf-14}{\subsubsection{ITF-14}\label{itf-14}}
+
+\textbf{ITF-14} is an implementation of the
+\protect\hyperlink{interleaved-2-of-5}{Interleaved 2 of 5} barcode
+symbology that is typically used to encode a GTIN-14, GTIN-13 or
+GTIN-12.
+
+Also known as: UPC Shipping Container Symbol, SCS, UPC Case Code.
+
+Standards: ISO/IEC 16390, ANSI/AIM BC2-1995 USS, BS EN 801, GS1 General
+Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-26}
+
+\begin{itemize}
+\tightlist
+\item
+ The data consists of either thirteen or fourteen digits.
+\item
+ Arbitrary spacing may be placed between the digits to format the human
+ readable text without interfering with the encoded data.
+\item
+ If thirteen digits are supplied then the check digit is calculated
+ automatically. Otherwise the provided check digit must be correct.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-20}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: 04601234567893
+Options: includetext
+Encoder: itf14
+\end{verbatim}
+
+\begin{verbatim}
+Data: 0460123456789
+Options: includetext
+Encoder: itf14
+\end{verbatim}
+
+\includegraphics{images/itf-14-1.eps}
+
+\hypertarget{sscc-18}{\subsubsection{SSCC-18}\label{sscc-18}}
+
+\textbf{SSCC-18} is an implementation of the
+\protect\hyperlink{gs1-128}{GS1-128} barcode symbology with \emph{AI
+(00)} that is typically used to encode an eighteen-digit shipping
+container serial number.
+
+Also known as: EAN-18, NVE.
+
+Standards: ISO/IEC 15417, ANSI/AIM BC4-1999 ISS, BS EN 799, GS1 General
+Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-27}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field input is provided in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format} and must be a solitary
+ \emph{AI (00)} with seventeen or eighteen digits of a Serial Shipping
+ Container Code, i.e. \texttt{(00)0...}.
+\item
+ Arbitrary spacing may be placed between the digits to format the human
+ readable text without interfering with the encoded data.
+\item
+ The mandatory check digit is calculated automatically and any user
+ provided check digit is discarded.
+\end{itemize}
+
+\paragraph{Example}\label{example-4}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: (00)006141411234567890
+Options: includetext
+Encoder: sscc18
+\end{verbatim}
+
+\begin{verbatim}
+Data: (00)00614141123456789
+Options: includetext
+Encoder: sscc18
+\end{verbatim}
+
+\includegraphics{images/sscc18-1.eps}
+
+\subsection{GS1 DataBar Family}\label{gs1-databar-family}
+
+\hypertarget{gs1-databar-omnidirectional}{\subsubsection{GS1 DataBar
+Omnidirectional}\label{gs1-databar-omnidirectional}}
+
+\textbf{GS1 DataBar Omnidirectional} is a fixed-length, linear barcode
+symbology that can be used to encode a GTIN-14 for use at point of sale.
+
+Also known as: RSS-14
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{gs1-databar-stacked-omnidirectional}{GS1 DataBar
+ Stacked Omnidirectional} is a variant of GS1 DataBar Omnidirectional
+ for use where a taller, narrower symbol is required.
+\item
+ \protect\hyperlink{gs1-composite-symbols}{GS1 DataBar Omnidirectional
+ Composite} is a variant of GS1 DataBar Omnidirectional that should be
+ used when a CC-A or CC-B GS1 composite 2D component is required.
+\end{itemize}
+
+Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS -
+Reduced Space Symbology (RSS), GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-28}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field input is provided in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format} and must be a solitary
+ \emph{AI (01)} with thirteen or fourteen digits of a GTIN, i.e.
+ \texttt{(01)...}.
+\item
+ If thirteen digits of \emph{AI (01)} data are supplied then the check
+ digit is calculated automatically, otherwise the digits are encoded as
+ supplied.
+\item
+ The \textbf{linkage} option signifies the presence of a GS1 composite
+ 2D component.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-21}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: (01)24012345678905
+Options:
+Encoder: databaromni
+\end{verbatim}
+
+\begin{verbatim}
+Data: (01)2401234567890
+Options:
+Encoder: databaromni
+\end{verbatim}
+
+\includegraphics{images/databaromni-1.eps}
+
+\hypertarget{gs1-databar-stacked-omnidirectional}{\subsubsection{GS1
+DataBar Stacked
+Omnidirectional}\label{gs1-databar-stacked-omnidirectional}}
+
+\textbf{GS1 DataBar Stacked Omnidirectional} is a fixed-length, stacked
+linear barcode symbology that can be used to encode a GTIN-14 for use a
+point of sale.
+
+Also known as: RSS-14 Stacked Omnidirectional.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{gs1-databar-omnidirectional}{GS1 DataBar
+ Omnidirectional} is a variant of GS1 DataBar Stacked Omnidirectional
+ for use where a shorter, wider symbol is required.
+\item
+ \protect\hyperlink{gs1-composite-symbols}{GS1 DataBar Stacked
+ Omnidirectional Composite} is a variant of GS1 DataBar Stacked
+ Omnidirectional that should be used when a CC-A or CC-B
+ \protect\hyperlink{gs1-composite-symbols}{GS1 composite} 2D component
+ is required.
+\end{itemize}
+
+Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS -
+Reduced Space Symbology (RSS), GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-29}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field input is provided in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format} and must be a solitary
+ \emph{AI (01)} with thirteen or fourteen digits of a GTIN, i.e.
+ \texttt{(01)...}.
+\item
+ If thirteen digits of \emph{AI (01)} data are supplied then the check
+ digit is calculated automatically, otherwise the digits are encoded as
+ supplied.
+\item
+ The \textbf{linkage} option signifies the presence of a GS1 composite
+ 2D component.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-22}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: (01)24012345678905
+Options:
+Encoder: databarstackedomni
+\end{verbatim}
+
+\begin{verbatim}
+Data: (01)2401234567890
+Options:
+Encoder: databarstackedomni
+\end{verbatim}
+
+\includegraphics{images/databarstackedomni-1.eps}
+
+\hypertarget{gs1-databar-expanded}{\subsubsection{GS1 DataBar
+Expanded}\label{gs1-databar-expanded}}
+
+\textbf{GS1 DataBar Expanded} is a variable-length, linear barcode
+symbology that can be used to encode a GTIN-14 alongside a number of
+other application identifiers for use at point of sale.
+
+Also known as: RSS Expanded.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{gs1-databar-expanded-stacked}{GS1 DataBar Expanded
+ Stacked} is a variant of GS1 DataBar Expanded for use where a taller,
+ narrower symbol is required.
+\item
+ \protect\hyperlink{gs1-composite-symbols}{GS1 DataBar Expanded
+ Composite} is a variant of GS1 DataBar Expanded that should be used
+ when a CC-A or CC-B GS1 composite 2D component is required.
+\end{itemize}
+
+Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS -
+Reduced Space Symbology (RSS), GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-30}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field input is provided in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format}.
+\item
+ If the data contains a number of application identifiers matching any
+ of the specifications below then they should be provided in this given
+ order for maximum encoding efficiency:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{(01)9...(3103)...}
+ \item
+ \texttt{(01)9...(3202)...}
+ \item
+ \texttt{(01)9...(3203)...}
+ \item
+ \texttt{(01)9...(310x/320x)...(11/13/15/17)...}
+ \item
+ \texttt{(01)9...(310x/320x)...}
+ \item
+ \texttt{(01)9...(392x)...}
+ \item
+ \texttt{(01)9...(393x)...}
+ \item
+ \texttt{(01)...}
+ \end{itemize}
+\item
+ The \textbf{linkage} option signifies the presence of a GS1 composite
+ 2D component.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-23}
+
+\begin{verbatim}
+Data: (01)95012345678903(3103)000123
+Options:
+Encoder: databarexpanded
+\end{verbatim}
+
+\includegraphics{images/databarexpanded-1.eps}
+
+\hypertarget{gs1-databar-expanded-stacked}{\subsubsection{GS1 DataBar
+Expanded Stacked}\label{gs1-databar-expanded-stacked}}
+
+\textbf{GS1 DataBar Expanded Stacked} is a variable-length,
+stacked-linear barcode symbology that can be used to encode a GTIN-14
+alongside a number of other application identifiers for use at point of
+sale.
+
+Also known as: RSS Expanded Stacked.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{gs1-databar-expanded}{GS1 DataBar Expanded} is a
+ variant of GS1 DataBar Expanded Stacked for use where a shorter, wider
+ symbol is required.
+\item
+ \protect\hyperlink{gs1-composite-symbols}{GS1 DataBar Expanded Stacked
+ Composite} is a variant of GS1 DataBar Expanded Stacked that should be
+ used when a CC-A or CC-B GS1 composite 2D component is required.
+\end{itemize}
+
+Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS -
+Reduced Space Symbology (RSS), GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-31}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field input is provided in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format}.
+\item
+ If the data contains a number of application identifiers matching any
+ of the specifications below then they should be provided in this given
+ order for maximum encoding efficiency:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{(01)9...(3103)...}
+ \item
+ \texttt{(01)9...(3202)...}
+ \item
+ \texttt{(01)9...(3203)...}
+ \item
+ \texttt{(01)9...(310x/320x)...(11/13/15/17)...}
+ \item
+ \texttt{(01)9...(310x/320x)...}
+ \item
+ \texttt{(01)9...(392x)...}
+ \item
+ \texttt{(01)9...(393x)...}
+ \item
+ \texttt{(01)...}
+ \end{itemize}
+\item
+ The \textbf{segments} option is used to specify the maximum number of
+ segments per row which must be an even number. The default is
+ \emph{4}.
+\item
+ The \textbf{linkage} option signifies the presence of a GS1 composite
+ 2D component.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-24}
+
+\begin{verbatim}
+Data: (01)95012345678903(3103)000123
+Options: segments=4
+Encoder: databarexpandedstacked
+\end{verbatim}
+
+\includegraphics{images/databarexpandedstacked-1.eps}
+
+\hypertarget{gs1-databar-truncated}{\subsubsection{GS1 DataBar
+Truncated}\label{gs1-databar-truncated}}
+
+\textbf{GS1 DataBar Truncated} is a fixed-length, linear barcode
+symbology that can be used to encode a GTIN-14 for in-house
+applications.
+
+Also known as: RSS-14 Truncated.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{gs1-databar-stacked}{GS1 DataBar Stacked} is a
+ variant of GS1 DataBar Truncated for use where a taller, narrower
+ symbol is required.
+\item
+ \protect\hyperlink{gs1-composite-symbols}{GS1 DataBar Truncated
+ Composite} is a variant of GS1 DataBar Truncated that should be used
+ when a CC-A or CC-B GS1 composite 2D component is required.
+\end{itemize}
+
+Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS -
+Reduced Space Symbology (RSS), GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-32}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field input is provided in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format} and must be a solitary
+ \emph{AI (01)} with 13 or 14 digits of a GTIN, i.e. \texttt{(01)...}.
+\item
+ If thirteen digits of \emph{AI (01)} data are supplied then the check
+ digit is calculated automatically, otherwise the digits are encoded as
+ supplied.
+\item
+ The \textbf{linkage} option signifies the presence of a GS1 composite
+ 2D component.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-25}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: (01)24012345678905
+Options:
+Encoder: databartruncated
+\end{verbatim}
+
+\begin{verbatim}
+Data: (01)2401234567890
+Options:
+Encoder: databartruncated
+\end{verbatim}
+
+\includegraphics{images/databartruncated-1.eps}
+
+\hypertarget{gs1-databar-stacked}{\subsubsection{GS1 DataBar
+Stacked}\label{gs1-databar-stacked}}
+
+\textbf{GS1 DataBar Stacked} is a fixed-length, stacked linear barcode
+symbology that can be used to encode a GTIN-14 for in-house
+applications.
+
+Also known as: RSS-14 Stacked.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{gs1-databar-truncated}{GS1 DataBar Truncated} is a
+ variant of GS1 DataBar Stacked for use where a shorter, wider symbol
+ is required.
+\item
+ \protect\hyperlink{gs1-composite-symbols}{GS1 DataBar Stacked
+ Composite} is a variant of GS1 DataBar Stacked that should be used
+ when a CC-A or CC-B GS1 composite 2D component is required.
+\end{itemize}
+
+Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS -
+Reduced Space Symbology (RSS), GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-33}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field input is provided in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format} and must be a solitary
+ \emph{AI (01)} with thirteen or fourteen digits of a GTIN, i.e.
+ \texttt{(01)...}.
+\item
+ If thirteen digits of \emph{AI (01)} data are supplied then the check
+ digit is calculated automatically, otherwise the digits are encoded as
+ supplied.
+\item
+ The \textbf{linkage} option signifies the presence of a GS1 composite
+ 2D component.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-26}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: (01)24012345678905
+Options:
+Encoder: databarstacked
+\end{verbatim}
+
+\begin{verbatim}
+Data: (01)2401234567890
+Options:
+Encoder: databarstacked
+\end{verbatim}
+
+\includegraphics{images/databarstacked-1.eps}
+
+\hypertarget{gs1-databar-limited}{\subsubsection{GS1 DataBar
+Limited}\label{gs1-databar-limited}}
+
+\textbf{GS1 DataBar Limited} is fixed-length, linear barcode symbology
+that can be used to encode a GTIN-14 beginning with \emph{0} or \emph{1}
+for in-house applications.
+
+Also known as: RSS Limited.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{gs1-composite-symbols}{GS1 DataBar Limited
+ Composite} is a variant of GS1 DataBar Limited that should be used
+ when a CC-A or CC-B GS1 composite 2D component is required.
+\end{itemize}
+
+Standards: ISO/IEC 24724, ITS Reduced Space Symbology (RSS), AIM ISS -
+Reduced Space Symbology (RSS), GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-34}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field input is provided in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format} and must be a solitary
+ \emph{AI (01)} with thirteen or fourteen digits of a GTIN starting
+ with \emph{0} or \emph{1}, i.e. \texttt{(01)0...} or
+ \texttt{(01)1...}.
+\item
+ If thirteen digits of \emph{AI (01)} data are supplied then the check
+ digit is calculated automatically, otherwise the digits are encoded as
+ supplied.
+\item
+ The \textbf{linkage} option signifies the presence of a GS1 composite
+ 2D component.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-27}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: (01)15012345678907
+Options:
+Encoder: databarlimited
+\end{verbatim}
+
+\begin{verbatim}
+Data: (01)1501234567890
+Options:
+Encoder: databarlimited
+\end{verbatim}
+
+\includegraphics{images/databarlimited-1.eps}
+
+\subsection{Postal Symbols}\label{postal-symbols}
+
+\subsubsection{Australia Post 4 State Customer
+Code}\label{australia-post-4-state-customer-code}
+
+The \textbf{Australia Post 4 State Customer Code} is a barcode used by
+the Australian Postal Service to encode the data on letter mail.
+
+\paragraph{Data and Options}\label{data-and-options-35}
+
+\begin{itemize}
+\tightlist
+\item
+ The first two characters of the data field are digits used to specify
+ the manditory FCC type of the symbols, either \texttt{11},
+ \texttt{45}, \texttt{59} or \texttt{67}.
+\item
+ The next eight characters are digits that specify the manditory DPID.
+\item
+ The number of remaining characters varies according to the given FCC
+ code and these specify the contents of the customer information field
+ in one of two alphabets:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ The \textbf{custinfoenc} option should be supplied as
+ \texttt{custinfoenc=numeric} if the customer information field is to
+ be encoded using the numeric alphabet which can contain the digits
+ 0-9.
+ \item
+ Otherwise the customer information field is encoded using the
+ default character encoding, \texttt{custinfoenc=character}, which
+ permits any of the following characters:
+ \item
+ Upper case letters \texttt{A-Z}
+ \item
+ Lower case letters \texttt{a-z}
+ \item
+ Digits \texttt{0-9}
+ \item
+ Symbols \texttt{space} and \texttt{\#}
+ \end{itemize}
+\item
+ The maditory Reed-Solomon check bars are calculated automatically.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-28}
+
+FCC 62 symbol with character customer data:
+
+\begin{verbatim}
+Data: 6279438541AaaB 155
+Options: custinfoenc=character
+Encoder: auspost
+\end{verbatim}
+
+\includegraphics{images/auspost-1.eps}
+
+FCC 59 symbol with numeric customer data:
+
+\begin{verbatim}
+Data: 593221132401234567
+Options: custinfoenc=numeric
+Encoder: auspost
+\end{verbatim}
+
+\includegraphics{images/auspost-2.eps}
+
+\subsubsection{Deutsche Post Identcode}\label{deutsche-post-identcode}
+
+\textbf{Deutsche Post Identcode} is an implementation of the
+\protect\hyperlink{interleaved-2-of-5}{Interleaved 2 of 5} barcode
+symbology that is used by German Post for mail routing.
+
+Also known as: DHL Identcode.
+
+\paragraph{Data and Options}\label{data-and-options-36}
+
+\begin{itemize}
+\tightlist
+\item
+ The data consists of a consecutive string of eleven or twelve digits
+ consisting of:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Two-digit primary distribution centre identifier
+ \item
+ Three-digit customer identifier
+ \item
+ Six-digit mail piece identifier
+ \item
+ One-digit check digit (may be omitted)
+ \end{itemize}
+\item
+ If eleven digits are supplied then the check digit is calculated
+ automatically. Otherwise the provided check digit must be correct.
+\end{itemize}
+
+\paragraph{Example}\label{example-5}
+
+Identical symbols, input provided with an without a check digit:
+
+\begin{verbatim}
+Data: 563102430313
+Options: includetext
+Encoder: identcode
+\end{verbatim}
+
+\begin{verbatim}
+Data: 56310243031
+Options: includetext
+Encoder: identcode
+\end{verbatim}
+
+\includegraphics{images/identcode-1.eps}
+
+\subsubsection{Deutsche Post Leitcode}\label{deutsche-post-leitcode}
+
+The \textbf{Deutsche Post Leitcode} barcode symbology is an
+implementation of the \protect\hyperlink{interleaved-2-of-5}{Interleaved
+2 of 5} barcode that is used by German Post for mail routing.
+
+Also known as: DHL Leitcode.
+
+\paragraph{Data and Options}\label{data-and-options-37}
+
+\begin{itemize}
+\tightlist
+\item
+ The data consists of a consecutive string of thirteen or fourteen
+ digits consisting of:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Five-digit postal code
+ \item
+ Three-digit street identifier
+ \item
+ Three-digit house number
+ \item
+ Two-digit product code
+ \item
+ One-digit check digit (may be omitted)
+ \end{itemize}
+\item
+ If thirteen digits are supplied then the check digit is calculated
+ automatically. Otherwise the provided check digit must be correct.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-29}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: 21348075016401
+Options: includetext
+Encoder: leitcode
+\end{verbatim}
+
+\begin{verbatim}
+Data: 2134807501640
+Options: includetext
+Encoder: leitcode
+\end{verbatim}
+
+\includegraphics{images/leitcode-1.eps}
+
+\subsubsection{Japan Post 4 State
+Barcode}\label{japan-post-4-state-barcode}
+
+The \textbf{Japan Post 4 state barcode} symbology is used by the Japan
+Post service to encode the delivery point identifier on letter mail.
+
+\paragraph{Data and Options}\label{data-and-options-38}
+
+\begin{itemize}
+\tightlist
+\item
+ The data may contain any of the following characters:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Capital letters \texttt{A-Z}
+ \item
+ Digits \texttt{0-9}
+ \item
+ Hyphen \texttt{-}
+ \end{itemize}
+\end{itemize}
+
+\paragraph{Example}\label{example-6}
+
+\begin{verbatim}
+Data: 6540123789-A-K-Z
+Options:
+Encoder: japanpost
+\end{verbatim}
+
+\includegraphics{images/japanpost-1.eps}
+
+\subsubsection{MaxiCode}\label{maxicode}
+
+The \textbf{MaxiCode} barcode symbology is a 2D barcode based on a
+hexagonal matrix surrounding a bulls eye pattern. It can encode a
+structured carrier message and full 256 character extended-ASCII.
+
+Also known as: UPS Code, Code 6.
+
+Standards: ISO/IEC 16023, ANSI/AIM BC10 - ISS MaxiCode.
+
+\paragraph{Data and Options}\label{data-and-options-39}
+
+\begin{itemize}
+\tightlist
+\item
+ The \textbf{mode} option is used to specify how the data is structured
+ in the symbol:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{mode=2} - Formatted data containing a Structured Carrier
+ Message with a numeric (US domestic) postal code.
+ \item
+ \texttt{mode=3} - Formatted data containing a Structured Carrier
+ Message with an alphanumeric (international) postal code.
+ \item
+ \texttt{mode=4} - Unstructured data using standard error correction.
+ \item
+ \texttt{mode=5} - Unstructured data using enhanced error correction.
+ \item
+ \texttt{mode=6} - Barcode reader programming.
+ \end{itemize}
+\item
+ If \textbf{mode} is unspecified the encoder will default to selecting
+ \texttt{mode=5} if the encoded length of the input data permits
+ enhanced error correction, otherwise it will select \texttt{mode=4}
+ which provides standard error correction.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters.
+\item
+ If \texttt{mode=4}, \texttt{mode=5} or \texttt{mode=6} the data field
+ may contain any extended ASCII data.
+\item
+ If \texttt{mode=2} or \texttt{mode=3} the data field must begin with a
+ properly structured carrier message, followed by any extended ASCII
+ data.
+\item
+ The structured carrier message contains a postal code, three-digit
+ class of service and a three-digit ISO country code separated by
+ \emph{GS} (ASCII 29) characters. It is formatted in the data field as
+ follows:
+ \texttt{{[}postal\ code{]}\^{}029{[}country\ code{]}\^{}029{[}service\ class{]}\^{}029}.
+ If \texttt{mode=2} the postcode must be numeric, whilst if
+ \texttt{mode=3} the postcode may contain up to six digits, upper case
+ letters and spaces.
+\item
+ Alternatively, messages may begin with the special application field
+ identifier \texttt{{[})\textgreater{}\{RS\}01\{GS\}yy} where
+ \texttt{\{RS\}} represents ASCII value 30, \texttt{\{GS\}} represents
+ ASCII value 29 and \texttt{yy} is a two-digit year. In parse mode this
+ is represented as \texttt{{[})\textgreater{}\^{}03001\^{}0299}. If
+ \texttt{mode=2} or \texttt{mode=3} this must be immediately followed
+ by the structured carrier message.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-30}
+
+\begin{verbatim}
+Data: This is MaxiCode
+Options:
+Encoder: maxicode
+\end{verbatim}
+
+\begin{verbatim}
+Data: This is Maxi^067ode
+Options: parse
+Encoder: maxicode
+\end{verbatim}
+
+\includegraphics{images/maxicode-1.eps}
+
+\begin{verbatim}
+Data: 152382802^029840^029001^0291Z00004951^029UPSN^02906X610^029159^0291234567^0291/1^029^029Y^029634 ALPHA DR^029PITTSBURGH^029PA^029^004
+Options: mode=2 parse
+Encoder: maxicode
+\end{verbatim}
+
+\includegraphics{images/maxicode-2.eps}
+
+\begin{verbatim}
+Data: ABC123^029840^029001^0291Z00004951^029UPSN^02906X610^029159^0291234567^0291/1^029^029Y^029634 ALPHA DR^029PITTSBURGH^029PA^029^004
+Options: mode=3 parse
+Encoder: maxicode
+\end{verbatim}
+
+\includegraphics{images/maxicode-3.eps}
+
+\begin{verbatim}
+Data: [\)>^03001^02996152382802^029840^029001^0291Z00004951^029UPSN^02906X610^029159^0291234567^0291/1^029^029Y^029634 ALPHA DR^029PITTSBURGH^029PA^029^004
+Options: mode=2 parse
+Encoder: maxicode
+\end{verbatim}
+
+\includegraphics{images/maxicode-4.eps}
+
+\subsubsection{Royal Mail 4 State Customer
+Code}\label{royal-mail-4-state-customer-code}
+
+The \textbf{Royal Mail 4 State Customer Code} is a barcode symbology
+used by the British Postal Service to encode the postcode and delivery
+point identifier on letter mail.
+
+Also known as: RM4SCC, CBC.
+
+\paragraph{Data and Options}\label{data-and-options-40}
+
+\begin{itemize}
+\tightlist
+\item
+ The data may contain any of the following characters from the postcode
+ and DPID:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Capital letters A-Z
+ \item
+ Digits 0-9
+ \end{itemize}
+\item
+ The maditory checksum digit is calculated automatically and must not
+ be included in the data field
+\end{itemize}
+
+\paragraph{Example}\label{example-7}
+
+\begin{verbatim}
+Data: LE28HS9Z
+Options: includetext
+Encoder: royalmail
+\end{verbatim}
+
+\includegraphics{images/rm4scc-1.eps}
+
+\subsubsection{Royal TNT Post 4 state
+barcode}\label{royal-tnt-post-4-state-barcode}
+
+The \textbf{Royal TNT Post 4 state barcode} symbology is used by the
+Dutch Postal Service to encode the delivery point identifier on letter
+mail.
+
+Also known as: KIX.
+
+\paragraph{Data and Options}\label{data-and-options-41}
+
+\begin{itemize}
+\tightlist
+\item
+ The data may contain any of the following characters from the DPID:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Capital letters \texttt{A-Z}
+ \item
+ Digits \texttt{0-9}
+ \end{itemize}
+\end{itemize}
+
+\paragraph{Example}\label{example-8}
+
+\begin{verbatim}
+Data: 1231FZ13XHS
+Options: includetext
+Encoder: kix
+\end{verbatim}
+
+\includegraphics{images/kix-1.eps}
+
+\subsubsection{USPS Intelligent Mail}\label{usps-intelligent-mail}
+
+The \textbf{USPS Intelligent Mail} barcode is used by the US Postal
+service to encode the delivery and sender information on letter mail.
+
+Also known as: USPS OneCode.
+
+Standards: USPS-STD-11.
+
+\paragraph{Data and Options}\label{data-and-options-42}
+
+\begin{itemize}
+\tightlist
+\item
+ The data contains 31 digits representing the following:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Barcode Identifier - two digits
+ \item
+ Service Type Identifier - three digits
+ \item
+ Mailer ID, Sequence Number - either six then nine digits
+ respectively or nine then six digits respectively
+ \item
+ Delivery Point ZIP Code - eleven digits
+ \end{itemize}
+\item
+ The mandatory checksum digit is calculated automatically and must not
+ be included in the data field.
+\end{itemize}
+
+\paragraph{Example}\label{example-9}
+
+\begin{verbatim}
+Data: 0123456709498765432101234567891
+Options: includetext
+Encoder: onecode
+\end{verbatim}
+
+\includegraphics{images/onecode-1.eps}
+
+\subsubsection{USPS POSTNET}\label{usps-postnet}
+
+The \textbf{USPS POSTNET} barcode symbology is used by the US Postal
+service to encode the ZIP code information on letter mail.
+
+\paragraph{Data and Options}\label{data-and-options-43}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field contains the digits from the ZIP code, without dashes.
+\item
+ The mandatory checksum is calculated automatically and must not be
+ included in the data field.
+\end{itemize}
+
+\paragraph{Example}\label{example-10}
+
+\begin{verbatim}
+Data: 12345123412
+Options:
+Encoder: postnet
+\end{verbatim}
+
+\includegraphics{images/postnet-1.eps}
+
+\subsubsection{USPS PLANET}\label{usps-planet}
+
+The \textbf{USPS PLANET} barcode symbology is used by the US Postal
+service to encode the ZIP code information on letter mail.
+
+\paragraph{Data and Options}\label{data-and-options-44}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field contains eleven or thirteen digits, without dashes.
+\item
+ The mandatory checksum is calculated automatically and must not be
+ included in the data field.
+\end{itemize}
+
+\paragraph{Example}\label{example-11}
+
+\begin{verbatim}
+Data: 01234567890
+Options:
+Encoder: planet
+\end{verbatim}
+
+\includegraphics{images/planet-1.eps}
+
+\subsubsection{USPS FIM Symbols}\label{usps-fim-symbols}
+
+The \textbf{USPS FIM} encoder is used to generate static predefined
+barcode symbols.
+
+\paragraph{Data and Options}\label{data-and-options-45}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field accepts one of the following values:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{fima} - US Postal Service FIM-A symbol
+ \item
+ \texttt{fimb} - US Postal Service FIM-B symbol
+ \item
+ \texttt{fimc} - US Postal Service FIM-C symbol
+ \item
+ \texttt{fimd} - US Postal Service FIM-D symbol
+ \end{itemize}
+\end{itemize}
+\paragraph{Examples}\label{examples-31}
-\clearpage
-\section{Package code}
-\subsection{\texttt{pst-barcode.sty}}
+A USPS FIM A symbol:
-\lstinputlisting[xleftmargin=-1cm,xrightmargin=-1cm]{pst-barcode.sty}
+\begin{verbatim}
+Data: fima
+Options:
+Encoder: symbol
+\end{verbatim}
-\subsection{\texttt{pst-barcode.tex}}
-\lstinputlisting[xleftmargin=-1cm,xrightmargin=-1cm]{pst-barcode.tex}
+\includegraphics{images/fima-1.eps}
-%\subsection{\texttt{pst-barcode.pro}}
-%\lstinputlisting[language={},xleftmargin=-1.5cm,xrightmargin=-1.5cm]{pst-barcode.pro}
+A USPS FIM B symbol:
+\begin{verbatim}
+Data: fimb
+Options:
+Encoder: symbol
+\end{verbatim}
+
+\includegraphics{images/fimb-1.eps}
+
+A USPS FIM C symbol:
+
+\begin{verbatim}
+Data: fimc
+Options:
+Encoder: symbol
+\end{verbatim}
+
+\includegraphics{images/fimc-1.eps}
+
+A USPS FIM D symbol:
+
+\begin{verbatim}
+Data: fimd
+Options:
+Encoder: symbol
+\end{verbatim}
+
+\includegraphics{images/fimd-1.eps}
+
+\subsection{Pharmaceutical Symbols}\label{pharmaceutical-symbols}
+
+\subsubsection{Italian Pharmacode}\label{italian-pharmacode}
+
+\textbf{Italian Pharmacode} is a discrete, fixed length, self-checking
+barcode symbology used for pharmaceutical products in Italy.
+
+Also known as: Code 32, IMH, Radix 32.
+
+\paragraph{Data and Options}\label{data-and-options-46}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field must contain either eight or nine digits from the code.
+ The leading \emph{A} which is provided in some applications must be
+ omitted.
+\item
+ The mandatory check digit is calculated automatically if it is not
+ provided.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-32}
+
+Identical symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: 012345676
+Options: includetext
+Encoder: code32
+\end{verbatim}
+
+\begin{verbatim}
+Data: 01234567
+Options: includetext
+Encoder: code32
+\end{verbatim}
+
+\includegraphics{images/code32-1.eps}
+
+\hypertarget{pharmacode}{\subsubsection{Pharmacode}\label{pharmacode}}
+
+\textbf{Pharmacode} is a binary barcode symbology that is used by the
+Pharmaceutical industry.
+
+Also known as: Pharmaceutical Binary Code.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{two-track-pharmacode}{Two-track Pharmacode} is a
+ variant of the Pharmacode barcode.
+\end{itemize}
+
+\paragraph{Data and Options}\label{data-and-options-47}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field must contain a number between \texttt{3} and
+ \texttt{131070} inclusive.
+\item
+ The \textbf{nwidth}, \textbf{wwidth} and \textbf{swidth} options can
+ be used to specify a custom width (in points) for the narrow bars,
+ wide bars and inter-bar spaces respectively.
+\end{itemize}
+
+\paragraph{Example}\label{example-12}
+
+\begin{verbatim}
+Data: 117480
+Options:
+Encoder: pharmacode
+\end{verbatim}
+
+\includegraphics{images/pharmacode-1.eps}
+
+\hypertarget{two-track-pharmacode}{\subsubsection{Two-Track
+Pharmacode}\label{two-track-pharmacode}}
+
+\textbf{Two-Track Pharmacode} is a binary barcode symbology used by the
+Pharmaceutical industry.
+
+Also known as: Two-track Pharmaceutical Binary Code.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{pharmacode}{Pharmacode} is a variant of the
+ Two-track Pharmacode barcode.
+\end{itemize}
+
+\paragraph{Data and Options}\label{data-and-options-48}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field must contain a number between \texttt{4} and
+ \texttt{64570080} inclusive.
+\end{itemize}
+
+\paragraph{Example}\label{example-13}
+
+\begin{verbatim}
+Data: 117480
+Options:
+Encoder: pharmacode2
+\end{verbatim}
+
+\includegraphics{images/pharmacode2-1.eps}
+
+\subsubsection{PZN}\label{pzn}
+
+\textbf{PZN} is a discrete, fixed length, self-checking barcode
+symbology used for pharmaceutical products in Germany.
+
+Also known as: Pharmazentralnummer.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ PZN-7.
+\item
+ PZN-8.
+\end{itemize}
+
+\paragraph{Data and Options}\label{data-and-options-49}
+
+\begin{itemize}
+\tightlist
+\item
+ For the default PZN7 encoding, the data field must contain six digits
+ or seven digits.
+\item
+ The \textbf{pzn8} option specifies that a PZN8 symbol is required, in
+ which case the data field must contain seven digits or eight digits.
+\item
+ The mandatory check digit is calculated automatically if not provided.
+\item
+ Note: by definition, not all six-digit or seven-digit number sequences
+ are valid inputs.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-33}
+
+Identical PZN7 symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: 1234562
+Options: includetext
+Encoder: pzn
+\end{verbatim}
+
+\begin{verbatim}
+Data: 123456
+Options: includetext
+Encoder: pzn
+\end{verbatim}
+
+\includegraphics{images/pzn-1.eps}
+
+Identical PZN8 symbols, input provided with and without a check digit:
+
+\begin{verbatim}
+Data: 0275808
+Options: pzn8 includetext
+Encoder: pzn
+\end{verbatim}
+
+\begin{verbatim}
+Data: 02758089
+Options: pzn8 includetext
+Encoder: pzn
+\end{verbatim}
+
+\includegraphics{images/pzn-2.eps}
+
+\hypertarget{hibc-symbols}{\subsection{HIBC
+Symbols}\label{hibc-symbols}}
+
+\textbf{HIBC barcodes} use a number of general symbologies as carrier
+symbols for data structured according to the LIC and PAS structured data
+definitions.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{hibc-code-39}{HIBC Code 39} is a variant of
+ \protect\hyperlink{code-39}{Code 39}.
+\item
+ \protect\hyperlink{hibc-code-128}{HIBC Code 128} is a variant of
+ \protect\hyperlink{code-128}{Code 128}.
+\item
+ \protect\hyperlink{hibc-pdf417}{HIBC PDF417} is a variant of
+ \protect\hyperlink{pdf417}{PDF417}.
+\item
+ \protect\hyperlink{hibc-micropdf417}{HIBC MicroPDF417} is a variant of
+ \protect\hyperlink{micropdf417}{MicroPDF417}.
+\item
+ \protect\hyperlink{hibc-qr-code}{HIBC QR Code} is a variant of
+ \protect\hyperlink{qr-code}{QR Code}.
+\item
+ \protect\hyperlink{hibc-data-matrix}{HIBC Data Matrix} is a variant of
+ \protect\hyperlink{data-matrix}{Data Matrix}.
+\item
+ \protect\hyperlink{hibc-codablock-f}{HIBC Codablock F} is a variant of
+ \protect\hyperlink{codablock-f}{Codablock F}.
+\end{itemize}
+
+Standards: ANSI/HIBC Provider Applications Standard, ANSI/HIBC Supplier
+Labelling Standard, ANSI/HIBC Positive Identification for Patient
+Safety, ANSI/HIBC Syntax Standard.
+
+\paragraph{Data and Options}\label{data-and-options-50}
+
+\begin{itemize}
+\tightlist
+\item
+ The data should be pre-encoded to describe the intended barcode
+ content.
+\item
+ The HIBC \emph{+} character is prefixed automatically.
+\item
+ The mandatory HIBC check character is automatically appended to the
+ input.
+\end{itemize}
+
+\hypertarget{hibc-code-39}{\subsubsection{HIBC Code
+39}\label{hibc-code-39}}
+
+\begin{verbatim}
+Data: A123BJC5D6E71
+Options: includetext
+Encoder: hibccode39
+\end{verbatim}
+
+\includegraphics{images/hibccode39-1.eps}
+
+\hypertarget{hibc-code-128}{\subsubsection{HIBC Code
+128}\label{hibc-code-128}}
+
+\begin{verbatim}
+Data: A123BJC5D6E71
+Options: includetext
+Encoder: hibccode128
+\end{verbatim}
+
+\includegraphics{images/hibccode128-1.eps}
+
+\hypertarget{hibc-pdf417}{\subsubsection{HIBC
+PDF417}\label{hibc-pdf417}}
+
+\begin{verbatim}
+Data: A123BJC5D6E71
+Options:
+Encoder: hibcpdf417
+\end{verbatim}
+
+\includegraphics{images/hibcpdf417-1.eps}
+
+\hypertarget{hibc-micropdf417}{\subsubsection{HIBC
+MicroPDF417}\label{hibc-micropdf417}}
+
+\begin{verbatim}
+Data: A123BJC5D6E71
+Options:
+Encoder: hibcmicropdf417
+\end{verbatim}
+
+\includegraphics{images/hibcmicropdf417-1.eps}
+
+\hypertarget{hibc-qr-code}{\subsubsection{HIBC QR
+Code}\label{hibc-qr-code}}
+
+\begin{verbatim}
+Data: A123BJC5D6E71
+Options:
+Encoder: hibcqrcode
+\end{verbatim}
+
+\includegraphics{images/hibcqrcode-1.eps}
+
+\hypertarget{hibc-data-matrix}{\subsubsection{HIBC Data
+Matrix}\label{hibc-data-matrix}}
+
+\begin{verbatim}
+Data: A123BJC5D6E71
+Options:
+Encoder: hibcdatamatrix
+\end{verbatim}
+
+\includegraphics{images/hibcdatamatrix-1.eps}
+
+\hypertarget{hibc-codablock-f}{\subsubsection{HIBC Codablock
+F}\label{hibc-codablock-f}}
+
+\begin{verbatim}
+Data: A123BJC5D6E71
+Options:
+Encoder: hibccodablockf
+\end{verbatim}
+
+\includegraphics{images/hibccodablockf-1.eps}
+
+\subsection{Less-used Symbols}\label{less-used-symbols}
+
+\subsubsection{BC412}\label{bc412}
+
+The \textbf{BC412} barcode symbology is single width, variable length
+barcode that is used for silicon wafer identification by the
+semiconductor manufacturing industry.
+
+Also known as: BC412 SEMI, BC412 IBM.
+
+\paragraph{Data and Options}\label{data-and-options-51}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field can hold any of the following:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Numbers 0-9
+ \item
+ Capital letters A-Z, excluding O
+ \end{itemize}
+\item
+ The \textbf{includestartstop} option enables the display of start and
+ stop bars.
+\item
+ The \textbf{includecheck} option calculates the check character.
+\item
+ The \textbf{includecheckintext} option makes the calculated checksum
+ appear in the human readable text.
+\item
+ The \textbf{semi} option enables conformance to the SEMI standard by
+ enabling start and stop bars as well as a check character.
+\item
+ The \textbf{inkspread} option can be used to adjust the width of the
+ bars.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-34}
+
+\begin{verbatim}
+Data: BC412
+Options: includecheck
+Encoder: bc412
+\end{verbatim}
+
+\includegraphics{images/bc412-1.eps}
+
+\begin{verbatim}
+Data: BC412
+Options: includestartstop
+Encoder: bc412
+\end{verbatim}
+
+\includegraphics{images/bc412-2.eps}
+
+\begin{verbatim}
+Data: BC412
+Options: semi
+Encoder: bc412
+\end{verbatim}
+
+\includegraphics{images/bc412-3.eps}
+
+\subsubsection{Channel Code}\label{channel-code}
+
+\textbf{Channel Code} is a linear, continuous, self-checking,
+bidirectional barcode symbology that encodes between two and seven
+digits in a short space.
+
+Standards: ANSI/AIM BC12 - USS Channel Code.
+
+\paragraph{Data and Options}\label{data-and-options-52}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field can hold zero prefixed values from any of the following
+ ranges:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Channel 3: \texttt{00-26}
+ \item
+ Channel 4: \texttt{000-292}
+ \item
+ Channel 5: \texttt{0000-3493}
+ \item
+ Channel 6: \texttt{00000-44072}
+ \item
+ Channel 7: \texttt{000000-576688}
+ \item
+ Channel 8: \texttt{0000000-7742862}
+ \end{itemize}
+\item
+ The channel is determined to be one more than the number of digits
+ given in the data field.
+\item
+ The \textbf{shortfinder} option generates a symbol with a shortened
+ finder pattern.
+\item
+ The \textbf{includecheck} option appends an optional check bar suffix.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-35}
+
+A channel 3 symbol holding the value five:
+
+\begin{verbatim}
+Data: 05
+Options: includetext
+Encoder: channelcode
+\end{verbatim}
+
+\includegraphics{images/channelcode-1.eps}
+
+A channel 4 symbol holding the value 123:
+
+\begin{verbatim}
+Data: 123
+Options: includetext
+Encoder: channelcode
+\end{verbatim}
+
+\includegraphics{images/channelcode-2.eps}
+
+A channel 4 symbol holding the value five including optional check bars:
+
+\begin{verbatim}
+Data: 005
+Options: includetext includecheck
+Encoder: channelcode
+\end{verbatim}
+
+\includegraphics{images/channelcode-3.eps}
+
+A channel 3 symbol holding the value 26 with a shorteded finder pattern:
+
+\begin{verbatim}
+Data: 26
+Options: shortfinder includetext
+Encoder: channelcode
+\end{verbatim}
+
+\includegraphics{images/channelcode-4.eps}
+
+\subsubsection{Codabar}\label{codabar}
+
+\textbf{Codabar} is a linear, discrete, self-checking, bidirectional
+barcode symbology that can encode digits, six symbols and four delimiter
+characters. It is primarily used by libraries and blood banks, photo
+labs and FedEx airbills.
+
+Also known as: Rationalized Codabar, Ames Code, NW-7, USD-4,
+USS-Codabar, ABC Codabar, Monarch, Code 2 of 7.
+
+Standards: ANSI/AIM BC3 - USS Codabar, BS EN 798.
+
+\paragraph{Data and Options}\label{data-and-options-53}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field must start and stop with one of the following
+ delimiters
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{ABCD}
+ \item
+ \texttt{TNE*} (with the \emph{altstartstop} option)
+ \end{itemize}
+\item
+ The data field can otherwise hold any of the following
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Digits 0-9
+ \item
+ Symbols \texttt{-\$:/.+}
+ \end{itemize}
+\item
+ The \textbf{altstartstop} option specifies that the alternative set of
+ delimiter characters is in use.
+\item
+ The \textbf{includecheck} option calculates the check digit.
+\item
+ The \textbf{includecheckintext} option makes the calculated check
+ characters appear in the human readable text.
+\end{itemize}
+
+\paragraph{Example}\label{example-14}
+
+\begin{verbatim}
+Data: A0123456789B
+Options: includecheck includetext includecheckintext
+Encoder: rationalizedCodabar
+\end{verbatim}
+
+\includegraphics{images/codabar-1.eps}
+
+\hypertarget{codablock-f}{\subsubsection{Codablock
+F}\label{codablock-f}}
+
+The \textbf{Codablock F} barcode symbology is 2D stacked-linear barcode
+that consists of a number of stacked \protect\hyperlink{code-128}{Code
+128} symbols. It can encode full 256 character extended-ASCII.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{hibc-symbols}{HIBC Codablock F} is a variant of
+ Codablock F that should be used when encoding HIBC formatted data.
+\end{itemize}
+
+Standards: USS Codablock F.
+
+\paragraph{Data and Options}\label{data-and-options-54}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field can consist of any extended-ASCII data.
+\item
+ \emph{FNC4} function characters will be inserted automatically to
+ allow the encoding of extended ASCII characters.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters.
+\item
+ When the \textbf{parsefnc} option is specified, non-data function
+ characters can be specified by \texttt{\^{}FNC1} or \texttt{\^{}FNC3}.
+\item
+ The \textbf{columns} option specifies the number of columns in the
+ symbol, default 8.
+\item
+ The \textbf{rows} option specifies the number of rows in the symbol,
+ between 2 and 44.
+\item
+ If \textbf{rows} is unspecified the encoder will default to the
+ smallest number of rows that can hold the given data.
+\item
+ The \textbf{raw} option denotes that the data field is providing the
+ input as a pre-encoded codewords in \texttt{\^{}NNN} format, suitable
+ for direct low-level encoding.
+\item
+ The \textbf{rowheight} option specifies the height of the bars in each
+ row in points. The default is 10.
+\item
+ The \textbf{sepheight} option specifies the height of the separator
+ bars enclosing the rows in points. The default is 1.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-36}
+
+\begin{verbatim}
+Data: Codablock F
+Options:
+Encoder: codablockf
+\end{verbatim}
+
+\includegraphics{images/codablockf-1.eps}
+
+\begin{verbatim}
+Data: CODABLOCK F 34567890123456789010040digit
+Options: columns=8 rows=5
+Encoder: codablockf
+\end{verbatim}
+
+\includegraphics{images/codablockf-2.eps}
+
+\begin{verbatim}
+Data: Short bars, fat seperators
+Options: columns=10 rows=8 rowheight=6 sepheight=2
+Encoder: codablockf
+\end{verbatim}
+
+\includegraphics{images/codablockf-3.eps}
+
+\subsubsection{Code 11}\label{code-11}
+
+\textbf{Code 11} is a linear, discrete, non-self-checking,
+bidirectional, numeric barcode symbology that is primarily used for
+labelling telecommunication equipment.
+
+Also known as: USD-8.
+
+\paragraph{Data and Options}\label{data-and-options-55}
+
+\begin{itemize}
+\tightlist
+\item
+ The data consists of digits and the dash character \emph{-}.
+\item
+ The \textbf{includecheck} option calculates the check digits.
+\item
+ For less than 10 data digits a single check digit is used.
+\item
+ For 10 or more data digits two check digits are used.
+\end{itemize}
+
+\paragraph{Example}\label{example-15}
+
+\begin{verbatim}
+Data: 0123456789
+Options: includecheck includetext includecheckintext
+Encoder: code11
+\end{verbatim}
+
+\includegraphics{images/code11-1.eps}
+
+\subsubsection{Code 16K}\label{code-16k}
+
+The \textbf{Code 16K} barcode symbology is 2D stacked-linear barcode
+that can encode full 256 character extended-ASCII with the use of the
+\emph{FNC4} shift character.
+
+Also known as: USS-16K
+
+Standards: ANSI/AIM BC7 - USS Code 16K, BS EN 12323.
+
+\paragraph{Data and Options}\label{data-and-options-56}
+
+\begin{itemize}
+\tightlist
+\item
+ The input can consist of any 256-bit extended ASCII data.
+\item
+ \emph{FNC4} function characters will be inserted automatically to
+ allow the encoding of extended ASCII characters.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters.
+\item
+ When the \textbf{parsefnc} option is specified, non-data function
+ characters can be specified by \texttt{\^{}FNC1} through
+ \texttt{\^{}FNC3}.
+\item
+ The \textbf{mode} option specifies the mode for the symbol. It is
+ usual to leave this unspecified in which case the most appropriate
+ mode that results in the shortest symbol is automatically selected
+ based in the input data.
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{mode=0} - Starting code set A
+ \item
+ \texttt{mode=1} - Starting code set B
+ \item
+ \texttt{mode=2} - Starting code set C
+ \item
+ \texttt{mode=3} - Starting code set B with implied \emph{FNC1}
+ \item
+ \texttt{mode=4} - Starting code set C with implied \emph{FNC1}
+ \item
+ \texttt{mode=5} - Starting code set C with implied \emph{Shift B}
+ \item
+ \texttt{mode=6} - Starting code set C with implied \emph{Double
+ Shift B}
+ \end{itemize}
+\item
+ The \textbf{pos} option specifies this symbol to be part of multi-part
+ structured data. For example \texttt{pos=25} specifies this to be the
+ second symbol in a group of five symbols.
+\item
+ The \textbf{rows} option specifies the number of rows in the symbol,
+ between two and sixteen.
+\item
+ If \textbf{rows} is unspecified the encoder will default to the
+ smallest number of rows that can hold the given data.
+\item
+ The \textbf{raw} option denotes that the data field is providing the
+ input as a pre-encoded codewords in \texttt{\^{}NNN} format, suitable
+ for direct low-level encoding.
+\item
+ The \textbf{rowheight} option specifies the height of the bars in each
+ row in points. The default is 10.
+\item
+ The \textbf{sepheight} option specifies the height of the separator
+ bars enclosing the rows in points. The default is 1.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-37}
+
+\begin{verbatim}
+Data: Abcd-1234567890-wxyZ
+Options:
+Encoder: code16k
+\end{verbatim}
+
+\includegraphics{images/code16k-1.eps}
+
+\begin{verbatim}
+Data: Code 16K
+Options: rows=10
+Encoder: code16k
+\end{verbatim}
+
+\includegraphics{images/code16k-2.eps}
+
+\begin{verbatim}
+Data: Short bars, fat seperators
+Options: rows=8 rowheight=5 sepheight=2
+Encoder: code16k
+\end{verbatim}
+
+\includegraphics{images/code16k-3.eps}
+
+\hypertarget{code-25}{\subsubsection{Code 25}\label{code-25}}
+
+\textbf{Code 2 of 5} is a simple low density numeric barcode symbology.
+
+Also known as: Code 25, Industrial 2 of 5, Standard 2 of 5
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{iata-2-of-5}{IATA 2 of 5}, Computer Identics 2 of
+ 5.
+\item
+ \protect\hyperlink{datalogic-2-of-5}{Datalogic 2 of 5}.
+\item
+ \protect\hyperlink{matrix-2-of-5}{Matrix 2 of 5}.
+\item
+ \protect\hyperlink{coop-2-of-5}{COOP 2 of 5}.
+\end{itemize}
+
+\paragraph{Data and Options}\label{data-and-options-57}
+
+\begin{itemize}
+\tightlist
+\item
+ The data consists of any number of digits.
+\item
+ The \textbf{includecheck} option calculates the check digit.
+\item
+ The \textbf{version} option determines which variant to use:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{version=industrial} (default) - Industrial 2 of 5.
+ \item
+ \texttt{version=iata} - \emph{Deprecated: Use
+ \protect\hyperlink{iata-2-of-5}{IATA 2 of 5}}
+ \item
+ \texttt{version=datalogic} - \emph{Deprecated: Use
+ \protect\hyperlink{datalogic-2-of-5}{Datalogic 2 of 5}}
+ \item
+ \texttt{version=matrix} - \emph{Deprecated: Use
+ \protect\hyperlink{matrix-2-of-5}{Matrix 2 of 5}}
+ \item
+ \texttt{version=coop} - \emph{Deprecated: Use
+ \protect\hyperlink{coop-2-of-5}{COOP 2 of 5}}
+ \end{itemize}
+\end{itemize}
+
+\paragraph{Examples}\label{examples-38}
+
+\begin{verbatim}
+Data: 01234567
+Options:
+Encoder: code2of5
+\end{verbatim}
+
+\includegraphics{images/code25-1.eps}
+
+\hypertarget{iata-2-of-5}{\subsubsection{IATA 2 of
+5}\label{iata-2-of-5}}
+
+\textbf{IATA 2 of 5} is a variant of the
+\protect\hyperlink{code-25}{Code 2 of 5} barcode symbology.
+
+Also known as: Computer Identics 2 of 5.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{code-25}{Industrial 2 of 5}, Standard 2 of 5.
+\item
+ \protect\hyperlink{datalogic-2-of-5}{Datalogic 2 of 5}.
+\item
+ \protect\hyperlink{matrix-2-of-5}{Matrix 2 of 5}.
+\item
+ \protect\hyperlink{coop-2-of-5}{COOP 2 of 5}.
+\end{itemize}
+
+\paragraph{Data and Options}\label{data-and-options-58}
+
+\begin{itemize}
+\tightlist
+\item
+ The data consists of any number of digits.
+\item
+ The \textbf{includecheck} option calculates the check digit.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-39}
+
+\begin{verbatim}
+Data: 01234567
+Options: includetext includecheck includecheckintext
+Encoder: iata2of5
+\end{verbatim}
+
+\includegraphics{images/code25-2.eps}
+
+\hypertarget{matrix-2-of-5}{\subsubsection{Matrix 2 of
+5}\label{matrix-2-of-5}}
+
+\textbf{Matrix 2 of 5} is a variant of the
+\protect\hyperlink{code-25}{Code 2 of 5} barcode symbology.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{code-25}{Industrial 2 of 5}, Standard 2 of 5.
+\item
+ \protect\hyperlink{iata-2-of-5}{IATA 2 of 5}, Computer Identics 2 of
+ 5.
+\item
+ \protect\hyperlink{datalogic-2-of-5}{Datalogic 2 of 5}.
+\item
+ \protect\hyperlink{coop-2-of-5}{COOP 2 of 5}.
+\end{itemize}
+
+\paragraph{Data and Options}\label{data-and-options-59}
+
+\begin{itemize}
+\tightlist
+\item
+ The data consists of any number of digits.
+\item
+ The \textbf{includecheck} option calculates the check digit.
+\end{itemize}
+
+\hypertarget{datalogic-2-of-5}{\subsubsection{Datalogic 2 of
+5}\label{datalogic-2-of-5}}
+
+\textbf{Datalogic 2 of 5} is a variant of the
+\protect\hyperlink{code-25}{Code 2 of 5} barcode symbology.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{code-25}{Industrial 2 of 5}, Standard 2 of 5.
+\item
+ \protect\hyperlink{iata-2-of-5}{IATA 2 of 5}, Computer Identics 2 of
+ 5.
+\item
+ \protect\hyperlink{matrix-2-of-5}{Matrix 2 of 5}.
+\item
+ \protect\hyperlink{coop-2-of-5}{COOP 2 of 5}.
+\end{itemize}
+
+\paragraph{Data and Options}\label{data-and-options-60}
+
+\begin{itemize}
+\tightlist
+\item
+ The data consists of any number of digits.
+\item
+ The \textbf{includecheck} option calculates the check digit.
+\end{itemize}
+
+\hypertarget{coop-2-of-5}{\subsubsection{COOP 2 of
+5}\label{coop-2-of-5}}
+
+\textbf{COOP 2 of 5} is a variant of the
+\protect\hyperlink{code-25}{Code 2 of 5} barcode symbology.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{code-25}{Industrial 2 of 5}, Standard 2 of 5.
+\item
+ \protect\hyperlink{iata-2-of-5}{IATA 2 of 5}, Computer Identics 2 of
+ 5.
+\item
+ \protect\hyperlink{datalogic-2-of-5}{Datalogic 2 of 5}.
+\item
+ \protect\hyperlink{matrix-2-of-5}{Matrix 2 of 5}.
+\end{itemize}
+
+\paragraph{Data and Options}\label{data-and-options-61}
+
+\begin{itemize}
+\tightlist
+\item
+ The data consists of any number of digits.
+\item
+ The \textbf{includecheck} option calculates the check digit.
+\end{itemize}
+
+\subsubsection{Code 49}\label{code-49}
+
+The \textbf{Code 49} barcode symbology is 2D stacked-linear barcode that
+can encode 128 character ASCII.
+
+Also known as: USS-49.
+
+Standards: ANSI/AIM BC6 - USS Code 49.
+
+\paragraph{Data and Options}\label{data-and-options-62}
+
+\begin{itemize}
+\tightlist
+\item
+ The input can consist of any ASCII data.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters.
+\item
+ When the \textbf{parsefnc} option is specified, non-data function
+ characters can be specified by \texttt{\^{}FNC1} through
+ \texttt{\^{}FNC3}.
+\item
+ The \textbf{mode} option specifies the mode for the symbol. It is
+ usual to leave this unspecified in which case the most appropriate
+ mode that results in the shortest symbol is automatically selected
+ based in the input data.
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{mode=0} - regular alphanumeric mode
+ \item
+ \texttt{mode=1} - append mode
+ \item
+ \texttt{mode=2} - numeric mode
+ \item
+ \texttt{mode=3} - group alphanumeric mode
+ \item
+ \texttt{mode=4} - alphanumeric mode starting shift 1
+ \item
+ \texttt{mode=5} - alphanumeric mode starting shift 2
+ \item
+ \texttt{mode=6} - reserved
+ \end{itemize}
+\item
+ The \textbf{pos} option specifies this symbol to be part of multi-part
+ structured data, i.e.~selecting \texttt{mode=3}. For example
+ \texttt{pos=25} specifies this to be the second symbol in a group of
+ five symbols.
+\item
+ The \textbf{rows} option specifies the number of rows in the symbol,
+ between \emph{2} and \emph{8}.
+\item
+ If \textbf{rows} is unspecified the encoder will default to the
+ smallest number of rows that can hold the given data.
+\item
+ The \textbf{rowheight} option specifies the height of the bars in each
+ row in points. The default is \emph{10}.
+\item
+ The \textbf{sepheight} option specifies the height of the separator
+ bars enclosing the rows in points. The default is \emph{1}.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-40}
+
+\begin{verbatim}
+Data: MULTIPLE ROWS IN CODE 49
+Options:
+Encoder: code49
+\end{verbatim}
+
+\includegraphics{images/code49-1.eps}
+
+\begin{verbatim}
+Data: CODE 49
+Options: rows=8
+Encoder: code49
+\end{verbatim}
+
+\includegraphics{images/code49-2.eps}
+
+\begin{verbatim}
+Data: Short bars, fat seperators
+Options: rows=8 rowheight=6 sepheight=2
+Encoder: code49
+\end{verbatim}
+
+\includegraphics{images/code49-3.eps}
+
+\subsubsection{Code One}\label{code-one}
+
+\textbf{Code One} was the earliest public domain 2D matrix-style
+barcode. It is used by the health care and recycling industry and can
+encode full 256 character extended-ASCII.
+
+Also known as: Code 1, Code 1S.
+
+Standards: AIM USS - Code One.
+
+\paragraph{Data and Options}\label{data-and-options-63}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field can consist of any ASCII data for \emph{standard} and
+ \emph{T-type} symbols.
+\item
+ Note: \emph{S-type} symbols are special in that they represent a
+ numeric value so may only contain digits.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters, e.g.
+ \texttt{\^{}029} for \emph{GS}, etc.
+\item
+ When the \textbf{parsefnc} option is specified, non-data function
+ characters can be specified by \texttt{\^{}FNC1}, \texttt{\^{}FNC3}.
+\item
+ The \textbf{version} option is used to specify the size and type of
+ the symbol:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{A}, \texttt{B}, \texttt{C}, \texttt{D}, \texttt{E},
+ \texttt{F}, \texttt{G}, \texttt{H} - for standard format symbols
+ (default automatic selection)
+ \item
+ \texttt{version=T-16}, \texttt{version=T-32}, \texttt{version=T-48}
+ - \emph{T-type} symbols
+ \item
+ \texttt{version=S-10}, \texttt{version=S-20}, \texttt{version=S-30}
+ - \emph{S-type} symbols
+ \end{itemize}
+\end{itemize}
+
+\paragraph{Examples}\label{examples-41}
+
+\begin{verbatim}
+Data: Code One
+Options:
+Encoder: codeone
+\end{verbatim}
+
+\includegraphics{images/codeone-1.eps}
+
+\begin{verbatim}
+Data: Code One
+Options: version=C
+Encoder: codeone
+\end{verbatim}
+
+\includegraphics{images/codeone-2.eps}
+
+\begin{verbatim}
+Data: Code One
+Options: version=T-32
+Encoder: codeone
+\end{verbatim}
+
+\includegraphics{images/codeone-3.eps}
+
+\begin{verbatim}
+Data: 406990
+Options: version=S-10
+Encoder: codeone
+\end{verbatim}
+
+\includegraphics{images/codeone-4.eps}
+
+\hypertarget{msi-plessey}{\subsubsection{MSI
+Plessey}\label{msi-plessey}}
+
+\textbf{MSI Plessey} is a continuous, non-self-checking, arbitrary
+length, numeric barcode symbology.
+
+Also known as: MSI, MSI Modified Plessey.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{plessey}{Plessey (UK)} is the original barcode upon
+ which MSI Modified Plessey was based.
+\end{itemize}
+
+\paragraph{Data and Options}\label{data-and-options-64}
+
+\begin{itemize}
+\tightlist
+\item
+ The data can consist of any number of digits.
+\item
+ The \textbf{includecheck} option calculates the check digit or check
+ digits.
+\item
+ The \textbf{includecheckintext} option makes the calculated check
+ characters appear in the human readable text.
+\item
+ The \textbf{checktype} option is used to specify the type of checksum,
+ either:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{checktype=mod10} (default)
+ \item
+ \texttt{checktype=mod1010}
+ \item
+ \texttt{checktype=mod11}
+ \item
+ \texttt{checktype=ncrmod11}
+ \item
+ \texttt{checktype=mod1110}
+ \item
+ \texttt{checktype=ncrmod1110}
+ \end{itemize}
+\item
+ The \textbf{badmod11} option allows a \texttt{checktype=mod11}
+ checksum value of 10 to be encoded with a pair of check digits
+ \emph{10}. Normally in \texttt{checktype=mod11}, any input whose
+ checksum evaluates to \emph{10} is considered invalid having no
+ correct representation.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-42}
+
+\begin{verbatim}
+Data: 0123456789
+Options: includecheck includetext
+Encoder: msi
+\end{verbatim}
+
+\includegraphics{images/msi-1.eps}
+
+\begin{verbatim}
+Data: 0123456789
+Options: includecheck checktype=mod1110 includetext includecheckintext
+Encoder: msi
+\end{verbatim}
+
+\includegraphics{images/msi-2.eps}
+
+\begin{verbatim}
+Data: 0123456785
+Options: includecheck checktype=mod11 badmod11 includetext includecheckintext
+Encoder: msi
+\end{verbatim}
+
+\includegraphics{images/msi-3.eps}
+
+\hypertarget{plessey}{\subsubsection{Plessey}\label{plessey}}
+
+\textbf{Plessey} is a continuous, arbitrary length barcode symbology for
+encoding hexadecimal data.
+
+Also known as: Anker Code.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{msi-plessey}{MSI Modified Plessey} is a variant of
+ the Plessey (UK) barcode developed by the MSI Data Corporation.
+\end{itemize}
+
+\paragraph{Data and Options}\label{data-and-options-65}
+
+\begin{itemize}
+\tightlist
+\item
+ The data can contain any of the following:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ Numbers \texttt{0-9}
+ \item
+ Capital letters \texttt{A-F}
+ \end{itemize}
+\item
+ Two manditory check characters implementing a CRC check are
+ automatically included.
+\item
+ The \textbf{includecheckintext} option makes the calculated check
+ characters appear in the human readable text.
+\item
+ The \textbf{unidirectional} option generates a unidirectional Plessey
+ symbol.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-43}
+
+Equivalent symbols, the latter displaying the two mandatory check
+characters:
+
+\begin{verbatim}
+Data: 01234ABCD
+Options: includetext
+Encoder: plessey
+\end{verbatim}
+
+\includegraphics{images/plessey-1.eps}
+
+\begin{verbatim}
+Data: 01234ABCD
+Options: includetext includecheckintext
+Encoder: plessey
+\end{verbatim}
+
+\includegraphics{images/plessey-2.eps}
+
+A unidirectional symbol:
+
+\begin{verbatim}
+Data: 01234ABCD
+Options: unidirectional
+Encoder: plessey
+\end{verbatim}
+
+\includegraphics{images/plessey-3.eps}
+
+\subsubsection{PosiCode}\label{posicode}
+
+\textbf{PosiCode} is a continuous, variable length, non-self-checking,
+bidirectional barcode symbology that is designed for use within printing
+processes where it is difficult to precisely control the width of a bar.
+
+Standards: ITS PosiCode.
+
+\paragraph{Data and Options}\label{data-and-options-66}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field can hold the following:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ For \emph{standard} symbols: Any 256-bit extended ASCII data.
+ \item
+ \emph{FNC4} function characters will be inserted automatically to
+ allow the encoding of extended ASCII characters.
+ \item
+ For \emph{limited} symbols: letters \texttt{A-Z}, digits
+ \texttt{0-9}, symbols \texttt{-} and \texttt{.}
+ \end{itemize}
+\item
+ The \textbf{version} option is used to specify the variant of the
+ symbol, either:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{version=a} (default)
+ \item
+ \texttt{version=b}
+ \item
+ \texttt{version=limiteda}
+ \item
+ \texttt{version=limitedb}
+ \end{itemize}
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters, e.g.
+ \texttt{\^{}029} for \emph{GS}, etc.
+\item
+ When the \textbf{parsefnc} option is specified, non-data function
+ characters can be specified by \texttt{\^{}FNC1} through
+ \texttt{\^{}FNC3}.
+\item
+ The \textbf{inkspread} option can be used to adjust the width of the
+ bars.
+\end{itemize}
+
+\paragraph{Example PosiCode}\label{example-posicode}
+
+Equivalent ways to generate a PosiCode A symbol:
+
+\begin{verbatim}
+Data: Abc123
+Options:
+Encoder: posicode
+\end{verbatim}
+
+\begin{verbatim}
+Data: Abc123
+Options: version=a
+Encoder: posicode
+\end{verbatim}
+
+\includegraphics{images/posicode-1.eps}
+
+PosiCode A including a \emph{GS} (ASCII 29) character:
+
+\begin{verbatim}
+Data: AB^029CD
+Options: parse
+Encoder: posicode
+\end{verbatim}
+
+\includegraphics{images/posicode-2.eps}
+
+PosiCode A including an \emph{FNC2} special character:
+
+\begin{verbatim}
+Data: AB^FNC2CD
+Options: parsefnc
+Encoder: posicode
+\end{verbatim}
+
+\includegraphics{images/posicode-3.eps}
+
+PosiCode B symbol with widened bars:
+
+\begin{verbatim}
+Data: Abc123
+Options: version=b inkspread=-1
+Encoder: posicode
+\end{verbatim}
+
+\includegraphics{images/posicode-4.eps}
+
+\paragraph{Example Limited PosiCode}\label{example-limited-posicode}
+
+Limited PosiCode A with narrowed bars:
+
+\begin{verbatim}
+Data: ABC-12.3
+Options: version=limiteda
+Encoder: posicode
+\end{verbatim}
+
+\includegraphics{images/posicode-5.eps}
+
+Limited PosiCode B:
+
+\begin{verbatim}
+Data: ABC-12.3
+Options: version=limitedb
+Encoder: posicode
+\end{verbatim}
+
+\includegraphics{images/posicode-6.eps}
+
+\hypertarget{telepen}{\subsubsection{Telepen}\label{telepen}}
+
+\textbf{Telepen} is an arbitrary length barcode symbology for encoding
+all 128 ASCII characters without the need for shift characters.
+
+Also known as: Telepen Alpha, Telepen Full ASCII.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{telepen-numeric}{Telepen Numeric}.
+\end{itemize}
+
+Standards: USS Telepen.
+
+\paragraph{Data and Options}\label{data-and-options-67}
+
+\begin{itemize}
+\tightlist
+\item
+ The data can contain any standard ASCII data, values 0-127.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters.
+\item
+ The mandatory check digit is automatically included.
+\item
+ \emph{Deprecated: Use \protect\hyperlink{telepen-numeric}{Telepen
+ Numeric} instead. When the \textbf{numeric} option is given, the data
+ is read as either pairs of digits or \texttt{0X}, \texttt{1X}, etc.
+ The singular values \texttt{\^{}000} to \texttt{\^{}016} can also be
+ encoded using the \emph{parse} option.}
+\end{itemize}
+
+\paragraph{Examples}\label{examples-44}
+
+\begin{verbatim}
+Data: Telepen
+Options: includetext
+Encoder: telepen
+\end{verbatim}
+
+\includegraphics{images/telepen-1.eps}
+
+\begin{verbatim}
+Data: Telepen^013
+Options: parse
+Encoder: telepen
+\end{verbatim}
+
+\includegraphics{images/telepen-2.eps}
+
+\hypertarget{telepen-numeric}{\subsubsection{Telepen
+Numeric}\label{telepen-numeric}}
+
+\textbf{Telepen Numeric} is a variant of the Telepen symbology for
+efficient encoding of numeric data.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{telepen}{Telepen Alpha}.
+\end{itemize}
+
+Standards: USS Telepen.
+
+\paragraph{Data and Options}\label{data-and-options-68}
+
+\begin{itemize}
+\tightlist
+\item
+ The data is provided as either pairs of digits or \texttt{0X},
+ \texttt{1X}, etc. The singular values \texttt{\^{}000} to
+ \texttt{\^{}016} can also be encoded using the \emph{parse} option.
+\item
+ When the \textbf{parse} option is specified, any instances of
+ \texttt{\^{}NNN} in the data field are replaced with their equivalent
+ ASCII value, useful for specifying unprintable characters.
+\item
+ The mandatory check digit is automatically included.
+\end{itemize}
+
+\paragraph{Examples}\label{examples-45}
+
+\begin{verbatim}
+Data: 123456
+Options:
+Encoder: telepennumeric
+\end{verbatim}
+
+\includegraphics{images/telepen-3.eps}
+
+\begin{verbatim}
+Data: 1X345X
+Options:
+Encoder: telepennumeric
+\end{verbatim}
+
+\includegraphics{images/telepen-4.eps}
+
+\begin{verbatim}
+Data: 1234^005
+Options: parse includetext
+Encoder: telepennumeric
+\end{verbatim}
+
+\includegraphics{images/telepen-5.eps}
+
+\hypertarget{gs1-composite-symbols}{\subsection{GS1 Composite
+Symbols}\label{gs1-composite-symbols}}
+
+\textbf{GS1 Composite} barcode symbologies consist of a primary
+component beneath a 2D component (variations of
+\protect\hyperlink{micropdf417}{MicroPDF417} and
+\protect\hyperlink{pdf417}{PDF417}) used to encode supplementary
+\protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+formatted data}.
+
+Variants:
+
+\begin{itemize}
+\tightlist
+\item
+ \protect\hyperlink{ean-13-composite}{EAN-13 Composite} is a variant of
+ \protect\hyperlink{ean-13}{EAN-13}.
+\item
+ \protect\hyperlink{ean-8-composite}{EAN-8 Composite} is a variant of
+ \protect\hyperlink{ean-8}{EAN-8}.
+\item
+ \protect\hyperlink{upc-a-composite}{UPC-A Composite} is a variant of
+ \protect\hyperlink{upc-a}{UPC-A}.
+\item
+ \protect\hyperlink{upc-e-composite}{UPC-E Composite} is a variant of
+ \protect\hyperlink{upc-e}{UPC-E}.
+\item
+ \protect\hyperlink{gs1-databar-omnidirectional-composite}{GS1 DataBar
+ Omnidirectional Composite} is a variant of
+ \protect\hyperlink{gs1-databar-omnidirectional}{GS1 DataBar
+ Omnidirectional}.
+\item
+ \protect\hyperlink{gs1-databar-stacked-omnidirectional-composite}{GS1
+ DataBar Stacked Omnidirectional Composite} is a variant of
+ \protect\hyperlink{gs1-databar-stacked-omnidirectional}{GS1 DataBar
+ Stacked Omnidirectional}.
+\item
+ \protect\hyperlink{gs1-databar-expanded-composite}{GS1 DataBar
+ Expanded Composite} is a variant of
+ \protect\hyperlink{gs1-databar-expanded}{GS1 DataBar Expanded}.
+\item
+ \protect\hyperlink{gs1-databar-expanded-stacked-composite}{GS1 DataBar
+ Expanded Stacked Composite} is a variant of
+ \protect\hyperlink{gs1-databar-expanded-stacked}{GS1 DataBar Expanded
+ Stacked}.
+\item
+ \protect\hyperlink{gs1-databar-truncated-composite}{GS1 DataBar
+ Truncated Composite} is a variant of
+ \protect\hyperlink{gs1-databar-truncated}{GS1 DataBar Truncated}.
+\item
+ \protect\hyperlink{gs1-databar-stacked-composite}{GS1 DataBar Stacked
+ Composite} is a variant of \protect\hyperlink{gs1-databar-stacked}{GS1
+ DataBar Stacked}.
+\item
+ \protect\hyperlink{gs1-databar-limited-composite}{GS1 DataBar Limited
+ Composite} is a variant of \protect\hyperlink{gs1-databar-limited}{GS1
+ DataBar Limited}.
+\item
+ \protect\hyperlink{gs1-128-composite}{GS1-128 Composite} is a variant
+ of \protect\hyperlink{gs1-128}{GS1-128}.
+\end{itemize}
+
+Standards: ISO/IEC 24723, ITS EAN.UCC Composite Symbology, AIM ISS -
+EAN.UCC Composite Symbology, GS1 General Specifications.
+
+\paragraph{Data and Options}\label{data-and-options-69}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field consists of a primary and secondary component separated
+ by a pipe \texttt{\textbar{}} character.
+\item
+ The data for the primary component (preceding the pipe) is entered in
+ a format identical to the corresponding non-composite barcode
+ symbology.
+\item
+ The data for the 2D component (following the pipe) is entered in
+ \protect\hyperlink{gs1-application-identifier-standard-format}{GS1
+ Application Identifier standard format}.
+\item
+ For maximum efficiency, if the data for the 2D component contains a
+ number of application identifiers matching any of the specifications
+ below then they should be provided in this given order:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{(11)...(10)...}
+ \item
+ \texttt{(17)...(10)...}
+ \item
+ \texttt{(90)\{0-3\ digits\ not\ starting\ 0\}\{upper\ alpha\}...}
+ \end{itemize}
+\item
+ The \textbf{ccversion} option is used to select a specific 2D
+ component:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{ccversion=a} - \protect\hyperlink{cc-a}{CC-A}
+ \item
+ \texttt{ccversion=b} - \protect\hyperlink{cc-b}{CC-B}
+ \item
+ \texttt{ccversion=c} - \protect\hyperlink{cc-c}{CC-C}
+ (\protect\hyperlink{gs1-128-composite}{GS1-128 Composite} only)
+ \end{itemize}
+\item
+ If \textbf{ccversion} is not specified a CC-A component will be
+ selected if the data will fit, otherwise a CC-B component will be
+ used. In the case of \protect\hyperlink{gs1-128-composite}{GS1-128
+ Composite} a CC-C component will be used if the data does not fit
+ within either a CC-A or CC-B component.
+\end{itemize}
+
+\hypertarget{ean-13-composite}{\subsubsection{EAN-13
+Composite}\label{ean-13-composite}}
+
+\begin{verbatim}
+Data: 331234567890|(99)1234-abcd
+Options: includetext guardwhitespace
+Encoder: ean13composite
+\end{verbatim}
+
+\includegraphics{images/ean13composite-1.eps}
+
+\hypertarget{ean-8-composite}{\subsubsection{EAN-8
+Composite}\label{ean-8-composite}}
+
+\begin{verbatim}
+Data: 12345670|(21)A12345678
+Options: includetext guardwhitespace
+Encoder: ean8composite
+\end{verbatim}
+
+\includegraphics{images/ean8composite-1.eps}
+
+\hypertarget{upc-a-composite}{\subsubsection{UPC-A
+Composite}\label{upc-a-composite}}
+
+\begin{verbatim}
+Data: 01600033610|(99)1234-abcd
+Options: includetext
+Encoder: upcacomposite
+\end{verbatim}
+
+\includegraphics{images/upcacomposite-1.eps}
+
+\hypertarget{upc-e-composite}{\subsubsection{UPC-E
+Composite}\label{upc-e-composite}}
+
+\begin{verbatim}
+Data: 0121230|(15)021231
+Options: includetext
+Encoder: upcecomposite
+\end{verbatim}
+
+\includegraphics{images/upcecomposite-1.eps}
+
+\hypertarget{gs1-databar-omnidirectional-composite}{\subsubsection{GS1
+DataBar Omnidirectional
+Composite}\label{gs1-databar-omnidirectional-composite}}
+
+\begin{verbatim}
+Data: (01)03612345678904|(11)990102
+Options:
+Encoder: databaromnicomposite
+\end{verbatim}
+
+\includegraphics{images/databaromnicomposite-1.eps}
+
+\hypertarget{gs1-databar-stacked-omnidirectional-composite}{\subsubsection{GS1
+DataBar Stacked Omnidirectional
+Composite}\label{gs1-databar-stacked-omnidirectional-composite}}
+
+\begin{verbatim}
+Data: (01)03612345678904|(11)990102
+Options:
+Encoder: databarstackedomnicomposite
+\end{verbatim}
+
+\includegraphics{images/databarstackedomnicomposite-1.eps}
+
+\hypertarget{gs1-databar-expanded-composite}{\subsubsection{GS1 DataBar
+Expanded Composite}\label{gs1-databar-expanded-composite}}
+
+\begin{verbatim}
+Data: (01)93712345678904(3103)001234|(91)1A2B3C4D5E
+Options:
+Encoder: databarexpandedcomposite
+\end{verbatim}
+
+\includegraphics{images/databarexpandedcomposite-1.eps}
+
+\hypertarget{gs1-databar-expanded-stacked-composite}{\subsubsection{GS1
+DataBar Expanded Stacked
+Composite}\label{gs1-databar-expanded-stacked-composite}}
+
+\begin{verbatim}
+Data: (01)00012345678905(10)ABCDEF|(21)12345678
+Options: segments=4
+Encoder: databarexpandedstackedcomposite
+\end{verbatim}
+
+\includegraphics{images/databarexpandedstackedcomposite-1.eps}
+
+\hypertarget{gs1-databar-truncated-composite}{\subsubsection{GS1 DataBar
+Truncated Composite}\label{gs1-databar-truncated-composite}}
+
+\begin{verbatim}
+Data: (01)03612345678904|(11)990102
+Options:
+Encoder: databartruncatedcomposite
+\end{verbatim}
+
+\includegraphics{images/databartruncatedcomposite-1.eps}
+
+\hypertarget{gs1-databar-stacked-composite}{\subsubsection{GS1 DataBar
+Stacked Composite}\label{gs1-databar-stacked-composite}}
+
+\begin{verbatim}
+Data: (01)03412345678900|(17)010200
+Options:
+Encoder: databarstackedcomposite
+\end{verbatim}
+
+\includegraphics{images/databarstackedcomposite-1.eps}
+
+\hypertarget{gs1-databar-limited-composite}{\subsubsection{GS1 DataBar
+Limited Composite}\label{gs1-databar-limited-composite}}
+
+\begin{verbatim}
+Data: (01)03512345678907|(21)abcdefghijklmnopqrstuv
+Options:
+Encoder: databarlimitedcomposite
+\end{verbatim}
+
+\includegraphics{images/databarlimitedcomposite-1.eps}
+
+\hypertarget{gs1-128-composite}{\subsubsection{GS1-128
+Composite}\label{gs1-128-composite}}
+
+GS1-128 Composite with a CC-A 2D component:
+
+\begin{verbatim}
+Data: (01)03212345678906|(21)A1B2C3D4E5F6G7H8
+Options:
+Encoder: gs1-128composite
+\end{verbatim}
+
+\includegraphics{images/ean128composite-1.eps}
+
+GS1-128 Composite with a CC-C 2D component:
+
+\begin{verbatim}
+Data: (00)030123456789012340|(02)13012345678909(37)24(10)1234567ABCDEFG
+Options: ccversion=c
+Encoder: gs1-128composite
+\end{verbatim}
+
+\includegraphics{images/ean128composite-2.eps}
+
+\hypertarget{cc-a}{\subsubsection{CC-A}\label{cc-a}}
+
+Isolated CC-A 2D component:
+
+\begin{verbatim}
+Data: (01)95012345678903
+Options: ccversion=a cccolumns=3
+Encoder: gs1-cc
+\end{verbatim}
+
+\includegraphics{images/gs1composite-1.eps}
+
+\hypertarget{cc-b}{\subsubsection{CC-B}\label{cc-b}}
+
+Isolated CC-B 2D component:
+
+\begin{verbatim}
+Data: (01)95012345678903(3103)000123
+Options: ccversion=b cccolumns=4
+Encoder: gs1-cc
+\end{verbatim}
+
+\includegraphics{images/gs1composite-2.eps}
+
+\hypertarget{cc-c}{\subsubsection{CC-C}\label{cc-c}}
+
+Isolated CC-C 2D component:
+
+\begin{verbatim}
+Data: (02)13012345678909(37)24(10)1234567ABCDEFG
+Options: ccversion=c cccolumns=5
+Encoder: gs1-cc
+\end{verbatim}
+
+\includegraphics{images/gs1composite-3.eps}
+
+\subsection{Raw Symbols}\label{raw-symbols}
+
+\subsubsection{DAFT}\label{daft}
+
+\textbf{DAFT} is an encoder for directly specifying the descender,
+ascender, full-height, tracker-bar succession for a custom 4 state
+barcode symbol.
+
+\paragraph{Data and Options}\label{data-and-options-70}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field contains a sequence of the characters \texttt{D},
+ \texttt{A}, \texttt{F} or \texttt{T} to denote the descender,
+ ascender, full-height and tracker bars of a custom 4 state symbol.
+\end{itemize}
+
+\paragraph{Example}\label{example-16}
+
+\begin{verbatim}
+Data: FATDAFTDAD
+Options:
+Encoder: daft
+\end{verbatim}
+
+\includegraphics{images/daft-1.eps}
+
+\subsubsection{Flattermarken}\label{flattermarken}
+
+\textbf{Flattermarken} are identification marks used in book production
+that facilitate the proper arrangement of bound sections by a book
+binder.
+
+\paragraph{Data and Options}\label{data-and-options-71}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field can holding any sequence of digits corresponds to a 9
+ module width with the following meaning:
+
+ \begin{itemize}
+ \tightlist
+ \item
+ \texttt{1-9}: a single mark exists in the corresponding module
+ position
+ \item
+ \texttt{0}: unmarked sequence of modules
+ \end{itemize}
+\item
+ The \textbf{inkspread} option can be used to adjust the width of the
+ bars.
+\item
+ If greater fidelity is required then the \protect\hyperlink{raw}{raw}
+ encoder should be used instead.
+\end{itemize}
+
+\paragraph{Example}\label{example-17}
+
+\begin{verbatim}
+Data: 1304
+Options: inkspread=-1
+Encoder: flattermarken
+\end{verbatim}
+
+\includegraphics{images/flattermarken-1.eps}
+
+\hypertarget{raw}{\subsubsection{Raw}\label{raw}}
+
+The \textbf{raw} encoder is used for directly specifying the space/bar
+succession of a custom barcode symbol.
+
+\paragraph{Data and Options}\label{data-and-options-72}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field contains an alternating sequence of widths (1 to 9) for
+ the bars and spaces of a custom symbol.
+\end{itemize}
+
+\paragraph{Example}\label{example-18}
+
+\begin{verbatim}
+Data: 331132131313411122131311333213114131131221323
+Options: height=0.5
+Encoder: raw
+\end{verbatim}
+
+\includegraphics{images/raw-1.eps}
+
+\subsection{Partial Symbols}\label{partial-symbols}
+
+\hypertarget{ean-2}{\subsubsection{EAN-2}\label{ean-2}}
+
+\textbf{EAN-2} is the two-digit add-on code that accompanies a EAN or
+UPC type barcode symbol such as an \protect\hyperlink{isbn}{ISBN} or
+\protect\hyperlink{issn}{ISSN}.
+
+Also known as: Two-Digit Add-On, Two-Digit Supplement, UPC-2
+
+\paragraph{Data and Options}\label{data-and-options-73}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field must contain two digits.
+\item
+ The \textbf{includetext} option should normally be supplied.
+\end{itemize}
+
+\paragraph{Example}\label{example-19}
+
+\begin{verbatim}
+Data: 05
+Options: includetext guardwhitespace
+Encoder: ean2
+\end{verbatim}
+
+\includegraphics{images/ean2-1.eps}
+
+\hypertarget{ean-5}{\subsubsection{EAN-5}\label{ean-5}}
+
+\textbf{EAN-5} is the five-digit add-on code that accompanies an EAN or
+UPC type barcode symbol such as an \protect\hyperlink{isbn}{ISBN} or
+\protect\hyperlink{issn}{ISSN}.
+
+Also known as: Five-Digit Add-On, Five-Digit Supplement, UPC-5
+
+\paragraph{Data and Options}\label{data-and-options-74}
+
+\begin{itemize}
+\tightlist
+\item
+ The data field must contain five digits.
+\item
+ The \textbf{includetext} option should normally be supplied.
+\end{itemize}
+
+\paragraph{Example}\label{example-20}
+
+\begin{verbatim}
+Data: 90200
+Options: includetext guardwhitespace
+Encoder: ean5
+\end{verbatim}
+
+\includegraphics{images/ean5-1.eps}
+
+\hypertarget{gs1-application-identifier-standard-format}{\subsection{GS1
+Application Identifier Standard
+Format}\label{gs1-application-identifier-standard-format}}
+
+Certain barcode symbologies (including
+\protect\hyperlink{gs1-128}{GS1-128},
+\protect\hyperlink{gs1-databar-omnidirectional}{GS1 DataBar
+Omnidirectional}, \protect\hyperlink{gs1-datamatrix}{GS1 DataMatrix},
+\protect\hyperlink{gs1-qr-code}{GS1 QR Code} and
+\protect\hyperlink{gs1-composite-symbols}{GS1 Composite Symbols})
+represent standardized GS1 data and require that their data field is
+provided in GS1 Application Identifier standard format, consisting of a
+concatenated string of \emph{AIs} along with their corresponding values.
+
+The AIs are a set of approximately one hundred two-, three- or
+four-digit prefixes written within parentheses that represent physical
+attributes and business information, e.g.
+
+\begin{itemize}
+\tightlist
+\item
+ \emph{(00)} is an eighteen-digit SSCC.
+\item
+ \emph{(01)} is a fourteen-digit GTIN.
+\item
+ \emph{(403)} is a variable-length routing code.
+\end{itemize}
+
+The following input represents GTIN \emph{0061414199996}; Expiration
+Date \emph{1 January 2010}; Batch \emph{123ABC}; Serial
+\emph{1234567890}:
+
+\begin{verbatim}
+(01)0061414199996(17)100101(10)123ABC(21)1234567890
+\end{verbatim}
+
+Encoders for barcode symbologies that expect data in GS1 Application
+Identifier standard format will take care of parsing the input and
+inserting any necessary \emph{FNC1} characters to delimit variable
+length fields.
+
+\paragraph{GS1 Application Identifier
+Definitions}\label{gs1-application-identifier-definitions}
+
+The Application Identifier definitions are provided in the
+\href{http://www.gs1.org/barcodes-epcrfid-id-keys/gs1-general-specifications}{GS1
+General Specifications}. A summary is available
+\href{http://en.wikipedia.org/wiki/GS1-128\#Full_list_of_Application_Identifiers}{here}
+however this may be out of date.
+
+\section{Options Reference}\label{options-reference}
+
+\subsection{Check Digits}\label{check-digits}
+
+\subsubsection{includecheck}\label{includecheck}
+
+Generate check digit(s) for symbologies where the use of check digits is
+optional.
+
+\paragraph{Example}\label{example-21}
+
+Calculate the optional check characters of this Code 93 symbol:
+
+\begin{verbatim}
+Data: CHECK ME OUT
+Options: includecheck
+Encoder: code93
+\end{verbatim}
+
+\includegraphics{images/optincludecheck.eps}
+
+\subsubsection{includecheckintext}\label{includecheckintext}
+
+Show the calculated check digit in the human readable text.
+
+\paragraph{Notes}\label{notes}
+
+\begin{itemize}
+\tightlist
+\item
+ For barcode symbologies where the check digit is not mandatory, this
+ option must be used in combination with \textbf{includecheck}.
+\item
+ If any part of the checksum does not have a printable representation
+ then that part is not displayed.
+\end{itemize}
+
+\paragraph{Example}\label{example-22}
+
+Display the check digit of this Royal Mail barcode:
+
+\begin{verbatim}
+Data: LE28HS9Z
+Options: includetext includecheckintext
+Encoder: royalmail
+\end{verbatim}
+
+\includegraphics{images/optincludecheckintext.eps}
+
+\subsection{Input Processing}\label{input-processing}
+
+\subsubsection{parse}\label{parse}
+
+In supporting barcode symbologies, when the \emph{parse} option is
+specified, any instances of \texttt{\^{}NNN} in the data field are
+replaced with their equivalent ASCII value, useful for specifying
+unprintable characters.
+
+\paragraph{Example}\label{example-23}
+
+Equivalent symbols:
+
+\begin{verbatim}
+Data: This is Data Matrix
+Options:
+Encoder: datamatrix
+\end{verbatim}
+
+\begin{verbatim}
+Data: This is ^068ata Matrix
+Options: parse
+Encoder: datamatrix
+\end{verbatim}
+
+\includegraphics{images/optparse.eps}
+
+\subsubsection{parsefnc}\label{parsefnc}
+
+In supporting barcode symbologies, when the \textbf{parsefnc} option is
+specified, non-data function characters can be specified by escaped
+combinations such as \texttt{\^{}FNC1}, \texttt{\^{}FNC4} and
+\texttt{\^{}SFT/}.
+
+\paragraph{Example}\label{example-24}
+
+Code 93 including a special shift combination \texttt{(/)A} representing
+\emph{!}:
+
+\begin{verbatim}
+Data: TERRY^SFT/A
+Options: parsefnc includecheck
+Encoder: code93
+\end{verbatim}
+
+\includegraphics{images/optparsefnc.eps}
+
+\subsection{Symbol Dimensions}\label{symbol-dimensions}
+
+\subsubsection{height}\label{height}
+
+Height of longest bar, in inches.
+
+\paragraph{Example}\label{example-25}
+
+A 1/2 inch tall EAN-13:
+
+\begin{verbatim}
+Data: 977147396801
+Options: includetext height=0.5
+Encoder: ean13
+\end{verbatim}
+
+\includegraphics{images/optheight.eps}
+
+\subsubsection{width}\label{width}
+
+Stretch the symbol to precisely this width, in inches.
+
+\paragraph{Notes}\label{notes-1}
+
+\begin{itemize}
+\tightlist
+\item
+ This parameter literally stretches the symbol and text to the desired
+ width which will may distort the human readable text.
+\item
+ For information about resizing symbols read the article on
+ \protect\hyperlink{resizing-symbols}{resizing symbols}.
+\end{itemize}
+
+\paragraph{Example}\label{example-26}
+
+A 2 inch wide Code 93 symbol:
+
+\begin{verbatim}
+Data: TERRY
+Options: width=2
+Encoder: code93
+\end{verbatim}
+
+\includegraphics{images/optwidth.eps}
+
+\subsection{Bar Properties}\label{bar-properties}
+
+\subsubsection{inkspread}\label{inkspread}
+
+For linear barcodes, the amount by which to reduce the bar widths to
+compensate for inkspread, in points.
+
+For matrix barcodes, the amount by which the reduce the width and height
+of dark modules to compensate for inkspread, in points.
+
+\paragraph{Notes}\label{notes-2}
+
+\begin{itemize}
+\tightlist
+\item
+ Negative values will increase the bar width.
+\end{itemize}
+
+\paragraph{Example}\label{example-27}
+
+Code 39 for a printer with very runny ink:
+
+\begin{verbatim}
+Data: TEZ
+Options: inkspread=0.6
+Encoder: code39
+\end{verbatim}
+
+\includegraphics{images/optinkspread.eps}
+
+\subsubsection{inkspreadh}\label{inkspreadh}
+
+For matrix barcodes, the amount by which the reduce the width of dark
+modules to compensate for inkspread, in points.
+
+Note: inkspreadh is most useful for stacked-linear type barcodes such as
+PDF417 and Codablock F.
+
+\subsubsection{inkspreadv}\label{inkspreadv}
+
+For matrix barcodes, the amount by which the reduce the height of dark
+modules to compensate for inkspread, in points.
+
+\subsection{Text Properties}\label{text-properties}
+
+\subsubsection{includetext}\label{includetext}
+
+Show human readable text for data in symbol.
+
+\paragraph{Notes}\label{notes-3}
+
+\begin{itemize}
+\tightlist
+\item
+ If a character in the data does not have a printable representation
+ then it is not displayed
+\end{itemize}
+
+\paragraph{Example}\label{example-28}
+
+Display the text encoded in this Code 39 symbol:
+
+\begin{verbatim}
+Data: SEE ME
+Options: includetext
+Encoder: code39
+\end{verbatim}
+
+\includegraphics{images/optincludetext.eps}
+
+\subsubsection{textfont}\label{textfont}
+
+The font name for text.
+
+\paragraph{Notes}\label{notes-4}
+
+\begin{itemize}
+\tightlist
+\item
+ The font name must be the literal name of a PostScript font that is
+ available to the system.
+\item
+ This option should be used in combination with the
+ \textbf{includetext} option.
+\end{itemize}
+
+\paragraph{Example}\label{example-29}
+
+Customise the human readable text of this USPS POSTNET symbol
+
+\begin{verbatim}
+Data: 64501
+Options: includetext textfont=Times-Roman textsize=9
+Encoder: postnet
+\end{verbatim}
+
+\includegraphics{images/opttextfont.eps}
+
+\subsubsection{textsize}\label{textsize}
+
+The font size of the text in points.
+
+\paragraph{Note}\label{note}
+
+\begin{itemize}
+\tightlist
+\item
+ This option should be used in combination with the
+ \textbf{includetext} option.
+\end{itemize}
+
+\paragraph{Example}\label{example-30}
+
+Customise the human readable text of this USPS POSTNET symbol
+
+\begin{verbatim}
+Data: 64501
+Options: includetext textfont=Times-Roman textsize=9
+Encoder: postnet
+\end{verbatim}
+
+\includegraphics{images/opttextfont.eps}
+
+\subsubsection{textgaps}\label{textgaps}
+
+The inter-character spacing of the text.
+
+\paragraph{Note}\label{note-1}
+
+\begin{itemize}
+\tightlist
+\item
+ This option should be used in combination with the \textbf{textxalign}
+ option.
+\end{itemize}
+
+\subsection{Text Positioning}\label{text-positioning}
+
+\subsubsection{textxalign}\label{textxalign}
+
+The \textbf{textxalign} option is used to specify where to horizontally
+position the text.
+
+\begin{itemize}
+\tightlist
+\item
+ \texttt{textxalign=offleft}
+\item
+ \texttt{textxalign=left}
+\item
+ \texttt{textxalign=center}
+\item
+ \texttt{textxalign=right}
+\item
+ \texttt{textxalign=offright}
+\item
+ \texttt{textxalign=justify}
+\end{itemize}
+
+\paragraph{Notes}\label{notes-5}
+
+\begin{itemize}
+\tightlist
+\item
+ By default (in the absence of \textbf{textxalign} or
+ \textbf{textyalign}), each character of text is placed immediately
+ below the corresponding modules where this is possible.
+\item
+ Where there isn't such a direct relationship then the default is to
+ position the text centrally beneath the symbol.
+\end{itemize}
+
+\subsubsection{textyalign}\label{textyalign}
+
+The \textbf{textyalign} option is used to specify where to vertically
+position the text.
+
+\begin{itemize}
+\tightlist
+\item
+ \texttt{textyalign=below}
+\item
+ \texttt{textyalign=center}
+\item
+ \texttt{textyalign=above}
+\end{itemize}
+
+\paragraph{Notes}\label{notes-6}
+
+\begin{itemize}
+\tightlist
+\item
+ By default (in the absence of \textbf{textxalign} or
+ \textbf{textyalign}), each character of text is placed immediately
+ below the corresponding modules where this is possible.
+\item
+ Where there isn't such a direct relationship then the default is to
+ position the text centrally beneath the symbol.
+\end{itemize}
+
+\subsubsection{textxoffset}\label{textxoffset}
+
+The horizontal position of the text in points relative to the default
+position.
+
+\subsubsection{textyoffset}\label{textyoffset}
+
+The vertical position of the text in points relative to the default
+position.
+
+\subsection{Border Properties}\label{border-properties}
+
+\subsubsection{showborder}\label{showborder}
+
+Display a border around the symbol.
+
+\paragraph{Example}\label{example-31}
+
+Display a customised border around this Codabar symbol:
+
+\begin{verbatim}
+Data: A3+14-63B
+Options: includetext showborder borderwidth=2 borderbottom=8
+Encoder: rationalizedCodabar
+\end{verbatim}
+
+\includegraphics{images/optborder.eps}
+
+\subsubsection{borderwidth}\label{borderwidth}
+
+Width of the border, in points.
+
+\subsubsection{borderleft}\label{borderleft}
+
+Gap between the left edge of the border and the symbol, in points.
+
+\subsubsection{borderright}\label{borderright}
+
+Gap between the right edge of the border and the symbol, in points.
+
+\subsubsection{bordertop}\label{bordertop}
+
+Gap between the top edge of the border and the symbol, in points.
+
+\subsubsection{borderbottom}\label{borderbottom}
+
+Gap between the bottom edge of the border and the symbol, in points.
+
+\subsection{Symbol Colors}\label{symbol-colors}
+
+\subsubsection{barcolor}\label{barcolor}
+
+Color of the bars or dark modules, either as a hex \texttt{RRGGBB} value
+or a hex \texttt{CCMMYYKK} value.
+
+\subsubsection{backgroundcolor}\label{backgroundcolor}
+
+Color of the light background or light modules, either as a hex
+\texttt{RRGGBB} value or a hex \texttt{CCMMYYKK} value.
+
+\subsubsection{bordercolor}\label{bordercolor}
+
+Color of the border, either as a hex \texttt{RRGGBB} value or a hex
+\texttt{CCMMYYKK} value.
+
+\subsubsection{textcolor}\label{textcolor}
+
+Color of the respective component, either as a hex \texttt{RRGGBB} value
+or a hex \texttt{CCMMYYKK} value.
+
+\paragraph{Examples}\label{examples-46}
+
+Colorized Code 11 symbol using the RGB colour space:
+
+\begin{verbatim}
+Data: 0123456789
+Options: includetext barcolor=AA0000 textcolor=008888 backgroundcolor=FFFF60 showborder bordercolor=0000FF textyoffset=-8
+Encoder: code11
+\end{verbatim}
+
+\includegraphics{images/optcolorrgb.eps}
+
+Colorized Code 11 symbol using the CMYK colour space:
+
+\begin{verbatim}
+Data: 0123456789
+Options: includetext barcolor=AA000000 textcolor=00888844 backgroundcolor=CCCC6000 showborder bordercolor=00FF0088
+Encoder: code11
+\end{verbatim}
+
+\includegraphics{images/optcolorcmyk.eps}
+
+\subsection{EAN-UPC Add Ons}\label{ean-upc-add-ons}
+
+\subsubsection{addontextfont}\label{addontextfont}
+
+The font name of the add on text.
+
+\paragraph{Notes}\label{notes-7}
+
+\begin{itemize}
+\tightlist
+\item
+ The font name must be the literal name of a PostScript available font.
+\item
+ These options must be used in combination with the
+ \textbf{includetext} option.
+\end{itemize}
+
+\subsubsection{addontextsize}\label{addontextsize}
+
+The size of the add on text, in points
+
+\paragraph{Notes}\label{notes-8}
+
+\begin{itemize}
+\tightlist
+\item
+ These options must be used in combination with the
+ \textbf{includetext} option.
+\end{itemize}
-\iffalse
-30 500 moveto (CODE 39) (includecheck includetext) /code39 /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (Code 39) show
+\paragraph{Example}\label{example-32}
-385 200 moveto (THIS IS CODE 93) (includecheck includetext) /code93 /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (Code 93) show
+Customise the human readable text of this USPS POSTNET symbol
-375 400 moveto (\(00\)030123456789012340|\(02\)13012345678909\(37\)24\(10\)1234567ABCDEFG) (ccversion=c includetext) /gs1-128composite /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (GS1-128 Composite) show
+\begin{verbatim}
+Data: 64501
+Options: includetext textfont=Times-Roman textsize=9
+Encoder: postnet
+\end{verbatim}
-150 700 moveto (0123456789) (includecheck includetext) /interleaved2of5 /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (Interleaved 2 of 5) show
+\includegraphics{images/opttextfont.eps}
-215 300 moveto ((01)24012345678905) (includetext) /databartruncated /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (DataBar Truncated) show
+\subsubsection{addontextxoffset}\label{addontextxoffset}
-250 250 moveto ((01)24012345678905) () /databarstacked /uk.co.terryburton.bwipp findresource exec
-0 -10 rmoveto (DataBar Stacked) show
+Overrides the default horizontal positioning of the add on text.
-220 560 moveto ((01)15012345678907) () /databarlimited /uk.co.terryburton.bwipp findresource exec
-0 -10 rmoveto (DataBar Limited) show
+\subsubsection{addontextyoffset}\label{addontextyoffset}
-220 500 moveto ((10)12A) () /databarexpanded /uk.co.terryburton.bwipp findresource exec
-0 -10 rmoveto (DataBar Expanded) show
+Overrides the default vertical positioning of the add on text.
-215 348 moveto (117480) (includetext) /pharmacode /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (Pharmacode) show
+\subsection{EAN-UPC Guards}\label{ean-upc-guards}
-30 300 moveto (01234567) (includetext includecheck) /code2of5 /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (Code 2 of 5) show
+\subsubsection{guardwhitespace}\label{guardwhitespace}
-165 600 moveto (0124589) <<
- /includetext true
- /includecheck true
- /barcolor (AA0000)
- /textyoffset -8
- /textcolor (008888)
- /backgroundcolor (2020FF0F)
- /showborder true
- /bordercolor (0000FF)
->> /code11 /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (Code 11) show
+Display white space guards.
-30 400 moveto (A0123456789B) (includecheck includetext) /rationalizedCodabar /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (Rationalized Codabar) show
+\paragraph{Example}\label{example-33}
-420 700 moveto (977147396801 05) (includetext guardwhitespace) /ean13 /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (EAN-13) show
+ISBN-13 with tiny white space guard:
-41 700 moveto (01335583) (includetext guardwhitespace) /ean8 /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (EAN-8) show
+\begin{verbatim}
+Data: 978-1-873671-00
+Options: includetext guardwhitespace guardwidth=3 guardheight=3
+Encoder: isbn
+\end{verbatim}
-37 600 moveto (78858101497) (includetext) /upca /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (UPC-A) show
+\includegraphics{images/optguardsize.eps}
-315 700 moveto (0425261) (includetext) /upce /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (UPC-E) show
+\subsubsection{guardwidth}\label{guardwidth}
-405 600 moveto (978-1-86074-271 54495) (includetext) /isbn /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (ISBN) show
+Width of the whitespace guards, in points.
-345 515 moveto (0123456709498765432101234567891) (includetext) /onecode /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (OneCode) show
+\subsubsection{guardheight}\label{guardheight}
-215 455 moveto (01234) (includetext) /postnet /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (Postnet) show
+Height of the whitespace guards, in points.
-215 410 moveto (LE28HS9Z) (includetext) /royalmail /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (Royal Mail) show
+\subsubsection{guardleftpos}\label{guardleftpos}
-400 165 moveto (1231FZ13XHS) (includetext) /kix /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (KIX) show
+Override the default horizontal position of the left whitespace guard.
-335 555 moveto (6540123789-A-K-Z) (includetext textxalign=center) /japanpost /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (JapanPost) show
+\subsubsection{guardrightpos}\label{guardrightpos}
-385 132 moveto (5956439111ABA 9) (includetext) /auspost /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (AusPost) show
+Override the default horizontal position of the right whitespace guard.
-348 300 moveto (123456) (includecheck includetext) /msi /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (MSI) show
+\subsubsection{guardleftypos}\label{guardleftypos}
-30 200 moveto (123AB) (includetext) /plessey /uk.co.terryburton.bwipp findresource exec
-0 -17 rmoveto (Plessey) show
+Override the default vertical position of the left whitespace guard.
-47 135 moveto (10012345678902) (includetext) /itf14 /uk.co.terryburton.bwipp findresource exec
--15 -20 rmoveto (ITF-14) show
+\subsubsection{guardrightypos}\label{guardrightypos}
-245 125 moveto (http://lwn.net) () /qrcode /uk.co.terryburton.bwipp findresource exec
-0 -10 rmoveto (QR Code) show
+Override the default vertical position of the right whitespace guard.
-245 190 moveto (This is PDF417) (columns=2 color=442222 backgroundcolor=AABBCC) /pdf417 /uk.co.terryburton.bwipp findresource exec
-0 -10 rmoveto (PDF417) show
+\paragraph{Example}\label{example-34}
-300 600 moveto (http://www.terryburton.co.uk/barcodewriter/) (rows=48 columns=48) /datamatrix /uk.co.terryburton.bwipp findresource exec
-0 -10 rmoveto (Data Matrix) show
+EAN-8 with very mangled white space guards:
-315 125 moveto (This is Aztec Code) (format=compact layers=3) /azteccode /uk.co.terryburton.bwipp findresource exec
-0 -10 rmoveto (Aztec Code) show
+\begin{verbatim}
+Data: 01335583
+Options: includetext guardwhitespace guardleftpos=14 guardrightpos=7 guardleftypos=15 guardrightypos=4
+Encoder: ean8
+\end{verbatim}
-\fi
+\includegraphics{images/optguardpos.eps}