About the new features in LyX 1.6

What's new in LyX 1.6?



The LyX Team



November 2008

The development of LyX 1.6.0 took off in July 2007. In November 2008, LyX 1.6.0 was finally released. Here's an overview of the major new features that were implemented.

Categories: Development, LyX_1_6

Abdelrazak Younes enhanced the way work areas are implemented. In LyX 1.5 a window was composed of a tab bar and a single work area; the tab bar was basically just a handy way for switching documents in the one work area. Now, there are as many work areas as tab items. This means two things to the user:

An open document can be hidden without a tab element being affected. This is especially useful for documents that have multiple child documents that you don't really want to edit. This also means that a given buffer can be hidden without being closed.

Two windows do not have the same set of tab elements: users can arrange which documents to edit in each window.

The support for multiple work areas paved the way to so-called "split-view" support. Abdelrazak Younes finally implemented that long-awaited feature. Split views works the same way as multiple windows except that (of course) they share the same window, including the menubar and the toolbars.

Martin Vermeer enhanced the way collapsible insets can be configured.

Formatting information can be specified in layout files

Besides character styles, custom (user defined) insets can be defined in layout files now.

Richard Heck has given birth to the "layout modules" feature. To add anything to the layout in LyX (for example, a custom character style), you previously had to edit the layout files themselves. This feature allows the use of layout "modules" which can be chosen within Document→Settings. So, for example, you could put all your custom character styles into mycharstyles.module, and then use this module with any document class. LyX 1.6 will ship with several modules, too, including one that defines an custom endnote inset (see above.) The third-party modules started to grow here.

Richard Heck rewrote the internal representation of BibTeX data and, as a result, was able to add new search functionality to the citation dialog. You can now search by field (author, title, etc) and by entry type (article, book, etc). Richard has also added a cache for BibTeX data, which will speed up use of the citation dialog significantly for users on slower machines and for those who use large BibTeX databases.

Layout Categories. Layouts in LyX 1.6 are grouped into categories. The layout list will display small category headers to make it easier to find the right layout.

Layout List Filtering. The number of possible layouts can be huge. The layout list sometimes fills up the screen space and makes scrolling necessary. Stefan Schimanski added a keyboard filter mechanism: just type some characters of the layout you are after. The list will shrink to the matches of your search. Together with the shortcut "M-p Space" to open the layout list, you are always only a few keys away from any layout.

Sorting. Up to now only thematical sorting of available layouts was possible. Alphabetical sorting for better orientation in longer layout lists is also possible in 1.6.

Pavel Sanda has implemented support for the LaTeX-package hyperref. With hyperref you can link all cross-references, URLs, etc. in the PDF and DVI output. You can furthermore automatically create PDF-bookmarks, set the appearance of links, set the start properties of PDF (fullscreen, zoom, etc.) and set header information so that indexing services are able to gather summary from your PDF document. The hyperref options dialog is shown below:

Uwe Stöhr has rewritten the handling of URLs and created a dialog to produce hyperlinks.

URLs

The menu Insert→URL has been moved to Insert→Custom insets→URL. This creates a collapsible inset with only one field. The former inset with an additional field for the URL name is now used for hyperlinks (see next paragraph). URL insets of existing LyX documents will be transformed into the new custom inset URLs.

Hyperlinks

LyX 1.6.0 introduces a new inset to create hyperlinks. Link target, name, and type can be specified. If no link name is given, the target will be displayed in the output.

Uwe Stöhr has revised LyX's support for wrapped floats. The wrap float dialog now allows to optionally set an overhang for floats, that is, the float can be shifted horizontally with regard to the page margin. This new wrap float is furthermore now really able to float. Furthermore, you can specify the number of text lines that are required by the float (see the screenshot below). Finally, LyX now also has a wrap table float.

Thanks to Jürgen Spitzmüller, now all kind of floats, not only figure and table, can be rotated sideways. Furthermore, rotated figure and table floats can now span multiple columns.

LyX had support for subfigures, but it was both clumsy and outdated: Subfigure captions had to be entered in the graphics dialog, which disallowed both short titles and proper LyX cross-referencing and emphasizing; furthermore, subfigure support was based on the outdated package subfigure, which was superseded by the more powerful subfig a long time ago. LyX 1.6 not only switches to the newer package, but it also introduces a completely overhauled support for nested figures, including new support for nested floats of all kinds (tables, algorithms, etc.). The UI implemented by Jürgen is both easy and powerful: simply insert a figure/table/algorithm float into a figure/table/algorithm float to get a subfloat with a subcaption. All the stuff that works for ordinary floats (labels, short titles) work here as well.

