]> git.lyx.org Git - features.git/commitdiff
improve tex2lyx Usage display (on error...); describe option -e on man page; remove...
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Sun, 19 Apr 2009 22:13:43 +0000 (22:13 +0000)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Sun, 19 Apr 2009 22:13:43 +0000 (22:13 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29346 a592a061-630c-0410-9148-cb99ea01b6c8

src/tex2lyx/tex2lyx.1in
src/tex2lyx/tex2lyx.cpp

index 87683247f0aac308691e1844be9de4067cf2892d..338726bc0621c79d7df3cf37c071e899838a9da1 100644 (file)
@@ -20,14 +20,12 @@ call it from the command line only if you need to use more complicated
 options.
 .PP
 \fBtex2lyx\fR [ \fB\-userdir\fR \fIuserdir\fR ] [ \fB\-systemdir\fR \fIsystemdir\fR ]
-[\fB\-n\fR] [\ \fB\-r\fR\ \fIrenv1\fR[,\fIrenv2\fR...]] [\ \fB\-s\fR\ \fIsfile1\fR[,\fIsfile2\fR...]]
-\fIinputfile\fR  [ \fB\-c\fR \fItextclass\fR ] 
-.PP
-\fBtex2lyx\fR [ \fB\-userdir\fR \fIuserdir\fR ] [ \fB\-systemdir\fR \fIsystemdir\fR ]
-[\ \fB\-r\fR\ \fIrenv1\fR[,\fIrenv2\fR...]] [\ \fB\-s\fR\ \fIsfile1\fR[,\fIsfile2\fR...]]
-\fIinputfiles\fR \fB\-p\fR \fB\-c\fR \fItextclass\fR
-.PP
-\fBtex2lyx\fR \fB\-help\fR
+[ \fB\-n\fR ] [ \fB\-c\fR \fItextclass\fR ] [\ \fB\-s\fR\ \fIsfile1\fR[,\fIsfile2\fR...]]
+\fIinputfile\fR  
+." .PP
+." \fBtex2lyx\fR [ \fB\-userdir\fR \fIuserdir\fR ] [ \fB\-systemdir\fR \fIsystemdir\fR ]
+." [\ \fB\-r\fR\ \fIrenv1\fR[,\fIrenv2\fR...]] [\ \fB\-s\fR\ \fIsfile1\fR[,\fIsfile2\fR...]]
+." \fIinputfiles\fR \fB\-p\fR \fB\-c\fR \fItextclass\fR
 .SH "OPTIONS"
 .TP
 .BI \-c
@@ -41,31 +39,28 @@ creates a file of textclass \*(L"foo\*(R" and reads the LyX layout file for that
 Force. \fBtex2lyx\fR will not run if the .lyx file it would generate already exists.
 Use the \fB\-f\fR option (carefully) to clobber any existing files.
 .TP
-.BI \-help
-Help. Print out usage information and quit.
-.TP
 .BI \-n
 Noweb. Translate a noweb (aka literate programming) file. This should be
 (almost?) equivalent to running \*(L"noweb2lyx foo.tex foo.lyx\*(R". This option
 requires the \fB\-c\fR option.
-.TP
-.BI \-p
-Partial file. The input files are LaTeX fragments, with no preamble matter or
-\f(CW\ebegin{document}\fR commands. This option requires the \fB\-c\fR option, since there
-are no \f(CW\edocumentclass\fR commands in the files \fBtex2lyx\fR is translating. When
-using this option, you can translate more than one file, as long as all files
-are the same class. The LyX file created by \fBtex2lyx\fR can be included in an
-existing LyX file using the \*(L"Include LyX File\*(R" command from
-LyX's Insert menu. (\fBNOTE\fR: this feature of the older \fBreLyX\fR script has
-not yet been implemented in \fBtex2lyx\fR).
-.TP
-.BI \-r
-Regular environments (see the section on \fISyntax Files\fR).  If you give more than one
-environment, separate them with commas (not spaces). You'll probably need to
-quote the environment list, especially if it has asterisk environments (foo*)
-in it. If you use this command often, considering creating a personal syntax
-file. (\fBNOTE\fR: this feature of the older \fBreLyX\fR script has
-not yet been implemented in \fBtex2lyx\fR).
+." .TP
+." .BI \-p
+." Partial file. The input files are LaTeX fragments, with no preamble matter or
+." \f(CW\ebegin{document}\fR commands. This option requires the \fB\-c\fR option, since there
+." are no \f(CW\edocumentclass\fR commands in the files \fBtex2lyx\fR is translating. When
+." using this option, you can translate more than one file, as long as all files
+." are the same class. The LyX file created by \fBtex2lyx\fR can be included in an
+." existing LyX file using the \*(L"Include LyX File\*(R" command from
+." LyX's Insert menu. (\fBNOTE\fR: this feature of the older \fBreLyX\fR script has
+." not yet been implemented in \fBtex2lyx\fR).
+." .TP
+." .BI \-r
+." Regular environments (see the section on \fISyntax Files\fR).  If you give more than one
+." environment, separate them with commas (not spaces). You'll probably need to
+." quote the environment list, especially if it has asterisk environments (foo*)
+." in it. If you use this command often, considering creating a personal syntax
+." file. (\fBNOTE\fR: this feature of the older \fBreLyX\fR script has
+." not yet been implemented in \fBtex2lyx\fR).
 .TP
 .BI \-s
 Syntax files. Input (one or more quoted, comma-separated) syntax files to read
@@ -78,6 +73,9 @@ chosen. Cf. the section \f(CWFILES\fR for details.
 .BI \-userdir
 Specify a user directory. Normally, you shouldn't need this. Your LyX user directory is
 chosen. Cf. the section \f(CWFILES\fR for details.
+.TP
+.BI \-help
+Help. Print out usage information and quit.
 .SH "DESCRIPTION"
 .SS "Introduction"
 \fBtex2lyx\fR will create a LyX file \fIdir/foo.lyx\fR from the LaTeX file
index 1ce60e566c6c918afea324cee91b41c71ae6e8c2..be07d4c7ccd55a18de3aed51e11133c82477e283 100644 (file)
@@ -239,7 +239,7 @@ string documentclass;
 string default_encoding;
 string syntaxfile;
 bool overwrite_files = false;
-
+int error_code = 0;
 
 /// return the number of arguments consumed
 typedef int (*cmd_helper)(string const &, string const &);
@@ -247,26 +247,33 @@ typedef int (*cmd_helper)(string const &, string const &);
 
 int parse_help(string const &, string const &)
 {
-       cerr << "Usage: tex2lyx [ command line switches ] <infile.tex> [<outfile.lyx>]\n"
-               "Command line switches (case sensitive):\n"
-               "\t-help              summarize tex2lyx usage\n"
-               "\t-f                 Force creation of .lyx files even if they exist already\n"
-               "\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-e encoding        set the default encoding (latex name)\n"
+       cerr << "Usage: tex2lyx [options] infile.tex [outfile.lyx]\n"
+               "Options:\n"
+               "\t-c textclass       Declare the textclass.\n"
+               "\t-e encoding        Set the default encoding (latex name).\n"
+               "\t-f                 Force overwrite of .lyx files.\n"
+               "\t-help              Print this message and quit.\n"
                "\t-n                 translate a noweb (aka literate programming) file.\n"
-               "\t-s syntaxfile      read additional syntax file" << endl;
-       exit(0);
+               "\t-s syntaxfile      read additional syntax file.\n" 
+               "\t-sysdir dir        Set system directory to DIR.\n"
+               "\t-userdir DIR       Set user directory to DIR."
+            << endl;
+       exit(error_code);
+}
+
+
+void error_message(string const & message)
+{
+       cerr << "tex2lyx: " << message << "\n\n";
+       error_code = 1;
+       parse_help(string(), string());
 }
 
 
 int parse_class(string const & arg, string const &)
 {
-       if (arg.empty()) {
-               cerr << "Missing textclass string after -c switch" << endl;
-               exit(1);
-       }
+       if (arg.empty())
+               error_message("Missing textclass string after -c switch");
        documentclass = arg;
        return 1;
 }
@@ -274,10 +281,8 @@ int parse_class(string const & arg, string const &)
 
 int parse_encoding(string const & arg, string const &)
 {
-       if (arg.empty()) {
-               cerr << "Missing encoding string after -e switch" << endl;
-               exit(1);
-       }
+       if (arg.empty())
+               error_message("Missing encoding string after -e switch");
        default_encoding = arg;
        return 1;
 }
@@ -285,10 +290,8 @@ int parse_encoding(string const & arg, string const &)
 
 int parse_syntaxfile(string const & arg, string const &)
 {
-       if (arg.empty()) {
-               cerr << "Missing syntaxfile string after -s switch" << endl;
-               exit(1);
-       }
+       if (arg.empty())
+               error_message("Missing syntaxfile string after -s switch");
        syntaxfile = internal_path(arg);
        return 1;
 }
@@ -302,10 +305,8 @@ string cl_user_support;
 
 int parse_sysdir(string const & arg, string const &)
 {
-       if (arg.empty()) {
-               cerr << "Missing directory for -sysdir switch" << endl;
-               exit(1);
-       }
+       if (arg.empty())
+               error_message("Missing directory for -sysdir switch");
        cl_system_support = internal_path(arg);
        return 1;
 }
@@ -313,10 +314,8 @@ int parse_sysdir(string const & arg, string const &)
 
 int parse_userdir(string const & arg, string const &)
 {
-       if (arg.empty()) {
-               cerr << "Missing directory for -userdir switch" << endl;
-               exit(1);
-       }
+       if (arg.empty())
+               error_message("Missing directory for -userdir switch");
        cl_user_support = internal_path(arg);
        return 1;
 }
@@ -355,8 +354,12 @@ void easyParse(int & argc, char * argv[])
                        = cmdmap.find(argv[i]);
 
                // don't complain if not found - may be parsed later
-               if (it == cmdmap.end())
-                       continue;
+               if (it == cmdmap.end()) {
+                       if (argv[i][0] == '-')
+                               error_message(string("Unknown option `") + argv[i] + "'.");
+                       else
+                               continue;
+               }
 
                string arg(to_utf8(from_local8bit((i + 1 < argc) ? argv[i + 1] : "")));
                string arg2(to_utf8(from_local8bit((i + 2 < argc) ? argv[i + 2] : "")));
@@ -498,12 +501,8 @@ int main(int argc, char * argv[])
 
        easyParse(argc, argv);
 
-       if (argc <= 1) {
-               cerr << "Usage: tex2lyx [ command line switches ] <infile.tex> [<outfile.lyx>]\n"
-                         "See tex2lyx -help." << endl;
-               return 2;
-       }
-
+       if (argc <= 1) 
+               error_message("Not enough arguments.");
        os::init(argc, argv);
 
        try {
@@ -554,6 +553,8 @@ int main(int argc, char * argv[])
                exit(1);
        }
        encodings.read(enc_path, symbols_path);
+       if (!default_encoding.empty() && !encodings.fromLaTeXName(default_encoding))
+               error_message("Unknown LaTeX encoding `" + default_encoding + "'");
 
        // The real work now.
        masterFilePath = onlyPath(infilename);