From adb0d7f63f49fdb4cd14f89b02d9fe64a04d2070 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Uwe=20St=C3=B6hr?= Date: Sun, 24 Jun 2012 16:59:21 +0200 Subject: [PATCH] support synctex in tex2lyx.cpp - tex2lyx/Preamble.cpp/h: handle \synctex and package srcltx - tex2lyx/test/test-structure.tex: add \synctex --- src/tex2lyx/Preamble.cpp | 29 +++++++++++++++++++++++++++-- src/tex2lyx/Preamble.h | 1 + src/tex2lyx/test/test-structure.tex | 2 +- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp index 5504c535af..ad9b76014c 100644 --- a/src/tex2lyx/Preamble.cpp +++ b/src/tex2lyx/Preamble.cpp @@ -470,6 +470,7 @@ Preamble::Preamble() : one_language(true), title_layout_found(false) //h_options; h_output_changes = "false"; h_output_sync = "0"; + //h_output_sync_macro h_papercolumns = "1"; h_paperfontsize = "default"; h_paperorientation = "portrait"; @@ -776,6 +777,15 @@ void Preamble::handle_package(Parser &p, string const & name, options.clear(); } + else if (name == "srcltx") { + h_output_sync = "1"; + if (!opts.empty()) { + h_output_sync_macro = "\\usepackage[" + opts + "]{srcltx}"; + options.clear(); + } else + h_output_sync_macro = "\\usepackage{srcltx}"; + } + else if (is_known(name, known_old_language_packages)) { // known language packages from the times before babel // if they are found and not also babel, they will be used as @@ -969,8 +979,10 @@ bool Preamble::writeLyXHeader(ostream & os, bool subdoc) << "\\font_tt_scale " << h_font_tt_scale << "\n\n" << "\\graphics " << h_graphics << "\n" << "\\default_output_format " << h_default_output_format << "\n" - << "\\output_sync " << h_output_sync << "\n" - << "\\bibtex_command " << h_bibtex_command << "\n" + << "\\output_sync " << h_output_sync << "\n"; + if (h_output_sync == "1") + os << "\\output_sync_macro \"" << h_output_sync_macro << "\"\n"; + os << "\\bibtex_command " << h_bibtex_command << "\n" << "\\index_command " << h_index_command << "\n"; if (!h_float_placement.empty()) os << "\\float_placement " << h_float_placement << "\n"; @@ -1451,6 +1463,19 @@ void Preamble::parse(Parser & p, string const & forceclass, else if (t.cs() == "setstretch") h_spacing = "other " + p.verbatim_item(); + else if (t.cs() == "synctex") { + // the scheme is \synctex=value + // where value can only be "1" or "-1" + h_output_sync = "1"; + // there can be any character behind the value (e.g. a linebreak or a '\' + // therefore we extract it char by char + p.get_token(); + string value = p.get_token().asInput(); + if (value == "-") + value += p.get_token().asInput(); + h_output_sync_macro = "\\synctex=" + value; + } + else if (t.cs() == "begin") { string const name = p.getArg('{', '}'); if (name == "document") diff --git a/src/tex2lyx/Preamble.h b/src/tex2lyx/Preamble.h index b9ab8643b5..ba4ef31c8e 100644 --- a/src/tex2lyx/Preamble.h +++ b/src/tex2lyx/Preamble.h @@ -124,6 +124,7 @@ private: std::string h_options; std::string h_output_changes; std::string h_output_sync; + std::string h_output_sync_macro; std::string h_papercolumns; std::string h_paperfontsize; std::string h_paperorientation; diff --git a/src/tex2lyx/test/test-structure.tex b/src/tex2lyx/test/test-structure.tex index 3cb6fc7a89..345750a894 100644 --- a/src/tex2lyx/test/test-structure.tex +++ b/src/tex2lyx/test/test-structure.tex @@ -4,7 +4,7 @@ \usepackage[latin9]{inputenc} \usepackage{color} \usepackage{rotfloat} -\usepackage{wrapfig} +\synctex=-1\usepackage{wrapfig} \makeatletter -- 2.39.2