mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
tex2lyx: support for plural and capitalized refstyle
Also fix a glitch in non-refstyle import (getOpt() returns the option with delimiter, so do not add them in ERT once more) Candidate for stable
This commit is contained in:
parent
d10c3bceb0
commit
faf40fb408
@ -36,7 +36,6 @@ Format LaTeX feature LyX feature
|
||||
443 unicode-math.sty InsetMath*
|
||||
453 automatic stmaryrd loading \use_package stmaryrd
|
||||
457 automatic stackrel loading \use_package stackrel
|
||||
526 Plural and capitalized refstyles InsetRef
|
||||
546 Landscape support
|
||||
\begin{landscape}...\end{landscape} \begin_inset Flex Landscape (see #11259)
|
||||
555 V column type (varwidth package) Automatically detected with newlines, paragraph breaks and environment content in cells of rows
|
||||
|
@ -539,6 +539,24 @@ string const fromPolyglossiaEnvironment(string const s)
|
||||
}
|
||||
|
||||
|
||||
string uncapitalize(string const s)
|
||||
{
|
||||
docstring in = from_ascii(s);
|
||||
char_type t = lowercase(s[0]);
|
||||
in[0] = t;
|
||||
return to_ascii(in);
|
||||
}
|
||||
|
||||
|
||||
bool isCapitalized(string const s)
|
||||
{
|
||||
docstring in = from_ascii(s);
|
||||
char_type t = uppercase(s[0]);
|
||||
in[0] = t;
|
||||
return to_ascii(in) == s;
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
@ -4182,21 +4200,37 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
continue;
|
||||
}
|
||||
|
||||
// handle refstyle first to catch \eqref which can also occur
|
||||
// without refstyle. Only recognize these commands if
|
||||
// Handle refstyle first in order to to catch \eqref, because this
|
||||
// can also occur without refstyle. Only recognize these commands if
|
||||
// refstyle.sty was found in the preamble (otherwise \eqref
|
||||
// and user defined ref commands could be misdetected).
|
||||
if ((where = is_known(t.cs(), known_refstyle_commands))
|
||||
// We uncapitalize the input in order to catch capitalized commands
|
||||
// such as \Eqref.
|
||||
if ((where = is_known(uncapitalize(t.cs()), known_refstyle_commands))
|
||||
&& preamble.refstyle()) {
|
||||
string const cap = isCapitalized(t.cs()) ? "true" : "false";
|
||||
string plural = "false";
|
||||
// Catch the plural option [s]
|
||||
if (p.hasOpt()) {
|
||||
string const opt = p.getOpt();
|
||||
if (opt == "[s]")
|
||||
plural = "true";
|
||||
else {
|
||||
// LyX does not yet support other optional arguments of ref commands
|
||||
output_ert_inset(os, t.asInput() + opt + "{" +
|
||||
p.verbatim_item() + '}', context);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
context.check_layout(os);
|
||||
begin_command_inset(os, "ref", "formatted");
|
||||
os << "reference \"";
|
||||
os << known_refstyle_prefixes[where - known_refstyle_commands]
|
||||
<< ":";
|
||||
os << convert_literate_command_inset_arg(p.verbatim_item())
|
||||
os << convert_literate_command_inset_arg(p.getArg('{', '}'))
|
||||
<< "\"\n";
|
||||
os << "plural \"false\"\n";
|
||||
os << "caps \"false\"\n";
|
||||
os << "plural \"" << plural << "\"\n";
|
||||
os << "caps \"" << cap << "\"\n";
|
||||
os << "noprefix \"false\"\n";
|
||||
end_inset(os);
|
||||
preamble.registerAutomaticallyLoadedPackage("refstyle");
|
||||
@ -4225,8 +4259,8 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
|
||||
preamble.registerAutomaticallyLoadedPackage("prettyref");
|
||||
} else {
|
||||
// LyX does not yet support optional arguments of ref commands
|
||||
output_ert_inset(os, t.asInput() + '[' + opt + "]{" +
|
||||
p.verbatim_item() + '}', context);
|
||||
output_ert_inset(os, t.asInput() + opt + "{" +
|
||||
p.verbatim_item() + '}', context);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user