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
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
.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
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 &);
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;
}
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;
}
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;
}
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;
}
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;
}
= 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] : "")));
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 {
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);