summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ean13isbn/ean13isbn.sty
blob: 821ac862dc1444df3c73c6f30c546aba7c861279 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
\ProvidesPackage{ean13isbn}[2021/01/24 EAN13 with ISBN]
\PackageInfo{ean13isbn}{$Id: ean13isbn.sty 550 2021-01-23 23:47:58Z zw $\@gobble}

%% Copyright 2008, 2021 Z. Wagner, http://icebearsoft.euweb.cz
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
%   http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
% 
% The Current Maintainer of this work is Z. Wagner.
%
% This work consists of the files: ean13isbn.sty and
% the documentation files ean13isbn.tex, ean13isbn.pdf.

\def\zw@setean#1#2{\def\zw@scale{#1 }\def\zw@xm{#2mm }}

\RequirePackage{kvoptions}
\SetupKeyvalOptions{family=zwean,prefix=zwean@}
\DeclareStringOption{ISBN}
\DeclareVoidOption{help}{\typeout{\zwean@table}}

\def\zw@set #1 #2 #3 {\ifnum#2<1000 \let\zw@maybespace\space \else \def\zw@maybespace{}\fi
    \edef\zwean@table{\zwean@table^^J\zw@maybespace #2 0#3mm => SC#1}%
    \DeclareVoidOption{SC#1}{\zw@setean{#2}{#3}}}

\def\zw@tbline{^^J======================}
\def\zwean@table{\zw@tbline ^^J\space Mag \space Module\space \space \space \space Option\zw@tbline}

\zw@set 0 800 .264
\zw@set 0a 818 .270
\zw@set 0b 850 .281
\zw@set 1 900 .297
\zw@set 1a 950 .313
\zw@set 2 1000 .330
\zw@set 2a 1050 .346
\zw@set 3 1100 .363
\zw@set 3a 1150 .379
\zw@set 4 1200 .396
\zw@set 4a 1250 .412
\zw@set 5 1300 .429
\zw@set 5a 1350 .445
\zw@set 5b 1400 .462
\zw@set 5c 1450 .478
\zw@set 6 1500 .495
\zw@set 6a 1550 .511
\zw@set 7 1600 .528
\zw@set 7a 1650 .544
\zw@set 7b 1700 .561
\zw@set 7c 1750 .577
\zw@set 8 1800 .594
\zw@set 8a 1850 .610
\zw@set 8b 1900 .627
\zw@set 8c 1950 .643
\zw@set 9 2000 .660
\zw@set 10 2120 .700

\edef\zwean@table{\zwean@table \zw@tbline}

\setkeys{zwean}{SC2}

\InputIfFileExists{./ean13isbn.cfg}{}{}

\ProcessKeyvalOptions*

\expandafter\ifx\csname mubytein\endcsname\relax
  \let\zw@mubytein\relax
\else
  \edef\zw@mubytein{\noexpand\mubytein\the\mubytein}\mubytein0
\fi
\input{ean13}
\zw@mubytein

\newdimen\zw@isbnfsize
\newbox\zw@test@box

\def\zw@eansetup@params{\X\zw@xm
  \font\ocrb ocrb9 scaled \zw@scale
  \zw@isbnfsize 9.6pt
  \ifnum\zw@scale<1000
    \zw@isbnfsize .\zw@scale\zw@isbnfsize
  \fi
  \ifnum\zw@scale>1000
    \def\zw@next##1##2##3##4.{\zw@isbnfsize ##1.##2##3##4\zw@isbnfsize}
    \expandafter\zw@next\zw@scale.
  \fi
  \def\zw@isbnfont{\usefont{OT1}{phv}{c}{n}\fontsize{\zw@isbnfsize}{\zw@isbnfsize}\selectfont}
    \setbox\zw@test@box=\hbox{\zw@isbnfont0}%
    \ifdim\wd\zw@test@box>.65\ht\zw@test@box
      \def\zw@isbnfont{\usefont{OT1}{phv}{mc}{n}\fontsize{\zw@isbnfsize}{\zw@isbnfsize}\selectfont}
    \fi}
\zw@eansetup@params

\def\zw@EANisbn{\def\ISBNnum{\let\ocrbsmall\relax
    \hbox to 96\X{\zw@isbnfont \kern .5\X ISBN\hss \zwean@ISBN}}\barheight=45.151515\X\relax
    \expandafter\EAN \zwean@ISBN}

\def\EANisbn{\@ifnextchar[\zw@eanwitharg\zw@EANisbn}

\def\zw@eanwitharg{\begingroup \catcode`\-12 \zw@eanarg}
\def\zw@eanarg[#1]{\setkeys{zwean}{#1}\zw@eansetup@params\zw@EANisbn\endgroup}

\def\EANsetup{\begingroup \catcode`\-12 \zw@eansetup}
\def\zw@eansetup#1{\endgroup \setkeys{zwean}{#1}\zw@eansetup@params}

\def\ISBN{ISBN \zwean@ISBN}