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"
TEMPLATE_TEX_FILE = os.path.join(THIS_DIR, "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"

View File

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

View File

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

View File

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