From f33ed570f56917b3c75870fa764c8bf7cf66c9b0 Mon Sep 17 00:00:00 2001 From: icreiuheciijc Date: Wed, 26 Sep 2018 21:09:04 +0800 Subject: [PATCH] Add support for ctex --- constants.py | 4 +++- ctex_template.tex | 27 +++++++++++++++++++++++++++ mobject/svg/svg_mobject.py | 1 + utils/tex_file_writing.py | 17 ++++++++++++++--- 4 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 ctex_template.tex diff --git a/constants.py b/constants.py index e741b75f..af3fc0ef 100644 --- a/constants.py +++ b/constants.py @@ -134,8 +134,10 @@ for folder in [FILE_DIR, RASTER_IMAGE_DIR, SVG_IMAGE_DIR, ANIMATIONS_DIR, TEX_DI if not os.path.exists(folder): os.makedirs(folder) +TEX_USE_CTEX = False TEX_TEXT_TO_REPLACE = "YourTextHere" -TEMPLATE_TEX_FILE = os.path.join(THIS_DIR, "tex_template.tex") +TEMPLATE_TEX_FILE = os.path.join(THIS_DIR, "tex_template.tex" if not TEX_USE_CTEX + else "ctex_template.tex") with open(TEMPLATE_TEX_FILE, "r") as infile: TEMPLATE_TEXT_FILE_BODY = infile.read() TEMPLATE_TEX_FILE_BODY = TEMPLATE_TEXT_FILE_BODY.replace( diff --git a/ctex_template.tex b/ctex_template.tex new file mode 100644 index 00000000..25f3001c --- /dev/null +++ b/ctex_template.tex @@ -0,0 +1,27 @@ +\documentclass[preview]{standalone} + +\usepackage[english]{babel} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{dsfont} +\usepackage{setspace} +\usepackage{tipa} +\usepackage{relsize} +\usepackage{textcomp} +\usepackage{mathrsfs} +\usepackage{calligra} +\usepackage{wasysym} +\usepackage{ragged2e} +\usepackage{physics} +\usepackage{xcolor} +\usepackage{textcomp} +\usepackage{microtype} +%\DisableLigatures{encoding = *, family = * } +\usepackage[UTF8]{ctex} +\linespread{1} + +\begin{document} + +YourTextHere + +\end{document} \ No newline at end of file diff --git a/mobject/svg/svg_mobject.py b/mobject/svg/svg_mobject.py index ba2d9b19..23e2e050 100644 --- a/mobject/svg/svg_mobject.py +++ b/mobject/svg/svg_mobject.py @@ -53,6 +53,7 @@ class SVGMobject(VMobject): possible_paths = [ os.path.join(SVG_IMAGE_DIR, self.file_name), os.path.join(SVG_IMAGE_DIR, self.file_name + ".svg"), + os.path.join(SVG_IMAGE_DIR, self.file_name + ".xdv"), self.file_name, ] for path in possible_paths: diff --git a/utils/tex_file_writing.py b/utils/tex_file_writing.py index 0d18ffec..81a9d42d 100644 --- a/utils/tex_file_writing.py +++ b/utils/tex_file_writing.py @@ -4,6 +4,7 @@ import hashlib from constants import TEX_DIR from constants import TEX_TEXT_TO_REPLACE +from constants import TEX_USE_CTEX def tex_hash(expression, template_tex_file_body): @@ -44,7 +45,7 @@ def get_null(): def tex_to_dvi(tex_file): - result = tex_file.replace(".tex", ".dvi") + result = tex_file.replace(".tex", ".dvi" if not TEX_USE_CTEX else ".xdv") if not os.path.exists(result): commands = [ "latex", @@ -54,12 +55,22 @@ def tex_to_dvi(tex_file): tex_file, ">", get_null() + ] if not TEX_USE_CTEX else [ + "xelatex", + "-no-pdf", + "-interaction=batchmode", + "-halt-on-error", + "-output-directory=" + TEX_DIR, + tex_file, + ">", + get_null() ] exit_code = os.system(" ".join(commands)) if exit_code != 0: log_file = tex_file.replace(".tex", ".log") raise Exception( - "Latex error converting to dvi. " + ("Latex error converting to dvi. " if not TEX_USE_CTEX + else "Xelatex error converting to xdv. ") + "See log output above or the log file: %s" % log_file) return result @@ -71,7 +82,7 @@ def dvi_to_svg(dvi_file, regen_if_exists=False): Returns a list of PIL Image objects for these images sorted as they where in the dvi """ - result = dvi_file.replace(".dvi", ".svg") + result = dvi_file.replace(".dvi" if not TEX_USE_CTEX else ".xdv", ".svg") if not os.path.exists(result): commands = [ "dvisvgm",