summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biblatex-contrib/biblatex-morenames/documentation/generate-crossref-graphs.py
blob: 9cf8bd87311cca000ae31d11b04f8fed96be3dc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/python
# -*- coding: utf-8 -*-
# This file generate the inheritance graphs (.dot and .pdf file) from the .bib file examples.
# To do it, its create temporary .tex file, calling a specific .bib file (as https://github.com/plk/biber/issues/110 was rejected).
# It is licensed on GPL 3 licenses.
# https://www.gnu.org/licenses/gpl-3.0.fr.html
# Copyright : Maïeul Rouquette 2016-…

import os


# specific preamble for some file
specific_preamble = {
  "example-bookineditor-BookineditorFromEditor":"\\toggletrue{BookineditorFromEditor}\n"
}

#List all the files on the current directory
directory_files = os.listdir(".")


#Loop on them, and for the .bib file, generate the .tex, .dot and .pdf file
for file_name in directory_files:
    basename, ext = os.path.splitext(file_name)

    if ext != '.bib':#only the .bib file
        continue

    # write the .tex file content
    tex_file_name = basename + ".tex"
    tex_file_content = "\documentclass{article}\n\
    \\usepackage[bibstyle=morenames]{biblatex}\n"
    
    if basename in specific_preamble:
        tex_file_content = tex_file_content + specific_preamble[basename]
        
    tex_file_content = tex_file_content + "\\bibliography{" + file_name + "}\n\
    \\begin{document}\n\
    \\nocite{*}\n\
    \end{document}"
    tex_file_file = open(tex_file_name, "w")
    tex_file_file.write(tex_file_content)
    tex_file_file.close()

    # generate the .bcf, .dot and .pdf file
    os.system("pdflatex " + basename)
    os.system("biber -output-format=dot --dot-include=crossref,field " + basename)
    os.system("dot -Tpdf " + basename + ".dot " + "-o " + basename + ".pdf")

    # delete the temporary files, to avoid distributing it and to have cleaner folder
    for ext in ["aux","bcf","blg","log","run.xml","tex"]:
        os.remove(basename+"."+ext)