diff --git a/src/formatitko/html_generator.py b/src/formatitko/html_generator.py index bc0535b..1c2ba68 100644 --- a/src/formatitko/html_generator.py +++ b/src/formatitko/html_generator.py @@ -4,7 +4,6 @@ from panflute import TableRow, TableCell, Caption, Doc from panflute import ListContainer, Element from typing import Union, Dict -import re import os import io import warnings @@ -33,12 +32,12 @@ class HTMLGenerator(OutputGenerator): super().generate(e) def escape_special_chars(self, text: str) -> str: - text = re.sub(re.compile(r"&"), "&", text) - text = re.sub(re.compile(r"<"), "<", text) - text = re.sub(re.compile(r">"), "&rt;", text) - text = re.sub(re.compile(r"\""), """, text) - text = re.sub(re.compile(r"'"), "'", text) - # text = re.sub(re.compile(r" '), " ", text) # Don't replace no-break spaces with HTML escapes, because we trust unicode? + text = text.replace("&", "&") + text = text.replace("<", "<") + text = text.replace(">", "&rt;") + text = text.replace("\"", """) + text = text.replace("'", "'") + # text = text.replace(" ", " ") # Don't replace no-break spaces with HTML escapes, because we trust unicode? return text def stag(self, tag: str, attributes: Dict[str,str]={}) -> str: diff --git a/src/formatitko/latex_generator.py b/src/formatitko/latex_generator.py index a6adf85..026ef5e 100644 --- a/src/formatitko/latex_generator.py +++ b/src/formatitko/latex_generator.py @@ -10,8 +10,6 @@ from .context import Group from .output_generator import OutputGenerator from .images import ImageProcessor -import re - class LaTeXGenerator(OutputGenerator): def __init__(self, output_file, imageProcessor: ImageProcessor, *args, **kwargs): self.imageProcessor = imageProcessor @@ -23,17 +21,17 @@ class LaTeXGenerator(OutputGenerator): super().generate(e) def escape_special_chars(self, text: str) -> str: - text = re.sub(re.compile(r"&"), "\\&", text) - text = re.sub(re.compile(r"%"), "\\%", text) - text = re.sub(re.compile(r"\$"), "\\$", text) - text = re.sub(re.compile(r"#"), "\\#", text) - text = re.sub(re.compile(r"_"), "\\_", text) - text = re.sub(re.compile(r"\{"), "\\{", text) - text = re.sub(re.compile(r"\}"), "\\}", text) - text = re.sub(re.compile(r"~"), "\\textasciitilde{}", text) - text = re.sub(re.compile(r"\^"), "\\textasciicircum{}", text) - text = re.sub(re.compile(r"\\"), "\\textbackslash{}", text) - text = re.sub(re.compile(r" "), "~", text) # We use unicode no-break spaces to force nbsp in output + text = text.replace("&", "\\&") + text = text.replace("%", "\\%") + text = text.replace("$", "\\$") + text = text.replace("#", "\\#") + text = text.replace("_", "\\_") + text = text.replace("{", "\\{") + text = text.replace("}", "\\}") + text = text.replace("~", "\\textasciitilde{}") + text = text.replace("^", "\\textasciicircum{}") + text = text.replace("\\", "\\textbackslash{}") + text = text.replace(" ", "~") # We use unicode no-break spaces to force nbsp in output return text def stag(self, tag: str, attributes: Dict[str,str]={}) -> str: