mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
Escape (makeindex) special chars in nomencl if !literate
Fixes: #10825
(cherry picked from commit b68701c4da
)
This commit is contained in:
parent
f97832ba5f
commit
a4aee2a090
@ -441,7 +441,8 @@ docstring InsetCommandParams::prepareCommand(OutputParams const & runparams,
|
||||
result = command;
|
||||
ltrimmed = true;
|
||||
}
|
||||
if (handling & ParamInfo::HANDLING_LATEXIFY)
|
||||
if (handling & ParamInfo::HANDLING_LATEXIFY
|
||||
|| handling & ParamInfo::HANDLING_INDEX_ESCAPE)
|
||||
if ((*this)["literal"] == "true")
|
||||
handling = ParamInfo::HANDLING_NONE;
|
||||
|
||||
@ -490,6 +491,22 @@ docstring InsetCommandParams::prepareCommand(OutputParams const & runparams,
|
||||
result = escape(command);
|
||||
else if (handling & ParamInfo::HANDLING_NONE)
|
||||
result = command;
|
||||
// INDEX_ESCAPE is independent of the others
|
||||
if (handling & ParamInfo::HANDLING_INDEX_ESCAPE) {
|
||||
// Now escape special commands
|
||||
static docstring const quote = from_ascii("\"");
|
||||
static char_type const chars_escape[4] = { '"', '@', '|', '!' };
|
||||
|
||||
if (!result.empty()) {
|
||||
// The characters in chars_name[] need to be changed to a command when
|
||||
// they are LaTeXified.
|
||||
for (int k = 0; k < 4; 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]);
|
||||
}
|
||||
}
|
||||
|
||||
return ltrimmed ? ltrim(result) : result;
|
||||
}
|
||||
|
@ -45,7 +45,8 @@ public:
|
||||
HANDLING_NONE = 1, /// no special handling
|
||||
HANDLING_ESCAPE = 2, /// escape special characters
|
||||
HANDLING_LATEXIFY = 4, /// transform special characters to LaTeX macros
|
||||
HANDLING_LTRIM = 8 /// trim blanks on the left
|
||||
HANDLING_LTRIM = 8, /// trim blanks on the left
|
||||
HANDLING_INDEX_ESCAPE = 16, /// escape makeindex special chars
|
||||
};
|
||||
///
|
||||
class ParamData {
|
||||
|
@ -65,9 +65,11 @@ ParamInfo const & InsetNomencl::findInfo(string const & /* cmdName */)
|
||||
if (param_info_.empty()) {
|
||||
param_info_.add("prefix", ParamInfo::LATEX_OPTIONAL);
|
||||
param_info_.add("symbol", ParamInfo::LATEX_REQUIRED,
|
||||
ParamInfo::HANDLING_LATEXIFY);
|
||||
ParamInfo::ParamHandling(ParamInfo::HANDLING_ESCAPE
|
||||
| ParamInfo::HANDLING_INDEX_ESCAPE));
|
||||
param_info_.add("description", ParamInfo::LATEX_REQUIRED,
|
||||
ParamInfo::HANDLING_LATEXIFY);
|
||||
ParamInfo::ParamHandling(ParamInfo::HANDLING_ESCAPE
|
||||
| ParamInfo::HANDLING_INDEX_ESCAPE));
|
||||
param_info_.add("literal", ParamInfo::LYX_INTERNAL);
|
||||
}
|
||||
return param_info_;
|
||||
|
Loading…
Reference in New Issue
Block a user