X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FFormat.cpp;h=485715b6e3b23911d622c31897856467f748bd0e;hb=3d4076b598deb18660e50ec9c327efc3b15f15d0;hp=7e634b48becd98a8d3799ee3b80f47379d88a3d1;hpb=aafd52f44167d5510be1ddcb974daa9dae486933;p=lyx.git diff --git a/src/Format.cpp b/src/Format.cpp index 7e634b48be..485715b6e3 100644 --- a/src/Format.cpp +++ b/src/Format.cpp @@ -23,7 +23,7 @@ #include "support/gettext.h" #include "support/lstrings.h" #include "support/os.h" -#include "support/Path.h" +#include "support/PathChanger.h" #include "support/Systemcall.h" #include "support/textutils.h" #include "support/Translator.h" @@ -115,6 +115,10 @@ private: } //namespace anon +bool Format::formatSorter(Format const * lhs, Format const * rhs) +{ + return _(lhs->prettyname()) < _(rhs->prettyname()); +} bool operator<(Format const & a, Format const & b) { @@ -249,12 +253,11 @@ string guessFormatFromContents(FileName const & fn) string str; string format; bool firstLine = true; + bool backslash = false; + int dollars = 0; while ((count++ < max_count) && format.empty()) { - if (ifs.eof()) { - LYXERR(Debug::GRAPHICS, "filetools(getFormatFromContents)\n" - << "\tFile type not recognised before EOF!"); + if (ifs.eof()) break; - } getline(ifs, str); string const stamp = str.substr(0, 2); @@ -336,7 +339,8 @@ string guessFormatFromContents(FileName const & fn) format = "jpg"; else if (contains(str, "%PDF")) - format = "pdf"; + // autodetect pdf format for graphics inclusion + format = "pdf6"; else if (contains(str, "PNG")) format = "png"; @@ -358,9 +362,32 @@ string guessFormatFromContents(FileName const & fn) else if (contains(str, "BITPIX")) format = "fits"; + + else if (contains(str, "\\documentclass") || + contains(str, "\\chapter") || + contains(str, "\\section") || + contains(str, "\\begin") || + contains(str, "\\end") || + contains(str, "$$") || + contains(str, "\\[") || + contains(str, "\\]")) + format = "latex"; + else { + if (contains(str, '\\')) + backslash = true; + dollars += count_char(str, '$'); + } } - if (!format.empty()) { + if (format.empty() && backslash && dollars > 1) + // inline equation + format = "latex"; + + if (format.empty()) { + if (ifs.eof()) + LYXERR(Debug::GRAPHICS, "filetools(getFormatFromContents)\n" + "\tFile type not recognised before EOF!"); + } else { LYXERR(Debug::GRAPHICS, "Recognised Fileformat: " << format); return format; } @@ -681,7 +708,7 @@ bool Formats::edit(Buffer const & buffer, FileName const & filename, // LinkBack files look like PDF, but have the .linkback extension string const ext = getExtension(filename.absFileName()); - if (format_name == "pdf" && ext == "linkback") { + if (format_name == "pdf6" && ext == "linkback") { #ifdef USE_MACOSX_PACKAGING return editLinkBackFile(filename.absFileName().c_str()); #else