Stefan Schimanski contributed a new implementation of math macros, the LyX counterpart of

ewcommand macros in TeX. You can define mathematical notations once and at one place in the document and use them all over your formulas. Although this was available in older LyX version to some extent, LyX 1.6 takes them seriously for the first time:

You can define math macros with up to 9 parameters.

Optional parameters with default values are supported, even more than one optional parameter.

Macros are position aware, i.e. LyX will know where they were defined in the document and which macro version is to be displayed at any point.

Redefine macros as you like throughout the buffer.

Remove and add parameters as you like. LyX will adapt all instances of the macro in the text.

LyX knows about macros in child and master documents. Create your macro collection in a macro file and use this in all your documents.

You can edit macros inline using holes to be filled with the parameters. Or use your beloved, old-style parameter list edit mode.

Render just a child document and LyX will make sure all macros are defined correctly, even though their real definition is e.g. in the master document.

For further details you can look here. If you like YouTube look here. Test cases can be found here.

Stefan Schimanski implemented the well-known completion in the math editor and in text mode. In an equation just enter \ and see available math commands including symbols and your own math macros, which are valid at that point. To match everybody's taste you can configure the grey inline completion and the completion popup for math and text via an extensive preferences pane. You can see a small screencast of completion in action here at YouTube.

Keybindings: Tab will "accept" the suggested completion. (Due to work by Richard Heck, implementing a suggestion by Günther Milde, this does not interfere with the use of Tab to navigate tables.) There is no default keybinding to ask LyX to suggest a completion, but individual users can bind any key they wish to "complete".

In order to further improve the user experience with regard to inset understanding, Abdelrazak Younes put in place a framework for tooltip showing in the document work area. Some tooltips show some practical advices, other indicate their content (as shown below for footnotes). Users are invited to send recommendation and/or ideas for further enhancements of this features to the devel list.

A framework for context menu was put in place by Abdelrazak Younes. Right-clicking somewhere in a text or math area will popup an edit context menu. Most insets have specific context menus. Below is the current context menu of the citation inset as an example:

Jürgen Spitzmüller has implemented a symbols dialog. It provides access to all supported symbols of the given encoding.

Did you know LyX supported horizontal spaces like \qquad and \enskip as of 1.4.0? No? Probably, because they could be accessed only via esoteric LyX functions. Now LyX comes with a horizontal space dialog that lets you choose from a range of predefined horizontal spaces, similar to the established vertical space dialog. This dialog also contains the horizontal fill which was implemented as an inset of its own previously, and, as new features, custom horizontal space (LaTeX: \hspace and \hspace* ) as well as horizontal fills with patterns (LaTeX: \dotfill , \hrulefill , \rightarrowfill , \leftarrowfill , \upbracefill and \downbracefill ).

Edwin Leuven and Abdelrazak Younes revised the paragraph settings dialog for better usability. In particular it is now possible to have the paragraph settings synchronized with the currently edited paragraph. See the screenshot below:

Previously, it was offered to display graphics within LyX in monochrome or grayscale. Because those graphics transformations are performance and memory consuming and do not bring any graphical performance improvement, we decided to remove the options. This results in a simplified interface, especially for the external-material dialog, as the user doesn't have to wonder anymore if he should choose 'Color' or 'Preview'. Following this change, advanced users will need to adapt their external templates if any (see the release notes). This work was done by Abdelrazak Younes.

Thanks to Bo Peng LyX has now a nice user interface for the key bindings.

A shortcut configuration panel was added to the preferences dialog. It displays all shortcuts defined in the current bind file, and allows users to add and remove shortcuts.

A help document "Shortcuts" was added to the Help menu. It displays all current shortcuts in a nice table format.

This document is dynamic in the sense that its printout can vary from system to system, depending on system configuration. The magic behind this is a newly introduced inset called InsetInfo.

Stefan Schimanski added support for pasting graphics directly from the clipboard. Getting graphics into LyX usually takes a number of steps: draw it, export it, find it in the file dialog and insert it.

Now you can also easily copy graphics from any application and paste it via the clipboard as PNG or JPEG.

On Windows you can paste as metafile (EMF/WMF) data from nearly any application which gives you high quality vector graphics.

