You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.8 KiB

import os
import subprocess
DO_NOT_MODIFY_PATTERN = '%DO_NOT_MODIFY{INFO}'
HEADER_PATTERN = '%HEADER{INFO}'
def format_for_latex(text):
text = text.replace('_', '\_')
return text
from .autofill_tools import replace_pattern
def extract_note(text):
text = replace_pattern(text, DO_NOT_MODIFY_PATTERN, 'INFO')
text = text.replace(DO_NOT_MODIFY_PATTERN, '')
text = replace_pattern(text, HEADER_PATTERN, 'INFO')
text = text.replace(HEADER_PATTERN, '')
return remove_empty_lines(text)
def remove_empty_lines(text):
cleaned_text = ''
for line in text.split('\n'):
if line.strip():
cleaned_text += line + '\n'
return cleaned_text[:-1]
def full_compile(full_path_to_file, verbose=False):
FNULL = None
if not verbose:
FNULL = open(os.devnull, 'w')
filename, extension = os.path.splitext(full_path_to_file)
run_pdflatex(filename, stdout=FNULL)
run_bibtex(filename, stdout=FNULL)
run_makeglossaries(filename, stdout=FNULL)
run_pdflatex(filename, stdout=FNULL, nb_time=3)
def run_command(command, full_path_to_file, stdout=None, nb_time=1):
origWD = os.getcwd() # remember our original working directory
folder, filename = os.path.split(full_path_to_file)
os.chdir(folder)
for _ in xrange(nb_time):
cmd = command.split()
cmd.append(filename)
subprocess.call(cmd, stdout=stdout)
os.chdir(origWD) # get back to our original working directory
def run_pdflatex(full_path_to_file, stdout=None, nb_time=1):
run_command('pdflatex', full_path_to_file, stdout, nb_time)
def run_bibtex(full_path_to_file, stdout=None, nb_time=1):
run_command('bibtex', full_path_to_file, stdout, nb_time)
def run_makeglossaries(full_path_to_file, stdout=None, nb_time=1):
run_command('makeglossaries', full_path_to_file, stdout, nb_time)