skdutta@cs.tamu.edu (Saumen K Dutta) (08/11/90)
I am writing a program which works like addbib (in refer) to
insert bibliography for bibtex. I am writing it in the
shell language of UNIX. I am interested to know if there is
any program already available to do the same. It should be
( preferably) written in C, help the user to identify various
types of documents (e.g. manual, inproceedings etc) and also
optional and required fields. Though such a program may look
trivial as bibtex does not need coded field name ( as refer)
but it save lots of typing and errors especially when inserting
long bibliography list.
If anybody is interested to use or comment on my program I will
gladly e-mail it to him/her.
Please send e-mail. If there is interest I will summarize.
Thanks
S.K. Dutta
--
_ ||Internet: skdutta@cssun.tamu.edu
( /_ _ / --/-/- _ ||Bitnet : skd8107@tamvenus.bitnet
__)_/(_____(_/_(_/_(_(__(_/_______ ||Uucp : uunet!cssun.tamu.edu!skdutta
.. ||Yellnet: (409) 846-8803kas@cs.aber.ac.uk (Kevin Sharp) (08/17/90)
I use set of simple emacs functions to do this. I believe there are
other similar ones around.
Essentially all they do is give you a proforma for the various bibtex
entry types, and provide a facility to fill them in interactively.
It has the added facility of inserting a blank entry for a manditory
field if a null reply is entered in response to the prompt, but
leaving that field out if the field is not required.
--
--
Kevin Sharp, UUCP : {WALES}!ukc!aber-cs!kas
AI and Robotics Research Group, JANET: kas@uk.ac.aber.cs
Department of Computer Science, PHONE: +44 970 622450
University College of Wales, Aberystwyth, Dyfed, UK. SY23 3BZskdutta@cs.tamu.edu (Saumen K Dutta) (08/18/90)
Hi !
Sometime back I posted an article on this net <7342@helios.TAMU.EDU>
-> I am writing a program which works like addbib (in refer) to
-> insert bibliography for bibtex. I am writing it in the
-> shell language of UNIX. I am interested to know if there is
-> any program already available to do the same.
I got the following responses from various people:
-------------------------------------------------------------
From John Eaton (jwe@emx.utexas.edu)
About a year ago I picked up a set of programs to do this. They are
written in C and include a library of routines meant to read, write,
and search BibTeX database files.
Here's part of the man page:
NAME
bibtools
bibc - Create BibTeX and scribe style bibliographies
bibv - Verify a series of BibTeX style bibliographies for
citation conflicts
shbib - Display one or more records from the specified bib files
rmbib - Delete one or more records from the specified bib files
DESCRIPTION
bibc (mnemonic for BIB-Creator) is a prompt based tool for
creating bibliographies in the BibTeX format. bibc first
queries the user for the kind of record they wish to create.
bibc understands the various fields required for the kind of
record specified, and will query the user for the values for
each of these fields. bibc can distinguish between required
and optional fields, and will, by default insist once on the
user specifying the required fields.
AUTHOR
Kannan Varadhan - kannan@osc.edu
--------------------------------------------------------------------
From Lucien Van Elsen (lwvanels@mit.edu)
There's already a set of programs that do that already, with some added
functionality. They were posted to comp.sources.misc a while back:
comp.sources.misc:bibtools v09i046: bibtools: tools for BibTeX
They're written in C, and available for anonymous ftp from uunet.uu.net
and other archive sites.
---------------------------------------------------------------------
From B. A. Lotto (lotto@bosco.berkeley.edu)
There is a bibtex mode for emacs which I use and like. It does all the
things you seem to want such an object to do, but it requires emacs.
------------------------------------------------------------------
From Sanjiv K. Bhatia (sanjiv@fergvax.unl.edu)
Here is a shellscript. It uses another file called bibtypes that contains the
definitions of fields. bibtypes is appended after the first file.
TOO BIG TO INCLUDE HERE. THOSE WHO ARE INTERESTED WRITE TO SANJIV AT THE
ADDRESS GIVEN ABOVE.
IT WORKS, IT DOES NOT LET YOU TO EDIT THE DATABASE WITHIN THE PROGRAM AND
DOES NOT CHECK FOR DUPLICATE KEY REFERENCES.
-----------------------------------------------------------------------
FEW MORE REPLIES ........ BUT THEY DID NOT SAY ANYTHING DIFFERENT.
---------------------------------------------------------------------
Finally I rewrote my shell script and added few more functions to
it. I think it is complete now . If you like to give it a try please copy
it from my next posting.
--
_ ||Internet: skdutta@cssun.tamu.edu
( /_ _ / --/-/- _ ||Bitnet : skd8107@tamvenus.bitnet
__)_/(_____(_/_(_/_(_(__(_/_______ ||Uucp : uunet!cssun.tamu.edu!skdutta
.. ||Yellnet: (409) 846-8803skdutta@cs.tamu.edu (Saumen K Dutta) (08/18/90)
HI!
I have written this program to insert bibliography in bibtex. Please
try it out yourself and let me know what are the shortcomings.
I could write it in C but I thought that writing it in this
way is inexpensive. Also the source is not compiled and can be
changed very easily to suit individual requirements.
Note: Before you execute it, copy it in a file and make the file executable.
Be sure that you are working with the BSD version of UNIX. If you
are working with system V unix you need to change the "echo"
statements in the shell script. If you have any problems write to me.
------------> CUT HERE <-----------------------
#! /bin/sh
#
# Written by :
#
# Saumen K. Dutta
# Graduate student
# Computer Science Department
# Texas A & M university
# Dated: Aug. 17 1990
#
# contact me at <skdutta@cssun.tamu.edu> for any problems,
# suggestions and criticism.
#
# BUGS :
#
# 1. Works only with the BSD version of unix. The command echo creates
# the problem. It can be circumvented by redefining the echo command
# according to your system.
#
read_Val1() { echo -n $1"(R) => " ; read $1;
x='eval echo $`echo $1`'
while [ -z "`eval $x`" ]
do
echo $1 cannot be blank , Type again
echo -n $1"(R) => " ; read $1;
done
}
read_Val() { echo -n $1"(O) => " ; read $1; }
write_Val1() { x='eval echo $`echo $1`';
echo $1 = \"`eval $x`\" ,;}
write_Val() { x='eval echo $`echo $1`';
if [ "`eval $x`" ]
then
echo $1 = \"`eval $x`\" ,
fi }
write_key() {
if [ "$key" ]
then
echo " " $key ,
else
echo
fi }
multi_rd1() {
for i in $1
do
read_Val1 $i
done }
multi_rd() {
for i in $1
do
read_Val $i
done }
multi_wr1() {
for i in $1
do
write_Val1 $i
done }
multi_wr() {
for i in $1
do
write_Val $i
done }
confirm() { echo ; echo -n "Are you Sure (y/n):" ; read yes_no;
if [ -z "$yes_no" ]
then
yes_no="N"
else
if [ "$yes_no" = "y" ]||[ "$yes_no" = "yes" ]|| \
[ "$yes_no" = "Y" ]
then
yes_no="Y"
fi
fi }
Entry_bib () {
echo
echo Following are the various codes:
echo
echo "" 1. article
echo "" 2. book
echo "" 3. booklet
echo "" 4. inproceedings / conference
echo "" 5. inbook
echo "" 6. incollection
echo "" 7. manual
echo "" 8. masterthesis
echo "" 9. misc
echo 10. phdthesis
echo 11. proceedings
echo 12. techreport
echo 13. unpublished
echo "" H. HELP
echo "" E. Examine or Edit the database
echo "" C. Search for key clash in the database
echo
echo -n "TYPE the code: "
read type
echo
case $type in
1) read_Val key ;
multi_rd1 "author title journal year" ;
multi_rd "volume number pages month note" ;
confirm ;
if [ "$yes_no" = "Y" ]
then
echo >> $1
echo -n @article { >> $1 ; write_key >> $1 ;
multi_wr1 "author title journal year" >> $1 ;
multi_wr "volume number pages month note" >> $1 ;
echo } >> $1 ;
fi
;;
2) read_Val key ;
multi_rd1 "author title publisher year" ;
multi_rd "volume series address edition month note"
confirm ;
if [ "$yes_no" = "Y" ]
then
echo >> $1
echo -n @book { >> $1 ; write_key >> $1 ;
multi_wr1 "author title publisher year" >> $1 ;
multi_wr "volume series address edition month note" >> $1
echo } >> $1 ;
fi
;;
3) read_Val key ;
read_Val1 title ;
multi_rd "author howpublished address month year note" ;
confirm ;
if [ "$yes_no" = "Y" ]
then
echo >> $1
echo -n @booklet { >> $1 ; write_key >> $1 ;
write_Val1 title >> $1 ;
multi_wr "author howpublished address" >> $1
multi_wr "month year note" >> $1 ;
echo } >> $1 ;
fi
;;
4) read_Val key ;
multi_rd1 "author title booktitle year"
multi_rd "editor pages organisation publisher address"
multi_rd "month note"
confirm ;
if [ "$yes_no" = "Y" ]
then
echo >> $1
echo -n @inproceedings { >> $1 ; write_key >> $1 ;
multi_wr1 "author title booktitle year" >> $1
multi_wr "editor pages organisation publisher" >> $1
multi_wr "address month note" >> $1
echo } >> $1 ;
fi
;;
5) read_Val key ;
multi_rd1 "author title"
echo -n "chapter(O) = " ; read chapter;
echo -n "pages(O) = " ; read pages;
while [ -z "$chapter" ] && [ -z "$pages" ]
do
echo Chapter and Pages both cannot be blank, Type again
echo -n "chapter(O) = " ; read chapter;
echo -n "pages(O) = " ; read pages;
done
multi_rd1 "publisher year"
multi_rd "volume series address edition month note"
confirm ;
if [ "$yes_no" = "Y" ]
then
echo >> $1
echo -n @inbook { >> $1 ; write_key >> $1 ;
multi_wr1 "author title" >> $1
if [ "$chapter" ]
then
echo chapter = \"$chapter\", >> $1
fi
if [ "$pages" ]
then
echo pages = \"$pages\", >> $1
fi
multi_wr1 "publisher year" >> $1
multi_wr "volume series address edition month note" >> $1
echo } >> $1 ;
fi
;;
6) read_Val key ;
multi_rd1 "author title booktitle publisher year"
multi_rd "chapter pages address month note"
confirm ;
if [ "$yes_no" = "Y" ]
then
echo >> $1
echo -n @incollection { >> $1 ; write_key >> $1 ;
multi_wr1 "author title booktitle publisher year" >> $1
multi_wr "chapter pages address month note" >> $1
echo } >> $1 ;
fi
;;
7) read_Val key ;
read_Val1 title ;
multi_rd "author organization address edition month"
multi_rd "year note"
confirm ;
if [ "$yes_no" = "Y" ]
then
echo >> $1
echo -n @manual { >> $1 ; write_key >> $1 ;
write_Val1 title >> $1 ;
multi_wr "author organization address edition month" >> $1
multi_wr "year note" >> $1
echo } >> $1 ;
fi
;;
8) read_Val key ;
multi_rd1 "author title school year"
multi_rd "address month note"
confirm ;
if [ "$yes_no" = "Y" ]
then
echo >> $1
echo -n @masterthesis { >> $1 ; write_key >> $1 ;
multi_wr1 "author title school year" >> $1
multi_wr "address month note" >> $1
echo } >> $1 ;
fi
;;
9) read_Val key ;
multi_rd "author title howpublished month year note"
confirm ;
if [ "$yes_no" = "Y" ]
then
echo >> $1
echo -n @misc { >> $1 ; write_key >> $1 ;
multi_wr "author title howpublished month year note" >> $1
echo } >> $1 ;
fi
;;
10) read_Val key ;
multi_rd1 "author title school year"
multi_rd "address month note"
confirm ;
if [ "$yes_no" = "Y" ]
then
echo >> $1
echo -n @phdthesis { >> $1 ; write_key >> $1 ;
multi_wr1 "author title school year" >> $1
multi_wr "address month note" >> $1
echo } >> $1 ;
fi
;;
11) read_Val key ;
multi_rd1 "title year"
multi_rd "editor publisher organization address"
multi_rd "month note"
confirm ;
if [ "$yes_no" = "Y" ]
then
echo >> $1
echo -n @proceedings { >> $1 ; write_key >> $1 ;
multi_wr1 "title year" >> $1
multi_wr "editor publisher organization address" >> $1
multi_wr "month note" >> $1
echo } >> $1 ;
fi
;;
12) read_Val key ;
multi_rd1 "author title institution year"
multi_rd "type number address month note"
confirm ;
if [ "$yes_no" = "Y" ]
then
echo >> $1
echo -n @techreport { >> $1 ; write_key >> $1 ;
multi_wr1 "author title institution year" >> $1
multi_wr "type number address month note" >> $1
echo } >> $1 ;
fi
;;
13) read_Val key ;
multi_rd1 "author title note"
multi_rd "month year"
confirm ;
if [ "$yes_no" = "Y" ]
then
echo >> $1
echo -n @unpublished { >> $1 ; write_key >> $1 ;
multi_wr1 "author title note" >> $1
multi_wr "month year" >> $1
echo } >> $1 ;
fi
;;
h|H) cat << EOF | more
--------------------------------------------------------
To skip any entry press <Enter>. Fields are marked as (R)
or (O) specifying Required or Optional. Double quotes
need not be put, they are automatically inserted by the
software. To insert more than one line for a particular
field, end the line with a backslash.
Following are the explanations of various entry types:
article : An article from a journal or magazine.
book : A book with an explicit publisher.
booklet : A work that is printed and bound but without
a named publisher or sponsoring institution.
conference : The same as inproceedings.
inbook : A part of book, which may be a chapter and/or
a range of pages.
incollection : A part of book with it's own title.
inproceedings : An article in a conference proceedings.
manual : Technical documentation.
masterthesis : A Master's thesis.
misc : Use this type when nothing else fits.
phdthesis : A Ph.D thesis.
proceedings : The proceedings of a conference.
techreport: A report published by a school or other
institution, usually numbered within a series.
unpublished : A document with an author and title but not
formally published.
---------------------------------------------------------
EOF
;;
e|E) vi $1
;;
c|C) echo ; echo "Takes a while....... Hang on"
sed -n '/^[ ]*@/p' $1 |
awk 'BEGIN {FS="," ; RS="{"}
{ print $1 }' |
awk '{if ( $1 != "" ) print $1}'|
sort |
uniq -d |
more
;;
esac
}
ext_fl="N"
if [ -z "$1" ]
then
echo "You must specify a bibliography file (database)."
echo Usage : $0 filename
else
while [ "$ext_fl" != "Y" ]
do
Entry_bib $1
echo
echo -n "Do you want to exit (y/n) : " ; read ext_fl;
if [ -z "$ext_fl" ]
then
ext_fl="N"
fi
if [ "$ext_fl" = "y" ]||[ "$ext_fl" = "yes" ]|| \
[ "$ext_fl" = "Y" ]
then
ext_fl="Y"
fi
done
fi
------------> CUT HERE <-----------------------
--
_ ||Internet: skdutta@cssun.tamu.edu
( /_ _ / --/-/- _ ||Bitnet : skd8107@tamvenus.bitnet
__)_/(_____(_/_(_/_(_(__(_/_______ ||Uucp : uunet!cssun.tamu.edu!skdutta
.. ||Yellnet: (409) 846-8803hf@marvin.e17.Physik.TU-Muenchen.DE (Hannes Faestermann) (08/20/90)
I use the bbitex-mode in emacs, provided by loading the file bibtex.el. I don't know if this is available with the normal emacs distribution. There maybe another file around named bibtex-mode.el, but I like the first one better. You just type in C-c <letter> and in your bib-file appears a mask. You only have to fill in the information. This is a really nice thing to work with. Hannes Hannes Faestermann | Internet: Physik-Department E17 | H.Faestermann@marvin.e17.physik.tu-muenchen.de TU Muenchen, | or: 8046 Garching | hf@marvin[.e17.physik.tu-muenchen.de] West Germany | BitNET : hf@dgablg5p -- "Sometimes I think the surest sign that intelligent life exists elsewhere in the universe is that none of it has tried to contact us." Weirdos from another planet, Watterson Hannes Faestermann | Internet: Physik-Department E17 | H.Faestermann@marvin.e17.physik.tu-muenchen.de TU Muenchen, | or: 8046 Garching | hf@marvin[.e17.physik.tu-muenchen.de]
kaul@icarus.eng.ohio-state.edu (Rich Kaul) (08/22/90)
In article <4051@tuminfo1.lan.informatik.tu-muenchen.dbp.de> hf@marvin.e17.Physik.TU-Muenchen.DE (Hannes Faestermann) writes:
I use the bbitex-mode in emacs, provided by loading the file
bibtex.el. I don't know if this is available with the normal emacs
distribution. There maybe another file around named bibtex-mode.el,
but I like the first one better. You just type in
C-c <letter>
and in your bib-file appears a mask. You only have to fill in the
information.
It sounds like you have the VorTeX macro set installed since the
bibtex.el stuff isn't part of standard GNU emacs. I do like them --
they do a good job of reducing the typing you have to do. The LaTeX
and TeX modes are also quite good, and they are well documented. The
macros are available for anonymous ftp on a.cs.uiuc.edu in
pub/TeX/vortex-macros.tar.Z.
-rich
--
Rich Kaul | It wouldn't be research if we
kaul@icarus.eng.ohio-state.edu | knew what we were doing.ralph@laas.fr (Ralph P. Sobek) (08/29/90)
In article <KAUL.90Aug21134748@icarus.eng.ohio-state.edu> kaul@icarus.eng.ohio-state.edu (Rich Kaul) erroneously writes: | It sounds like you have the VorTeX macro set installed since the | bibtex.el stuff isn't part of standard GNU emacs. I believe that bibtex.el *is* part of the GNU Emacs distribution. At least, it looks that way in the directory in which it resides. ;;; Simple BibTeX mode for GNU Emacs ;;; Bengt Martensson 87-06-28 ;;; changes by Marc Shapiro shapiro@inria.inria.fr 15-oct-1986 ;;; (align long lines nicely; C-c C-o checks for the "OPT" string; ;;; TAB goes to the end of the string; use lower case; use ;;; run-hooks) -- Ralph P. Sobek Disclaimer: The above ruminations are my own. ralph@laas.fr Addresses are ordered by importance. ralph@laas.uucp, or ...!uunet!laas!ralph If all else fails, try: sobek@eclair.Berkeley.EDU =============================================================================== Reliable software should kill people reliably! -Andy Mickel, Pascal News #13,78
kaul@icarus.eng.ohio-state.edu (Rich Kaul) (08/30/90)
In article <RALPH.90Aug29161939@orion.laas.fr> ralph@laas.fr (Ralph P. Sobek) writes:
I believe that bibtex.el *is* part of the GNU Emacs distribution. At
least, it looks that way in the directory in which it resides.
Mea culpa. I rechecked the distribution and it turns out that I
installed the vortex macros over the old bibtex ones. *sigh* Time to
remove my foot from my mouth.
I still prefer the VorTeX bibtex-mode, however. It allows you to do
easy drafts, make abbrevs anywhere in the file and even automates the
previewing of the file from within the bibtex window ;-)
-rich
--
Rich Kaul | It wouldn't be research if we
kaul@icarus.eng.ohio-state.edu | knew what we were doing.