On Mac OSX you can paste as PDF data from nearly any application which gives you high quality vector graphics.

On Mac OSX you can paste via the LinkBack technology from any LinkBack-enabled application. This also gives you high quality PDF vector graphics, but in addition to that, also the ability to edit the figure later in the original editing application.

Uwe Stöhr revised the language support. LyX supports now also

Albanian

Bahasa Malaysia / Bahasa Melayu

Interlingua

Latin

Latvian

Lithuanian

Lower Sorbian

Mexican Spanish

Mongolian

North Sami

Polytonic Greek

Serbian (Cyrillic and Latin letters)

Vietnamese

With the help of Koji Yokota, Tetsuya Makimura, and Jürgen Spitzmüller, the support for Japanese has been improved. Furthermore, users of the CJK package for Chinese, Japanese, and Korean script can now also customize the font in the Document dialog.

Dov Feldstern added "visual mode" cursor movement in bidirectional text. This mode can be enabled in the "Language" pane of the preferences dialog, provided that RTL support is also enabled (logical mode is still the default).

this feature probably still requires some tweaking / bug-fixing. Please report any issues to the LyX developers mailing list!

Thanks to Uwe Stöhr, LyX now supports the LaTeX-commands \pagebreak and \linebreak . They act as "soft" break, stretching the rest of the page or line to the whole remaining page height and line width, respectively – in contrast to the already supported commands

ewpage and

ewline that function as "hard breaks".

While the shortcut C-Return still produces a "hard" line break (

ewline), the shortcut C-S-Return produces a soft line break (\linebreak).

and . They act as "soft" break, stretching the rest of the page or line to the whole remaining page height and line width, respectively – in contrast to the already supported commands and that function as "hard breaks". While the shortcut still produces a "hard" line break (

ewline), the shortcut produces a soft line break (\linebreak). Jürgen Spitzmüller added two new special characters:

- "Breakable Slash" inserts a slash after which a linebreak can occur (LaTeX: \slash ).

- "Protected Hyphen", a hyphen after which no linebreak must occur (amsmath's

obreakdash ).

