summaryrefslogtreecommitdiff
path: root/biblio/citation-style-language/citeproc-output.lua
diff options
context:
space:
mode:
Diffstat (limited to 'biblio/citation-style-language/citeproc-output.lua')
-rw-r--r--biblio/citation-style-language/citeproc-output.lua27
1 files changed, 17 insertions, 10 deletions
diff --git a/biblio/citation-style-language/citeproc-output.lua b/biblio/citation-style-language/citeproc-output.lua
index f596a39e3a..617440e531 100644
--- a/biblio/citation-style-language/citeproc-output.lua
+++ b/biblio/citation-style-language/citeproc-output.lua
@@ -1742,18 +1742,25 @@ LatexWriter.markups = {
-- ["@display/indent"] = '<div class="csl-indent">%s</div>\n ',
}
+local latex_escape_table = {
+ ["\\"] = "\\textbackslash{}",
+ ["{"] = "\\{",
+ ["}"] = "\\}",
+ ["$"] = "\\$",
+ ["&"] = "\\&",
+ ["#"] = "\\#",
+ ["^"] = "\\^",
+ ["_"] = "\\_",
+ ["%"] = "\\%",
+ ["~"] = "\\~",
+}
+
+---@param str string
+---@param context Context
+---@return string
function LatexWriter:write_escaped(str, context)
-- TeXbook, p. 38
- str = str:gsub("\\", "\\textbackslash{}")
- str = str:gsub("{", "\\{")
- str = str:gsub("}", "\\}")
- str = str:gsub("%$", "\\$")
- str = str:gsub("&", "\\&")
- str = str:gsub("#", "\\#")
- str = str:gsub("%^", "\\^")
- str = str:gsub("_", "\\_")
- str = str:gsub("%%", "\\%%")
- str = str:gsub("~", "\\~")
+ str = str:gsub("[\\{}$&#^_%%~]", latex_escape_table)
str = str:gsub(util.unicode["em space"], "\\quad ")
str = str:gsub(util.unicode["no-break space"], "~")
for char, sub in pairs(util.superscripts) do