]> git.lyx.org Git - lyx.git/blobdiff - lib/scripts/include_bib.py
Amend 212314ada71
[lyx.git] / lib / scripts / include_bib.py
index 1e34d1e394b402ea683c8765c9bf5d83133368b1..7e14d13579472dfe239d88066ab9e11d38e4ea91 100644 (file)
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
 # -*- coding: utf-8 -*-
 
 # file include_bib.py
@@ -9,6 +8,26 @@
 
 # Full author contact details are available in file CREDITS
 
+# This script is intended to include a BibTeX-generated biblography
+# in a LaTeX file, as publishers often want. It can be run manually
+# on an exported LaTeX file, though it needs to be compiled first,
+# so the bbl file will exist.
+#
+# It should also be possible to create a LyX converter to run this
+# automatically. To set it up, create a format "ltxbbl"; make sure to
+# check it as a document format. Then create a LaTeX-->ltxbbl converter,
+# with the command:
+#   python -tt $$s/scripts/include_bib.py $$i $$o
+# and give it the flags:
+#   needaux,nice
+# You'll then have it in the export menu.
+#
+# We do not activate this converter by default, because there are problems
+# when one tries to use multiple bibliographies.
+#
+# Please report any problems on the devel list.
+
+from __future__ import print_function
 import sys, os
 
 class secbib:
@@ -24,7 +43,7 @@ class BibError(Exception):
     return self.msg
 
 
-def InsertBib(fil, out):   
+def InsertBib(fil, out):
   ''' Inserts the contents of the .bbl file instead of the bibliography in a new .tex file '''
 
   texlist = open(fil, 'r').readlines()
@@ -32,7 +51,7 @@ def InsertBib(fil, out):
   # multiple bibliographies
   biblist = []
   stylist = []
-  
+
   for i, line in enumerate(texlist):
     if "\\bibliographystyle" in line:
       stylist.append(i)
@@ -40,8 +59,6 @@ def InsertBib(fil, out):
       biblist.append(i)
     elif "\\begin{btSect}" in line:
       raise BibError("Cannot export sectioned bibliographies")
-  
-  filenew = fil[:-4] + "-bibinc.tex" #The new .tex file
 
   if len(biblist) > 1:
     raise BibError("Cannot export multiple bibliographies.")
@@ -54,13 +71,39 @@ def InsertBib(fil, out):
   bbllist = open(bblfile, 'r').readlines()
   newlist += bbllist
   newlist += texlist[bibpos + 1:]
-    
+
   outfile = open(out, 'w')
   outfile.write("".join(newlist))
   outfile.close()
-  return filenew
-    
+  return out
+
+
+def usage():
+  print (r'''
+Usage: python include_bib.py file.tex [outfile.tex]
+  Includes the contents of file.bbl, which must exist in the
+  same directory as file.tex, in place of the \bibliography
+  command, and creates the new file outfile.tex. If no name
+  for that file is given, we create: file-bbl.tex.
+''')
 
 if __name__ == "__main__":
-  newfile = InsertBib(sys.argv[1], sys.argv[2])
-  print "Wrote " + newfile
+  args = len(sys.argv)
+  if args <= 1 or args > 3:
+    usage()
+    sys.exit(0)
+
+  # we might should make sure this is a tex file....
+  infile = sys.argv[1]
+  if infile[-4:] != ".tex":
+    print ("Error: " + infile + " is not a TeX file")
+    usage()
+    sys.exit(1)
+
+  if args == 3:
+    outfile = sys.argv[2]
+  else:
+    outfile = infile[:-4] + "-bbl.tex"
+
+  newfile = InsertBib(infile, outfile)
+  print ("Wrote " + outfile)