]> git.lyx.org Git - lyx.git/blobdiff - src/tex2lyx/tex2lyx.cpp
forgot that
[lyx.git] / src / tex2lyx / tex2lyx.cpp
index c107cea8c070f85d2e7da3a9b723d5a04afa79ce..4c1366d85bee49791371f7a0a0f02db8e004f983 100644 (file)
@@ -3,7 +3,7 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- * \author André Pönitz
+ * \author André Pönitz
  *
  * Full author contact details are available in file CREDITS.
  */
 #include <config.h>
 
 #include "tex2lyx.h"
-#include "Context.h"
 
+#include "Context.h"
 #include "TextClass.h"
 #include "Layout.h"
 
+#include "support/lassert.h"
 #include "support/convert.h"
 #include "support/debug.h"
 #include "support/ExceptionMessage.h"
@@ -25,8 +26,8 @@
 #include "support/lstrings.h"
 #include "support/os.h"
 #include "support/Package.h"
-#include "support/unicode.h"
 
+#include <cstdlib>
 #include <fstream>
 #include <iostream>
 #include <string>
@@ -40,13 +41,9 @@ using namespace lyx::support::os;
 
 namespace lyx {
 
-// Hacks to allow the thing to link in the lyxlayout stuff
-LayoutPtr captionlayout;
-
-
 string const trim(string const & a, char const * p)
 {
-       // BOOST_ASSERT(p);
+       // LASSERT(p, /**/);
 
        if (a.empty() || !*p)
                return a;
@@ -111,7 +108,7 @@ CommandMap known_math_environments;
 
 
 void add_known_command(string const & command, string const & o1,
-       unsigned optionalsNum)
+                      bool o2)
 {
        // We have to handle the following cases:
        // definition                      o1    o2    invocation result
@@ -120,14 +117,14 @@ void add_known_command(string const & command, string const & o1,
        // \newcommand{\foo}[1][]{bar #1}  "[1]" true  \foo       bar
        // \newcommand{\foo}[1][]{bar #1}  "[1]" true  \foo[x]    bar x
        // \newcommand{\foo}[1][x]{bar #1} "[1]" true  \foo[x]    bar x
-       // and the same with \newlyxcommand
        unsigned int nargs = 0;
        vector<ArgumentType> arguments;
        string const opt1 = rtrim(ltrim(o1, "["), "]");
        if (isStrUnsignedInt(opt1)) {
                // The command has arguments
                nargs = convert<unsigned int>(opt1);
-               for (unsigned int i = 0; i < optionalsNum; ++i) {
+               if (nargs > 0 && o2) {
+                       // The first argument is optional
                        arguments.push_back(optional);
                        --nargs;
                }
@@ -398,8 +395,8 @@ void tex2lyx(istream & is, ostream & os)
        //p.dump();
 
        stringstream ss;
-       TextClass textclass = parse_preamble(p, ss, documentclass);
-       captionlayout = LayoutPtr(Layout::forCaption());
+       TeX2LyXDocClass textclass;
+       parse_preamble(p, ss, documentclass, textclass);
 
        active_environments.push_back("document");
        Context context(true, textclass);
@@ -475,6 +472,8 @@ int main(int argc, char * argv[])
 {
        using namespace lyx;
 
+       //setlocale(LC_CTYPE, "");
+
        lyxerr.setStream(cerr);
 
        easyParse(argc, argv);
@@ -487,7 +486,8 @@ int main(int argc, char * argv[])
 
        os::init(argc, argv);
 
-       try { init_package(internal_path(to_utf8(from_local8bit(argv[0]))),
+       try {
+               init_package(internal_path(to_utf8(from_local8bit(argv[0]))),
                cl_system_support, cl_user_support,
                top_build_dir_is_two_levels_up);
        } catch (ExceptionMessage const & message) {
@@ -496,12 +496,12 @@ int main(int argc, char * argv[])
                if (message.type_ == ErrorException)
                        exit(1);
        }
-       
+
        // Now every known option is parsed. Look for input and output
        // file name (the latter is optional).
        string infilename = internal_path(to_utf8(from_local8bit(argv[1])));
        infilename = makeAbsPath(infilename).absFilename();
-       
+
        string outfilename;
        if (argc > 2) {
                outfilename = internal_path(to_utf8(from_local8bit(argv[2])));