Fix escape do TeXu

This commit is contained in:
Jiří Kalvoda 2024-03-02 19:06:03 +01:00
parent bf46105db8
commit 7230d87f6b

View file

@ -27,19 +27,25 @@ class UCWTexGenerator(OutputGenerator):
super().__init__(output_file, *args, **kwargs) super().__init__(output_file, *args, **kwargs)
def escape_special_chars(self, text: str) -> str: def escape_special_chars(self, text: str) -> str:
text = text.replace("&", r"\&") if '\\' in text:
text = text.replace("%", r"\%") print("ESCAPE", text)
text = text.replace("$", r"\$") out = ""
text = text.replace("#", r"\#") for char in text:
text = text.replace("_", r"\_") out += {
text = text.replace("{", r"\{") '&': r"\&",
text = text.replace("}", r"\}") '%': r"\%",
text = text.replace("~", r"\textasciitilde{}") '$': r"\$",
text = text.replace("^", r"\textasciicircum{}") '#': r"\#",
text = text.replace("\\", r"\textbackslash{}") '_': r"\_",
text = text.replace(" ", "~") # We use unicode no-break spaces to force nbsp in output '{': r"\{",
text = text.replace("", "") '}': r"\}",
return text '~': r"\textasciitilde{}",
'^': r"\textasciicircum{}",
'\\': r"\textbackslash{}",
' ': r"~",
'': r"",
}.get(char, char)
return out
def generate(self, e: Union[Element, ListContainer]): def generate(self, e: Union[Element, ListContainer]):
if hasattr(e, "attributes") and "only" in e.attributes and e.attributes["only"] != "tex": if hasattr(e, "attributes") and "only" in e.attributes and e.attributes["only"] != "tex":