commit a464c749fe3aceaca3a5d1b07ed3095337e271e1
Author: Juergen Spitzmueller <[email protected]>
Date: Sun Mar 23 13:30:44 2025 +0100
tex2lyx support for zref-clever and zref-vario
---
src/tex2lyx/Preamble.cpp | 5 ++++-
src/tex2lyx/text.cpp | 51 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 55 insertions(+), 1 deletion(-)
diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp
index f8a6b50a25..dd1dcfeea0 100644
--- a/src/tex2lyx/Preamble.cpp
+++ b/src/tex2lyx/Preamble.cpp
@@ -357,7 +357,7 @@ const char * const known_lyx_packages[] = {"amsbsy",
"amsmath", "amssymb",
"makeidx", "minted", "multirow", "nomencl", "parskip", "pdfpages",
"prettyref", "refstyle",
"rotating", "rotfloat", "splitidx", "setspace", "subscript",
"tabularx","textcomp", "tipa",
"tipx", "tone", "ulem", "url", "varioref", "verbatim", "wrapfig", "xcolor",
"xltabular",
-"xunicode", 0};
+"xunicode", "zref-clever", "zref-vario", 0};
// codes used to remove packages that are loaded automatically by LyX.
// Syntax: package_beg_sep<name>package_mid_sep<package loading
code>package_end_sep
@@ -2167,6 +2167,9 @@ void Preamble::handle_package(Parser &p, string const &
name,
|| name == "prettyref"
|| name == "cleveref")
h_crossref_package = name;
+ else if (name == "zref-clever"
+ || name == "zref-vario")
+ h_crossref_package = "zref";
if (!in_lyx_preamble) {
h_preamble << package_beg_sep << name
diff --git a/src/tex2lyx/text.cpp b/src/tex2lyx/text.cpp
index ec3a566b59..72ec552425 100644
--- a/src/tex2lyx/text.cpp
+++ b/src/tex2lyx/text.cpp
@@ -168,6 +168,12 @@ char const * const known_refstyle_prefixes[] = { "alg",
"chap", "cor",
"eq", "enu", "fig", "fn", "lem", "par", "part", "prop",
"sec", "subsec", "tab", "thm", 0 };
+char const * const known_zref_commands[] = { "zcref", "zvref",
+ "zvpageref", 0 };
+
+char const * const known_coded_zref_commands[] = { "formatted", "vref",
+ "vpageref", 0 };
+
/**
* supported CJK encodings
@@ -4630,6 +4636,51 @@ void parse_text(Parser & p, ostream & os, unsigned
flags, bool outer,
continue;
}
+ if ((where = is_known(t.cs(), known_zref_commands))
+ && preamble.crossrefPackage() == "zref") {
+ bool starred = false;
+ bool caps = false;
+ if (p.next_token().asInput() == "*") {
+ starred = true;
+ p.get_token();
+ }
+ vector<string> const opts =
getVectorFromString(p.getOpt());
+ string options;
+ bool first = true;
+ for (auto const & opt : opts) {
+ if (opt == "S")
+ caps = true;
+ else {
+ if (!first)
+ options += ",";
+ options += opt;
+ first = false;
+ }
+ }
+ context.check_layout(os);
+ begin_command_inset(os, "ref",
+ known_coded_zref_commands[where -
known_zref_commands]);
+ os << "reference \""
+ <<
convert_literate_command_inset_arg(p.verbatim_item())
+ << "\"\n";
+ os << "plural \"false\"\n";
+ if (caps)
+ os << "caps \"true\"\n";
+ else
+ os << "caps \"false\"\n";
+ os << "noprefix \"false\"\n";
+ if (starred)
+ os << "nolink \"true\"\n";
+ else
+ os << "nolink \"false\"\n";
+ end_inset(os);
+ if (t.cs() == "zvref" || t.cs() == "zvpageref")
+
preamble.registerAutomaticallyLoadedPackage("zref-vario");
+ else
+
preamble.registerAutomaticallyLoadedPackage("zref-clever");
+ continue;
+ }
+
if (use_natbib &&
is_known(t.cs(), known_natbib_commands) &&
((t.cs() != "citefullauthor" &&
--
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs