X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftex2lyx%2Ftex2lyx.cpp;h=9239d30984be78fba2a1f7626bdc5848790e05cc;hb=3d4076b598deb18660e50ec9c327efc3b15f15d0;hp=dc19f78a7bc2dc51fa8de17446e02f3443855459;hpb=4f6c0b520208b397f07c4aa9f0fe6cfcd02d7a2f;p=lyx.git diff --git a/src/tex2lyx/tex2lyx.cpp b/src/tex2lyx/tex2lyx.cpp index dc19f78a7b..9239d30984 100644 --- a/src/tex2lyx/tex2lyx.cpp +++ b/src/tex2lyx/tex2lyx.cpp @@ -446,6 +446,13 @@ bool checkModule(string const & name, bool command) } +bool isProvided(string const & name) +{ + // This works only for features that are named like the LaTeX packages + return textclass.provides(name) || preamble.isPackageUsed(name); +} + + bool noweb_mode = false; bool pdflatex = false; bool xetex = false; @@ -826,14 +833,17 @@ bool tex2lyx(idocstream & is, ostream & os, string encoding) { // Set a sensible default encoding. // This is used until an encoding command is found. - // For child documents use the encoding of the master, else latin1, - // since latin1 does not cause an iconv error if the actual encoding - // is different (bug 7509). + // For child documents use the encoding of the master, else ISO8859-1, + // (formerly known by its latex name latin1), since ISO8859-1 does not + // cause an iconv error if the actual encoding is different (bug 7509). if (encoding.empty()) { if (preamble.inputencoding() == "auto") - encoding = "latin1"; - else - encoding = preamble.inputencoding(); + encoding = "ISO8859-1"; + else { + Encoding const * const enc = encodings.fromLyXName( + preamble.inputencoding(), true); + encoding = enc->iconvName(); + } } Parser p(is); @@ -925,7 +935,7 @@ bool tex2lyx(FileName const & infilename, ostream & os, string const & encoding) } // anonymous namespace -bool tex2lyx(string const & infilename, FileName const & outfilename, +bool tex2lyx(string const & infilename, FileName const & outfilename, string const & encoding) { if (outfilename.isReadableFile()) { @@ -1002,7 +1012,7 @@ int main(int argc, char * argv[]) easyParse(argc, argv); - if (argc <= 1) + if (argc <= 1) error_message("Not enough arguments."); try { @@ -1059,19 +1069,24 @@ int main(int argc, char * argv[]) // Read the encodings table. FileName const symbols_path = libFileSearch(string(), "unicodesymbols"); if (symbols_path.empty()) { - cerr << "Error: Could not find file \"unicodesymbols\"." + cerr << "Error: Could not find file \"unicodesymbols\"." << endl; return EXIT_FAILURE; } FileName const enc_path = libFileSearch(string(), "encodings"); if (enc_path.empty()) { - cerr << "Error: Could not find file \"encodings\"." + cerr << "Error: Could not find file \"encodings\"." << endl; return EXIT_FAILURE; } encodings.read(enc_path, symbols_path); - if (!default_encoding.empty() && !encodings.fromLaTeXName(default_encoding)) - error_message("Unknown LaTeX encoding `" + default_encoding + "'"); + if (!default_encoding.empty()) { + Encoding const * const enc = encodings.fromLaTeXName( + default_encoding, Encoding::any, true); + if (!enc) + error_message("Unknown LaTeX encoding `" + default_encoding + "'"); + default_encoding = enc->iconvName(); + } // Load the layouts LayoutFileList::get().read();