Another minor change, but this should almost get us to the point that we
[lyx.git] / src / tex2lyx / tex2lyx.1in
blob338726bc0621c79d7df3cf37c071e899838a9da1
1 .\" Man page for tex2lyx.
2 .\" Use the following command to view man page:
3 .\"
4 .\"  tbl tex2lyx.1 | nroff -man | less
5 .\"
6 .TH TEX2LYX 1 "@LYX_DATE@" "Version @VERSION@" "tex2lyx @VERSION@"
7 .SH NAME
8 tex2lyx@version_suffix@ \- translate well-behaved LaTeX into LyX
9 .\"
10 .\" setup
11 .de Cr
12 .ie n (c)
13 .el \(co
15 .SH SYNOPSIS
16 The simplest way to use \fBtex2lyx\fR is via the File->Import->LaTeX
17 (plain) menu item in LyX. That runs \fBtex2lyx\fR on the given file
18 and loads the resulting file into LyX. You should try that first, and
19 call it from the command line only if you need to use more complicated
20 options.
21 .PP
22 \fBtex2lyx\fR [ \fB\-userdir\fR \fIuserdir\fR ] [ \fB\-systemdir\fR \fIsystemdir\fR ]
23 [ \fB\-n\fR ] [ \fB\-c\fR \fItextclass\fR ] [\ \fB\-s\fR\ \fIsfile1\fR[,\fIsfile2\fR...]]
24 \fIinputfile\fR  
25 ." .PP
26 ." \fBtex2lyx\fR [ \fB\-userdir\fR \fIuserdir\fR ] [ \fB\-systemdir\fR \fIsystemdir\fR ]
27 ." [\ \fB\-r\fR\ \fIrenv1\fR[,\fIrenv2\fR...]] [\ \fB\-s\fR\ \fIsfile1\fR[,\fIsfile2\fR...]]
28 ." \fIinputfiles\fR \fB\-p\fR \fB\-c\fR \fItextclass\fR
29 .SH "OPTIONS"
30 .TP
31 .BI \-c
32 Class. By default, when \fBtex2lyx\fR sees a \f(CW\edocumentclass{foo}\fR command, it
33 creates a file of textclass \*(L"foo\*(R" and reads the LyX layout file for that class
34 (something like /usr/local/share/lyx/layouts/foo.layout \s-1OR\s0
35 \fB\s-1HOME\s0\fR/.lyx/layouts/foo.layout).  Use \fB\-c\fR to declare a different textclass
36 (and read a different layout file).
37 .TP
38 .BI \-f
39 Force. \fBtex2lyx\fR will not run if the .lyx file it would generate already exists.
40 Use the \fB\-f\fR option (carefully) to clobber any existing files.
41 .TP
42 .BI \-n
43 Noweb. Translate a noweb (aka literate programming) file. This should be
44 (almost?) equivalent to running \*(L"noweb2lyx foo.tex foo.lyx\*(R". This option
45 requires the \fB\-c\fR option.
46 ." .TP
47 ." .BI \-p
48 ." Partial file. The input files are LaTeX fragments, with no preamble matter or
49 ." \f(CW\ebegin{document}\fR commands. This option requires the \fB\-c\fR option, since there
50 ." are no \f(CW\edocumentclass\fR commands in the files \fBtex2lyx\fR is translating. When
51 ." using this option, you can translate more than one file, as long as all files
52 ." are the same class. The LyX file created by \fBtex2lyx\fR can be included in an
53 ." existing LyX file using the \*(L"Include LyX File\*(R" command from
54 ." LyX's Insert menu. (\fBNOTE\fR: this feature of the older \fBreLyX\fR script has
55 ." not yet been implemented in \fBtex2lyx\fR).
56 ." .TP
57 ." .BI \-r
58 ." Regular environments (see the section on \fISyntax Files\fR).  If you give more than one
59 ." environment, separate them with commas (not spaces). You'll probably need to
60 ." quote the environment list, especially if it has asterisk environments (foo*)
61 ." in it. If you use this command often, considering creating a personal syntax
62 ." file. (\fBNOTE\fR: this feature of the older \fBreLyX\fR script has
63 ." not yet been implemented in \fBtex2lyx\fR).
64 .TP
65 .BI \-s
66 Syntax files. Input (one or more quoted, comma-separated) syntax files to read
67 in addition to the default. (see the section on \fISyntax Files\fR for details).
68 .TP
69 .BI \-sysdir
70 Specify a system directory. Normally, you shouldn't need this. Your LyX system directory is
71 chosen. Cf. the section \f(CWFILES\fR for details.
72 .TP
73 .BI \-userdir
74 Specify a user directory. Normally, you shouldn't need this. Your LyX user directory is
75 chosen. Cf. the section \f(CWFILES\fR for details.
76 .TP
77 .BI \-help
78 Help. Print out usage information and quit.
79 .SH "DESCRIPTION"
80 .SS "Introduction"
81 \fBtex2lyx\fR will create a LyX file \fIdir/foo.lyx\fR from the LaTeX file
82 \fIdir/foo.tex\fR.
83 .PP
84 Suffixes .tex, .ltx and .latex are supported. If \fIinputfile\fR
85 does not exist and does not have one of these suffixes, \fBtex2lyx\fR will try to
86 translate \fIinputfile.tex\fR. (This is similar to the behavior of LaTeX.)
87 .PP
88 The purpose of \fBtex2lyx\fR is to translate \fIwell-behaved\fR LaTeX2e into LyX. If
89 your LaTeX file doesn't compile---or if you do weird things, like redefining
90 standard LaTeX commands---it may choke. LaTeX209 will often be translated
91 correctly, but it's not guaranteed.
92 .PP
93 \fBtex2lyx\fR lacks a few features. However, its main goals are:
94 .IP "\(bu" 4
95 Get through a well-behaved LaTeX2e file without crashing
96 .IP "\(bu" 4
97 Translate a lot of that file.
98 .IP "\(bu" 4
99 Localize the parts that can't be translated and copy them in TeX mode
101 It achieves these main goals pretty well on most files.
102 .SS "Usage"
103 Here's a more lengthy description of what you should do to translate a LaTeX
104 document into LyX.
105 .IP "\(bu" 4
106 Run \fBtex2lyx\fR.
107 .IP ""
108 \fBtex2lyx\fR will inform you of its progress and give any warnings to stderr, so if
109 you don't want any output at all, try (in csh) \*(L'tex2lyx foo.tex >& /dev/null\*(R'.
110 You should \s-1NOT\s0 redirect standard output to \fIfoo.lyx\fR.
111 .IP "\(bu" 4
112 Run LyX (version 1.4 or later) on the resulting .lyx file.
113 .IP ""
114 In theory, most of the file will have been translated, and anything that's
115 untranslatable will be transferred to TeX code (ERT in LyX-speak). In theory, LyX will be
116 able to read in the file, and to create printed documents from it, because all
117 that untranslated ERT stuff will be passed directly back to LaTeX, which LyX
118 uses as a backend. Unfortunately, reality doesn't always reflect theory. If
119 \fBtex2lyx\fR crashes, or LyX cannot read the generated LyX file, see the \f(CWBUGS\fR section below.
120 .IP "\(bu" 4
121 Transform things have been inserted as TeX code manually to LyX features, if possible.
122 .IP ""
123 As mentioned above, you should be able to print out the LyX file even without
124 doing this. However, changing a command in TeX code to the corresponding LyX
125 object will allow you to take advantage of LyX's \s-1WYSIWYM\s0 editing.
126 .IP ""
127 \fBtex2lyx\fR is not guaranteed to create a LyX file which generates exactly the same
128 output as the LaTeX file, although its goal is to achieve this. \fBtex2lyx\fR will generally err
129 on the side of translating less to ensure that the resulting output files are accurate,
130 even though this leads to more TeX code and less \s-1WYSIWYM\s0.
131 .IP "\(bu" 4
132 \s-1PROOFREAD\s0 \s-1THE\s0 \s-1DOCUMENT\s0!!
133 .IP ""
134 I'm sure you were planning on doing this anyway, but it's particularly
135 important after translating a LaTeX document. \fBtex2lyx\fR is better
136 at \*(L"macro-translating\*(R" (translating the whole document) than
137 \*(L"micro-translating\*(R" (translating every little detail). For example, you may see
138 extra spaces or deleted spaces. Space handling has improved, but it's
139 not perfect.
140 .SS "What tex2lyx Can Handle"
141 \fBtex2lyx\fR understands many LaTeX commands. It will translate:
142 .IP "\(bu" 4
143 regular text, including mini-commands like ~, \*(L'\*(R', \f(CW\e@\fR, \f(CW\eTeX\fR, as well as
144 accented characters like \f(CW\e'{a}\fR, and the special cases ?` and !`
145 .IP "\(bu" 4
146 title commands like \f(CW\eauthor\fR, \f(CW\edate\fR, \f(CW\etitle\fR, \f(CW\ethanks\fR and the
147 abstract environment
148 .IP "\(bu" 4
149 heading commands like \f(CW\esection\fR including starred commands (\f(CW\esection*\fR)
150 .IP "\(bu" 4
151 Environments: quote, quotation, and verse; center, flushright, and flushleft
152 .IP "\(bu" 4
153 itemize, enumerate, and description environments, and their \f(CW\eitem\fR commands.
154 Also, well-behaved nested lists
155 .IP "\(bu" 4
156 cross-referencing commands: \f(CW\eref\fR, \f(CW\epageref\fR, \f(CW\elabel\fR, and \f(CW\ecite\fR
157 .IP "\(bu" 4
158 \f(CW\efootnote\fR and \f(CW\emargin\fR
159 .IP "\(bu" 4
160 font-changing commands including \f(CW\eem\fR, \f(CW\eemph\fR, \f(CW\etextit\fR, and
161 corresponding commands to change family, size, series, and shape
162 .IP "\(bu " 4
163 \f(CW\einput{foo}\fR (or \f(CW\einput{foo.blah}\fR) and \f(CW\einclude{foo}\fR. Plain TeX
164 \f(CW\einput\fR command \*(L"\f(CW\einput foo.tex\fR\*(R" is also supported.
165 .IP "\(bu" 4
166 tabular environment, and commands that go inside it like \f(CW\ehline\fR, \f(CW\ecline\fR,
167 and \f(CW\emulticolumn\fR (but see below)
168 .IP "\(bu" 4
169 float environments table and table*, as well as \f(CW\ecaption\fR commands within
170 them
171 .IP "\(bu" 4
172 float environments figure and figure*, as well as graphics inclusion commands
173 \eepsf, \eepsffile, \eepsfbox, \eepsfxsize, \eepsfig, \epsfig, and \eincludegraphics.
174 Both the graphics and graphicx forms of \eincludegraphics are supported.
175 .IP "\(bu" 4
176 thebibliography environment and \f(CW\ebibitem\fR command, as well as BibTeX's
177 \f(CW\ebibliography\fR and \f(CW\ebibliographystyle\fR commands
178 .IP "\(bu" 4
179 miscellaneous commands: \f(CW\ehfill\fR, \f(CW\e\fR\f(CW\e\fR, \f(CW\enoindent\fR, \f(CW\eldots\fR...
180 .IP "\(bu" 4
181 documentclass-specific environments (and some commands) which can be
182 translated to LyX layouts
183 .IP "\(bu" 4
184 arguments to certain untranslatable commands (e.g. \f(CW\embox\fR)
186 Some of this support may not be 100% yet. See below for details
188 \fBtex2lyx\fR copies math (almost) verbatim from your LaTeX file. Luckily, LyX reads
189 in LaTeX math, so (almost) any math which is supported by LyX should work just
190 fine.
192 \fBtex2lyx\fR will copy any preamble commands (i.e., anything before
193 \f(CW\ebegin{document}\fR) verbatim. Fancy stuff you've got in your preamble
194 should thus be conserved in printed documents, although it will not of
195 course show up in the LyX window. Check Document->Settings->LaTeX Preamble to see the result.
196 .SS "What tex2lyx Can't Handle --- But it's \s-1OK\s0"
197 .IP "\(bu" 4
198 tabular* tables
199 .IP "\(bu" 4
200 some spacing commands (\f(CW\ehspace\fR, \f(CW\epagebreak\fR and \f(CW\elinebreak\fR)
201 .IP "\(bu" 4
202 \f(CW\ecentering\fR, \f(CW\eraggedleft\fR, \f(CW\eraggedright\fR
203 .IP "\(bu" 4
204 \f(CW\everb\fR and verbatim environment. \fBtex2lyx\fR is careful to copy \fIexactly\fR in
205 this case, including comments and whitespace.
206 .IP "\(bu" 4
207 unknown (e.g., user-defined) environments and commands
209 \fBtex2lyx\fR copies unknown commands, along with their arguments, verbatim into the
210 LyX file. Also, if it sees a \f(CW\ebegin{foo}\fR where it doesn't recognize the
211 \*(L"foo\*(R" environment, it will copy verbatim until it sees \f(CW\eend{foo}\fR (unless
212 you use the \fB\-r\fR option). Most of these unknown commands
213 won't cause \fBtex2lyx\fR to break; they'll merely require you to do some editing
214 once you've loaded the file up in LyX.  That should be less painful than
215 editing either the .tex or the .lyx file using a text editor.
216 .SS "What tex2lyx Handles Badly --- aka \s-1BUGS\s0"
217 Since \fBtex2lyx\fR is relatively new, it's got a number of problems.  As it
218 matures, these bugs will be squished.
219 .IP "\(bu" 4
220 \*(L"Exact\*(R" copying of unknown environments and commands isn't quite exact.
221 This will yield ugly LyX, but in almost all cases the output will be the same. 
222 However, most parts of the file will be copied perfectly, including whitespace 
223 and comments. This includes: the LaTeX preamble, verbatim environments as well as
224 \f(CW\everb\fR commands, and skip blocks.
225 .IP "\(bu" 4
226 \fBtex2lyx\fR translates only a subset of the document class options to native features.
227 Other options are placed in the \*(L"options\*(R" field in the Document->Settings popup.
228 .IP ""
229 More importantly, \fBtex2lyx\fR doesn't translate \f(CW\enewcommands\fR, unknown
230 \f(CW\eusepackage\fR commands and other unknown code in the preamble. It
231 simply copies that into the LaTeX preamble. If you use special commands, e.g. to
232 specify the text layout in a way that that is not understood by LyX, tex2lyx won't
233 recognize it. Note that these settings will be overwritten if you modify the text 
234 layout in LyX's document settings. Better remove these special options from the LaTeX 
235 preamble (Document->Settings->LaTeX Preamble) and use the corresponding LyX document 
236 settings, if possible.
237 .IP "\(bu" 4
238 The foil document class has a couple of bugs. \fBtex2lyx\fR may do weird things with optional
239 arguments to \f(CW\efoilhead\fR commands. Also, it may handle \f(CW\ebegin{dinglist}\fR
240 incorrectly (although the stuff in the environment should translate normally).
242 All known bugs of \fBtex2lyx\fR can be found on \fI\s-1http://bugzilla.lyx.org\s0\fR.
244 \fBtex2lyx\fR is rather robust. As mentioned above, it may not translate
245 your file perfectly, but the result should be usable and it shouldn't crash. If you encounter
246 problems---and the problem is not one of those mentioned above or on 
247 \fI\s-1http://bugzilla.lyx.org\s0\fR---please report the issue as described in the section 
248 on \fIBug Reports\fR.
249 .SS "What LyX Can't Handle"
250 LyX itself is missing a couple of features, such that even if \fBtex2lyx\fR translates
251 things perfectly, LyX may still have trouble reading it. If you really need
252 these features, you can export your final document as LaTeX, and put them
253 back in. See \fI\s-1BUGS\s0\fR for more details on these bugs.
254 .IP "\(bu" 4
255 For a number of commands (such as \f(CW\e\e\fR), LyX does not support the optional argument.
256 \fBtex2lyx\fR will automatically discard the optional arguments with a warning to
257 stdout.  LyX also ignores the width argument for the thebibliography
258 environment.
259 .IP "\(bu" 4
260 LyX support for tables isn't perfect. For complicated tables, use a \*(L"skip\*(R"
261 block, so that they will be copied in TeX mode.
262 .IP "\(bu" 4
263 LyX allows figures to have sizes in the units known to TeX, such as in, cm, etc. It also 
264 translates percentages of \etextwidth, \etextheight, \ecolumnwidth, but no other lengths 
265 (e.g. if you wanted to scale a figure to size \etopmargin for some reason). \fBtex2lyx\fR 
266 will copy figures with untranslatable sizes in TeX mode. Again, you might be able to fix 
267 that within LyX.
268 .SH "EXAMPLES"
269 tex2lyx \fB\-f\fR \fB\-r\fR \*(L"myenv\*(R" foo.tex
271 The above will create a file foo.lyx from foo.tex, overwriting if
272 necessary.  When it finds a \f(CW\ebegin{myenv} ... \eend{myenv}\fR block, it will
273 translate the stuff within the block, but copy the \f(CW\ebegin\fR and \f(CW\eend\fR
274 commands in TeX mode.
276 tex2lyx \fB\-n\fR \fB\-c\fR \*(L"literate-article\*(R" foo.tex
278 The above will change a noweb document into a LyX literate-article
279 document. A user would do this if the noweb document had documentclass
280 article.
281 .SH "NOTES"
282 .SS "Bug Reports"
283 Bugs should be reported to the LyX bug tracker at http://bugzilla.lyx.org. Additionally,
284 you can post a message to the LyX developers\*(R' mailing list. Its address is currently
285 lyx-devel@lists.lyx.org. If your message bounces, you can check the LyX home page, 
286 http://www.lyx.org/. If you are running \fBtex2lyx\fR on a huge file, please do not send all of the output in 
287 your bug report. Just include the last ten or twenty lines of output, along with 
288 the piece of the LaTeX file it crashed on.  Or, even better, attach a small but 
289 complete file which causes the same problem as your original file.
290 .SS "Layout Files"
291 \fBtex2lyx\fR reads a LyX layout file to know how to handle LaTeX environments and
292 commands which get translated to LyX layouts. This file will include all
293 \*(L"normal\*(R" non-math environments (i.e., including quote and itemize, but not
294 tabular, minipage, and some other fancy environments), and commands like
295 \f(CW\esection\fR and \f(CW\etitle\fR. If you want to tex2lyx a class that doesn't have an
296 existing layout file, then you'll have to create a layout file. But you have
297 to do this anyway, in order to LyX the file, since LyX depends on layout files
298 to know how to display and process its files. Check the LyX documentation for
299 help with this task (which can be hard or easy, depending on the class you
300 want to create a layout file for.) If your class is quite similar to a class
301 that has a layout file, then consider using the \fB\-c\fR option.
302 .SS "Syntax Files"
303 \fBtex2lyx\fR always reads at least one syntax file, called the default syntax file.
304 \fBtex2lyx\fR will read your personal syntax file if it exists; otherwise it will
305 read the system-wide file. \fBtex2lyx\fR will read additional syntax files if you
306 specify them with the \fB\-s\fR option. (These extra files should have the same
307 format as the default file, but will tend to be shorter, since they only have
308 to specify extra commands not found in the default file.) A syntax file tells
309 \fBtex2lyx\fR a few things.
311 First, it describes the syntax of each command, that is, how many required
312 arguments and how many optional arguments the command takes. Knowing this
313 makes it easier for \fBtex2lyx\fR to copy (in TeX mode) commands that it doesn't
314 know how to translate. The syntax file simply has a command, followed by
315 braces or brackets describing its arguments in the correct order. For example,
316 a syntax file entry \f(CW\ebibitem[]{}\fR means that the \f(CW\ebibitem\fR command takes
317 an optional argument followed by a required one, while the entry \f(CW\ebf\fR
318 means that the \f(CW\ebf\fR command takes no arguments at all.  When \fBtex2lyx\fR
319 encounters a token that it doesn't know how to translate into LyX, it will
320 copy the token---along with the correct number of arguments---exactly.  If the
321 token is not in the syntax file, then \fBtex2lyx\fR just copies as many arguments
322 as it finds.  This means that it may copy too much. But since the user can
323 specify additional syntax files, that shouldn't happen often.
325 Some commands that cannot be translated to LyX, like \f(CW\embox\fR, have as one of
326 their arguments regular LaTeX text. If the string \*(L"translate\*(R" is put into an
327 argument of an (untranslatable) command in the syntax file, then \fBtex2lyx\fR will
328 translate that argument instead of copying it verbatim. So, for example, the
329 default syntax file has \f(CW\eraisebox{}[][]{translate}\fR. This means that the
330 \f(CW\eraisebox\fR command and the first argument (and optional arguments if they
331 exist) are copied in TeX mode, but the last argument (which may contain math,
332 complicated LaTeX, other untranslatable commands, etc.) will be translated
333 into LyX. You can't use \*(L"translate\*(R" on optional arguments.
335 User-defined syntax files are allowed to define new commands and
336 their syntax, or override the number of arguments for a command given in the
337 default syntax file. (E.g., if you're using a style that gives an extra
338 argument to some command...) However, this will only be useful for commands
339 copied in TeX mode. Commands which are actually translated by \fBtex2lyx\fR (like
340 \f(CW\eitem\fR) have their argument syntax hard-coded. The hard-coded commands are
341 identified in the default syntax file.
343 Second, the syntax file describes any \*(L"regular environments\*(R".  Usually, an
344 entire unknown environment will be copied in TeX mode. If you define a regular
345 environment \*(L"foo\*(R", though, then only the \f(CW\ebegin{foo}\fR and \f(CW\eend{foo}\fR
346 commands will be copied in TeX mode; the text within the environment will be
347 treated (i.e., translated) by \fBtex2lyx\fR as regular LaTeX, rather than being
348 copied into TeX mode. Don't try to declare \*(L"tabbing\*(R" and \*(L"picture\*(R" as regular
349 environments, as the text within those environments will confuse \fBtex2lyx\fR; use
350 this capability for new environments you create that have plain text or math
351 or simple commands in them. You also can't declare unknown math environments
352 (like equation*) as regular environments, either, since the LyX math editor
353 won't understand them. The names of regular environments appear,
354 whitespace-separated, between \f(CW\ebegin{tex2lyxre}\fR and \f(CW\eend{tex2lyxre}\fR
355 statements in the syntax file. (If you have a regular environment which you
356 won't use very often, you can use the \fB\-r\fR option rather than writing a
357 syntax file.)
358 .SH "WARNINGS"
359 Always keep a copy of your original LaTeX files either under a different
360 name or in a different directory. There are a couple ways in which using LyX
361 could lead to overwriting the original LaTeX file.
363 If you import foo.tex to create foo.lyx, then edit foo.lyx and want to
364 re-export it, note that it will overwrite the original foo.tex. (LyX will ask
365 you if you want to overwrite it.)
366 .SH ENVIRONMENT
367 .TP 6
368 .B @LYX_DIR_VER@
369 can be used to specify which system directory to use.
371 The system directory is determined by searching for the file
372 "chkconfig.ltx". Directories are searched in this order:
374 1) \-sysdir command line parameter
376 2) @LYX_DIR_VER@ environment variable
378 3) Maybe <path of binary>/TOP_SRCDIR/lib
380 4) <path of binary>/../share/<name of binary>/
382 5) hardcoded lyx_dir (at build time: @real_pkgdatadir@)
384 .B @LYX_USERDIR_VER@
385 can be used to specify which user directory to use.
387 The user directory is, in order of precedence:
389 1) \-userdir command line parameter
391 2) @LYX_USERDIR_VER@ environment variable
393 3) $HOME/.<name of binary> if no explicit setting is made
394 .SH "FILES"
396 If \fI\s-1LIBDIR\s0\fR is the system-wide LyX directory and
397 \fI\s-1MY_LYXDIR\s0\fR 
398 is your personal LyX directory, then the following files are read by tex2lyx:
399 .IP "\fI\s-1MY_LYXDIR\s0\fR/layouts/*.layout" 4
400 User's personal layout files for document classes
401 .IP "\fI\s-1MY_LYXDIR\s0\fR/syntax.default" 4
402 User's personal syntax file
403 .IP "\fI\s-1LIBDIR\s0\fR/layouts/*.layout" 4
404 System-wide layout files for document classes
405 .IP "\fI\s-1LIBDIR\s0\fR/lib/syntax.default" 4
406 System-wide LaTeX syntax file
407 .SH "SEE ALSO"
408 \fIlyx@version_suffix@\fR\|(1), \fIlatex\fR\|(1)
409 .SH "AUTHORS"
410 tex2lyx is Copyright (c) 2003ff. by the LyX Team (lyx-devel@lists.lyx.org)