escape LaTeX characters #2

This commit is contained in:
Sina Atalay 2023-10-27 22:06:07 +02:00
parent 80a1c4be1f
commit 9b253f93d8
2 changed files with 12 additions and 7 deletions

View File

@ -138,14 +138,19 @@ def escape_latex_characters(sentence: str) -> str:
"~": r"\textasciitilde{}",
"_": r"\_",
"^": r"\textasciicircum{}",
"{": r"\{",
"}": r"\}",
"\\": r"\textbackslash{}",
}
# Handle backslash and curly braces separately because the other characters are
# escaped with backslash and curly braces:
sentence = sentence.replace("{", ">>{")
sentence = sentence.replace("}", ">>}")
sentence = sentence.replace("\\", "\\textbackslash{}")
sentence = sentence.replace(">>{", "\\{")
sentence = sentence.replace(">>}", "\\}")
# Loop through the letters of the sentence and if you find an escape character,
# replace it with its LaTeX equivalent:
for character in sentence:
copy_of_the_sentence = sentence
for character in copy_of_the_sentence:
if character in escape_characters:
sentence = sentence.replace(character, escape_characters[character])

View File

@ -27,10 +27,10 @@ class TestDataModel(unittest.TestCase):
result = data_model.escape_latex_characters(str_without_latex_characters)
self.assertEqual(result, expected)
str_with_latex_characers = r"asdf#asdf$asdf%asdf& ~ fd_ \ ^aa aa{ bb} "
str_with_latex_characers = r"asdf#asdf$asdf%asdf& ~ fd_ \ ^aa aa{ bb}"
expected = (
r"asdf\#asdf\$asdf\%asdf\& \textasciitilde{}\ fd\_ \textbackslash{}"
r" \textasciicircum{}aa aa\{ bb\} "
r"asdf\#asdf\$asdf\%asdf\& \textasciitilde{} fd\_ \textbackslash{}"
r" \textasciicircum{}aa aa\{ bb\}"
)
with self.subTest(msg="string with LaTeX characters"):
result = data_model.escape_latex_characters(str_with_latex_characers)