mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
Fix bug #11484
When splitting parameters at commas, take into account that commas inside curly braces are not parameter separators.
This commit is contained in:
parent
1c9d3da938
commit
6316b9b7ae
@ -165,6 +165,23 @@ InsetLabel * createLabel(Buffer * buf, docstring const & label_str)
|
||||
return new InsetLabel(buf, icp);
|
||||
}
|
||||
|
||||
|
||||
char_type replaceCommaInBraces(docstring & params)
|
||||
{
|
||||
// Code point from private use area
|
||||
char_type private_char = 0xE000;
|
||||
int count = 0;
|
||||
for (char_type & c : params) {
|
||||
if (c == '{')
|
||||
++count;
|
||||
else if (c == '}')
|
||||
--count;
|
||||
else if (c == ',' && count)
|
||||
c = private_char;
|
||||
}
|
||||
return private_char;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
@ -625,12 +642,18 @@ void InsetInclude::latex(otexstream & os, OutputParams const & runparams) const
|
||||
docstring label;
|
||||
docstring placement;
|
||||
bool isfloat = lstparams.isFloat();
|
||||
// We are going to split parameters at commas, so
|
||||
// replace commas that are not parameter separators
|
||||
// with a code point from the private use area
|
||||
char_type comma = replaceCommaInBraces(parameters);
|
||||
// Get float placement, language, caption, and
|
||||
// label, then remove the relative options if minted.
|
||||
vector<docstring> opts =
|
||||
getVectorFromString(parameters, from_ascii(","), false);
|
||||
vector<docstring> latexed_opts;
|
||||
for (size_t i = 0; i < opts.size(); ++i) {
|
||||
// Restore replaced commas
|
||||
opts[i] = subst(opts[i], comma, ',');
|
||||
if (use_minted && prefixIs(opts[i], from_ascii("float"))) {
|
||||
if (prefixIs(opts[i], from_ascii("float=")))
|
||||
placement = opts[i].substr(6);
|
||||
|
Loading…
Reference in New Issue
Block a user