blob: 6fd636829a9e4a2dc4310719518a1f7dc702787d (
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
112
113
114
115
116
117
118
119
120
121
122
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% bibtex.4ht 2006-12-01-16:02 %
% Copyright (C) 1999--2006 Eitan M. Gurari %
% %
% 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 2003/12/01 or later. %
% %
% This work has the LPPL maintenance status "maintained".%
% %
% This Current Maintainer of this work %
% is Eitan M. Gurari. %
% %
% If you modify this program your changing its signature %
% with a directive of the following form will be %
% appreciated. %
% \message{signature} %
% %
% gurari@cse.ohio-state.edu %
% http://www.cse.ohio-state.edu/~gurari %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\immediate\write-1{version 2006-12-01-16:02}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Usage: \input bibtex.4ht \bibtex{file.bib} %
% Provides: \bibkey, \thisbib, \Configure{@...}, \Configure{...} %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\expandafter\ifx\csname :RestoreCatcodes\endcsname\relax
\expandafter\let\csname :RestoreCatcodes\endcsname=\empty
\fi
\edef\bibstack{\noexpand\PushStack\expandafter\noexpand
\csname Cat:Stack\endcsname
\expandafter\noexpand \csname :RestoreCatcodes\endcsname}
\bibstack
\expandafter\edef\csname :RestoreCatcodes\endcsname{%
\catcode`\noexpand :\the\catcode`:%
\catcode`\noexpand "\the\catcode`"%
\catcode`\noexpand @\the\catcode`@%
\catcode`\noexpand _\the\catcode`_%
\catcode`\noexpand ^\the\catcode`^%
\catcode`\noexpand |\the\catcode`|%
\csname no:restore\endcsname
\noexpand\PopStack\expandafter\noexpand\csname Cat:Stack\endcsname
\expandafter\noexpand \csname :RestoreCatcodes\endcsname}
\catcode`\:11 \catcode`\@11 \catcode`\^7 \catcode`\|=12
\catcode`"12
\catcode`\_=13
\gdef\bib:parse#1,{{\def_{\string_}%
\xdef\bibkey{#1}\open:tag{\bib:type}{entry}\hfil\break}\cont:parse}
\catcode`\_=8
\gdef\bib:eat{\bgroup \catcode`\@=12 \catcode`\^^M=10 \catcode`\#=12
\a:@bibtex \csname a:@\bib:type\endcsname
\ifx \thisbib\:UnDef \expandafter\bib:conteat
\else \pend:defI\thisbib{\egroup}\expandafter\thisbib \fi}
\NewConfigure{@bibtex}{1}
\def\get:key#1 #2///{\def\:temp{#2}\ifx\:temp\empty \def\bib:tag{#1}\else
\def\:temp{\get:key#1#2///}\expandafter\:temp
\fi}
\long\def\bib:conteat#1{\egroup
{\bib:parse #1@="@"}\csname b:\bib:type\endcsname \vfil\break}
\def\open:tag#1#2{%
\expandafter\ifx \csname a:#1\endcsname\relax
\:warning{no configuration for #2 <#1>...</#1>}%
\global\expandafter\let \csname a:#1\endcsname\empty
\fi \csname a:#1\endcsname}
\def\bib:scan{\ifx \:next\bgroup \expandafter\bib:eat
\else \expandafter\bib:more \fi}
\def\bib:more#1{\edef\bib:type{\bib:type#1}\futurelet\:next\bib:scan}
\def\b:btitem#1{\egroup\def\bib:type{#1}\futurelet\:next\bib:scan}
\catcode`\@=13\relax
\gdef\bibtex#1{\begingroup
\def@{\bgroup \catcode`\@=12\b:btitem}%
\catcode`\@=13\relax
\input #1\endgroup}
\catcode`\@=11\relax
\def\cont:parse{\futurelet\:next\cont:parseY}
\def\cont:parseY{%
\expandafter\ifx \space\:next
\expandafter \def\expandafter\:temp\space{\cont:parse}%
\else \let\:temp\cont:parseX \fi \:temp}
\long\def\cont:parseX#1={%%
\expandafter\get:key#1 ///\futurelet\:next\parse:value}
\def\parse:value{%
\expandafter\ifx \space\:next
\expandafter\def\expandafter\:temp\space{\futurelet
\:next\parse:value}%
\else \if "\:next \let\:temp=\parse:valueX
\else
\ifx \bgroup\:next \let\:temp=\parse:valueG
\else \let\:temp=\parse:valueC \fi
\fi \fi \:temp}
\def\parse:valueC#1,{\parse:valueY{#1},}
\def\parse:valueX"#1"{\parse:valueY{#1}}
\def\parse:valueG#1{\parse:valueY{#1}}
\def\parse:valueY#1{%
\def\:temp{@}\def\:tempa{#1}\ifx \:temp\:tempa \else
\def\:tempb{#1}\ifx \:tempb\empty\else \open:tag\bib:tag{key}%
\:tempb\csname b:\bib:tag\endcsname\hfil\break
\fi
\expandafter\tail:parse
\fi}
\def\tail:parse{\futurelet\:next\tail:parseY}
\def\tail:parseY{\ifx \:com\:next \def\:temp##1{\cont:parse}%
\else \expandafter\ifx \space\:next
\expandafter \def\expandafter\:temp\space{\tail:parse}%
\else \ifx\:next\egroup \let\:temp\empty
\else\def\:temp##1{\tail:parse}\fi
\fi\fi \:temp}
\let\:com=,
\:RestoreCatcodes
\endinput
|