Implement ParamInfo::HANDLING_LTRIM and use it to ltrim InsetBibitem

output

See #9847.

(cherry picked from commit 76f49fad78)
This commit is contained in:
Juergen Spitzmueller 2017-10-23 08:20:58 +02:00
parent d088f7f03f
commit a81a0c5534
3 changed files with 22 additions and 15 deletions

View File

@ -112,7 +112,8 @@ ParamInfo const & InsetBibitem::findInfo(string const & /* cmdName */)
param_info_.add("label", ParamInfo::LATEX_OPTIONAL,
ParamInfo::HANDLING_LATEXIFY);
param_info_.add("key", ParamInfo::LATEX_REQUIRED,
ParamInfo::HANDLING_ESCAPE);
ParamInfo::ParamHandling(ParamInfo::HANDLING_ESCAPE
| ParamInfo::HANDLING_LTRIM));
param_info_.add("literal", ParamInfo::LYX_INTERNAL);
}
return param_info_;

View File

@ -432,12 +432,21 @@ docstring InsetCommandParams::prepareCommand(OutputParams const & runparams,
docstring const & command,
ParamInfo::ParamHandling handling) const
{
if (handling == ParamInfo::HANDLING_LATEXIFY)
docstring result;
bool ltrimmed = false;
// Trimming can be done on top of any of the other handlings
// We check this here since handling might be changed below.
if (handling & ParamInfo::HANDLING_LTRIM) {
// this is used if no other handling is done
result = command;
ltrimmed = true;
}
if (handling & ParamInfo::HANDLING_LATEXIFY)
if ((*this)["literal"] == "true")
handling = ParamInfo::HANDLING_NONE;
docstring result;
switch (handling) {
case ParamInfo::HANDLING_LATEXIFY: {
// LATEXIFY, ESCAPE and NONE are mutually exclusive
if (handling & ParamInfo::HANDLING_LATEXIFY) {
// First handle backslash
result = subst(command, from_ascii("\\"), from_ascii("\\textbackslash{}"));
// Then get LaTeX macros
@ -476,17 +485,13 @@ docstring InsetCommandParams::prepareCommand(OutputParams const & runparams,
result.replace(pos, 1, backslash + chars_escape[k] + term);
}
}
break;
}
case ParamInfo::HANDLING_ESCAPE:
else if (handling & ParamInfo::HANDLING_ESCAPE)
result = escape(command);
break;
case ParamInfo::HANDLING_NONE:
else if (handling & ParamInfo::HANDLING_NONE)
result = command;
break;
} // switch
return result;
return ltrimmed ? ltrim(result) : result;
}

View File

@ -42,9 +42,10 @@ public:
};
/// Special handling on output
enum ParamHandling {
HANDLING_NONE, /// no special handling
HANDLING_ESCAPE, /// escape special characters
HANDLING_LATEXIFY /// transform special characters to LaTeX macros
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
};
///
class ParamData {