]> git.lyx.org Git - lyx.git/blob - UPGRADING
Copy caveats from RELEASE-NOTES to UPGRADING
[lyx.git] / UPGRADING
1 How do I upgrade my existing LyX system to version 2.2.x?
2 ---------------------------------------------------------
3
4 * Upgrading from LyX 2.1.x:
5
6 With LuaTeX, LyX now uses polyglossia instead of babel if the language
7 package option "Automatic" is selected. In order to use babel, select
8 "Always babel" instead.
9
10 The format of preference and session files has changed. LyX 2.2.x is able to
11 read old files but will save them in the new format.
12
13 The format of layout files has changed but, as before, layout2layout.py will
14 convert older versions to the new format automatically.
15
16 The prefix for subsections in labels and references has been changed from
17 "sub:" to "subsec:" in order to avoid a clash with subfloats (conflicting
18 \subref command, see bug #7550). Files are automatically converted to the new
19 scheme. Please assure that you adapt external refstyle or prettyref definitions
20 and your own layout files.
21
22 BibTeX errors are now processed and cause LyX to show the errors dialog.
23 Before, these errors were ignored, which means that it may happen that
24 documents that compiled without error with a previous version now
25 compile with error. However, because now in 2.2.x users can click on
26 the "Show Output Anyway" button, the document can still be viewed.
27
28 Missing characters in the output are now reported as errors. This leads
29 to error reports for documents that compiled without error before.
30 However, the error was always present but went undetected!
31
32 Documents using Times fonts and containing Greek characters may now fail
33 to compile under pdflatex for users of MikTeX due to an automatically
34 half-installed "grtimes" package. A workaround in LyX was removed as it
35 stands in the way of alternative approaches (see bug #6469).
36
37 With LuaTeX, LyX now uses polyglossia instead of babel if the language
38 package option "Automatic" is selected. In order to use babel, select
39 "Always babel" instead. This may be needed if a document uses code that
40 is specific to babel.
41
42 * Upgrading from LyX 2.0.x:
43
44 Python version >=2.4 is now required.
45
46 Python version >3.0 is still not yet supported.
47
48 * Upgrading from LyX 1.6.x:
49
50 The typeset of your documents with non-english language can slightly
51 change in case of math environments and floats. LyX 2.0.x now has its
52 own translation machinery for the strings that are not translated by
53 babel.
54
55 The format of preference and session files has changed. LyX 2.0.x is
56 able to read old files but will save them in the new format.
57
58 The format of layout files has changed but, as before, layout2layout.py
59 will convert older versions to the new format automatically.
60
61 The syntax of the languages file has been changed. If you use a
62 modified languages file, you will need to adapt it to the new syntax.
63
64 There has been a large change in how Flex insets are named.
65 When exporting back to 1.6.x format user-defined flex insets will not
66 be properly reverted. See RELEASE-NOTES for details.
67
68 The UI layout named "classic.ui" and some localized keyboard bindings
69 (sv, pt, fi) are not being shipped anymore.
70
71 * Upgrading from LyX 1.5.x:
72
73 The format of preference and session files has changed. LyX 1.6.x is
74 able to read old files but will save them in the new format.
75
76 The format of layout files has changed but, as before,
77 layout2layout.py will convert older versions to the new format
78 automatically.
79
80 * Upgrading from LyX 1.4.x:
81
82 The biggest change in 1.5 is the switch to Unicode. Please refer to
83 the section "Document transfer" below for some things you might take
84 into account before upgrading.
85
86 The format of the preferences file has changed slightly. LyX 1.5.x is
87 able to read old preferences files, but it will save them in the new
88 format, so it is not possible to run LyX 1.4.x and 1.5.x with the same
89 personal configuration directory. If you are upgrading from 1.4.x and
90 do not intend to continue using 1.4.x, you should delete your existing
91 preferences file and allow LyX to create a new one.
92
93 The list of recently open files is now stored in a different location.
94 It will therefore be reset when upgrading from LyX 1.4.x.
95
96 The format of the layout files has also changed, but LyX 1.5.x uses a
97 converter layout2layout.py written in python that will convert old layout
98 files on the fly (see below, section "Document transfer").
99
100 * Upgrading from LyX 1.3.x:
101
102 The format of the external template file has changed substantially with
103 LyX 1.4.0. Automatic conversion is not available, so you need to convert
104 your external templates manually. The new format of the external template
105 configuration file is described in chapter 6.5 of the Customization Guide.
106
107 * Upgrading from LyX 1.2.x:
108
109 Since 1.3.0, you have to do the following changes:
110
111 One of the perennial bug bears of LyX users in the past has been that
112 they have had to run Edit->Reconfigure when starting their new version
113 of the code for the first time. Strange and wonderful things would
114 often result if they forgot to do this, so LyX 1.3.0 now runs
115 Edit->Reconfigure automatically the first time the program is run.
116
117 If you have your own layout files, you may need to update them a little:
118
119 - floats are now defined in the layout file, using the "Float"..."End"
120   construct. In most cases, adding "Input stdfloats.inc" to your layout
121   file is enough.
122
123 - counters are also defined in the layout files, using the
124   "Counter"..."End" construct. As for floats, adding "Input
125   stdfloats.inc" is probably a good idea.
126
127 * Upgrading from LyX 1.1.x:
128
129 - all layout files should have a "DefaultStyle" entry
130
131 - the "Latex" font style does not exist anymore. If you really need
132   its functionality, consider using the "PassThru" keyword instead.
133
134 The new layout format keywords are described in the Customization
135 manual.
136
137 If you have your own binding files (especially math.bind), you will
138 have to update them
139
140 - math-insert now takes a latex macro name as argument, so that
141   "math-insert sqrt" should now be "\math-insert \sqrt"
142
143 - math-greek-toggle is now gone, and should be replaced by explicit
144   bindings like
145
146   \bind "M-m g a"      "math-insert \alpha"
147
148
149 Build requirements
150 ------------------
151
152 LyX 2.0 uses the Qt 4.x toolkit (see INSTALL file).
153
154 If you do not have the JPEG library installed, you may need to install it
155 before you can use the graphics capabilities of LyX. If you do not have the
156 ImageMagick command-line tools installed, you will need to modify the default
157 set up of LyX, or install them, in order to get previews of your document's
158 graphics.
159
160 Document transfer
161 -----------------
162
163 * Compatibility with older documents/layouts
164
165 LyX 2.0.x uses an external python script, lyx2lyx, to import documents
166 written using previous versions of LyX. All versions of LyX as far back as
167 0.10 are supported.
168
169 Of course, this means that you must have python (>= 2.3.4, <3)
170 installed in order to use LyX 2.0.x with your old documents.
171
172 lyx2lyx also has the framework in place to be able to convert documents to an
173 earlier format (which requires python 2.3.4 at least). However, these
174 converters have only been written for the conversion from 2.0.x to 1.6.x,
175 1.5.x, 1.4.x and 1.3.x, so versions of LyX older than 1.3.0 will NOT be able to
176 read documents saved with LyX 2.0.x. The conversion from 2.0.x to 1.6.x-1.3.x
177 is lossless as long as no new features are used. lyx2lyx tries hard to find
178 something equivalent for new features such as boxes, but this is known to fail
179 sometimes. LyX 1.6.9 contains an updated lyx2lyx that can read documents in
180 2.0.x format.
181
182 Furthermore, LyX uses a converter layout2layout.py, also written in python
183 that will convert old layout files on the fly. You can also call it manually
184 on your layout files if you want to convert them to 2.0.x format permanently.
185
186 * Formatted references
187
188 Before version 2.0, LyX used the LaTeX package "prettyref" to produce 
189 "formatted references", such as "Section 2.1". This package has several 
190 shortcomings when used in a non-English environment, not least of which is 
191 that it has no mechanism for internationalization. (See bug #6421 and those
192 it references.) 
193
194 As of LyX 2.0, users can choose whether to use prettyref or, alternatively,
195 the "refstyle" package. The current version of refstyle, v0.5, ships with 
196 translations for several languages and provides an easy mechanism for users
197 to translate the references it produces into still other languages. It also 
198 defines many more commands than prettyref does, including, for example, ones
199 to produce "ranges", such as "Sections 2.1 to 2.3". Some LyX developers are 
200 already working with the refstyle maintainer, Danie Els, to make it work more 
201 easily  with LyX and to extend the translations it provides. (You are invited 
202 to contribute translations, too!)
203
204 Because many LyX users already have customized prettyref for their purposes,
205 LyX 1.6.x files opened in LyX 2.0 will continue to use prettref by default.
206 New LyX 2.0 files will use refstyle by default. Both can of course be changed 
207 in Document>Settings. Please be advised, however, that prettyref support is to
208 be considered deprecated: It may well be removed in LyX 2.1, and all users are
209 encouraged to adapt their layout files, etc, to refstyle.
210
211 Doing so is fairly simple. With prettyref, one has declarations such as:
212     \newrefformat{for}(Formula \ref{#1}}
213 The refstyle equivalent is:
214     \newref{for}{refcmd={Formula \ref{#1}}}
215 The translation is obviously trivial.
216
217 * Preparing for Unicode:
218
219 As of version 1.5.0, LyX uses Unicode internally. This is a major change that
220 affects documents and layouts likewise. We have tried to do out best to make the
221 transition as smooth as possible for you. However, there are some caveats:
222
223 - User layout files must be converted to UTF-8
224
225   In versions prior to 1.5.0, layout styles were allowed to use non-ASCII names
226   using the local encodings. LyX-1.5 and later assume that all layout files are
227   UTF-8 encoded. This means that non-ASCII style names are still allowed
228   but they must be valid UTF-8 strings. One way of doing the conversion
229   is to use iconv. Using bash, the script below should work:
230
231      #! /bin/sh
232
233      cd /path/to/layouts
234      for l in *
235      do
236        cp "$l" tmp.txt
237        iconv -f latin1 -t utf8 tmp.txt -o "$l"
238      done
239      rm -f tmp.txt
240
241 - Inset encodings and Conversion from earlier LyX versions
242
243   As part of the transition to unicode, lyx2lyx (the scripts used for
244   converting back and forth between different versions of the lyx
245   files) converts old .lyx files, which may use a number of different
246   encodings, to UTF-8. This conversion depends on correctly
247   identifying the language of the text. There were previously some
248   edge-cases (insets embedded in different-language text type
249   scenarios) in which the language was incorrectly identified, which
250   caused some text to appear incorrectly after having upgraded from
251   older versions. This has now been fixed. Unfortunately, however, the
252   fix cannot be applied to files which have already been converted
253   past format 249. So if you have already converted your old files
254   (using a development version or release candidate), this fix won't
255   help, unless you still have the originals lying around (and haven't
256   yet made too many changes to the newer versions ;) ).
257
258 Generally, it is probably wise to keep a backup of the old version of your
259 files, at least until you are sure that the upgrade went smoothly (which it
260 almost always will).
261
262 * Languages/encodings and insets
263
264 One of the bugs fixed in LyX 1.5.0 is that previously, there were certain
265 specific cases in which the LaTeX generated did not correctly reflect
266 language/encoding transitions in and around insets (footnotes, LyX notes).
267 After much deliberation, it was decided not to change older files such that
268 they will still reflect the old LaTeX output; rather, they will now correctly
269 reflect the situation as it appears in the GUI. This means, however, that if
270 you mangled the text in the GUI in the older versions, in order that it
271 generate the correct LaTeX output, the LaTeX will now generate the mangled
272 text. If this is problematic for you, please get in touch with us on the
273 developers mailing list, we do have some possible solutions for this.
274
275 The effects of this will be more pronounced for RTL (Hebrew, Arabic, Farsi)
276 users -- though they affect users of other languages as well.
277
278 * Floatflt in 1.2.x and older
279
280 If you were previously (in LyX 1.1.x) using the floatflt paragraph
281 option to wrap text around a figure, it was necessary to modify this
282 for LyX 1.2.0 manually, as described in the manuals. The feature has
283 been re-implemented as "Floating figure" inset in 1.3.0. Old files will
284 be converted automatically, but you may want to convert the
285 1.2.x-style ERT constructs with the native solution (see section 3.8
286 of the Extended Features manual).
287
288 * Babel changes since 1.2.x
289
290 Since LyX 1.2.0, the babel package is loaded after the user-defined
291 preamble (because some packages really need to be loaded before
292 babel). If you relied, on babel being loaded before your own
293 definitions, you can add an extra "\usepackage{babel}" statement at
294 the beginning of your preamble.
295
296 http://www.lyx.org/trac/ticket/315