Пример #1
0
def write_text(ordered_list, entries, config, format='latex', out=sys.stdout):
    """
    Write bibliography in a text format

    :param ordered_list: a list of ordered keys. The order is conserved.
    :param entries: list of a list containing all data
    :param config:
    :param format: style format: latex or raw
    :param out: output
    """
    for entry in ordered_list:
        try:
            authors_list_length = config.get_number_authors(
                entries[entry]['ENTRYTYPE'])
        except KeyError:
            print("%%Missing entry in bibtex file(s): %s" % entry,
                  file=sys.stderr)
            continue
        if format == 'latex':
            out.write('\\bibitem{%s}\n' % entry)
        #Get the style from config
        style = config.get_style(entries[entry]['ENTRYTYPE'])
        for field in entries[entry]:
            data = clean_entry(field,
                               entries[entry][field],
                               format,
                               number_authors_name=authors_list_length)
            style = re.sub(field, data, style)
        out.write(style)
        out.write('\n')
Пример #2
0
def write_text(ordered_list, entries, config, format='latex', out=sys.stdout):
    """
    Write bibliography in a text format

    :param ordered_list: a list of ordered keys. The order is conserved.
    :param entries: list of a list containing all data
    :param config:
    :param format: style format: latex or raw
    :param out: output
    """
    for entry in ordered_list:
        try:
            authors_list_length = config.get_number_authors(entries[entry]['ENTRYTYPE'])
        except KeyError:
            print("%%Missing entry in bibtex file(s): %s" % entry, file=sys.stderr)
            continue
        authors_list_length = 0  # FIXME: bugs... somewhere
        if format == 'latex':
            out.write('\\bibitem{%s}\n' % entry)
        #Get the style from config
        style = config.get_style(entries[entry]['ENTRYTYPE'])
        for field in entries[entry]:
            data = clean_entry(field, entries[entry][field], format, number_authors_name=authors_list_length)
            style = re.sub(field, data, style)
        out.write(style)
        out.write('\n')
Пример #3
0
def write_bibtex(citations, entries, out=sys.stdout):
    """
    Write bibliography in a bibtex format

    :param citations: a list of keys
    :param entries: list of a list containing all data
    :param out: output
    """
    citations.sort()

    block = ''
    for entry in citations:
        try:
            entries[entry]
        except KeyError:
            print("%%Missing entry in bibtex file(s): %s" % entry, file=sys.stderr)
            continue

        block += '@' + str(entries[entry]['ENTRYTYPE']) + '{' + entry + ','

        #Sort the list of fields
        fields = []
        for field in entries[entry]:
            if field != 'ENTRYTYPE':
                fields.append(field)
        fields.sort()

        #Add fields content to block
        for field in fields:
            content = clean_entry(field, entries[entry][field], format='bibtex')
            block += "\n\t" + str(field) + ' = {' + content + '},'

        block += '\n}\n\n'
    out.write(block)
Пример #4
0
def write_bibtex(citations, entries, out=sys.stdout):
    """
    Write bibliography in a bibtex format

    :param citations: a list of keys
    :param entries: list of a list containing all data
    :param out: output
    """
    citations.sort()

    block = ''
    for entry in citations:
        try:
            entries[entry]
        except KeyError:
            print("%%Missing entry in bibtex file(s): %s" % entry,
                  file=sys.stderr)
            continue

        block += '@' + str(entries[entry]['ENTRYTYPE']) + '{' + entry + ','

        #Sort the list of fields
        fields = []
        for field in entries[entry]:
            if field != 'ENTRYTYPE':
                fields.append(field)
        fields.sort()

        #Add fields content to block
        for field in fields:
            content = clean_entry(field,
                                  entries[entry][field],
                                  format='bibtex')
            block += "\n\t" + str(field) + ' = {' + content + '},'

        block += '\n}\n\n'
    out.write(block)