[prev in list] [next in list] [prev in thread] [next in thread] 

List:       lyx-users
Subject:    Re: Consolidating the bibliography for article submissions
From:       Manolo_Martí­nez <manolo () austrohungaro ! com>
Date:       2009-07-20 9:32:38
Message-ID: 4A6439B6.6000207 () austrohungaro ! com
[Download RAW message or body]

I have finally written a little Python script that does what I needed. 
It takes a blablablah.lyx file as input, one that calls a .bib file, and 
outputs blablablah-bibinc.tex, a .tex file that has the bibliography in 
the form of /bibitems. This is the version I would submit to journals.

Anyway, just in case anyone else finds it helpful.

Cheers,
Manolo

Manolo Martí­nez escribió:
>> not sure, I understood your problem. If you don't want to share the 
>> whole bib-file all.bib, but only the references cited in cited.bib, 
>> and your document is doc.lyx you could e.g. use JabRef as a reference 
>> manager and say on a command line
>> jabref --aux doc.aux,cited.bib all.bib
>> after having exported your doc.lyx to doc.tex by using file>export>latex
>> You would share cited.bib with your colleagues
>
> This is already an improvement from what I was doing, thank you. It's 
> not a matter of sharing more or less files. Rather, as you surely 
> know, many scientific journal have pretty strict requirements on the 
> formatting of bibliography. So you come up with a .bst that suits your 
> needs but, then, if you are to submit a .tex paper, you just cannot 
> send it using your carefully arranged format. Or else you need to send 
> the .bst as well, and trust the LaTeX competence of your correspondent.
>
> That's why I was saying that a way to resolve the references into the 
> .tex (or .lyx) document as already formatted /bibitems would be nice.
>
> Anyway, thanks for your help. Cheers,
> Manolo
>
>
>


["IncludeBib.py" (text/x-python)]

import sys, os

def LyxtoTeX(n):    #Exports .lyx files to .tex
    argument = "lyx -e latex " + n
    os.system(argument)

def CreateBbl(n):   #Creates .aux and .bbl from .tex
    argument = "latex " + n[:-4]    #n[:-4] is the name of the file without extension
    os.system(argument)
    argument = "bibtex " + n[:-4]
    os.system(argument)


def InsertBib(n):   #Inserts the contents of the .bbl file instead of the \
bibliography in a new .tex file  fileold = n[:-4] + ".tex" #The .tex file we have \
created  tex = open(fileold, 'r')   
    texlist = tex.readlines()
    for i,line in enumerate(texlist):
        if "\\bibliography" in line:
            break
        else:
            beginning = texlist[0:(i+1)] #This will be the part of the file before \
the bibliography  end = texlist[(len(beginning)+2):] #Ditto for the part after the \
bibliography  bblfile = n[:-4] + ".bbl" #the name of the .bbl file we have created
    bbl = open(bblfile, 'r')
    bbllist = bbl.readlines()
    newtexlist = beginning + bbllist + end
    filenew = n[:-4] + "-bibinc.tex" #The new .tex file
    endfile = open (filenew, 'w')
    for line in newtexlist:
        endfile.write(line)

def CleanFiles(n): #Cleans files created in the process
    extensions = ['aux', 'bbl', 'blg', 'dvi', 'log', 'spl']
    files = [f for f in os.listdir(os.getcwd()) if os.path.isfile(f)]   #puts every \
filename in the current directory in a list  filesinteresting = [f for f in files if \
n[:-4] in f] #Every file with the same name as the original file  for f in \
                filesinteresting:
        overall = sum([(f[-3:]==ext) for ext in extensions]) #Is 1 if f has any of \
the extensions, 0 otherwise  if overall:
            os.remove(f)
    

if __name__ == "__main__":
    inputfile = str(sys.argv[1])
    inputfile = inputfile.replace(' ', '\ ') #For a good parsing of spaces in file \
names  LyxtoTeX(inputfile)
    CreateBbl(inputfile)
    InsertBib(sys.argv[1])
    CleanFiles(sys.argv[1])



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic