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

Reply via email to