diff options
Diffstat (limited to 'Master/texmf-dist/doc/fonts/barcode2')
-rw-r--r-- | Master/texmf-dist/doc/fonts/barcode2/README | 72 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/barcode2/bcfaq.bbl | 47 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/barcode2/bcfaq.tex | 597 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/barcode2/changes | 18 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/barcode2/eandoc.tex | 355 | ||||
-rw-r--r-- | Master/texmf-dist/doc/fonts/barcode2/examples.tex | 138 |
6 files changed, 1227 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/fonts/barcode2/README b/Master/texmf-dist/doc/fonts/barcode2/README new file mode 100644 index 00000000000..0ad209f8bb5 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/barcode2/README @@ -0,0 +1,72 @@ +This package consists of + BCFAQ.TEX (* Some more documentation) + BARCODES.STY (* some often used macros for barcoding) + CODE39.TEX (* macros in TeX for producing code 39 barcode, + documented in itself) + CODEAN.PL ( Preprocessor for EAN and code 128 (written in Perl)) + EANDOC.TEX (* Documentation for WLEAN.MF and CODEAN.PL) + EXAMPLES.TEX (* demo sheet showing the use of all barcode fonts) + WLC128.MF (* Raw Code 128 in Metafont format) + WLC39.MF (* Metafont source for Code 39) + WLC93.MF (* Metafont source for Code 93) + WLC11.MF (* Metafont source for Code 11) + WLEAN.MF (* Metafont source for EAN) + WLCR39.MF (* Metafont source for Code 39 rotated running down) + WLCDB.VPL ( virtual font for codabar barcode) + WLITF.VPL ( virtual font for ITF barcode---interleaved + 2 of 5) + WLCF39.VPL ( virtual full ascii code 39) + CHANGES ( text file listing the changes made) + README ( this file) + BARCODES.INS ( run this through TeX to make the files + ( marked above with a star*) + BARCODES.DTX ( required by barcodes.ins) + +At first you should run barcodes.ins through TeX to obtain the files +marked above with an asterisk. + +To use wlitf and/or wlcdb, run it through vptovf, move the tfm and vf +files, then in TeX say, e.g. + +\font\bcfont=wlitf scaled 2000 +{\bcfont+1234-} + +for ITF. The second line will print 1234 as ITF barcode. ++ and - make the itf start and stop sign, respectively. Please note +that ITF requires an even number of digits. + +For Code 39, you may use something like + +\font\bcfont=wlc39 scaled 2000 +{\bcfont @Hello\char32{}12345@} + +This will yield the word Hello, a space and the digits from one to five. +Please note that the @ is used as start/stop sign in this font. + +Code 128 requires wlc128.mf to be copied to a place where metafont can +find it. Also you should use codean.pl to preprocess your input. +Read the docs, code 128 is somewhat complicated. + +One last example: + +\font\bcfont=wlcdb scaled 2000 +{\bcfont a5678t \qquad b2345n \qquad c6789* \qquad d1234e} + +The last two code lines show the use of codabar. +Please note that the start/stop signs for codabar get decoded, too. + +Usage ist freely permitted, comments are welcome, any warranty is +void. If you may find any inconveniences, bugs, or improvements, do +not hesitate to tell me. + +Please note, the package is still far from complete. +Especially, barcodes.sty needs lots of refinement and some documentation. +Also, code 93 is not thoroughly tested. + +April, 1998 +Peter Willadt +(email: Willadt@t-online.de) + + + + diff --git a/Master/texmf-dist/doc/fonts/barcode2/bcfaq.bbl b/Master/texmf-dist/doc/fonts/barcode2/bcfaq.bbl new file mode 100644 index 00000000000..4dcbe98f544 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/barcode2/bcfaq.bbl @@ -0,0 +1,47 @@ +%% +%% This is file `bcfaq.bbl', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% barcodes.dtx (with options: `bcfaqbbl') +%% 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 \~} +%% +\begin{thebibliography}{Sau92} + +\bibitem[Ol{\v{s}}94]{bc:ean} +Peter Ol{\v{s}}ak. +\newblock The ean barcodes by {\TeX}. +\newblock {\em TUGboat}, 15(4):459--464, 1994. + +\bibitem[Sau92]{bc:sauter} +John Sauter. +\newblock Postnet codes using metafont. +\newblock {\em TUGboat}, 13(4):472--476, 1992. + +\bibitem[Vul91]{bc:vulis} +Dimitri Vulis. +\newblock {\TeX} and envelopes. +\newblock {\em TUGboat}, 12(2):279--284, 1991. + +\end{thebibliography} +\endinput +%% +%% End of file `bcfaq.bbl'. diff --git a/Master/texmf-dist/doc/fonts/barcode2/bcfaq.tex b/Master/texmf-dist/doc/fonts/barcode2/bcfaq.tex new file mode 100644 index 00000000000..8e2e1085961 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/barcode2/bcfaq.tex @@ -0,0 +1,597 @@ +%% +%% This is file `bcfaq.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% barcodes.dtx (with options: `bcfaq') +%% 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[a4paper]{article} +\bibliographystyle{alpha} + + +\font\itf=wlitf scaled 1200 + +\def\bcbox#1{\lower3pt\hbox{\itf +#1-}} + +\newbox\bsavebox +\newdimen\bcboxdepth +\bcboxdepth=4pt +\def\bdbox#1{\setbox\bsavebox\hbox{\itf +#1-} +\vbox{\hsize=\wd\bsavebox\offinterlineskip% +\copy\bsavebox% +\vskip-\ht\bsavebox\vskip\bcboxdepth% +\box\bsavebox\vskip-\bcboxdepth}} +\def\bebox#1{\setbox\bsavebox\hbox{\itf +#1-} +\vbox{\hsize=\wd\bsavebox\offinterlineskip% +\copy\bsavebox% +\copy\bsavebox% +\vskip-\ht\bsavebox\vskip\bcboxdepth% +\box\bsavebox\vskip-\bcboxdepth}} + +\def\tbs{{\tt\char92}} +\begin{document} +\title{Barcodes-FAQ} +\author{Peter Willadt} +\date{1997-11-09} +\maketitle +\begin{abstract} + +This file deals with questions about barcode fonts created for +\TeX{}. Its purpose is not to replace the regular documents, but to add +informations that may be of no interest for the casual reader. + +\end{abstract} + +\section{Changelog} + +\subsection{Changes of the barcode package in general} +\begin{tabular}{ll} +\em Date & \em Change\\ +1998-11-28 & included wlcr39, wlcf39, and wlc93\\ +1998-04-21 & fixed wlitf bug\\ +1998-04-10 & switched partially to docstrip archive\\ + & added support for code 11\\ +1998-01-24 & added code 128 in MF format, changed codean.pl\\ +1997-11-08 & changed metrics of {\sc itf} start/stop chars\\ +1997-10-09 & released first version of the barcode package +\end{tabular} + +\subsection{Changes within this document} + +\begin{tabular}{ll} +\em Date & \em Change\\ +1998-11-28 & added docs about code 93\\ +1998-04-10 & added docs about code 11\\ +1998-01-24 & added information about code 128\\ +1997-12-08 & added contributions to {\sc ean} coding by Kalvis M. Jansons\\ + & changed section on plessey\\ +1997-11-09 & added several items, rearranged sections\\ +1997-11-08 & started writing first version +\end{tabular} + +\section{Introduction} + +The barcode package itself can be found on {\tt ctan} in the +subdirectory\\ {\tt fonts/barcodes/willadt}. It contains---among +others---several fonts in {\sc vpl} format, so your {\sc dvi} driver +should be able to handle virtual fonts. If it doesn't, you may perhaps +use {\em dvicopy} to resolve the references to virtual fonts, or you +may perhaps upgrade to a more modern \TeX{} package. + +\section{What about docs?} + +\subsection{Docs about barcodes} + +With the barcode package, there comes documentation about {\sc ean} +fonts. In the README file, there are short examples of the use of +the other fonts, too. Also the files {\tt examples.tex} shows the look +and basic usage of the barcodes. + +In {\sl TUGboat}, barcoding has been covered in several +articles \cite{bc:ean,bc:sauter,bc:vulis}. The barcode package itself +is covered in an article that has appeared in the december issue, +1997, of {\sl TUGboat}. + +\subsection{Some information about code 128} + +Code 128 is able to print all 128 ascii chars. There are a little more +than a hundred glyphs that are interpreted in three different +ways. Some of the glyphs are used as shift chars to determine which +interpretation to use. A checksum is mandatory. To use it, you must +install {\tt wlc128.mf}. + +The preprocessing---switching among the different character sets, +coding efficiently, calculating the checksum---is handled by the +newer versions of codean.pl. This is perhaps not as pleasing as to do +it with \TeX{} alone, but, alas, it works. + +The way to run the preprocessor is described in {\tt eandoc.tex}. To +use code 128, you have to write a line starting with {\tt\tbs cxxviii\{} +followed by the characters you want to code and followed by a closing +brace. Non-printing seven-bit ascii characters may be specified in hex +in C or \TeX{} style, like {\tt\tbs x3f} or \verb|^^3f|. Anything up to +the rightmost closing brace in this line will be coded---there is no +brace matching. But you will get a warning message if your text +includes a right brace. So you may want to code braces in hex form to +avoid this message. Please note that {\tt codean.pl} does almost no +checking for errors, so if you intend to produce garbage, there are +lots of ways. If you need code 128 escape characters, they may be +included as hex characters with codes starting at 0x80. + +\begin{tabular}{lllll} +\em Input Code & \em C128 number &\multicolumn{3}{c}{\em meaning}\\ +\em(hex) & \em(dec.) & \em Set A & \em Set B & \em Set C\\ +0x80 & 96 & FNC3 & FNC3 & 96\\ +0x81 & 97 & FNC2 & FNC2 & 97\\ +0x82 & 98 & SHIFT & SHIFT & 98\\ +0x83 & 99 & CODE C& CODE C& 99\\ +0x84 & 100 & CODE B& FNC4 & CODE B\\ +0x85 & 101 & FNC4 & CODE A& CODE A\\ +0x86 & 102 & FNC1 & FNC1 & FNC1\\ +0x87 & 103 & START A& START A& START A\\ +0x88 & 104 & START B& START B& START B\\ +0x89 & 105 & START C& START C& START C\\ +0x8a & 106 & STOP & STOP & STOP +\end{tabular} + +But please keep in mind that {\tt codean.pl} does almost anything for you, +you should not have the need to insert start/stop codes and the +like. Only if you use EAN128, you will need {\tt FNC1}. Just to make +it clear: For your barcode to include {\tt FNC1} you have to write +\verb|^^86| before preprocessing. + +{\tt codean.pl} will insert a sequence of hex digits; the original +text will be appended to the line as a comment. +Also, your \TeX{} file has to define some macros. They look like +this: + +\begin{verbatim} +\font\fntcxx=wlc128 scaled \magstep3 +\def\CXXVIII{\bgroup\fntcxx\let\next\hexchar\next} +\def\cxxviii{\message{OOPS, use codean.pl}} +\def\hexchar#1#2{\if#1@ + \global\let\next\egroup + \else\char"#1#2\fi\next} +\end{verbatim} + +If you do not like end recursion, you might use other ones. If +you dislike the hex format produced by {\tt codean.pl}, you are free to +change it---as long as you don't redistribute. + +\subsection{A little bit about code 11} + +Code 11 is a numeric-only barcode. It is almost as space-efficient as +{\sc itf}, and it comes with a checksum. The checksum should be +swallowed by the reading device. The checksum is a weighted mod-11 +checksum. There are apparently two kinds of checksum in use: such with +one checkdigit and such with two checkdigits. + +To use code 11, you should include {\tt barcode.sty}. \TeX{} will +calculate the checksum on its own. If you need two check digits, you +should say\\ +{\tt\tbs codexichecksumktrue}.\\ +How many check digits you +actually need should be made clear in the documentation to your +reading device\footnote{You may also want to check the documentation +to find out if your reading device supports code 11 at all; code 11 is +not that common.}. You may code the digits 0--9, and the minus +sign. The start and stop sign is mapped to the @ character. Here is a +full example. {Please note: If you do not use \LaTeX{}, you may +have to supply a definition for {\tt\tbs makeatletter} +and {\tt\tbs makeatother}}: + +\begin{verbatim} +\input barcodes.sty +%% with two check digits +\codexichecksumktrue +\codxi{12-1234} + +%% with only one check digit. +\codexichecksumkfalse +\codxi{12-1234} +\bye +\end{verbatim} + +\subsection{About code 93} + +Code 93 is a little bit more compact than code 39 (as it uses also the +gap between the characters), but in other aspects it is quite +similiar. A checksum with two digits is mandatory. As with code 11, +checksumming works by weighing the characters different depending on +their position within the barcode. + +The version of code 93 that is included within the package resorts to +uppercase ascii, digits, and to some other signs. Start and stop sign +are mapped to {\tt<} and {\tt>}, respectively. + +Full ascii works similiar to full ascii with code 39 (that means with +escape characters), but fortunately the escape characters are +different from ordinary characters, so that you can hardly be +misunderstood. Unfortunately the escape characters are named (\$), +(\%), (/), and (+), so I decided to map them to opening and closing +parentheses and brackets, respectively. This may not seem very clever +when it comes to full ascii, but these characters may also appear as +checksum characters, so we need them when doing uppercase ascii, +too. For full ascii, it would be clever to redo the font in a +completely different way and to map start sign, stop sign and the four +escape characters to positions above 128, so that any 7 bit ascii +character can be input directly. + +Code 93 is supported by codean.pl in the same way as ean or code 128 +are. You have to write {\tt\tbs xciii\{YOUR DATA 123\}}, run the file +through {\tt codean.pl}, then you'll get\\ +{\tt\tbs XCIII\{YOUR DATA 123NN\}\%Code93(YOUR DATA 123)} + +The NN make up the two check characters. Normally, they are different, +but in this example they are equal, by incident. + +\subsection{Docs about VPL Files} + +VPL files are documented in the files {\tt VPtoVF.WEB} and {\tt +VFtoVP.WEB}. Both files can be found on {\sc ctan} under {\tt +SYSTEMS/KNUTH}. {\em WEAVE} may be used to produce \TeX{} files. The +documentation about the VPL/VF file formats is covered within the +first few sections. + +\section{I want other metrics etc.} + +\subsection{My barcodes should have depth} + +You have got several possibilities to obtain depth. The most simple +approach may be to set the barcodes with the regular barcode fonts into an +{\tt\tbs hbox} and then to {\tt\tbs lower} this hbox. + +Let's look at an example: + +\begin{verbatim} +\font\itf=wlitf scaled 1200 +\def\bcbox#1{\lower3pt\hbox{\itf +#1-}} + Example: +{\sc itf} barcode looks like \quad\bcbox{1009}\quad +for 1009, e.g. +\end{verbatim} + +This code yields the following result: + +{\sc itf} barcode looks like \quad\bcbox{1009}\quad for 1009, e.g. + +Another approach is to edit the font sources. In case of {\sc vpl} +files, this is quite painful. Rules in {\sc vpl} files do not have +depth, so you have to change the characters mapping in a way that you +add a {\em movedown} before you draw, and a {\em moveup} afterwards. +You may see the changes for an arbitrary character from {\tt +WLITF.VPL}: + +\begin{verbatim} +(CHARACTER D48 + (COMMENT from WLITF.VPL} + (CHARWD D 14) (CHARHT R 10) + (CHARDP R 0) (CHARIC R 0.0) + (MAP + (SETRULE R 14 R 1)(MOVERIGHT R 1) + (SETRULE R 14 R 1)(MOVERIGHT R 1) + (SETRULE R 14 R 2)(MOVERIGHT R 2) + (SETRULE R 14 R 2)(MOVERIGHT R 2) + (SETRULE R 14 R 1)(MOVERIGHT R 1) + ) + ) +\end{verbatim} + +This character may be lowered by four units by editing in a way that the +following lines result. Please note that there were not only the {\em +moveup} and {\em movedown} commands added, but also the height an +depth have been changed. + +\begin{verbatim} +(CHARACTER D48 + (COMMENT Lowered to give some depth) + (CHARWD D 14) (CHARHT R 10) + (CHARDP R 4) (CHARIC R 0.0) + (MAP + (MOVEDOWN R 4) + (SETRULE R 14 R 1)(MOVERIGHT R 1) + (SETRULE R 14 R 1)(MOVERIGHT R 1) + (SETRULE R 14 R 2)(MOVERIGHT R 2) + (SETRULE R 14 R 2)(MOVERIGHT R 2) + (SETRULE R 14 R 1)(MOVERIGHT R 1) + (MOVEUP R 4) + ) + ) +\end{verbatim} + +\subsection{My barcodes are too tall} + +For the sake of the person who has to scan the barcodes, barcodes just +can't be tall enough. If the complete code is as tall as wide, the +reading device can be twisted against the code at an angle of 45 +degrees. If they are half as high, the angle reduces to 26 degrees. + +If you really want short codes, you have to edit the sources. In the +{\sc vpl} file, you have to change the {\em charht} and the first parameter +to the {\em setrule} command at well. You also should change the {\em +designsize} parameter. + +\subsection{My barcodes are not tall enough} + +You may also change the sources, like described in the previous +subsection. But there is another solution that is perhaps more +practical. The idea is simple that double black is still black and +that you may overlay several printouts of the same barcode. Here is +the example code (it may be made taller by adding more copies of the +barcode box, of course). There is an extra dimension {\em bcboxdepth} +added to yield depth for the barcodes. + +\begin{verbatim} +\newbox\bsavebox +\newdimen\bcboxdepth +\bcboxdepth=4pt +\def\bdbox#1{\setbox\bsavebox\hbox{\itf +#1-} +\vbox{\hsize=\wd\bsavebox\copy\bsavebox% +\vskip-\ht\bsavebox\vskip\bcboxdepth% +\box\bsavebox\vskip-\bcboxdepth}} +\def\bebox#1{\setbox\bsavebox\hbox{\itf +#1-} +\vbox{\hsize=\wd\bsavebox\copy\bsavebox% +\vskip0pt\copy\bsavebox% +\vskip-\ht\bsavebox\vskip\bcboxdepth% +\box\bsavebox\vskip-\bcboxdepth}} + Example: +Tall {\sc itf} barcode looks like \quad\bdbox{1009}\quad +or (still taller) \quad\bebox{1009}\quad for 1009, e.g. +\end{verbatim} + +And here is the result, you may compare it with the output of the +previous example: + +Tall {\sc itf} barcode looks like \quad\bdbox{1009}\quad or (still +taller) \quad\bebox{1009}\quad for 1009, e.g. + +\subsection{My barcodes are too wide/too narrow} + +Perhaps you should change the barcode size (by changing +{\tt\tbs magnification}) and then read the subsections above about too +tall bars and bars that are not tall enough. + +\subsection{My barcodes should run vertically} + +Vertically oriented barcode is a good idea for cans, bottles and +similiar things. + +It just depends on your {\sc dvi} driver. Perhaps there is a +possibility to handle rotation via {\tt\tbs special}, as with {\em +dvips} and the {\em rotate} macros. For experimantal purposes I have +included a code 39 version running down instead right ({\tt +wlcr39.mf}). You may perhaps use it with {\tt\tbs shortstack} or +similiar. Here is some code I used (successfully) with plain \TeX: + +\begin{verbatim} +\font\testfont=wlcr39 scaled 1200 +\def\bcbax{\let\next\bcbox\vbox\bgroup + \offinterlineskip\testfont\setbox0\hbox{@}\hsize=\wd0 + \noindent{}@\hfil\break\next} +\def\fertig{@\hfil\break\egroup} +\def\bcbox#1{\if @#1\let\next\fertig\else#1\hfil\break\fi\next} + +Look buddy, this is \bcbax1406632@ code 39 +stacked and running downwards. +\end{verbatim} + +\subsection{I heard something about full ascii code 39} + +Well, umh, now that you ask\dots The truth is: You may perhaps be able to +configure your reading device to accept full ascii code~39. Then you may +code any 7~bit character you may think of. The bad news is that most of +the symbols have to be coded by two +characters -- and as code 39 has already low density, you should not +expect to get much use of it. Perhaps you might want to try code 128 +instead---it features full 7-bit ascii without any compromise. + +Another anti-feature is that switching to reading full-ascii code~39 +may lead to some bad reads of `normal' code~39. In full ascii, the lower +case letters, e.g., are made by prepending the uppercase letters with a +plus sign, so {\tt+A} is read as {\tt a}. So, if you have got regular +code~39 that contains such character sequences, and you have switched +your reading device to full ascii, you may get bad results. + +But, now that you want it: With the barcode package there comes a font +{\tt wlcf39.vpl}. You may install it like the other vpl files. It has got +132 characters and has already taken all the coding for full ascii, so +when you typ {\tt e,\$4+A}, it will silently be mapped to what you +would have typed as {\tt+E/L/D/KA}, if you would use the plain code~39 +format\footnote{Please take note: 6 characters are blown up to 9, +think again about using another code}. In my version of full ascii +code~39, the start/stop sign is mapped to @@ (or \verb|\char128|). So +you actually had to add @@ to the front and the end of the example +string. If you can not exclude that the character sequence @@ appears +within the text you want to code, you have to avoid ligature +processing. You may do that like this: + +\begin{verbatim} +\font\fullas=wlcf39 scaled 1728 +\def\alphanolig{\char64\kern0pt} +\def\printacode#1{{\fullas@@{\catcode`\@=\active% +\let @=\alphanolig#1}@@}} +\end{verbatim} + +You also have to escape or circumscribe special characters to make +them really printable, of course, so that when you wanted a backspace, +a tab, a space, a dollar sign, a percent sign, and a bell character to +be coded, you would type something like + +\begin{verbatim} +{\fullas @@\char8\char9\char32\$\%\char7} +\end{verbatim} + +\section{Troubleshooting} + +\subsection{My barcodes can't be decoded} + +At first, try to make them larger. If that does't help, make them +larger, again. If that will not help, obtain fonts in \TeX{} or +Metafont format and make them brighter. Or, perhaps better, obtain a +better printer. + +You also should check the contrast between bars and background, +especially when using a dot matrix printer or coloured background +or---still worse---red bars. + +\subsection{My decoder reads extra digits, sometimes} + +I guess you use {\sc itf} barcode with a number of digits that is +sometimes even and sometimes odd. As {\sc itf} always codes two digits +at once, you should take care just to code an even number of digits at +any time. If an excess zero at the beginning of your number is not +acceptable, you might try another kind of barcode instead of {\sc +itf}. + +\section{Missing items} + +\subsection{I am missing two-of-five} + +I got specs for two-of-five (three bars). If you want it, let me know; +I might implement it. For other kinds of two-of-five, I haven't got +complete specs. + +\subsection{I am missing plessey} + +I got the specs but I haven't yet got the time to implement them. With +plessey, there also rise several questions due to the fact that +plessey has never been officialy standardized. The only thing that is +absolutely sure about plessey is how binary ones and zeros are +encoded. There are codes that are more wide-spread. Several modern +barcode readers can't cope with plessey code. + +\subsection{I am missing \dots{} some other barcode} + +I have checked out several two-dimensional barcodes. But for most of +them, support by \TeX{} seems to be rather pointless. Perhaps Metafont +could be called any time you have to code something to draw the +symbols, but you might as well use a custom drawing program that comes +from the barcode vendor. Also, most two-dimensional barcodes (and +other barcodes not mentioned here) are proprietary. Last not least the +reading devices I have access to can deal only with a finite range of +barcodes. + +I am sorry, but I haven't got the specs for further barcodes +not mentioned here. If you could be so kind as to send them to me, I +might perhaps implement them. + +\section{Contributions} + +\subsection{EAN without preprocessing} + +The following code is due to Kalvis M. Jansons. + +It handles printing of {\sc ean} without having to run a +preprocessor. Not only are the {\sc ean} bars drawn, also the checksum +checksum is checked. It can be easily +adapted to non-\LaTeX{} use by omitting anything before \verb|\font| + +\begin{verse} +Kalvis M. Jansons + +eMail: \verb|<kalvis@math.ucl.ac.uk>| + +\end{verse} + +An easy way to use the barcode fonts in \LaTeX{}: + +\begin{verbatim} +\documentclass[a4paper]{article} + +\pagestyle{empty} + +\setlength{\oddsidemargin}{0pt} +\setlength{\textwidth}{\paperwidth} +\addtolength{\textwidth}{-2in} +\setlength{\marginparwidth}{0pt} + +\setlength{\textheight}{\paperheight} +\addtolength{\textheight}{-2.5in} +\setlength{\topmargin}{0pt} + +\font\eanfont=WLEAN scaled 2000 +\def\ean#1{\vbox{\vskip20pt\eanfont#1\vskip20pt}} +\newcount\num +\def\a#1{\num=#1 \advance\num by `A \char\num} +\def\b#1{\num=#1 \advance\num by `a \char\num} +\def\c#1{\num=#1 \advance\num by `K \char\num} +\def\C#1#2#3#4#5#6{\c#1\c#2\c#3\c#4\c#5\c#6} + +\def\A#1#2#3#4#5#6#7{\ifcase #7 +{\a#1\a#2\a#3\a#4\a#5\a#6}% +\or {\a#1\a#2\b#3\a#4\b#5\b#6}% +\or {\a#1\a#2\b#3\b#4\a#5\b#6}% +\or {\a#1\a#2\b#3\b#4\b#5\a#6}% +\or {\a#1\b#2\a#3\a#4\b#5\b#6}% +\or {\a#1\b#2\b#3\a#4\a#5\b#6}% +\or {\a#1\b#2\b#3\b#4\a#5\a#6}% +\or {\a#1\b#2\a#3\b#4\a#5\b#6}% +\or {\a#1\b#2\a#3\b#4\b#5\a#6}% +\or {\a#1\b#2\b#3\a#4\b#5\a#6}% +\fi} + +\newcount\cha +\newcount\chb +\makeatletter +\long\def\for{\@for} +\makeatother +\gdef\mysix#1#2#3#4#5#6{,#1#2,#3#4,#5#6} +\gdef\mywork#1#2{\advance\cha by #1 \advance\chb by #2} +\gdef\barch#1.#2.#3.{ +\xdef\mylist{0#1\mysix#2\mysix#3} +\cha=0 +\chb=0 +\for \x:=\mylist\do{\expandafter\mywork\x} +\multiply\cha by 3 +\advance\chb by \cha +\cha=\chb +\divide\cha by 10 +\multiply\cha by -10 +\advance\chb by \cha} +\def\bar#1.#2.#3.{\barch#1.#2.#3. +\ifnum\chb>0 #1#2#3 has a bad check sum!\\[20pt] +\else \ean{#1 +\A#2#1-\C#3+}\fi} +\begin{document} + + Examples + +\bar3.034325.106199. + +\bar4.074400.410000. + +\bar5.449000.055521. + +\bar5.010027.522336. + +\bar8.410005.421052. + +\bar9.780192.828941. + +\end{document} +\end{verbatim} + +\bibliography{bcfaq} + +\end{document} +\endinput +%% +%% End of file `bcfaq.tex'. diff --git a/Master/texmf-dist/doc/fonts/barcode2/changes b/Master/texmf-dist/doc/fonts/barcode2/changes new file mode 100644 index 00000000000..4214325c514 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/barcode2/changes @@ -0,0 +1,18 @@ +This file documents changes to the barcode package. +Its purpose is to make updating easier. + +1998-04-21 fixed wlitf bug +1998-04-10 switched partly to docstrip-archive: + moved TeX and MF sources into barcodes.dtx, + added barcodes.ins + moved some macros to barcodes.sty (unfinished) + added code 11, so changed bcfaq.tex and examples.tex +1998-01-24 Added Code 128. Adopted codean.pl to code 128 + corrected isbn bug in codean.pl + Minor change to eandoc.tex + Added code 128 to bcfaq.tex, examples.tex, REAMDE +1997-11-29 Added version date to examples.tex +1997-11-08 Changed metrics of WLITF start and stop char + to remove the large whitespace. +1997-11-08 Corrected README file. +1997-10-09 Released first version of the barcode package.
\ No newline at end of file diff --git a/Master/texmf-dist/doc/fonts/barcode2/eandoc.tex b/Master/texmf-dist/doc/fonts/barcode2/eandoc.tex new file mode 100644 index 00000000000..c89375950da --- /dev/null +++ b/Master/texmf-dist/doc/fonts/barcode2/eandoc.tex @@ -0,0 +1,355 @@ +%% +%% 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} + +The files in this package come with no warranty. They may be freely +used without permission. 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 +Heinrich-Wieland-Allee 5 +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'. diff --git a/Master/texmf-dist/doc/fonts/barcode2/examples.tex b/Master/texmf-dist/doc/fonts/barcode2/examples.tex new file mode 100644 index 00000000000..520fcb78431 --- /dev/null +++ b/Master/texmf-dist/doc/fonts/barcode2/examples.tex @@ -0,0 +1,138 @@ +%% +%% This is file `examples.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% barcodes.dtx (with options: `example') +%% 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 \~} +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% This file documents look and use of +%% the barcodes this package belongs to. +%% It may be freely used without any +%% further permission. +%% You should have received this file as part of +%% the barcode package. +%% +%% Author: Peter Willadt +%% Date: 1997-11-29 +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Note: +%% 1. This file has already been run through codean.pl +%% +%% 2. You need to have the fonts installed, of course. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Fonts +%% +\font\xlix=wlc39 scaled 2000 +\font\itf=wlitf scaled 2000 +\font\cdb=wlcdb scaled 2000 +\font\eanfont=WLEAN scaled 1200 +\font\fntcxx=wlc128 scaled \magstep3 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Inputs +%% +\input code39.tex +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Def's +%% +%% for EAN +\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{\hsize=0.4\hsize\vskip10pt\eanfont#1\vskip10pt}} +%% for Code 128 +\def\CXXVIII{\bgroup\fntcxx\let\next\hexchar\next} +\def\hexchar#1#2{\if#1@\global\let\next\egroup\else\char"#1#2\fi\next} +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Here we go +\parindent0pt +Hello, this is a test sheet of the barcode fonts. + +At first, we deal with code 39. Code 39 is represented in this package +both in form of a native font (Metafont-source) and in form of +\TeX{}-macros. code 39 features low-density alphanumeric encoding. + +Here you may see how HELLO looks like in code 39 (the start and stop +sign is mapped to @, if you're curious, so in the source to this sheet +I have written {\tt@HELLO@} after having selected the proper +font). This first example uses the font. + +{\xlix@HELLO@} + +Another approach is to use \TeX{} macros to make up bars. Here is the +same HELLO with macros: + +\begincodethirtynine{HELLO}\endcodethirtynine + +Interleaved two-of-five (ITF for short) features high-density +numerical-only encoding. Your code has to have an even number of +digits. The start sign is mapped to $+$, the end sign to $-$. +So, to code 0123456789, you type {\tt+0123456789-}, and the result +looks like this: + +{\itf+0123456789-} + +If you still have not got enough of barcoding, here is codabar. Here +you got four sets of start/stop signs that get decoded together with +the numbers. The start/stop sign pairs are a/t, b/n, c/*, and d/e. So +{\tt a12345t} looks like this:\bigskip + +{\cdb a12345t} + +Now you should have a look at code 128. The bars itself look sometimes +disrupted; this is due to the fact that the widest elements are four +times as wide as the narrowest. Code 128 enables you to code any 7-bit +ascii character. With digits only, it is as efficent as itf. The bad +news is the preprocessing required, so you have to read the docs. The +following bars mean {\tt Hallo123456}\bigskip + +\CXXVIII 6828414C4C4F630C2238506A@@ % Code128(Hallo123456) + +And, last and perhaps most important, the EAN font. Read {\tt +eandoc.tex} to find out how these are coded, here is just the output +of the example code mentioned there: +\embed{2500000000000} + +\line{ +\EAN{4 +AcFHaa-KKLKNK+} % or, without checksum: %(4025700001030) +\hfil +\EAN{4 +AcFHaa-KKLKNK+} %(402570000103) +} +\line{ +\EAN{2 +FAaaAa-KKLMNT+} % embedded(123) +\hfil +\EAN{9 +HiaCaB-LNOOSN+} % ISBN(0201134489) +} + +And that's all. Perhaps you may think that this is not a beautiful +document---but barcodes aren't beautiful. As long as reading devices +do not have \ae{}sthetic feelings, I don't regard this as a problem. +\bye +\endinput +%% +%% End of file `examples.tex'. |