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