diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/barcodes/eandoc.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/barcodes/eandoc.tex | 357 |
1 files changed, 357 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/barcodes/eandoc.tex b/Master/texmf-dist/doc/latex/barcodes/eandoc.tex new file mode 100644 index 00000000000..97cadb569ba --- /dev/null +++ b/Master/texmf-dist/doc/latex/barcodes/eandoc.tex @@ -0,0 +1,357 @@ +%% +%% This is file `eandoc.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% barcodes.dtx (with options: `eandoc') +%% As this is a generated file, you may perhaps not want to edit it. +%% This file belongs to the barcode package. +%% It may be of no great use without the rest of the barcode package. +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\documentclass{article} +\begin{document} +\author{Peter Willadt} +\title{EAN Barcodes by \TeX{} an Metafont} +\date{1998-01-24} +\maketitle +\begin{abstract} +This article documents the use of the font {\tt wlean.mf}. With the font, +there also comes an auxiliary Perl file for preprocessing TeX source. +Its use is also documented here. +\end{abstract} + +\section{Legal Restrictions and Introduction} + +All the files in this package are subject to the \LaTeX\ Project Public +License. Also I got a special wish: If you find this package useful, +support TUG or your local \TeX\ user group. + +The complete contents of this package is +described in the file {\tt README}. That file also contains some +information about the use of the other barcode fonts that are +contained. For more information about these other files you may want +to read an article that has appeared in the december, 1997 issue of +{\em TUGboat}. Please see also the remarks in the section {\em +Address} later in this file. + +\section{About {\sc ean}} + +In stores, {\sc upc} and {\sc ean} codes are widely used for automatic +identification, pricing etc. {\sc ean} consist of either eight or +thirteen digits. Twelve digit {\sc upc} codes are like thirteen digit +{\sc ean} with the first digit equal to zero. {\sc ean} specifications +do not only +require bars, also the encoded number has to be written in plain text, +in case a reader is defective or the code is too hard to read. {\sc +ean} is a high-density code, and so it is highly vulnerable. + +\subsection{Coding} + +The last digit of an {\sc ean} is a weighted mod 10 checksum. Digits +are alternatingly multiplied by 1 or 3. The so calculated sum over all +digits has to be divisible by ten without any remainder. + +There are three different {\sc ean} character sets labeled A, B, and +C. Eight digit {\sc ean} codes use character sets A and C, {\sc ean} +codes with thirteen digits use all three character sets---see below. + +\begin{verse} +{\sc ean} with eight digits consists of:\\ +a sidebar\\ +the first four digits (coded in character set A),\\ +the middle separator,\\ +the other four digits (coded in character set C)\\ +another sidebar. +\end{verse} + +The first half of an {\sc ean} code with thirteen digits is coded in +the character sets A and B, the second half in character set C. The +coding of the very first digit is hidden in the varying use of the +character sets A and B. A C programmer might use the following table +and algorithm to decide which character set to use for digits 2--7: + +\begin{verbatim} +static UBYTE abtab[10][6]={ + {0,0,0,0,0,0}, /* 0 */ + {0,0,1,0,1,1}, /* 1 */ + {0,0,1,1,0,1}, /* 2 */ + {0,0,1,1,1,0}, /* 3 */ + {0,1,0,0,1,1}, /* 4 */ + {0,1,1,0,0,1}, /* 5 */ + {0,1,1,1,0,0}, /* 6 */ + {0,1,0,1,0,1}, /* 7 */ + {0,1,0,1,1,0}, /* 8 */ + {0,1,1,0,1,0} /* 9 */ +}; + +char eancode[18]; +char eansource[14]="4025700001030"; + +eancode[0]=eansource[0]; +eancode[1]=' '; +eancode[2]='+'; +for(i=1;i<7;i++) + eancode[i+2]='A'+eansource[i]-'0' + +abtab[eansource[0]-'0'][i-1]*('a'-'A'); +/* then the middle separator, digits 7--13, + * and the final + sign */ +\end{verbatim} + +A zero means to use character set A and a one means to use character +set B for the respective digit. The printed code of an {\sc ean} 13 +consist of the following elements, from left to right: + +\begin{verse} +The first digit in human-readable form\\ +an {\sc ean} sidebar\\ +six digits in character sets A or B\\ +the {\sc ean} middle separator\\ +six digits in character set C\\ +another {\sc ean} sidebar +\end{verse} + +Magazines or codes with pricing have a so called extension following +the main code with some fixed distance. This extension consists of one +sidebar and two or five digits. As I have no full {\sc ean} +documentation at hand at the time of this writing, I am sorry that I +am not able to tell you more about this. + +The {\sc ean} digits themselves obey to the following rules: Each +digit takes seven units of space. Some of the seven elements are +white, others are black. Digits from character set A always are white +at the left edge and black at the right, and they always have an odd numer +of black elements. Digits from character set B are quit similiar, but +they have an even number of black elements. Digits from Character set C +always start with a black element and have an even number of +black elements. The rightmost element in character set C is always white. +The sidebars are three elements wide, the middle separator takes five +elements. + +\subsection{What {\sc ean} numbers may I use?} + +For inhouse use, you may use any 13-digit {\sc ean} that starts with a +2. If you want to have your products sold elsewhere, you have to buy a +set of {\sc ean} numbers from the organisation in your country that +holds these numbers. For germany, this organisation is the {\em +Zentrale f\"ur Coorganisation} in Cologne. Almost any country has a +similiar organisation. + +The first digit or sometimes the first two digits code the country of +origin, the next five to six digits code the manufacturer, the eigth +to twelfth digits are for free use by the manufacturer. The +thirteenth digit is, as explained above, a checksum. {\sc ean} do not +contain any qualifiers, so if you get an {\sc ean} from somewhere, you +may find out about the country of origin and about the manufacturer of +the product, but if you want to know more, you have to contact the +manufacturer. + +\section{Using {\tt wlean.mf}} + +{\tt wlean.mf} is rather raw. It contains all three {\sc ean} +character sets within one single font, but at different places. +The character sets A, B, C, and the digits are +featured through the following characters: + +\begin{verse} +0 to 9 yield the digits from 0 to 9\\ +A to J yield the codes from character set A\\ +a to j yield the codes from character set B\\ +K to T yield the codes from character set C\\ ++ makes the left and right sidebar and\\ +- makes the middle sign +\end{verse} + +So, to code the number {\tt 2099993098253}, you have to write\\ +\verb*|{\eanfont2 +AJjjJd-KTSMPN+}|. The space is necessary to separate +the leading 2 from the barcode. + +{\tt wlean.mf} does not use true {\sc ocr} digits, as it should. As +the digits will not be used for {\sc ocr}, I do not consider this as +a serious restriction. If you really need {\sc ocr} digits, there is +an {\sc ocr} font on {\sc ctan}. And in {\em TUGboat}, there has been +a publication about {\sc ean}, where \TeX{} draws the bars and +the {\sc ocr} font prints the digits, see [1]. + +{\tt wlean.mf} uses the normal {\sc ean} dimensions. If you would like +lower bars---in contradiction to the {\sc ean} rules---you have to edit +the source. The rules also make recommendations about the scaling. To +be fully compatible, this font may be scaled 0.8, 0.9, 1, 1.2, 1.4, +1.5, 1.7, 1.85, or 2 times the original size. With a 300 dpi printer, +I do not recommend using sizes$<1.0$. + +\subsection{Installation} + +The installation itself is pretty mundane, like with any plain font. +Just copy {\tt wlean.mf} to a location where Metafont can find +it. Then invoke Metafont to create a {\sc tfm} file. Move this {\sc +tfm} file where \TeX{} can find it. Type in the example at the end of +this file and run it through \TeX{}. Then call Metafont again to +produce a font suitable for your printer or previewer and move this +font to an appropriate location. You may also want to edit {\tt +codean.pl} to run on your shell. For this purpose you have to read +your system's documentation or the documentation that comes with Perl. + +\subsection{Making readable output} + +Don't make {\sc ean} too small. With a 300 dpi printer, you should not +use this font with magnification$<1$; {\tt scaled 1200} will be okay. +If you want to do mass production, go to somebody with a barcode +reader and check your output, {\em before} you loose money. You also +should consider changes in the blackness that may be caused by +production printing devices. And, of course, you should only use +colours that can be used with barcode reading devices. Especially, do +not use red and watch for much contrast between the colour you print +and the colour of the paper. + +\subsection{Coding the numbers} + +You will perhaps not want to write something as ugly and error-prone +as \verb*|{\eanfont2 +AJjjJd-KTSMPN+}| manually. So you have to use a +preprocessor\footnote{See bcfaq.tex for \TeX{} code to go without +preprocessing. It is very fine.}. With {\tt wlean.mf} there comes a +tiny Perl program ({\tt codean.pl}) that does preprocessing within +your \TeX{} sources\footnote{codean.pl in the meantime also handles +code 128. See bcfaq.tex}. + +The \TeX{} file to be filtered may contain any number of lines +that have one of the following commands starting at the leftmost position. + +\begin{itemize} +\item \verb|\ean{|{\em12 or 13 digit number}\verb|}| +The number will be coded as {\sc ean}. If it is only 12 digits long, the +checksum will be calculated, too. + +\item \verb|\embed{|{\em12 or 13 digit number}\verb|}| +The number is used as a base for embedding article numbers \&c.\ +within an {\sc ean}. + +\item \verb|\eean{|{\em number with at most 11 digits}\verb|}| +This number is to be embedded within an {\sc ean}. + +\item \verb|\isbn{|{\em valid ISBN}\verb|}| An {\sc isbn} to +make an embedded {\sc ean} of. +\end{itemize} + +Let's look at an example: You want the {\sc isbn} {\tt0-201-13448-9} +to be embedded. So you write \verb|\isbn{0201134489}|, but you might +also use the embedding method and write +\verb|\embed{9780000000000}| and, somewhere later in the file, +\verb|\eean{020113448}|. In this latter case you have to omit the last digit, +as {\sc isbn} loose their check digit in favour of the {\sc ean} check digit. +Anyway you do it, you get your command replaced by +\verb|\EAN{|{\em13-digit-number-coded-strange}\verb|}| in the output +file. + +But embedding is especially useful if you also write the program that +reads the barcodes. This program might then extract your article +number from an {\sc ean} starting with {\tt20}, eg. + +What you have to do is, of course, to use stub definitions for the +three macros mentioned above---as they shall never actually be +typeset---and to use a valid definition for \verb|\EAN|. Then you run +your \TeX{} source through {\tt codean.pl}. This program takes as +first parameter the name of your original file and as second parameter +the name of your destination file. If you omit the parameters, you will +be asked for them. + +You may of course also peek the source of {\tt codean.pl} to see how +{\sc ean} checksums are calculated, and so on. + +\subsection{Example} + +Here is a full example. +Use this \TeX{} source: + +\begin{verbatim} +\font\eanfont=WLEAN +\def\ean#1{\message{Call codean.pl}} +\def\eean#1{\message{Call codean.pl}} +\def\isbn#1{\message{Call codean.pl}} +\def\embed#1{} +\def\EAN#1{\vbox{\vskip10pt\eanfont#1\vskip10pt}} + Now, something to do: +\ean{4025700001030} % or, without checksum: +\ean{402570000103} +\embed{2500000000000} +\eean{123} +\isbn{0201134489} +\end{verbatim} + +Having run your file through {\tt codean.pl}, the lines after the percent +sign look like this: + +\begin{verbatim} + Now, something to do: +\EAN{4 +AcFHaa-KKLKNK+} % or, without checksum: %(4025700001030) +\EAN{4 +AcFHaa-KKLKNK+} %(402570000103) +\embed{2500000000000} +\EAN{2 +FAaaAa-KKLMNT+} % embedded(123) +\EAN{9 +HiaCaB-LNOOSN+} % ISBN(0201134489) +\end{verbatim} + +Running this file through \TeX{}, you get {\sc dvi} output containig +{\sc ean} barcodes. Perhaps you wonder why there is not even a +single {\sc ean} contained within this documentation. The reason is +quite simple: You should be able to read the docs {\em before} you +have installed the font. But now is the right time to try the example +on your own. Better yet, you may code an {\sc ean} where you have +taken the number from something like your favourite candy and then, +having printed it, you may compare the bars. This is a nice way to +spend your evenings. I actually started deciphering {\sc ean} codes in +this way, several years ago. + +\section{The End} + +\subsection{Address} + +Just in case you want to write to me, here is my address---but +please note: I am not the {\sc ean} guru. + +\begin{verbatim} +Peter Willadt +75177 Pforzheim +Germany +email: Willadt@t-online.de +\end{verbatim} + +I also would appreciate if only one version of the material contained +in this package is distributed. So if you have any corrections, +suggestions, \&c., please do not hesitate to send them to me to +incorporate them within this package. + +\subsection{Acknowledgement} + +I want to express my special thanks to Barbara Beeton for proofreading +and making valuable suggestions. If there are still any typos or +illegibilities, that is due to the fact that I had to change some +things later on. + +\begin{thebibliography}{1} + +\bibitem{bc:ean} +Peter Ol{\v{s}}ak. +\newblock The {\sc ean} barcodes by {\TeX}. +\newblock {\em TUGboat}, 15(4):459--464, 1994. + +\end{thebibliography} + +\end{document} +\endinput +%% +%% End of file `eandoc.tex'. |