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