- "Breakable Slash" inserts a slash after which a linebreak can occur (LaTeX: ). - "Protected Hyphen", a hyphen after which no linebreak must occur (amsmath's ). Bernhard Reiter implemented support for both,

ocite{<key>} (in the citation dialog) for adding specific entries to the bibliography without citing, and

ocite{*} (in the bibtex inset dialog) for citing all entries of specific bibtex databases.

Pavel Sanda added toggling visibility for certain GUI elements and full-screen mode editing became possible. Look here for details.

Ever since version 1.4.0 the scrolling behavior of LyX has had a lot of bugs and deficiencies. Abdelrazak Younes rewrote the scrolling code and fixed most of these. As a bonus you can now scroll with the keyboard using Ctrl-Alt-[up/right/PageUp/PageDown] shortcuts. Also, when right-clicking on the scrollbar a scrolling context menu pops up.

Abdelrazak Younes extended the outline panel which transformed into a "Navigator". The new navigator supports the following navigation lists:

Child Documents

Embedded Files

Labels and References: easy spotting of broken cross-references (because of an erased label), easy spotting of duplicated labels (since version 1.6 LyX tries to avoid that), easy spotting of unused/unreferenced labels, integration of math labels and reference, now works reliably across child documents.

Lists of floats (Algorithms/Figure/Table)

List of Citations

List of Changes (If change tracking is enabled)

List of Equations

List of Foot notes

List of Graphics

List of Indexes

List of Listings

List of Marginal notes

List of Notes

Table of Contents: This list is specific as it contains the outlining feature. In 1.6, the promote and demote features will move all child sections.

Note that the navigator has a 'Sort' checkbox that allows to enable the sorting of each list separately.

Abdelrazak Younes improved the session management that was introduced in the LyX-1.5 series significantly. Notable new features are:

each LyX main Window has its own session management. This means that if you arrange the geometry of two windows, for example, both windows will be restored with their previous geometry at next startup.

each child dialog remembers its last position and size when its referring LyX window is closed. In addition, some dialogs will also remember their last state with regard to check boxes, etc (see for example the paragraph dialog). Users are invited to make suggestion as to what should be saved additionally in the session information.

You can now define a default master file for your child documents in the Document dialog. The advantage of this is that LyX automatically takes informations such as bibliography keys, math macros and labels from the master, even if it is not opened. Gone are the days were you needed to put a bibtex inset in a comment to get citation working in the child documents. Furthermore, you can compile a master document from within child document via the master-buffer-view function without having to open this master file. This feature was contributed by Jürgen Spitzmüller.

Pavel Sanda sanitized the current VCS handling and added support for svn, so basic operations like update/commit/lock/log/new files adding work. Please refer to the Extended manual for further information.

Martin Vermeer changed the look and feel of index entries. They are now collapsible insets, so you can format them like any other kind of text in LyX.

Please note that, regrettably, the new index insets cannot always be reverted to earlier LyX versions without loss.

Imagine you have a lot of similar pictures in your document and want to change their size settings in the same way. Up to now you had to change them one by one or edit .lyx file directly in some plain editor. This kind of annoying task should be much simpler now. Pavel Sanda implemented a grouping mechanism for this purpose. You can now define a new group for any picture in the graphics dialog and any other picture can be joined to this group via its context menu. Changing settings of any picture from some particular group automatically changes all other pictures within this group.



It is now possible to bind several different LyX functions to a single key. LyX will then use the key to execute the first of these that is "enabled" in the present context. In the bind files, the key binding should be given in the following form:

\bind "Tab" "command-alternatives completion-accept;cell-forward;tab-insert;depth-increment;outline-in"

Following the "command-alternatives" keyword, one lists the alternative bindings in order, with the semi-colon delimiter.

Edwin Leuven implemented free line setting in tables. Where in LyX 1.5 lines were applied to complete rows and columns unless cells were multicolumn cells, now lines are applied to the selected range of cells only.

To facilitate line setting in complete rows/columns it is now also possible to selects complete rows/columns by a single click. For rows simply click at the beginning of the row and it will be selected. Dragging the mouse will select a range of rows. For columns selecting works similarly but now by clicking at the top of the column (and possibly dragging to select a range of columns).

Jürgen Spitzmüller has implemented a Linguistics module that provides numbered examples and glosses (uses the LaTeX-package "covington") as well as some semantic markup useful for linguistic papers.

module that provides numbered examples and glosses (uses the LaTeX-package "covington") as well as some semantic markup useful for linguistic papers. Uwe Stöhr added support for 6 dot Braille via the layout module Braille (uses the LaTeX-package "braille").

(uses the LaTeX-package "braille"). Jürgen Spitzmüller added support for the packages pdfpages via the external inset.

Thanks to Vincent van Ravesteijn it is is now possible to use tabulators in program listings. So you can directly copy C/C++ code to listings.

Stefan Schimanski added a preference setting to choose between opening new buffers in a tab or in a new window. The latter is set by default on Mac, the former on all other platforms. Moreover on Mac you can now close all LyX windows and LyX will stay running, just the way a typical Mac application behaves.

Uwe Stöhr added support for page margin and size settings when importing LaTeX files to LyX.

Pavel Sanda completed the documentation of all LyX functions (aka LFUNs). One result is here, more info here. Now it is also possible to access the docs through the help menu.

Jean-Marc Lasgouttes refactorised the code for undo operations. Actions which resulted in several subactions (and therefore several undo steps),

are now undone in one step. Using this infrastructure, document-wide operations like "replace all" now use less memory in big documents.

are now undone in one step. Using this infrastructure, document-wide operations like "replace all" now use less memory in big documents. Enrico Forestieri added handling of \ensuremath inside mathed environment.

\boldsymbol inside math environment can be now toggled via Ctrl+Alt+b.

The framed and shadowed notes have been reimplemented as part of the box inset.

Tabs can be dragged and dropped to change their order in the tab bar.

A find-next function was added and bound to the F3 shortcut.

The view source panel now highlights the line where a LaTeX error occurs if it is open while compiling

Note-inset types can be changed globally now via the notes-mutate LFUN.

Ctrl + mouse wheel can be used now to get a different zoom of text in LyX window, just like Firefox does.

(Shift+)Tab key can be used now inside enumerate-like environments for changing the depth and also in section-like environments for outlining in or out.

Unicode characters in mathed are supported now.

LyX starts up faster.

Change tracking now indicates changes from different authors with different colors, allowing more efficient collaboration.

André Pönitz did a lot of refactorization work and made a hunt on number of compiled lines

Abdelrazak Younes is responsible for general refactoring of GUI code

Uwe Stöhr took the job of keeping the LyX documentation up-to-date

Although new features are primarily developed in the development branch ("trunk"), few of them were backported to 1.6.x branch.