+ // INDEX_ESCAPE is independent of the others
+ if (handling & ParamInfo::HANDLING_INDEX_ESCAPE) {
+ // Now escape special commands
+ static docstring const quote = from_ascii("\"");
+ int const nchars_escape = 4;
+ static char_type const chars_escape[nchars_escape] = { '"', '@', '|', '!' };
+
+ if (!result.empty()) {
+ // The characters in chars_name[] need to be changed to a command when
+ // they are LaTeXified.
+ for (int k = 0; k < nchars_escape; k++)
+ for (size_t i = 0, pos;
+ (pos = result.find(chars_escape[k], i)) != string::npos;
+ i = pos + 2)
+ result.replace(pos, 1, quote + chars_escape[k]);
+ }
+ }