Listcitations.py
Jump to navigation
Jump to search
Copy the following text into a file called listcitations.py with your favourite text editor
#! /usr/bin/python ## list citations script version 0.1 ## Copyright 2007 Tom Brown ## This program is free software; you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation; either version 3 of the ## License, or (at your option) any later version. ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## You should have received a copy of the GNU General Public License ## along with this program. If not, see <http://www.gnu.org/licenses/>. ## See http://www.stringwiki.org/wiki/SPIRES_script for more usage ## instructions '''list citations script Usage: python listcitations.py TeX_file_name.tex [ -hbiv ] [ --help ] TeX_file_name must contain citations as standard arXiv references, e.g. hep-th/9711200, 0705.0303, Maldacena:1997re or SPIRES journal references, e.g. CMPHA,43,199 Options: -h, --help displays this help message -b displays the BiBTeX entry -i displays the bibitem entry -v verbose mode ''' __version__ = "0.1" __author__ = "Tom Brown" __copyright__ = "Copyright 2007 Tom Brown, GNU GPL 3" import os, sys, spires, getopt, re bibtexOpt = 0 bibitemOpt = 0 verboseOpt = 0 try: options, arguments = getopt.gnu_getopt(sys.argv[1:], 'hbiv', ['help']) except getopt.error: print 'error: you tried to use an unknown option or the argument for an option that requires it was missing; try \'listcitations.py -h\' for more information' sys.exit(0) for o,a in options: if o in ('-h','--help'): print __doc__ sys.exit(0) elif o == '-b': bibtexOpt = 1 elif o == '-i': bibitemOpt = 1 elif o == '-v': verboseOpt = 1 if len(arguments) != 1: print 'you didn\'t specify a TeX file; try \'listcitations.py -h\' for more information' sys.exit(0) else: TeXfilename = os.path.expanduser(arguments[0]) if len(options) == 0: bibitemOpt = 1 print TeXfilename citations = spires.listCitations(TeXfilename) for citation in citations: if verboseOpt: print citation type,ref = spires.findRefType(citation) if verboseOpt: print type, ref if bibtexOpt: BiBTeX = spires.getBiBTeX(ref,type) BiBTeX = re.sub('Article{[^,]*,','Article{' + citation + ',',BiBTeX) print BiBTeX if bibitemOpt: bibitem = spires.getBibitem(ref,type) bibitem = re.sub('bibitem{[^}]*}','bibitem{' + citation + '}',bibitem) print bibitem