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: