From ee55a90f4497f62a8b7cf4375ebc8b677d33a882 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 18 Oct 2006 20:45:25 +0000 Subject: pst-barcode needs MAKEpst git-svn-id: svn://tug.org/texlive/trunk@2347 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/generic/pst-barcode/Changes | 58 ++ Master/texmf-dist/doc/generic/pst-barcode/README | 10 + .../texmf-dist/doc/generic/pst-barcode/barcode.pdf | Bin 0 -> 228289 bytes .../texmf-dist/doc/generic/pst-barcode/barcode.tex | 1037 ++++++++++++++++++++ Master/texmf-dist/doc/latex/pst-barcode/Changes | 58 -- Master/texmf-dist/doc/latex/pst-barcode/README | 10 - .../texmf-dist/doc/latex/pst-barcode/barcode.pdf | Bin 228289 -> 0 bytes .../texmf-dist/doc/latex/pst-barcode/barcode.tex | 1037 -------------------- .../doc/latex/pst-barcode/pst-barcode.tex | 61 -- .../tex/generic/pst-barcode/pst-barcode.tex | 61 ++ Master/texmf-dist/tpm/pst-barcode.tpm | 16 +- Master/texmf/lists/pst-barcode | 10 +- 12 files changed, 1179 insertions(+), 1179 deletions(-) create mode 100644 Master/texmf-dist/doc/generic/pst-barcode/Changes create mode 100644 Master/texmf-dist/doc/generic/pst-barcode/README create mode 100644 Master/texmf-dist/doc/generic/pst-barcode/barcode.pdf create mode 100644 Master/texmf-dist/doc/generic/pst-barcode/barcode.tex delete mode 100644 Master/texmf-dist/doc/latex/pst-barcode/Changes delete mode 100644 Master/texmf-dist/doc/latex/pst-barcode/README delete mode 100644 Master/texmf-dist/doc/latex/pst-barcode/barcode.pdf delete mode 100644 Master/texmf-dist/doc/latex/pst-barcode/barcode.tex delete mode 100644 Master/texmf-dist/doc/latex/pst-barcode/pst-barcode.tex create mode 100644 Master/texmf-dist/tex/generic/pst-barcode/pst-barcode.tex (limited to 'Master') diff --git a/Master/texmf-dist/doc/generic/pst-barcode/Changes b/Master/texmf-dist/doc/generic/pst-barcode/Changes new file mode 100644 index 00000000000..17ab2457dbf --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-barcode/Changes @@ -0,0 +1,58 @@ +----- pst-barcode.tex +0.04 2006-07-23 - adding support for the ISBN-13 code + - printing the code from the current point and + no more from the origin +0.03 2005-07-26 - Changes to the documentation and the syntax + of psbarcode (hv) +0.02 2005-07-26 - first version (hv) + + +----- pst-barcode.sty +0.01 2005-07-26 first version (hv) + + +----- pst-barcode.pro +2006-03-04 - An encoder for the Reduced Space Symbology RSS Expanded was added. + - The incorrect definition of the USPS FIM-B symbol was fixed. + - An encoder for the Reduced Space Symbology RSS Limited was added. + The efficiency of RSS-14 was improved. + - An encoder for the new OneCode symbology used by the US + Postal Service was added. + - The FIM symbols now render according to their specification. + - The Postnet, Royal Mail, AusPost and KIX encoders were amended + so that the metrics of their default symbols confirms + strongly to their respective specifications. + - The encoders now pass an array containing the widths of the + bar space succession to the renderer allowing for sub-point + horizontal precision. + - The default border positions for EAN and UPC symbols were + amended to properly enclose the human readable text. + - The colour support code was fixed to prevent overwriting of + the current colour when values are left unspecified. + - The logic to guard whitespace in EAN symbols was migrated + from the encoders to the renderer. + - The whitespace guard symbols are now drawn directly making them + independant of any font. + - The inter-guard bar height of EANs and UPCs was amended. + - The renderer was amended to support the passing of encoder + specific arguments. + - The options barcolor, textcolor, bordercolor, showbackground + and backgroundcolor were added to the renderer. + - A flaw in the derivation of the top border height was fixed. + - add support for the new ISBN-13 + - printing the code from the current point + - The performance of the renderer was improved by avoiding + unnecessary calls of setfont + - The auspost encoder was extended to support the customer + information field. +2005-10-24 - A new encoder for the bar codes used by the + Australian Postal Service was added. +2005-10-17 - adding a checksum for code 2of5 encoder +2005-10-14 - some more changes to the possible charcters +2005-09-26 - A new encoder was added to support the generation + of miscellaneous symbols. + - Support for generation of FIM symbols used on + US Postal service reply mail was added. +2005-09-15 added Kix -- Dutch mail +2005-09-17 choose the right syntax for saving the length +2005-09-08 some more tweaks to the code diff --git a/Master/texmf-dist/doc/generic/pst-barcode/README b/Master/texmf-dist/doc/generic/pst-barcode/README new file mode 100644 index 00000000000..8e3d83f73ad --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-barcode/README @@ -0,0 +1,10 @@ +This version of pst-barcode uses the xkeyval package, the extended +version of keyval. + +Save the files pst-barcode.sty|.tex|.pro in a directory, which is part of your +local TeX tree. pst-barcode.pro should be saved in ../texmf/dvips/pstricks/ +Then do not forget to run texhash to update this tree. +pst-barcode needs pstricks, which should be part of your +local TeX installation, otherwise get it from a CTAN server, f.ex. +http://www.dante.de/CTAN/graphics/pstricks/ + diff --git a/Master/texmf-dist/doc/generic/pst-barcode/barcode.pdf b/Master/texmf-dist/doc/generic/pst-barcode/barcode.pdf new file mode 100644 index 00000000000..8f85434f353 Binary files /dev/null and b/Master/texmf-dist/doc/generic/pst-barcode/barcode.pdf differ diff --git a/Master/texmf-dist/doc/generic/pst-barcode/barcode.tex b/Master/texmf-dist/doc/generic/pst-barcode/barcode.tex new file mode 100644 index 00000000000..fe8f3541c39 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-barcode/barcode.tex @@ -0,0 +1,1037 @@ +\documentclass{article} +\usepackage{pstricks,tabularx,paralist} +\usepackage{showexpl} +\lstset{wide,preset=\raggedright} +\usepackage{pst-barcode} +\let\PSTfileversion\fileversion +\usepackage[ps2pdf,colorlinks,linktocpage]{hyperref} +\usepackage{breakurl} +\def\CMD#1{\texttt{\textbackslash #1}} + +\title{Package \texttt{pst-barcode}\\ +\footnotesize v. \PSTfileversion} +\author{Terry Burton\thanks{\protect\url{tez@terryburton.co.uk}} + \and Herbert Vo\ss\thanks{\protect\url{hvoss@tug.org}}} +\date{\today} +\begin{document} +\maketitle + + +\begin{center} +\begin{tabular}{@{}>{\ttfamily}lll@{}} +\textrm{\emph{file name}} & \emph{meaning} & \emph{version}\\\hline +pst-barcode.sty & \LaTeX\ style file -- wrapper & 2006-07-23\\ +pst-barcode.tex & \TeX\ file -- PS interface & 2006-07-23\\ +pst-barcode.pro & PostScript file & 2006-07-23\\ +barcode.tex & documentation source & 2006-07-23\\ +barcode.pdf & documentation PDF & 2006-07-23\\ +\end{tabular} +\end{center} + + + +\clearpage +\tableofcontents + + +\clearpage +\section{Introduction} +To install the package put the three files in a place, where \TeX{} will search +for the files: + +\bigskip\noindent +\begin{tabular}{@{}ll@{}} +\emph{name} & \emph{target dir} \\\hline +\verb+pst-barcode.tex+ & \verb+$LOCALTEXMF/tex/generic/pstricks/+\\ +\verb+pst-barcode.sty+ & \verb+$LOCALTEXMF/tex/latex/pstricks/+\\ +\verb+pst-barcode.pro+ & \verb+$LOCALTEXMF/dvips/pstricks/+ \\ +\verb+barcode.tex+ & \verb+$LOCALTEXMF/doc/pstricks/+\\ +\verb+barcode.pdf+ & \verb+$LOCALTEXMF/doc/pstricks/+ %$ +\end{tabular} + +\bigskip +There is only one macro \verb+\psbarcode+ with the usual PSTricks syntax +\begin{verbatim} +\psbarcode[]{}{} +\end{verbatim} + +Important is the fact, that the barcode is printed in a box of zero dimension. +If you want to save some space in your text, use the \verb+pspicture+ environment +or the \verb+\makebox+ macro. + + + +\section{The options} +\subsection{The \TeX\ options} + +\begin{tabular}{@{}lll@{}} +\emph{name} & \emph{default} & \emph{remarks}\\\hline +\verb+transx+ & 0 & horizontal shift\\ +\verb+transy+ & 0 & vertical shift\\ +\verb+scalex+ & 1 & horizontal scaling\\ +\verb+scaley+ & 1 & vertical scaling\\ +\verb+rotate+ & 0 & rotating angle in degrees +\end{tabular} + +\subsection{The PostScript options} + +\begin{tabularx}{\textwidth}{@{}llX@{}} +\emph{name} & \emph{default} & \emph{remarks}\\\hline +\verb+height+ & 1 & dimension is inch\\ +\verb+textsize+ & 10 & dimension is pt\\ +\verb+textpos+ & -2 & dimension is pt; it is the shift for additional code text\\ +\verb+inkspread+ & 0.15 & dimension is pt\\ +\verb+showborder+ & - & - \\ +\verb+borderwidth+ & 0.5 & dimension in pt \\ +\verb+borderleft+ & 10 & dimension in pt\\ +\verb+borderright+ & 10 & dimension in pt\\ +\verb+bordertop+ & 1 & dimension in pt\\ +\verb+borderbottom+ & 1 & dimension in pt\\ +\verb+borderwidth+ & 0.5 & dimension in pt\\ +\verb+width+ & - & dimension in inch\\ +% +\verb+font+ & /Helvetica & must be a PostScript font\\ +\verb+includetext+ & - & enable human readable text \\ +\verb+includecheck+ & - & enable check digit \\ +\verb+includecheckintext+ & - & check digit visible in text +\end{tabularx} + +\subsection{Examples for the TeX options} + +\begin{LTXexample}[pos=t,preset=\centering] +\begin{pspicture}(3.5,1.2in) +\psbarcode{12345678}{includetext}{ean8} +\end{pspicture} +\begin{pspicture}(-2,-1.5)(0.5,0.2in) +\psbarcode[rotate=180,linecolor=red]{12345678}{includetext guardwhitespace height=0.6}{ean8} +\end{pspicture} +\begin{pspicture}(3.5,1.2in) +\psbarcode[scalex=1.5,scaley=0.5,transy=20]{12345678}{includetext inkspread=0.5}{ean8} +\end{pspicture} +\end{LTXexample} + +\newpage +\subsection{Examples for the PostScript options} + +\begin{LTXexample}[pos=t,preset=\centering] +\begin{pspicture}(3.5,1.2in) +\psbarcode{12345678}{includetext guardwhitespace height=0.6}{ean8} +\end{pspicture} +\begin{pspicture}(3.5,1.2in) +\psbarcode{12345678}{textsize=15 includetext guardwhitespace height=0.6}{ean8} +\end{pspicture} +\begin{pspicture}(3.5,1.2in) +\psbarcode{12345678}{includetext inkspread=0.5}{ean8} +\end{pspicture} +\begin{pspicture}(3.5,1.2in) +\psbarcode{12345678}{includetext textpos=0}{ean8} +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[pos=t,preset=\centering] +\begin{pspicture}(3.5,1.2in) +\psbarcode{12345678}{includetext guardwhitespace}{ean8} +\end{pspicture} +\begin{pspicture}(3.5,1.2in) +\psbarcode{12345678}{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 \CMD{parbox} +macro or the \verb+pspicture+ environment can reserve the needed space for +the barcode. The \CMD{fbox} in the following examples is used +only for demonstration. + + +\begin{LTXexample}[width=.5\linewidth] +foo +\fbox{% + \parbox[b][1in]{1.5in}{\psbarcode{241078}{includetext width=1.5 height=1}{code39}}} +bar +\end{LTXexample} + +\bigskip +\begin{LTXexample}[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 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} + +\begin{LTXexample}[width=.3\linewidth] +\begin{pspicture}(3,1.2in) +\psbarcode[scalex=0.8,scaley=0.8]{9781860742712}{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} + +\begin{LTXexample}[width=.3\linewidth] +\begin{pspicture}(-2,-1.2)(0,0.2in) +\psbarcode[rotate=180,linecolor=red]{12345678}{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} + +\begin{LTXexample}[width=.3\linewidth] +\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} + +\begin{LTXexample}[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} + +\begin{LTXexample}[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} + +\begin{LTXexample}[width=.3\linewidth] +\begin{pspicture}(1,1in) +\psbarcode{38}{includetext guardwhitespace}{ean2} +\end{pspicture} +\end{LTXexample} + +\newpage +\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} + +\smallskip +\begin{LTXexample}[width=.3\linewidth] +\begin{pspicture}(3,1in) +\psbarcode{3-86541-114}{includetext guardwhitespace}{isbn} +\end{pspicture} +\end{LTXexample} + +\bigskip\enlargethispage{2ex} +\begin{LTXexample}[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}[width=.5\linewidth] +\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{tabular}{l|l} + Option & Feature\\ \hline + \texttt{includetext} & Enable human readable text\\ + \texttt{includecheckintext} & Make check digit visible in text\\ + \end{tabular} +\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} + +\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}[width=.5\linewidth] +\begin{pspicture}(4,1in) +\psbarcode{0123456789}{includetext}{rationalizedCodabar} +\end{pspicture} +\end{LTXexample} + + +\newpage +\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{01234567}{includetext textpos=-10 textfont=Arial 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}[width=.5\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}[width=.5\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}[width=.5\linewidth] +\begin{pspicture}(5,0.3in) +\psbarcode{1139549554}{includetext}{auspost} +\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}(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}[width=.4\linewidth] +\begin{pspicture}(1cm,1.5cm) +\psbarcode{fima}{}{symbol} +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[width=.4\linewidth] +\begin{pspicture}(1cm,1.5cm) +\psbarcode{fimb}{}{symbol} +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[width=.4\linewidth] +\begin{pspicture}(1cm,1.5cm) +\psbarcode{fimc}{}{symbol} +\end{pspicture} +\end{LTXexample} + +\begin{LTXexample}[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}[width=.5\linewidth] +\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} + +\begin{LTXexample}[width=.3\linewidth] +\begin{pspicture}(12,.3in) +\psbarcode{24012345678905}{height=0.3}{rss14} +\end{pspicture} +\end{LTXexample} + +\subsubsection{rsslimited} +\begin{LTXexample}[width=.3\linewidth] +\begin{pspicture}(12,.3in) +\psbarcode{00978186074271}{height=0.3}{rsslimited} +\end{pspicture} +\end{LTXexample} + +\subsubsection{rssexpanded} +\begin{LTXexample}[width=.3\linewidth] +\begin{pspicture}(12,.3in) +\psbarcode{000000010011001010100001000000010000}{height=0.3}{rssexpanded} +\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}} +Element & Key & 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. +\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: + +\begin{lstlisting} +serverdict begin 0 exitserver +\end{lstlisting} + +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{lstlisting} +serverdict begin 0 exitserver systemdict /quit get exec +\end{lstlisting} + + + +\clearpage +\section{Package code} +\subsection{\texttt{pst-barcode.sty}} + +\lstinputlisting[xleftmargin=-1cm,xrightmargin=-1cm]{pst-barcode.sty} + +\subsection{\texttt{pst-barcode.tex}} +\lstinputlisting[xleftmargin=-1cm,xrightmargin=-1cm]{pst-barcode.tex} + +%\subsection{\texttt{pst-barcode.pro}} +%\lstinputlisting[language={},xleftmargin=-1.5cm,xrightmargin=-1.5cm]{pst-barcode.pro} +\end{document} + diff --git a/Master/texmf-dist/doc/latex/pst-barcode/Changes b/Master/texmf-dist/doc/latex/pst-barcode/Changes deleted file mode 100644 index 17ab2457dbf..00000000000 --- a/Master/texmf-dist/doc/latex/pst-barcode/Changes +++ /dev/null @@ -1,58 +0,0 @@ ------ pst-barcode.tex -0.04 2006-07-23 - adding support for the ISBN-13 code - - printing the code from the current point and - no more from the origin -0.03 2005-07-26 - Changes to the documentation and the syntax - of psbarcode (hv) -0.02 2005-07-26 - first version (hv) - - ------ pst-barcode.sty -0.01 2005-07-26 first version (hv) - - ------ pst-barcode.pro -2006-03-04 - An encoder for the Reduced Space Symbology RSS Expanded was added. - - The incorrect definition of the USPS FIM-B symbol was fixed. - - An encoder for the Reduced Space Symbology RSS Limited was added. - The efficiency of RSS-14 was improved. - - An encoder for the new OneCode symbology used by the US - Postal Service was added. - - The FIM symbols now render according to their specification. - - The Postnet, Royal Mail, AusPost and KIX encoders were amended - so that the metrics of their default symbols confirms - strongly to their respective specifications. - - The encoders now pass an array containing the widths of the - bar space succession to the renderer allowing for sub-point - horizontal precision. - - The default border positions for EAN and UPC symbols were - amended to properly enclose the human readable text. - - The colour support code was fixed to prevent overwriting of - the current colour when values are left unspecified. - - The logic to guard whitespace in EAN symbols was migrated - from the encoders to the renderer. - - The whitespace guard symbols are now drawn directly making them - independant of any font. - - The inter-guard bar height of EANs and UPCs was amended. - - The renderer was amended to support the passing of encoder - specific arguments. - - The options barcolor, textcolor, bordercolor, showbackground - and backgroundcolor were added to the renderer. - - A flaw in the derivation of the top border height was fixed. - - add support for the new ISBN-13 - - printing the code from the current point - - The performance of the renderer was improved by avoiding - unnecessary calls of setfont - - The auspost encoder was extended to support the customer - information field. -2005-10-24 - A new encoder for the bar codes used by the - Australian Postal Service was added. -2005-10-17 - adding a checksum for code 2of5 encoder -2005-10-14 - some more changes to the possible charcters -2005-09-26 - A new encoder was added to support the generation - of miscellaneous symbols. - - Support for generation of FIM symbols used on - US Postal service reply mail was added. -2005-09-15 added Kix -- Dutch mail -2005-09-17 choose the right syntax for saving the length -2005-09-08 some more tweaks to the code diff --git a/Master/texmf-dist/doc/latex/pst-barcode/README b/Master/texmf-dist/doc/latex/pst-barcode/README deleted file mode 100644 index 8e3d83f73ad..00000000000 --- a/Master/texmf-dist/doc/latex/pst-barcode/README +++ /dev/null @@ -1,10 +0,0 @@ -This version of pst-barcode uses the xkeyval package, the extended -version of keyval. - -Save the files pst-barcode.sty|.tex|.pro in a directory, which is part of your -local TeX tree. pst-barcode.pro should be saved in ../texmf/dvips/pstricks/ -Then do not forget to run texhash to update this tree. -pst-barcode needs pstricks, which should be part of your -local TeX installation, otherwise get it from a CTAN server, f.ex. -http://www.dante.de/CTAN/graphics/pstricks/ - diff --git a/Master/texmf-dist/doc/latex/pst-barcode/barcode.pdf b/Master/texmf-dist/doc/latex/pst-barcode/barcode.pdf deleted file mode 100644 index 8f85434f353..00000000000 Binary files a/Master/texmf-dist/doc/latex/pst-barcode/barcode.pdf and /dev/null differ diff --git a/Master/texmf-dist/doc/latex/pst-barcode/barcode.tex b/Master/texmf-dist/doc/latex/pst-barcode/barcode.tex deleted file mode 100644 index fe8f3541c39..00000000000 --- a/Master/texmf-dist/doc/latex/pst-barcode/barcode.tex +++ /dev/null @@ -1,1037 +0,0 @@ -\documentclass{article} -\usepackage{pstricks,tabularx,paralist} -\usepackage{showexpl} -\lstset{wide,preset=\raggedright} -\usepackage{pst-barcode} -\let\PSTfileversion\fileversion -\usepackage[ps2pdf,colorlinks,linktocpage]{hyperref} -\usepackage{breakurl} -\def\CMD#1{\texttt{\textbackslash #1}} - -\title{Package \texttt{pst-barcode}\\ -\footnotesize v. \PSTfileversion} -\author{Terry Burton\thanks{\protect\url{tez@terryburton.co.uk}} - \and Herbert Vo\ss\thanks{\protect\url{hvoss@tug.org}}} -\date{\today} -\begin{document} -\maketitle - - -\begin{center} -\begin{tabular}{@{}>{\ttfamily}lll@{}} -\textrm{\emph{file name}} & \emph{meaning} & \emph{version}\\\hline -pst-barcode.sty & \LaTeX\ style file -- wrapper & 2006-07-23\\ -pst-barcode.tex & \TeX\ file -- PS interface & 2006-07-23\\ -pst-barcode.pro & PostScript file & 2006-07-23\\ -barcode.tex & documentation source & 2006-07-23\\ -barcode.pdf & documentation PDF & 2006-07-23\\ -\end{tabular} -\end{center} - - - -\clearpage -\tableofcontents - - -\clearpage -\section{Introduction} -To install the package put the three files in a place, where \TeX{} will search -for the files: - -\bigskip\noindent -\begin{tabular}{@{}ll@{}} -\emph{name} & \emph{target dir} \\\hline -\verb+pst-barcode.tex+ & \verb+$LOCALTEXMF/tex/generic/pstricks/+\\ -\verb+pst-barcode.sty+ & \verb+$LOCALTEXMF/tex/latex/pstricks/+\\ -\verb+pst-barcode.pro+ & \verb+$LOCALTEXMF/dvips/pstricks/+ \\ -\verb+barcode.tex+ & \verb+$LOCALTEXMF/doc/pstricks/+\\ -\verb+barcode.pdf+ & \verb+$LOCALTEXMF/doc/pstricks/+ %$ -\end{tabular} - -\bigskip -There is only one macro \verb+\psbarcode+ with the usual PSTricks syntax -\begin{verbatim} -\psbarcode[]{}{} -\end{verbatim} - -Important is the fact, that the barcode is printed in a box of zero dimension. -If you want to save some space in your text, use the \verb+pspicture+ environment -or the \verb+\makebox+ macro. - - - -\section{The options} -\subsection{The \TeX\ options} - -\begin{tabular}{@{}lll@{}} -\emph{name} & \emph{default} & \emph{remarks}\\\hline -\verb+transx+ & 0 & horizontal shift\\ -\verb+transy+ & 0 & vertical shift\\ -\verb+scalex+ & 1 & horizontal scaling\\ -\verb+scaley+ & 1 & vertical scaling\\ -\verb+rotate+ & 0 & rotating angle in degrees -\end{tabular} - -\subsection{The PostScript options} - -\begin{tabularx}{\textwidth}{@{}llX@{}} -\emph{name} & \emph{default} & \emph{remarks}\\\hline -\verb+height+ & 1 & dimension is inch\\ -\verb+textsize+ & 10 & dimension is pt\\ -\verb+textpos+ & -2 & dimension is pt; it is the shift for additional code text\\ -\verb+inkspread+ & 0.15 & dimension is pt\\ -\verb+showborder+ & - & - \\ -\verb+borderwidth+ & 0.5 & dimension in pt \\ -\verb+borderleft+ & 10 & dimension in pt\\ -\verb+borderright+ & 10 & dimension in pt\\ -\verb+bordertop+ & 1 & dimension in pt\\ -\verb+borderbottom+ & 1 & dimension in pt\\ -\verb+borderwidth+ & 0.5 & dimension in pt\\ -\verb+width+ & - & dimension in inch\\ -% -\verb+font+ & /Helvetica & must be a PostScript font\\ -\verb+includetext+ & - & enable human readable text \\ -\verb+includecheck+ & - & enable check digit \\ -\verb+includecheckintext+ & - & check digit visible in text -\end{tabularx} - -\subsection{Examples for the TeX options} - -\begin{LTXexample}[pos=t,preset=\centering] -\begin{pspicture}(3.5,1.2in) -\psbarcode{12345678}{includetext}{ean8} -\end{pspicture} -\begin{pspicture}(-2,-1.5)(0.5,0.2in) -\psbarcode[rotate=180,linecolor=red]{12345678}{includetext guardwhitespace height=0.6}{ean8} -\end{pspicture} -\begin{pspicture}(3.5,1.2in) -\psbarcode[scalex=1.5,scaley=0.5,transy=20]{12345678}{includetext inkspread=0.5}{ean8} -\end{pspicture} -\end{LTXexample} - -\newpage -\subsection{Examples for the PostScript options} - -\begin{LTXexample}[pos=t,preset=\centering] -\begin{pspicture}(3.5,1.2in) -\psbarcode{12345678}{includetext guardwhitespace height=0.6}{ean8} -\end{pspicture} -\begin{pspicture}(3.5,1.2in) -\psbarcode{12345678}{textsize=15 includetext guardwhitespace height=0.6}{ean8} -\end{pspicture} -\begin{pspicture}(3.5,1.2in) -\psbarcode{12345678}{includetext inkspread=0.5}{ean8} -\end{pspicture} -\begin{pspicture}(3.5,1.2in) -\psbarcode{12345678}{includetext textpos=0}{ean8} -\end{pspicture} -\end{LTXexample} - -\begin{LTXexample}[pos=t,preset=\centering] -\begin{pspicture}(3.5,1.2in) -\psbarcode{12345678}{includetext guardwhitespace}{ean8} -\end{pspicture} -\begin{pspicture}(3.5,1.2in) -\psbarcode{12345678}{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 \CMD{parbox} -macro or the \verb+pspicture+ environment can reserve the needed space for -the barcode. The \CMD{fbox} in the following examples is used -only for demonstration. - - -\begin{LTXexample}[width=.5\linewidth] -foo -\fbox{% - \parbox[b][1in]{1.5in}{\psbarcode{241078}{includetext width=1.5 height=1}{code39}}} -bar -\end{LTXexample} - -\bigskip -\begin{LTXexample}[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 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} - -\begin{LTXexample}[width=.3\linewidth] -\begin{pspicture}(3,1.2in) -\psbarcode[scalex=0.8,scaley=0.8]{9781860742712}{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} - -\begin{LTXexample}[width=.3\linewidth] -\begin{pspicture}(-2,-1.2)(0,0.2in) -\psbarcode[rotate=180,linecolor=red]{12345678}{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} - -\begin{LTXexample}[width=.3\linewidth] -\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} - -\begin{LTXexample}[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} - -\begin{LTXexample}[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} - -\begin{LTXexample}[width=.3\linewidth] -\begin{pspicture}(1,1in) -\psbarcode{38}{includetext guardwhitespace}{ean2} -\end{pspicture} -\end{LTXexample} - -\newpage -\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} - -\smallskip -\begin{LTXexample}[width=.3\linewidth] -\begin{pspicture}(3,1in) -\psbarcode{3-86541-114}{includetext guardwhitespace}{isbn} -\end{pspicture} -\end{LTXexample} - -\bigskip\enlargethispage{2ex} -\begin{LTXexample}[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}[width=.5\linewidth] -\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{tabular}{l|l} - Option & Feature\\ \hline - \texttt{includetext} & Enable human readable text\\ - \texttt{includecheckintext} & Make check digit visible in text\\ - \end{tabular} -\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} - -\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}[width=.5\linewidth] -\begin{pspicture}(4,1in) -\psbarcode{0123456789}{includetext}{rationalizedCodabar} -\end{pspicture} -\end{LTXexample} - - -\newpage -\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{01234567}{includetext textpos=-10 textfont=Arial 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}[width=.5\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}[width=.5\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}[width=.5\linewidth] -\begin{pspicture}(5,0.3in) -\psbarcode{1139549554}{includetext}{auspost} -\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}(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}[width=.4\linewidth] -\begin{pspicture}(1cm,1.5cm) -\psbarcode{fima}{}{symbol} -\end{pspicture} -\end{LTXexample} - -\begin{LTXexample}[width=.4\linewidth] -\begin{pspicture}(1cm,1.5cm) -\psbarcode{fimb}{}{symbol} -\end{pspicture} -\end{LTXexample} - -\begin{LTXexample}[width=.4\linewidth] -\begin{pspicture}(1cm,1.5cm) -\psbarcode{fimc}{}{symbol} -\end{pspicture} -\end{LTXexample} - -\begin{LTXexample}[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}[width=.5\linewidth] -\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} - -\begin{LTXexample}[width=.3\linewidth] -\begin{pspicture}(12,.3in) -\psbarcode{24012345678905}{height=0.3}{rss14} -\end{pspicture} -\end{LTXexample} - -\subsubsection{rsslimited} -\begin{LTXexample}[width=.3\linewidth] -\begin{pspicture}(12,.3in) -\psbarcode{00978186074271}{height=0.3}{rsslimited} -\end{pspicture} -\end{LTXexample} - -\subsubsection{rssexpanded} -\begin{LTXexample}[width=.3\linewidth] -\begin{pspicture}(12,.3in) -\psbarcode{000000010011001010100001000000010000}{height=0.3}{rssexpanded} -\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}} -Element & Key & 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. -\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: - -\begin{lstlisting} -serverdict begin 0 exitserver -\end{lstlisting} - -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{lstlisting} -serverdict begin 0 exitserver systemdict /quit get exec -\end{lstlisting} - - - -\clearpage -\section{Package code} -\subsection{\texttt{pst-barcode.sty}} - -\lstinputlisting[xleftmargin=-1cm,xrightmargin=-1cm]{pst-barcode.sty} - -\subsection{\texttt{pst-barcode.tex}} -\lstinputlisting[xleftmargin=-1cm,xrightmargin=-1cm]{pst-barcode.tex} - -%\subsection{\texttt{pst-barcode.pro}} -%\lstinputlisting[language={},xleftmargin=-1.5cm,xrightmargin=-1.5cm]{pst-barcode.pro} -\end{document} - diff --git a/Master/texmf-dist/doc/latex/pst-barcode/pst-barcode.tex b/Master/texmf-dist/doc/latex/pst-barcode/pst-barcode.tex deleted file mode 100644 index 98449a8430c..00000000000 --- a/Master/texmf-dist/doc/latex/pst-barcode/pst-barcode.tex +++ /dev/null @@ -1,61 +0,0 @@ -%% -%% This is file `pst-barcode.tex', -%% -%% IMPORTANT NOTICE: -%% -%% Package `pst-barcode.tex' -%% -%% Terry Burton -%% Herbert Voss -%% -%% This program can be redistributed and/or modified under the terms -%% of the LaTeX Project Public License Distributed from CTAN archives -%% in directory macros/latex/base/lppl.txt. -%% -%% DESCRIPTION: -%% `pst-barcode' is a PSTricks package to draw barcodes, whatelse ... -%% -\csname PSTBarcodeLoaded\endcsname -\let\PSTBarcodeLoaded\endinput -\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi -% -\def\fileversion{0.04} -\def\filedate{2006/07/23} -\message{`PST-barcode' v\fileversion, \filedate\space (tb,hv)} -% -\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax -\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey \fi -\pst@addfams{pst-barcode} -\pstheader{pst-barcode.pro} -% -% -\define@key[psset]{pst-barcode}{transx}{% - \pst@getlength{#1}\psk@barcode@transx} -\define@key[psset]{pst-barcode}{transy}{% - \pst@getlength{#1}\psk@barcode@transy} -\define@key[psset]{pst-barcode}{scalex}{\def\psk@barcode@scalex{#1}} -\define@key[psset]{pst-barcode}{scaley}{\def\psk@barcode@scaley{#1}} -\define@key[psset]{pst-barcode}{rotate}{% - \pst@getangle{#1}\psk@barcode@rotate} -\psset[pst-barcode]{transx=0,transy=0,scalex=1,scaley=1,rotate=0} -% -\def\psbarcode{\pst@object{psbarcode}} -\def\psbarcode@i#1#2#3{% - \begin@SpecialObj - \addto@pscode{ - gsave - \psk@barcode@rotate\space - \psk@barcode@scalex\space \psk@barcode@scaley\space - \psk@barcode@transx\space \psk@barcode@transy\space - translate scale rotate - 0 0 moveto (#1) (#2) #3\space barcode - grestore - }% - \end@SpecialObj% - \ignorespaces% -} -% -\catcode`\@=\PstAtCode\relax -% -%% END: pst-barcode.tex -\endinput diff --git a/Master/texmf-dist/tex/generic/pst-barcode/pst-barcode.tex b/Master/texmf-dist/tex/generic/pst-barcode/pst-barcode.tex new file mode 100644 index 00000000000..98449a8430c --- /dev/null +++ b/Master/texmf-dist/tex/generic/pst-barcode/pst-barcode.tex @@ -0,0 +1,61 @@ +%% +%% This is file `pst-barcode.tex', +%% +%% IMPORTANT NOTICE: +%% +%% Package `pst-barcode.tex' +%% +%% Terry Burton +%% Herbert Voss +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%% DESCRIPTION: +%% `pst-barcode' is a PSTricks package to draw barcodes, whatelse ... +%% +\csname PSTBarcodeLoaded\endcsname +\let\PSTBarcodeLoaded\endinput +\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi +% +\def\fileversion{0.04} +\def\filedate{2006/07/23} +\message{`PST-barcode' v\fileversion, \filedate\space (tb,hv)} +% +\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax +\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey \fi +\pst@addfams{pst-barcode} +\pstheader{pst-barcode.pro} +% +% +\define@key[psset]{pst-barcode}{transx}{% + \pst@getlength{#1}\psk@barcode@transx} +\define@key[psset]{pst-barcode}{transy}{% + \pst@getlength{#1}\psk@barcode@transy} +\define@key[psset]{pst-barcode}{scalex}{\def\psk@barcode@scalex{#1}} +\define@key[psset]{pst-barcode}{scaley}{\def\psk@barcode@scaley{#1}} +\define@key[psset]{pst-barcode}{rotate}{% + \pst@getangle{#1}\psk@barcode@rotate} +\psset[pst-barcode]{transx=0,transy=0,scalex=1,scaley=1,rotate=0} +% +\def\psbarcode{\pst@object{psbarcode}} +\def\psbarcode@i#1#2#3{% + \begin@SpecialObj + \addto@pscode{ + gsave + \psk@barcode@rotate\space + \psk@barcode@scalex\space \psk@barcode@scaley\space + \psk@barcode@transx\space \psk@barcode@transy\space + translate scale rotate + 0 0 moveto (#1) (#2) #3\space barcode + grestore + }% + \end@SpecialObj% + \ignorespaces% +} +% +\catcode`\@=\PstAtCode\relax +% +%% END: pst-barcode.tex +\endinput diff --git a/Master/texmf-dist/tpm/pst-barcode.tpm b/Master/texmf-dist/tpm/pst-barcode.tpm index 2e0bc1bde39..8ab2baf3877 100644 --- a/Master/texmf-dist/tpm/pst-barcode.tpm +++ b/Master/texmf-dist/tpm/pst-barcode.tpm @@ -3,7 +3,7 @@ pst-barcode Package - 2006/07/23 23:05:28 + 1970/01/01 00:00:00 karl Print barcodes using Postscript. @@ -21,17 +21,17 @@ distillation mechansism such as ps2pdf. 375995 - + texmf-dist/dvips/pst-barcode/pst-barcode.pro +texmf-dist/tex/generic/pst-barcode/pst-barcode.tex texmf-dist/tex/latex/pst-barcode/pst-barcode.sty texmf-dist/tpm/pst-barcode.tpm - -texmf-dist/doc/latex/pst-barcode/Changes -texmf-dist/doc/latex/pst-barcode/README -texmf-dist/doc/latex/pst-barcode/barcode.pdf -texmf-dist/doc/latex/pst-barcode/barcode.tex -texmf-dist/doc/latex/pst-barcode/pst-barcode.tex + +texmf-dist/doc/generic/pst-barcode/Changes +texmf-dist/doc/generic/pst-barcode/README +texmf-dist/doc/generic/pst-barcode/barcode.pdf +texmf-dist/doc/generic/pst-barcode/barcode.tex Package/pst-barcode diff --git a/Master/texmf/lists/pst-barcode b/Master/texmf/lists/pst-barcode index 66f06455245..7a8bd77cf98 100644 --- a/Master/texmf/lists/pst-barcode +++ b/Master/texmf/lists/pst-barcode @@ -1,10 +1,10 @@ -texmf-dist/doc/latex/pst-barcode/Changes -texmf-dist/doc/latex/pst-barcode/README -texmf-dist/doc/latex/pst-barcode/barcode.pdf -texmf-dist/doc/latex/pst-barcode/barcode.tex -texmf-dist/doc/latex/pst-barcode/pst-barcode.tex +texmf-dist/doc/generic/pst-barcode/Changes +texmf-dist/doc/generic/pst-barcode/README +texmf-dist/doc/generic/pst-barcode/barcode.pdf +texmf-dist/doc/generic/pst-barcode/barcode.tex texmf-dist/dvips/pst-barcode/pst-barcode.pro +texmf-dist/tex/generic/pst-barcode/pst-barcode.tex texmf-dist/tex/latex/pst-barcode/pst-barcode.sty texmf-dist/tpm/pst-barcode.tpm -- cgit v1.2.3