diff options
author | Norbert Preining <norbert@preining.info> | 2023-10-06 03:01:32 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-10-06 03:01:32 +0000 |
commit | eb5f6f6b85d43592051aaf5c6e14e4173cffeba9 (patch) | |
tree | 3ad2247ded22493e2facfbae25b88d20c4144292 /biblio/citation-style-language/citeproc-output.lua | |
parent | de10325d1f4ef1ac2c14d6e3711771caf4a4f3ae (diff) |
CTAN sync 202310060301
Diffstat (limited to 'biblio/citation-style-language/citeproc-output.lua')
-rw-r--r-- | biblio/citation-style-language/citeproc-output.lua | 27 |
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 |