forked from ge-ne/bibtool
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ToDo
177 lines (127 loc) · 5.67 KB
/
ToDo
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
##=============================================================================
##
## This file is part of BibTool.
## It is distributed under the GNU General Public License.
## See the file COPYING for details.
##
## (c) 1996-2016 Gerd Neugebauer
##
## Net: [email protected]
##
##*****************************************************************************
This file contains ideas for improvements.
Most of the items are mere key words and may not be meaningful for
others. I try to keep the items in a order form highest to lowest
priority. However, I change the order from time to time and hopefully
items will disappear at some time.
General ideas:
* Use Unicode UTF8 as internal character set. This goes beyond
BibTeX and brings in a new quality.
This requires that reading and writing are aware of the
character encoding. Additionally the regex processing needs to
be replaced by something which is Unicode-aware.
ICU seems to be the way to go. But it appears to be a pretty
large beast.
* Make a C library of routines for manipulating BibTeX files.
(partially done. The main emphasis went into the documentation.
Additional cleaning needed)
- Use the lib and provide a interface to various programming
languages. The first candidate would be C. Other candidates
are C++, Tcl, Perl, Guile.
- Use the lib and provide an SQL interface (see below).
- Use the lib to write a better BibTeX.
* Add a SQL like extraction language (partially exists).
Maybe this is the time to completely redesign the resource
language. I think I will make a major revision or a separate
program/library for this.
Special ideas:
* Provide a better installation routine. Especially for BibTcl a
wish script might be the best solution since wish has to be
installed before BibTcl can be made.
* The different keys: Sortkey/OldKey deserve a clearer handling.
Maybe some bugs are hidden here.
* Maybe an index/several indices should be used to speed up
access to records. Maybe a real database engine should be used for
the underlying mechanism.
* Support for the extended key notation file::key. This is said
to be used in BibTeX1.0.
* Support the special fields @ALIAS and @MODIFY as described by
Oren Patashnik in TUGboat. (partially done) Each function has
to be checked to decide if a refinement of the specification
is necessary
* Implement a garbage collector for the symbol table to avoid
memory leaks when used from C/C++/Tcl/Perl/...
* An escape character in strings might be missing.
* Integrate field rewriting into the key generation algorithm.
Allow arbitrary fields to be constructed like keys.
Maybe this is a step towards a general manipulation language.
I should keep this in mind for major revision 3.
(The reverse is done. Key formats are evaluated when rewriting)
* General formatting language (Maybe a replacement for BibTeX)
Other applications: extract all keys, pretty-print entries in
pure ASCII (HTML), etc.
The main problem is to make a decision for the scripting language.
I think I should use something existing and not roll a new one.
(Tcl, Perl, or Guile are likely candidates)
* Use a tree representation in field rewriting instead of parsing and
evaluating the format each time (speed issue).
* Do a better job when sorting. Especially for international
bibliographies the sorting may not be adequate. Learn something from
xindy?
* Analyze bst files to find record types and entries used.
(partially exists but is not integrated yet)
* Provide a specification for the statistics function. Maybe SQL
serves for this purpose.
* Use the kpathsea library to find files.
It has been done for Unix-like operating systems. For others it's
still missing.
* Selection of items according to regexp match on fields.
This has to be generalized to allow full power of a
first order language.
* Make the program 16-bit clean. This means UniCode!
* Eliminate compiled in defaults completely.
Use a library directory to load initializations.
* Integrate add/delete.field into the rewriting mechanism.
* Automatic string detection.
The reverse of string expansion. Replace common values by new strings.
This can partially be done with field rewriting!
* Respect crossref at selection
* Support \cite in fields.
* Documentation: improve tutorial part. (Maybe a book?)
* Documentation in texinfo format?
* Documentation in HTML format?
* UN*X man pages?
*** Write a graphical front end for BibTool
- Maybe not a simple task. BibTool is already too powerful.
(first experiments are not very promising)
*** Write a replacement for BibTeX :-)
Maybe I will wait until BibTeX 1.0 is out.
- Better styles
in a readable programming language.
This is a major problem. Which language should I use?
I am working towards making a library. Thus it should be easy to
integrate BibTool into any language.
- Object oriented approach.
e.g. for proceedings containing articles.
@proceeding{abc,
editor = "...",
booktitle = "...",
title = "...",
@inprocedings{1,
author = "...",
title = "..."
}
}
- Drop limitations. E.g.
- size of a field.
- order of crossreferenced records
- Support multi-language bibliographies.
- Backward compatibility: It should be possible to use the new program
as a replacement for the existing BibTeX without modification of the
BibTeX database.
The styles should be usable or an automatic translation into a new
format should be provided.
If you have read until here and you want to take one of the tasks then
contact me.
Gerd Neugebauer