]> git.lyx.org Git - lyx.git/blobdiff - src/tex2lyx/tex2lyx.C
hopefully fix tex2lyx linking.
[lyx.git] / src / tex2lyx / tex2lyx.C
index 9d2bea9366cc69c90c59255acdb367beaff3b06d..1175754ec2241028ddfc34dfb500f9ffc0bd4261 100644 (file)
@@ -25,6 +25,7 @@
 #include "support/lyxlib.h"
 #include "support/os.h"
 #include "support/package.h"
+#include "support/unicode.h"
 
 #include <boost/function.hpp>
 #include <boost/filesystem/operations.hpp>
@@ -38,6 +39,9 @@
 #include <vector>
 #include <map>
 
+
+namespace lyx {
+
 using std::endl;
 using std::cout;
 using std::cerr;
@@ -52,17 +56,24 @@ using std::string;
 using std::vector;
 using std::map;
 
-using lyx::support::ChangeExtension;
+using lyx::support::changeExtension;
 using lyx::support::isStrUnsignedInt;
 using lyx::support::ltrim;
-using lyx::support::MakeAbsPath;
-using lyx::support::OnlyPath;
+using lyx::support::makeAbsPath;
+using lyx::support::onlyPath;
 using lyx::support::rtrim;
 using lyx::support::isFileReadable;
 
 namespace fs = boost::filesystem;
 
 
+IconvProcessor & utf8ToUcs4()
+{
+       static IconvProcessor iconv(ucs4_codeset, "UTF-8");
+       return iconv;
+}
+
+
 // Hacks to allow the thing to link in the lyxlayout stuff
 LyXErr lyxerr(std::cerr.rdbuf());
 
@@ -161,6 +172,9 @@ void add_known_command(string const & command, string const & o1,
 }
 
 
+bool noweb_mode = false;
+
+
 namespace {
 
 
@@ -275,6 +289,7 @@ int parse_help(string const &, string const &)
                "\t-userdir dir       try to set user directory to dir\n"
                "\t-sysdir dir        try to set system directory to dir\n"
                "\t-c textclass       declare the textclass\n"
+               "\t-n                 translate a noweb (aka literate programming) file.\n"
                "\t-s syntaxfile      read additional syntax file" << endl;
        exit(0);
 }
@@ -337,6 +352,13 @@ int parse_force(string const &, string const &)
 }
 
 
+int parse_noweb(string const &, string const &)
+{
+       noweb_mode = true;
+       return 0;
+}
+
+
 void easyParse(int & argc, char * argv[])
 {
        map<string, cmd_helper> cmdmap;
@@ -346,6 +368,7 @@ void easyParse(int & argc, char * argv[])
        cmdmap["-s"] = parse_syntaxfile;
        cmdmap["-help"] = parse_help;
        cmdmap["--help"] = parse_help;
+       cmdmap["-n"] = parse_noweb;
        cmdmap["-sysdir"] = parse_sysdir;
        cmdmap["-userdir"] = parse_userdir;
 
@@ -413,6 +436,9 @@ void tex2lyx(std::istream &is, std::ostream &os)
        active_environments.push_back("document");
        Context context(true, textclass);
        parse_text(p, ss, FLAG_END, true, context);
+       if (Context::empty)
+               // Empty document body. LyX needs at least one paragraph.
+               context.check_layout(ss);
        context.check_end_layout(ss);
        ss << "\n\\end_body\n\\end_document\n";
        active_environments.pop_back();
@@ -431,7 +457,7 @@ void tex2lyx(std::istream &is, std::ostream &os)
 /// convert TeX from \p infilename to LyX and write it to \p os
 bool tex2lyx(string const &infilename, std::ostream &os)
 {
-       BOOST_ASSERT(lyx::support::AbsolutePath(infilename));
+       BOOST_ASSERT(lyx::support::absolutePath(infilename));
        ifstream is(infilename.c_str());
        if (!is.good()) {
                cerr << "Could not open input file \"" << infilename
@@ -439,7 +465,7 @@ bool tex2lyx(string const &infilename, std::ostream &os)
                return false;
        }
        string const oldParentFilePath = parentFilePath;
-       parentFilePath = OnlyPath(infilename);
+       parentFilePath = onlyPath(infilename);
        tex2lyx(is, os);
        parentFilePath = oldParentFilePath;
        return true;
@@ -475,9 +501,12 @@ bool tex2lyx(string const &infilename, string const &outfilename)
        return tex2lyx(infilename, os);
 }
 
+} // namespace lyx
+
 
 int main(int argc, char * argv[])
 {
+       using namespace lyx;
        fs::path::default_name_check(fs::no_check);
 
        easyParse(argc, argv);
@@ -494,16 +523,16 @@ int main(int argc, char * argv[])
 
        // Now every known option is parsed. Look for input and output
        // file name (the latter is optional).
-       string const infilename = MakeAbsPath(argv[1]);
+       string const infilename = makeAbsPath(argv[1]);
        string outfilename;
        if (argc > 2) {
                outfilename = argv[2];
                if (outfilename != "-")
-                       outfilename = MakeAbsPath(argv[2]);
+                       outfilename = makeAbsPath(argv[2]);
        } else
-               outfilename = ChangeExtension(infilename, ".lyx");
+               outfilename = changeExtension(infilename, ".lyx");
 
-       string const system_syntaxfile = lyx::support::LibFileSearch("", "syntax.default");
+       string const system_syntaxfile = lyx::support::libFileSearch("", "syntax.default");
        if (system_syntaxfile.empty()) {
                cerr << "Error: Could not find syntax file \"syntax.default\"." << endl;
                exit(1);
@@ -512,7 +541,7 @@ int main(int argc, char * argv[])
        if (!syntaxfile.empty())
                read_syntaxfile(syntaxfile);
 
-       masterFilePath = OnlyPath(infilename);
+       masterFilePath = onlyPath(infilename);
        parentFilePath = masterFilePath;
 
        if (outfilename == "-") {