Make sure that altering the tex template files will change tex_hash

This commit is contained in:
Grant Sanderson
2018-08-11 19:38:59 -07:00
parent abf0f9dc00
commit fe92169970
4 changed files with 19 additions and 14 deletions

View File

@ -137,6 +137,10 @@ for folder in [FILE_DIR, RASTER_IMAGE_DIR, SVG_IMAGE_DIR, ANIMATIONS_DIR, TEX_DI
TEX_TEXT_TO_REPLACE = "YourTextHere" TEX_TEXT_TO_REPLACE = "YourTextHere"
TEMPLATE_TEX_FILE = os.path.join(THIS_DIR, "template.tex") TEMPLATE_TEX_FILE = os.path.join(THIS_DIR, "template.tex")
TEMPLATE_TEXT_FILE = os.path.join(THIS_DIR, "text_template.tex") TEMPLATE_TEXT_FILE = os.path.join(THIS_DIR, "text_template.tex")
with open(TEMPLATE_TEX_FILE, "r") as infile:
TEMPLATE_TEX_FILE_BODY = infile.read()
with open(TEMPLATE_TEXT_FILE, "r") as infile:
TEMPLATE_TEXT_FILE_BODY = infile.read()
FFMPEG_BIN = "ffmpeg" FFMPEG_BIN = "ffmpeg"

View File

@ -19,6 +19,7 @@ class Brace(TexMobject):
"width_multiplier": 2, "width_multiplier": 2,
"max_num_quads": 15, "max_num_quads": 15,
"min_num_quads": 0, "min_num_quads": 0,
"background_stroke_width": 0,
} }
def __init__(self, mobject, direction=DOWN, **kwargs): def __init__(self, mobject, direction=DOWN, **kwargs):

View File

@ -36,7 +36,7 @@ class TexSymbol(VMobjectFromSVGPathstring):
class SingleStringTexMobject(SVGMobject): class SingleStringTexMobject(SVGMobject):
CONFIG = { CONFIG = {
"template_tex_file": TEMPLATE_TEX_FILE, "template_tex_file_body": TEMPLATE_TEX_FILE_BODY,
"stroke_width": 0, "stroke_width": 0,
"fill_opacity": 1.0, "fill_opacity": 1.0,
"background_stroke_width": 5, "background_stroke_width": 5,
@ -54,7 +54,7 @@ class SingleStringTexMobject(SVGMobject):
self.tex_string = tex_string self.tex_string = tex_string
file_name = tex_to_svg_file( file_name = tex_to_svg_file(
self.get_modified_expression(tex_string), self.get_modified_expression(tex_string),
self.template_tex_file self.template_tex_file_body
) )
SVGMobject.__init__(self, file_name=file_name, **kwargs) SVGMobject.__init__(self, file_name=file_name, **kwargs)
if self.height is None: if self.height is None:
@ -251,7 +251,7 @@ class TexMobject(SingleStringTexMobject):
class TextMobject(TexMobject): class TextMobject(TexMobject):
CONFIG = { CONFIG = {
"template_tex_file": TEMPLATE_TEXT_FILE, "template_tex_file_body": TEMPLATE_TEXT_FILE_BODY,
"alignment": "\\centering", "alignment": "\\centering",
} }
@ -261,7 +261,7 @@ class BulletedList(TextMobject):
"buff": MED_LARGE_BUFF, "buff": MED_LARGE_BUFF,
"dot_scale_factor": 2, "dot_scale_factor": 2,
# Have to include because of handle_multiple_args implementation # Have to include because of handle_multiple_args implementation
"template_tex_file": TEMPLATE_TEXT_FILE, "template_tex_file_body": TEMPLATE_TEXT_FILE_BODY,
"alignment": "", "alignment": "",
} }

View File

@ -6,34 +6,34 @@ from constants import TEX_DIR
from constants import TEX_TEXT_TO_REPLACE from constants import TEX_TEXT_TO_REPLACE
def tex_hash(expression, template_tex_file): def tex_hash(expression, template_tex_file_body):
id_str = str(expression + template_tex_file) id_str = str(expression + template_tex_file_body)
hasher = hashlib.sha256() hasher = hashlib.sha256()
hasher.update(id_str.encode()) hasher.update(id_str.encode())
# Truncating at 16 bytes for cleanliness # Truncating at 16 bytes for cleanliness
return hasher.hexdigest()[:16] return hasher.hexdigest()[:16]
def tex_to_svg_file(expression, template_tex_file): def tex_to_svg_file(expression, template_tex_file_body):
tex_file = generate_tex_file(expression, template_tex_file) tex_file = generate_tex_file(expression, template_tex_file_body)
dvi_file = tex_to_dvi(tex_file) dvi_file = tex_to_dvi(tex_file)
return dvi_to_svg(dvi_file) return dvi_to_svg(dvi_file)
def generate_tex_file(expression, template_tex_file): def generate_tex_file(expression, template_tex_file_body):
result = os.path.join( result = os.path.join(
TEX_DIR, TEX_DIR,
tex_hash(expression, template_tex_file) tex_hash(expression, template_tex_file_body)
) + ".tex" ) + ".tex"
if not os.path.exists(result): if not os.path.exists(result):
print("Writing \"%s\" to %s" % ( print("Writing \"%s\" to %s" % (
"".join(expression), result "".join(expression), result
)) ))
with open(template_tex_file, "r") as infile: new_body = template_tex_file_body.replace(
body = infile.read() TEX_TEXT_TO_REPLACE, expression
body = body.replace(TEX_TEXT_TO_REPLACE, expression) )
with open(result, "w") as outfile: with open(result, "w") as outfile:
outfile.write(body) outfile.write(new_body)
return result return result