Le 20 avr. 09 à 00:13, lasgout...@lyx.org a écrit :
Log:
improve tex2lyx Usage display (on error...); describe option -e on man page; remove non-implemented -p and -r options

Juergen, can this go to branch too?

JMarc

Modified:
  lyx-devel/trunk/src/tex2lyx/tex2lyx.1in
  lyx-devel/trunk/src/tex2lyx/tex2lyx.cpp

Modified: lyx-devel/trunk/src/tex2lyx/tex2lyx.1in
= = = = = = = = ====================================================================== --- lyx-devel/trunk/src/tex2lyx/tex2lyx.1in Sun Apr 19 23:34:44 2009 (r29345) +++ lyx-devel/trunk/src/tex2lyx/tex2lyx.1in Mon Apr 20 00:13:43 2009 (r29346)
@@ -20,14 +20,12 @@
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 @@
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 @@
.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

Modified: lyx-devel/trunk/src/tex2lyx/tex2lyx.cpp
= = = = = = = = ====================================================================== --- lyx-devel/trunk/src/tex2lyx/tex2lyx.cpp Sun Apr 19 23:34:44 2009 (r29345) +++ lyx-devel/trunk/src/tex2lyx/tex2lyx.cpp Mon Apr 20 00:13:43 2009 (r29346)
@@ -239,7 +239,7 @@
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 @@

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_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_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 @@

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_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 @@
                        = 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 @@

        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 @@
                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);

Reply via email to