summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/hybridtest.tex8
-rw-r--r--mod/tex/context/third/rst/rst_context.lua13
2 files changed, 14 insertions, 7 deletions
diff --git a/doc/hybridtest.tex b/doc/hybridtest.tex
index ba3bed5..6b74a8a 100644
--- a/doc/hybridtest.tex
+++ b/doc/hybridtest.tex
@@ -21,10 +21,10 @@ there are some :bold:`drawbacks` to expect when mixing markups:
directives and hyperlink targets that have already been specified
somewhere above the current section will *stay* accessible in
later passages until you redefine them. Also, certain letters
-need to be thoroughly escaped in order to make it through to the
-*reST*-parser, e.g. *\\\{* (<left brace>), and you’ll have to be
-inventive to make a backslash (*\\letterbackslash*) pass through
-the parser.
+need to be thoroughly escaped in order for them to make it
+through to the *reST*-parser, e.g. *\\\{* (<left brace>), and
+you’ll have to be inventive to make a backslash
+(*\\letterbackslash*) pass through the parser.
}
diff --git a/mod/tex/context/third/rst/rst_context.lua b/mod/tex/context/third/rst/rst_context.lua
index a18086b..5ed7812 100644
--- a/mod/tex/context/third/rst/rst_context.lua
+++ b/mod/tex/context/third/rst/rst_context.lua
@@ -331,10 +331,17 @@ function rst_context.substitution_reference (str, underscores)
return sub .. [[{\\RSTsubstitution]] .. str:gsub("%s", "") .. "}"
end
+-- see catc-sym.tex
+local escape_me = {
+ ["&"] = [[\letterampersand ]],
+ ["#"] = [[\letterhash ]],
+ ["^"] = [[\letterhat ]],
+ ["_"] = [[\letterunderscore ]],
+}
+
function rst_context.escape (str)
- str = str:gsub("\\(.)", "%1")
- str = str:gsub("&", "\\letterampersand")
- return str
+ str = str:gsub("\\(.)", "%1") -- literalize escaped sequences
+ return str:gsub("[&#^_]", escape_me) -- escape chars with special meaning
end
function rst_context.joinindented (tab)