#LyX 1.6.0alpha1 created this file. For more info see http://www.lyx.org/ \lyxformat 322 \begin_document \begin_header \textclass book \begin_preamble % DO NOT ALTER THIS PREAMBLE!!! % % This preamble is designed to ensure that the User's Guide prints % out as advertised. If you mess with this preamble, % parts of the User's Guide may not print out as expected. If you % have problems LaTeXing this file, please contact % the documentation team % email: lyx-docs@lists.lyx.org % the pages of the TOC are numbered roman % and a pdf-bookmark for the TOC is added \pagenumbering{roman} \let\myTOC\tableofcontents \renewcommand\tableofcontents{% \pdfbookmark[1]{Contents}{} \myTOC \cleardoublepage \pagenumbering{arabic} } % redefine the \LyX macro for PDF bookmarks \def\LyX{\texorpdfstring{% L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\@} {LyX }} % used for multi-column text \usepackage{multicol} \usepackage{inputenc} \end_preamble \begin_modules logicalmkup \end_modules \begin_local_layout Format 7 InsetLayout CharStyle:MenuItem LyxType charstyle LabelString menu LatexType command LatexName menuitem Font Family Sans EndFont Preamble \newcommand*{\menuitem}[1]{{\sffamily #1}} EndPreamble End \end_local_layout \language english \inputencoding default \font_roman default \font_sans default \font_typewriter default \font_default_family default \font_sc false \font_osf false \font_sf_scale 100 \font_tt_scale 100 \graphics none \paperfontsize default \spacing single \use_hyperref true \pdf_title "LyX Configuration Manual" \pdf_author "The LyX Team" \pdf_bookmarks true \pdf_bookmarksnumbered false \pdf_bookmarksopen false \pdf_bookmarksopenlevel 1 \pdf_breaklinks true \pdf_pdfborder true \pdf_colorlinks true \pdf_backref false \pdf_pagebackref false \pdf_pdfusetitle true \papersize default \use_geometry false \use_amsmath 0 \use_esint 0 \cite_engine basic \use_bibtopic false \paperorientation portrait \branch OutDated \selected 0 \color #f5fae7 \end_branch \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \papercolumns 1 \papersides 2 \paperpagestyle headings \tracking_changes false \output_changes false \author "" \author "" \extra_embedded_files "" \end_header \begin_body \begin_layout Title Customizing LyX: Features for the Advanced User \end_layout \begin_layout Author by the LyX Team \begin_inset Foot status collapsed \begin_layout PlainLayout \noindent If you have comments or error corrections, please send them to the LyX Documenta tion mailing list, . \end_layout \end_inset \end_layout \begin_layout Standard \begin_inset CommandInset toc LatexCommand tableofcontents \end_inset \end_layout \begin_layout Chapter Introduction \end_layout \begin_layout Standard This manual covers the customization features present in LyX. In it, we discuss issues like keyboard shortcuts, screen previewing options, printer options, sending commands to LyX via the LyX Server, internationalizati on, installing new LaTeX classes and LyX layouts, etc. We can't possibly hope to touch on everything you can change---our developers add new features faster than we can document them---but we will explain the most common customizations and hopefully point you in the right direction for some of the more obscure ones. \end_layout \begin_layout Standard \begin_inset Branch OutDated status open \begin_layout Standard Information from previous versions of this document that now seems to be outdated is contained in the OutDated branch of this document. By default, this information will not appear in the LaTeX output. \end_layout \end_inset \end_layout \begin_layout Chapter LyX configuration files \end_layout \begin_layout Standard \begin_inset CommandInset label LatexCommand label name "chap:config" \end_inset This chapter aims to help you to find your way through the LyX configuration files. Before continuing to read this chapter, you should find out where your LyX library and user directories are by using \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under H \bar default elp\SpecialChar \menuseparator About \begin_inset Space ~ \end_inset Ly \bar under X \end_layout \end_inset . The library directory is the place where LyX places its system-wide configurati on files; the user directory is where you can place your modified versions. We will call the former \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir \end_layout \end_inset and the latter \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout UserDir \end_layout \end_inset in the remainder of this document. \end_layout \begin_layout Section What's in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir \end_layout \end_inset ? \end_layout \begin_layout Standard \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir \end_layout \end_inset and its sub-directories contain a number of files and that can be used to customise LyX's behaviour. You can change many of these files from within LyX itself through the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under T \bar default ools\SpecialChar \menuseparator \bar under P \bar default references \end_layout \end_inset dialog. Most customization that you will want to do in LyX is possible through this dialog. However, many other inner aspects of LyX can be customized by modifying the files in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir \end_layout \end_inset . These files fall in different categories, described in the following subsection s. \end_layout \begin_layout Subsection Automatically generated files \end_layout \begin_layout Standard The files, which are to be found in \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout UserDir \end_layout \end_inset , are generated when you configure LyX. They contain various default values that are guessed by inspection. In general, it is not a good idea to modify them, since they might be overwritt en at any time. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout lyxrc.defaults \end_layout \end_inset contains defaults for various commands. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout packages.lst \end_layout \end_inset contains the list of packages that have been recognized by LyX. It is currently unused by the LyX program itself, but the information extracted , and more, is made available with \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under H \bar default elp\SpecialChar \menuseparator L \bar under a \bar default TeX \begin_inset Space ~ \end_inset Configuration \end_layout \end_inset . \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout textclass.lst \end_layout \end_inset the list of text classes that have been found in your \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout layout/ \end_layout \end_inset directories, along with the associated LaTeX document class and their descripti on. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout lyxmodules.lst \end_layout \end_inset the list of layout modules found in your \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout layout/ \end_layout \end_inset directories \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout *files.lst \end_layout \end_inset lists of various sorts of LaTeX-related files found on your system \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout doc/LaTeXConfig.lyx \end_layout \end_inset is automatically generated during configuration from the file \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LaTeXConfig.lyx.in \end_layout \end_inset . It contains information on your LaTeX configuration. \end_layout \begin_layout Subsection Directories \end_layout \begin_layout Standard These directories are duplicated between \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir \end_layout \end_inset . If a particular files exists in both places, the one in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir \end_layout \end_inset will be used. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout bind/ \end_layout \end_inset this directory contains files with the extension \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .bind \end_layout \end_inset that define the keybindings used in LyX (see section \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "sec:bindings" \end_inset ). If there exists an internationalized version of the bind file named \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $LANG_xxx.bind \end_layout \end_inset , that will be used first. See Chapter \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "chap:i18n" \end_inset , and section \begin_inset CommandInset ref LatexCommand ref reference "sec:bindings" \end_inset for details. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout clipart/ \end_layout \end_inset contains graphics files that can be included in documents. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout doc/ \end_layout \end_inset contains LyX documentation files (including the one you are currently reading). The file \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LaTeXConfig.lyx \end_layout \end_inset deserves special attention, as noted above. If there exists an internationalized version of the help-document with \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $LANG_ \end_layout \end_inset prepended to the name, that will be used first. See Chapter \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "chap:i18n" \end_inset for details. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout examples/ \end_layout \end_inset contains example files that explain how to use some features. In the file browser, press the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Examples \end_layout \end_inset button to get there. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout images/ \end_layout \end_inset contains image files that are used by the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Document \end_layout \end_inset dialog. In addition, it also contains the individual icons used in the toolbar and the banners that can be shown when LyX is launched. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout kbd/ \end_layout \end_inset contains keyboard keymapping files. See Chapter \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "sec:keymap" \end_inset for details. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout layouts/ \end_layout \end_inset contains the text class and module files described in Chapter \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "chap:textclass" \end_inset . \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout lyx2lyx \end_layout \end_inset contains the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout lyx2lyx \end_layout \end_inset Python scripts used to convert between LyX versions. These can be run from the command line if, say, you want to batch-convert files. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout scripts/ \end_layout \end_inset contains some files that demonstrate the capabilities of the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout External \begin_inset Space ~ \end_inset Template \end_layout \end_inset feature. Also contains some scripts used by LyX itself. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout templates/ \end_layout \end_inset contains the standard LyX template files described in Chapter \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "sec:templates" \end_inset . \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ui/ \end_layout \end_inset contains files with the extension \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .ui \end_layout \end_inset that define the user interface to LyX. That is, the files define which items appear in which menus and the items appearing on the toolbar. See \begin_inset CommandInset ref LatexCommand ref reference "sec:ui" \end_inset for details. \end_layout \begin_layout Subsection Files you don't want to modify \end_layout \begin_layout Standard These files are used internally by LyX and you generally do not need to modify them unless you are a developer. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout CREDITS \end_layout \end_inset this file contains the list of LyX developers. The contents are displayed with the menu entry \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under H \bar default elp\SpecialChar \menuseparator About \begin_inset Space ~ \end_inset LyX \end_layout \end_inset . \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout chkconfig.ltx \end_layout \end_inset this is a LaTeX script used during the configuration process. Do not run directly. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout configure.py \end_layout \end_inset this is the script that is used to re-configure LyX. It creates configuration files in the directory it was run from. \end_layout \begin_layout Subsection Other files needing a line or two... \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout encodings \end_layout \end_inset this contains tables describing how different character encodings can be mapped to unicode \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout external_templates \end_layout \end_inset this file contains the templates available to the new \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout External \begin_inset Space ~ \end_inset Template \end_layout \end_inset feature. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout languages \end_layout \end_inset this file contains a list of all the languages currently supported by LyX. \end_layout \begin_layout Section Your local configuration directory \end_layout \begin_layout Standard Even if you are using LyX as an unprivileged user, you might want to change LyX configuration for your own use. The \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir \end_layout \end_inset directory contains all your personal configuration files. This is the directory described as \begin_inset Quotes eld \end_inset user directory \begin_inset Quotes erd \end_inset in \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under H \bar default elp\SpecialChar \menuseparator About \begin_inset Space ~ \end_inset LyX \end_layout \end_inset . This directory is used as a mirror of \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir \end_layout \end_inset , which means that every file in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir \end_layout \end_inset is a replacement for the corresponding file in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir \end_layout \end_inset . Any configuration file described in the above sections can be placed either in the system-wide directory, in which case it will affect all users, or in your local directory for your own use. \end_layout \begin_layout Standard To make things clearer, let's provide a few examples: \end_layout \begin_layout Itemize The preferences set in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under T \bar default ools\SpecialChar \menuseparator \bar under P \bar default references \end_layout \end_inset dialog are saved to a file \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout preferences \end_layout \end_inset in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir \end_layout \end_inset . \end_layout \begin_layout Itemize When you reconfigure using \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under T \bar default ools\SpecialChar \menuseparator \bar under R \bar default econfigure \end_layout \end_inset , LyX runs the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout configure.py \end_layout \end_inset script, and the resulting files are written in your local configuration directory. This means that any additional text class file that you might have added in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir/layouts \end_layout \end_inset will be added to the list of classes in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under D \bar default ocument\SpecialChar \menuseparator \bar under S \bar default ettings \end_layout \end_inset dialog. \end_layout \begin_layout Itemize If you get some updated documentation from LyX ftp site and cannot install it because you do not have sysadmin rights on your system, you can just copy the files in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir/doc/ \end_layout \end_inset and the items in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under H \bar default elp \end_layout \end_inset menu will open them! \end_layout \begin_layout Section Running LyX with multiple configurations \end_layout \begin_layout Standard The configuration freedom of the local configuration directory may not suffice if you want to have more than one configuration at your disposal. For example, you may want to be use different key bindings or printer settings at different times. You can achieve this by having several such directories. You then specify which directory to use at run-time. \end_layout \begin_layout Standard Invoking LyX with the command line switch \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout -userdir \end_layout \end_inset \emph on \emph default instructs the program to read the configuration from that directory, and not from the default directory. (You can determine the default directory by running LyX without the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout -userdir \end_layout \end_inset switch.) If the specified directory does not exist, LyX offers to create it for you, just like it does for the default directory on the first time you run the program. You can modify the configuration options in this additional user directory exactly as you would for the default directory. These directories are completely independent (but read on). Note that setting the environment variable \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LYX_USERDIR_15x \end_layout \end_inset to some value has exactly the same effect. \end_layout \begin_layout Standard Having several configurations also requires more maintenance: if you want to add a new layout to \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout NewUserDir/layouts \end_layout \end_inset which you want available from all your configurations, you must add it to each directory separately. You can avoid this with the following trick: after LyX creates the additional directory, most of the subdirectories (see above) are empty. If you want the new configuration to mirror an existing one, replace the empty subdirectory with a symbolic link to the matching subdirectory in the existing configuration. Take care with the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout doc/ \end_layout \end_inset subirectory, however, since it contains a file written by the configuration script (also accessible through \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under T \bar default ools\SpecialChar \menuseparator \bar under R \bar default econfigure \end_layout \end_inset ) which is configuration-specific. \end_layout \begin_layout Chapter The Preferences dialog \end_layout \begin_layout Section Using the dialog for the first time \end_layout \begin_layout Standard The \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir/preferences \end_layout \end_inset file will contain only changes that you have made to the default behaviour, some of which is hard-coded into LyX and some of which is contained in the system file \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir/lyxrc.defaults \end_layout \end_inset . Note that in both files lines beginning with a \begin_inset Quotes eld \end_inset # \begin_inset Quotes erd \end_inset are just comments and are not interpreted. However, only system administrators should edit \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir/lyxrc.defaults \end_layout \end_inset . Users should use the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under T \bar default ools\SpecialChar \menuseparator \bar under P \bar default references \end_layout \end_inset dialog to create and modify their own \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir/preferences \end_layout \end_inset file. \end_layout \begin_layout Standard We hope that the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under T \bar default ools\SpecialChar \menuseparator \bar under P \bar default references \end_layout \end_inset dialog will be largely self-explanatory. Most things in the dialog have associated `tool tips': hover your mouse pointer over something for more information. Before we highlight a few of the more important commands below, however, a word of warning: \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Apply \end_layout \end_inset ing some of your changes (e.g., screen fonts) will have an instant effect. Others (e.g. changing the bind file) will not. If nothing appears to have changed, just \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Save \end_layout \end_inset the changes and restart LyX. \end_layout \begin_layout Section Look and Feel \end_layout \begin_layout Subsection Screen fonts \end_layout \begin_layout Standard The font used to display your documents on the LyX screen is very important, since you'll be reading all your documents with this font. Therefore it is important that the font be as readable and good-looking as possible. The LyX team tried to provide the best possible default font for you, but since systems can be so different, it's quite possible that the default fonts will be sub-optimal on your system. Fortunately, you can do something about this. Before we explain how, you should learn a bit more about fonts so that you are better prepared for choosing your fonts. There are trade-offs that are specific to your preferences and the capabilities of your system. \end_layout \begin_layout Standard Notice that this section only deals with the fonts on the \emph on screen \emph default inside the LyX window. The fonts that appear on the \emph on paper \emph default \emph on output \emph default are independent from these fonts, and are determined by the document class. Read the \emph on User's Guide \emph default to learn how to change the font of the printed version of your document. \end_layout \begin_layout Standard Basically, screen fonts come in two different kinds: scalable outline fonts and non-scalable bitmap fonts. This distinction seems a bit arbitrary, since non-scalable fonts are actually scalable in most modern font renderers. The difference lies in the \emph on quality \emph default of the scaling and the \emph on speed \emph default of display. The most important decision is thus whether you should use non-scalable bitmap fonts or scalable outline fonts. \end_layout \begin_layout Standard The scalable fonts are built from \emph on outlines \emph default of the single glyphs (i.e. characters) in the font. This means that each glyph is defined using mathematical curves that are well suited for scaling to any requested size. This mathematical definition is interpreted by the font renderer and turned into a small picture composed of pixels according to which size and glyph (or symbol) the programmer requests. This means that scalable fonts will look pretty good in most sizes.Since scalable fonts are defined in an abstract way, it can be hard to provide a good rendering at small sizes, where each pixel has to be very carefully computed to provide a good image. Technically it is possible to do this from the mathematical definition, but in order to keep the rendering reasonably fast, tradeoffs have to be made, and the result is that scalable fonts can be difficult to read at small sizes. \end_layout \begin_layout Standard Bitmap fonts on the other hand, are defined by bitmap graphics from the start, so they will look good at all the sizes they are meant for. However, they don't scale well, because in order to scale a glyph, each pixel is enlarged into several pixels. It is the same effect that happens if you try to enlarge a picture in an image manipulation program. In order to relieve this effect, bitmap fonts are typically provided in several fixed sizes typically from around 8 pixels high up to 34 pixels or so high in steps according to what is believed to be useful. The advantage of bitmap fonts is that no complicated computations are necessary to display each glyph, so bitmap fonts are thus faster displayed than scalable fonts. The disadvantage is that sizes that don't exists as fixed versions have to be scaled by doubling pixels, and thus look bad. \end_layout \begin_layout Standard The net result of all this is that bitmap fonts are generally best for the small sizes, where they are available, while scalable fonts are generally best for large sizes. The logical conclusion would thus be to use bitmap fonts for the small sizes, and scalable fonts for the large sizes. Unfortunately, this is not a good idea, since bitmap fonts and scalable fonts are not designed to be used together, so the overall look of such a scheme would be bad. The best you can do is thus to try both schemes and decide for yourself what suits you. \end_layout \begin_layout Standard In the following, we will describe what to do if the text does not look good in LyX. We'll start with the most important parameters: DPI and font zoom. \end_layout \begin_layout Subsubsection DPI setting and Font Zoom \end_layout \begin_layout Standard LyX automatically tries to scale the fonts to look as close as the paper output size as possible, except for the so-called font zoom factor. \end_layout \begin_layout Standard In order for this to work on all systems, it relies on the screen DPI (dots per inch) setting to be correct. The DPI setting for your system is autodetected by LyX using information provided by your system. You can check what LyX autodetects the DPI setting to, by running LyX as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout lyx -dbg 2 \end_layout \end_inset . \end_layout \begin_layout Standard On many systems, this will not be correct, so you should check that it is correct by hand. On X11 systems, you can run \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout xdpyinfo | more \end_layout \end_inset \begin_inset Quotes erd \end_inset and write down what the DPI is for the resolution you use (this will be close to the value LyX detects). It is the number mentioned as \begin_inset Quotes eld \end_inset resolution \begin_inset Quotes erd \end_inset . Also write down the number of pixels you have in the width (the first number under \begin_inset Quotes eld \end_inset dimensions \begin_inset Quotes erd \end_inset ). \end_layout \begin_layout Standard Then get the good old ruler out of the closet, and measure the width of the visible screen-image on your monitor. Convert this measurement to inches if you used a centimeter ruler by dividing by 2.54. Now you can determine the correct DPI setting for your screen by dividing the number of pixels in the width by the width of the screen-image on the monitor. If this number is more than, say, 5 DPI from the detected value, you should either fix your system setup, or at least tell LyX that the DPI is different than the detected value. \end_layout \begin_layout Standard If you can't fix system setup (which of course is best since other programs than LyX will benefit from this as well), you can tell LyX the correct DPI using the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Preferences \end_layout \end_inset dialog. \end_layout \begin_layout Standard If the text is too small or too big for your taste, you should fiddle with the font zoom setting. This setting is used to scale the point size of the text. If your DPI setting is correct, and the font zoom setting is set to 100, this means that LyX will try to display the text exactly the same size as it will appear on the paper-output. If you set the zoom factor to 200, the text will try to be 2 times as big as on paper. Of course, this will only happen if LyX can find a font that has the appropriat e size, which you can't count on. Since LyX is a WYSIWYM system anyways, this limitation isn't much of an issue. \end_layout \begin_layout Standard The default font zoom setting is 150, since a monitor is typically wider than a piece of paper, but you should try to fiddle with it through the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Font \begin_inset Space ~ \end_inset \bar under Z \bar default oom \end_layout \end_inset setting in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Preferences \end_layout \end_inset dialog to find a size that you like. When you've found a setting that seems to work nicely for you (tip: use the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under A \bar default pply \end_layout \end_inset button to keep the dialog open while you experiment), you can make this setting the default by using the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under S \bar default ave \end_layout \end_inset button. \end_layout \begin_layout Standard While it is often possible to find a suitable size for the text on the screen, this doesn't necessarily mean that the fonts are the best ones available on your system. In order to help you get the most out of your system, you can use the font definition commands to fine-tune the look of the text in greater detail than merely size. \end_layout \begin_layout Subsubsection Font definition commands \end_layout \begin_layout Standard You can change LyX's screen fonts from within the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Preferences \end_layout \end_inset dialog. The number of fonts that are available on different systems vary. \end_layout \begin_layout Standard Before you go about scrapping a bitmap font because the larger sizes look \begin_inset Quotes eld \end_inset blocky \begin_inset Quotes erd \end_inset , you should toggle the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Use scalable fonts \end_layout \end_inset button. This is only useful if you use bitmap fonts, because only these don't scale well. If you define this flag, LyX will only use the fixed font sizes that are available, and this guarantees that all bitmap fonts look good. However, the downside is that there will be a greater difference between the size of the fonts on screen and the size of fonts on paper because LyX will have to be satisfied with the closest available size, and not try to scale a size to fit. Also, you can risk that some logically different sizes, such as \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Large \end_layout \end_inset and \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Larger \end_layout \end_inset , will be mapped to the same screen font, making it hard for you to see the difference on screen. \end_layout \begin_layout Standard One final note regarding the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Use scalable fonts \end_layout \end_inset flag: you should know that there is nothing wrong with using bitmap and scalable fonts at the same time for different purposes. For instance, it's common to use the scalable \begin_inset Quotes eld \end_inset Utopia \begin_inset Quotes erd \end_inset for the serif text together with a bitmap version of \begin_inset Quotes eld \end_inset Helvetica \begin_inset Quotes erd \end_inset . And you can safely select the \begin_inset Quotes eld \end_inset Use scalable fonts \begin_inset Quotes erd \end_inset button without worries: It will only apply to the Helvetica font. \end_layout \begin_layout Standard Sometimes the artifacts introduced by use of the flag can be relieved by using the fine-detail screen font sizes which defines which point sizes the different logical font sizes correspond to. Run LyX as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout lyx -dbg 513 \end_layout \end_inset to see exactly what concrete fonts the logical sizes map to, and try adjusting the corresponding entries in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Preferences \end_layout \end_inset dialog until you've managed to hit the nail and get the fonts you want. This can be hard to do, because LyX uses the DPI setting and the font zoom settings to calculate which exact screen font size to ask the X server for, thus obfuscating the mapping. If you can't make it by trial-and-error, you can make the process more transparent if you set both the DPI setting and font zoom settings to 100---eve n when this is known to be wrong. This will of course make your scalable fonts look weird, so use with care. \end_layout \begin_layout Standard \begin_inset Branch OutDated status collapsed \begin_layout Subsubsection Font encoding \end_layout \begin_layout Standard By default, LyX will use fonts meant to write Western European text, including all kinds of English. This is defined through the so-called \emph on font \emph default \emph on encoding \emph default . If you want to use LyX to write for instance Eastern European text, Cyrillic or any other language not covered by the ISO-8859-1 font encoding, you can define a different one with the encoding setting. This requires you to have special fonts installed. You can use \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout xfontsel \end_layout \end_inset to see whether this is the case: check the \begin_inset Quotes eld \end_inset rgstry \begin_inset Quotes erd \end_inset and \begin_inset Quotes eld \end_inset encdng \begin_inset Quotes erd \end_inset fields for ISO-8859-X values different from ISO-8859-1, and search for one that contains the national characters of your language. If you find any, enter this encoding in the dialog. If not, go searching the Web for appropriate fonts. For the Qt frontend, it's recommended you use an iso646 font set. \end_layout \begin_layout Standard When you've set LyX up to use a different font encoding, you should also consider changing the font used by dialog windows in LyX. For instance, the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Table \begin_inset Space ~ \end_inset of \begin_inset Space ~ \end_inset Contents \end_layout \end_inset dialog will not be understandable unless you tell LyX to use a different font for this. By default the menu font is set to \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout -*-helvetica-medium-r \end_layout \end_inset , but often Helvetica is not available in the font encoding you need, so the dialog allows this to be changed. \end_layout \begin_layout Standard As you can see, there are quite a few options that can be used to fine tune the look of your fonts. This should not scare you from fiddling with the settings, because after all, you will hopefully be using LyX for many hours in the future. And contrary to real WYSIWYG word processors where you are tied to using fonts that have to look good both on paper and on screen, LyX gives you the possibility of using fonts that are designed to look good on the screen while using a different set of fonts to look good on paper. \end_layout \end_inset \end_layout \begin_layout Subsection User Interface \begin_inset CommandInset label LatexCommand label name "sec:ui" \end_inset \end_layout \begin_layout Standard The appearance of both the menu and toolbar may both be changed using the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Preferences \end_layout \end_inset dialog. Simply select a different \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .ui \end_layout \end_inset file in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Look & Feel\SpecialChar \menuseparator User Interface \end_layout \end_inset section. You can customize the interface by copying one of the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .ui \end_layout \end_inset files from \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir/ui/ \end_layout \end_inset to \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir/ui/ \end_layout \end_inset . You may have to restart LyX for these changes to take effect. \end_layout \begin_layout Standard The syntax of the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .ui \end_layout \end_inset files is straightforward: have a look at \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout default.ui \end_layout \end_inset . The \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Menubar \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Menu \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Toolbar \end_layout \end_inset entries must be ended with an explicit \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout End \end_layout \end_inset . They may contain \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Submenu \end_layout \end_inset s, \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Item \end_layout \end_inset s, \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout OptItem \end_layout \end_inset s, \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Separator \end_layout \end_inset s, \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Icon \end_layout \end_inset s and in the case of the \begin_inset Quotes eld \end_inset file \begin_inset Quotes erd \end_inset menus, a \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Lastfiles \end_layout \end_inset entry. One small word of warning. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Submenu \end_layout \end_inset s may be inserted in a \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Menubar \end_layout \end_inset or \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Menu \end_layout \end_inset , but they are defined as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Menu \end_layout \end_inset s, not as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Submenu \end_layout \end_inset s. A \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Submenu \end_layout \end_inset tag is used to insert context-dependent information that is generated by LyX itself. Unfortunately, the available tags are not documented outside the source code. \end_layout \begin_layout Standard Note that, as of LyX 1.6, there are extensive context menus, normally accessed via a right click. These are defined in the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .ui \end_layout \end_inset files. \end_layout \begin_layout Section Editing \end_layout \begin_layout Standard The settings in this section are used to customise the behavior of the LyX editor. \end_layout \begin_layout Subsection \begin_inset CommandInset label LatexCommand label name "sec:bindings" \end_inset Shortcuts \end_layout \begin_layout Standard Bindings are used to associate a LyX function to a key. Several prepackaged binding files are available: a CUA set of bindings (familiar as the typical set of PC and CDE set of keyboard shortcuts), an Emacs set of bindings, for those of us who follow the One True Way and refuse to lower our standards, \begin_inset Foot status collapsed \begin_layout PlainLayout I'm kidding here, of course! \end_layout \end_inset as well as specialty bindings (broadway and hollywood) and bindings for languages other than English. You can select your binding in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Editing\SpecialChar \menuseparator Shortcuts \end_layout \end_inset section of the \bar under \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under T \bar default ools\SpecialChar \menuseparator \bar under P \bar default references \end_layout \end_inset \bar default dialog. \end_layout \begin_layout Standard If, however, you'd like to customise the bindings to your own exacting tastes, then there are two ways to proceed. The first, and older method, is to copy a file from \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir/bind/ \end_layout \end_inset to your own \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir/bind/ \end_layout \end_inset and modify that in a text editor. Don't forget to select this file in \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Editing\SpecialChar \menuseparator Shortcuts \end_layout \end_inset . The second method is to use the shortcut editor, which you will also find at \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Editing\SpecialChar \menuseparator Shortcuts \end_layout \end_inset . The changes you make here will be stored at \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir/bind/user.bind \end_layout \end_inset . \end_layout \begin_layout Standard LyX supports internationalization of the user interface (see Chapter \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "chap:i18n" \end_inset ). If your \emph on locale \emph default is set, LyX will try to use bindfiles by prepending the standard language code to their name. For example, you can put a translated copy of some standard bind file in your personal \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout bind/ \end_layout \end_inset directory, and LyX will use it automatically. \end_layout \begin_layout Standard The syntax of the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .bind \end_layout \end_inset files is straightforward: \end_layout \begin_layout LyX-Code \backslash bind ``'' `` \begin_inset Quotes erd \end_inset \end_layout \begin_layout Standard Both key combination and lyx-function (including any arguments) must be enclosed in "double quotes". The LyX functions are partially documented on listed on the \begin_inset CommandInset href LatexCommand href name "LyXWiki" target "http://wiki.lyx.org/LyX/LyxFunctions" \end_inset . A major effort is presently underway to improve this documentation. \end_layout \begin_layout Section \begin_inset CommandInset label LatexCommand label name "sec:converters-etc" \end_inset File Handling \end_layout \begin_layout Standard LyX has a powerful mechanism to convert to and from any file format using external programs. \end_layout \begin_layout Subsection \begin_inset CommandInset label LatexCommand label name "sub:Formats" \end_inset Formats \end_layout \begin_layout Standard The first step is to define your file formats if they are not already defined. To do so, open the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Tools\SpecialChar \menuseparator Preferences\SpecialChar \menuseparator File Handling\SpecialChar \menuseparator File Formats \end_layout \end_inset dialog. Press the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout New\SpecialChar \ldots{} \end_layout \end_inset button to define your new format. The \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Format \end_layout \end_inset field contains the named used to identify the format in the GUI. The \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Short Name \end_layout \end_inset is used to identify the format interally. You will also need to enter a file extension. These are all required. The optional \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Shortcut \end_layout \end_inset field is used to provide a keyboard shortcut on the menus. (For example, pressing \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Alt-V D \end_layout \end_inset will \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout View\SpecialChar \menuseparator DVI \end_layout \end_inset .) \end_layout \begin_layout Standard A Format can have a \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Viewer \end_layout \end_inset and \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Editor \end_layout \end_inset associated with it. For example, you might want to use \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Ghostview \end_layout \end_inset to view PostScript files. You can enter the command needed to start the program in the corresponding fields. In defining this command, you can use the four variables listed in the next section. The viewer is launched when you view an image in LyX or use the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout View \end_layout \end_inset menu. The editor is for example launched when you press the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Edit \end_layout \end_inset button in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Graphics \end_layout \end_inset or the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout External material \end_layout \end_inset dialog. \end_layout \begin_layout Standard The \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Document format \end_layout \end_inset option tells LyX that a format is suitable for document export. If this is is set and if a suitable conversion route exists (see \begin_inset CommandInset ref LatexCommand ref reference "sub:Converters" \end_inset ), the format will appear in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout File\SpecialChar \menuseparator Export \end_layout \end_inset menu. The format will also appear in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout View \end_layout \end_inset menu if a viewer is specified for the format. Pure image formats, such as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout png \end_layout \end_inset , should not use this option. Formats that can both represent vector graphics and documents like \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout pdf \end_layout \end_inset should use it. \end_layout \begin_layout Standard The option \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Vector graphics format \end_layout \end_inset tells LyX that a format can contain vector graphics. This information is used to determine the target format of included graphics for \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout pdflatex \end_layout \end_inset export. Included graphics may need to be converted to either \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout pdf \end_layout \end_inset , \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout png \end_layout \end_inset , or \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout jpg \end_layout \end_inset , since \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout pdflatex \end_layout \end_inset cannot handle other image formats. If an included graphic is not already in \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout pdf \end_layout \end_inset , \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout png \end_layout \end_inset , or \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout jpg \end_layout \end_inset format, it is converted to \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout pdf \end_layout \end_inset if the vector format option is set, and otherwise to \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout png \end_layout \end_inset . \end_layout \begin_layout Subsection Copiers \end_layout \begin_layout Standard Since all conversions from one format to another take place in LyX's temporary directory, it is sometimes necessary to modify a file before copying it to the temporary directory in order that the conversion may be performed. \begin_inset Foot status collapsed \begin_layout PlainLayout For example, the file may refer to other files---images, for example---using relative filenames, and these may become invalid when the file is copied to the temporary directory. \end_layout \end_inset This is done by a Copier: It copies a file to (or from) the temporary directory and may modify it in the process. \end_layout \begin_layout Standard The definitions of the copiers may use four variables: \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$s \end_layout \end_inset The LyX system directory (e. \begin_inset Space \thinspace{} \end_inset g. \begin_inset Space ~ \end_inset \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout /usr/share/lyx \end_layout \end_inset ). \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$i \end_layout \end_inset The input file \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$o \end_layout \end_inset The output file \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$l \end_layout \end_inset The `LaTeX name' \end_layout \begin_layout Standard The latter is to be given in a form suitable for inclusion in a LaTeX's \series bold \backslash include \series default command and is relevant only when exporting files suitable for such inclusion. \end_layout \begin_layout Standard Copiers can be used to do almost anything with output files. For example, suppose you want generated pdf files to be copied to a special directory, \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout /home/you/pdf/ \end_layout \end_inset . Then you could write a shell script such as this one: \end_layout \begin_layout Standard \begin_inset listings inline false status open \begin_layout PlainLayout #!/bin/bash \end_layout \begin_layout PlainLayout FROMFILE=$1 \end_layout \begin_layout PlainLayout TOFILE=`basename $2` \end_layout \begin_layout PlainLayout cp $FROMFILE /home/you/pdf/$TOFILE \end_layout \end_inset Save that in your local LyX directory---say, \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout /home/you/.lyx/scripts/pdfcopier.sh \end_layout \end_inset ---and make it executable, if you need to do so on your platform. Then, in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Tools\SpecialChar \menuseparator Preferences:Copiers \end_layout \end_inset dialog, select the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout PDF(pdflatex) \end_layout \end_inset format---or one of the other pdf formats---and enter \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout pdfcopier.sh $$i $$o \end_layout \end_inset into the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Copier \end_layout \end_inset field. \end_layout \begin_layout Standard Copiers are used by LyX in various of its own conversions. For example, if appropriate programs are found, LyX will automatically install copiers for the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout HTML \end_layout \end_inset and \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout HTML \begin_inset Space ~ \end_inset (MS Word) \end_layout \end_inset formats. When these formats are exported, the copier sees that not just the main HTML file but various associated files (style files, images, etc.) are also copied. All these files are written to a subdirectory of the directory in which the original LyX file was found. \begin_inset Foot status collapsed \begin_layout PlainLayout This copier can be customized. The optional \begin_inset Quotes eld \end_inset -e \begin_inset Quotes erd \end_inset argument takes a comma-separated list of extensions to be copied; if it is omitted, all files will be copied. The \begin_inset Quotes eld \end_inset -t \begin_inset Quotes erd \end_inset argument determines the extension added to the generated directory. By default, it is \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout LyXconv \end_layout \end_inset \begin_inset Quotes erd \end_inset , so HTML generated from \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout /path/to/filename.lyx \end_layout \end_inset will end up in \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout /path/to/filename.html.LyXconv \end_layout \end_inset . \end_layout \end_inset \end_layout \begin_layout Subsection \begin_inset CommandInset label LatexCommand label name "sub:Converters" \end_inset Converters \end_layout \begin_layout Standard You can define your own Converters to, uhh, convert files between different formats. This is done in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Tools\SpecialChar \menuseparator Preferences\SpecialChar \menuseparator File Handling\SpecialChar \menuseparator Converters \end_layout \end_inset dialog. \end_layout \begin_layout Standard To define a new converter, select the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout From \begin_inset Space ~ \end_inset format \end_layout \end_inset and \begin_inset Space \thinspace{} \end_inset \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout To \begin_inset Space ~ \end_inset format \end_layout \end_inset from the drop-down lists, enter the command needed for the conversion, and then press the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Add \end_layout \end_inset button. Several variables can be used in the definition of converters: \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$s \end_layout \end_inset The LyX system directory \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$i \end_layout \end_inset The input file \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$o \end_layout \end_inset The output file \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$b \end_layout \end_inset The base filename of the input file (i.e., without the extension) \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$p \end_layout \end_inset The path to the input file \end_layout \begin_layout Standard In the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Extra \begin_inset Space ~ \end_inset Flag \end_layout \end_inset field you can enter the following flags, separated by commas: \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout latex \end_layout \end_inset This converter runs some form of LaTeX. This will make LyX's LaTeX error logs available. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout needaux \end_layout \end_inset Needs the LaTeX \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout .aux \end_layout \end_inset file for the conversion. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout xml \end_layout \end_inset Output is XML. \end_layout \begin_layout Standard The following three flags are not really flags at all because they take an argument in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout key \begin_inset Space ~ \end_inset = \begin_inset Space ~ \end_inset value \end_layout \end_inset format: \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout parselog \end_layout \end_inset If set, the converter's standard error will be redirected to a file \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout infile.out \end_layout \end_inset , and the script given as argument will be run as: \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout script infile.log \end_layout \end_inset . The argument may contain \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$s \end_layout \end_inset . \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout resultdir \end_layout \end_inset The name of the directory in which the converter will dump the generated files. LyX will not create this directory, and it does not copy anything into it, though it will copy this directory to the destination. The argument may contain \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$b \end_layout \end_inset , which will be replaced by the basename of the input and output files, respectively, when the directory is copied. \newline Note that resultdir and usetempdir make no sense together. The latter will be ignored if the former is given. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout resultfile \end_layout \end_inset Determines the output filename and may, contain \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$b \end_layout \end_inset . Sensible only with resultdir and optional even then; if not given, it defaults to `index'. \end_layout \begin_layout Standard None of these last three are presently used in any of the converters that are installed with LyX. \end_layout \begin_layout Standard You do not have to define converters between all the formats between which you want to convert. For example, you will note that there is no `LyX to PostScript®' converter, but LyX will export PostScript®. It does so by first creating a LaTeX file (no converter needs to be defined for this) which is then converted to DVI using the `LaTeX to DVI' converter, and finally converting the resulting DVI file to PostScript®. LyX finds such `chains' of converters automatically, and it will always choose the shortest possible chain. You can, though, still define multiple conversion methods between file formats. For example, the standard LyX configuration provides three ways to convert LaTeX to PDF: Directly, using \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout pdflatex \end_layout \end_inset ; via (DVI and) PostScript®, using \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout ps2pdf \end_layout \end_inset ; or via DVI, using \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout dvipdfm \end_layout \end_inset . To define such alternate chains, you must define multiple target `file formats', as described in section \begin_inset CommandInset ref LatexCommand ref reference "sub:Formats" \end_inset . For example, in the standard configuration, the formats named \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout pdf \end_layout \end_inset , \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout pdf2 \end_layout \end_inset , and \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout pdf3 \end_layout \end_inset are defined, all of which share the extension \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout .pdf \end_layout \end_inset , and which correspond to the conversion methods just mentioned. \end_layout \begin_layout Section Output \end_layout \begin_layout Standard The settings in this section affect the output LyX produces. \end_layout \begin_layout Subsection Plain text export options \end_layout \begin_layout Standard \noindent There are a couple of commands that can be used to \begin_inset Quotes eld \end_inset clean up \begin_inset Quotes erd \end_inset exported plain text files. Note that LyX automatically detects and tries to use the best settings for your system at installation time, but you can modify them in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Output\SpecialChar \menuseparator Plain Text \end_layout \end_inset dialog if you disagree with its interpretation. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout roff command \end_layout \end_inset This option defines the command used to produce better plain text tables with the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout groff/troff/nroff \end_layout \end_inset UNIX-commands (refer to their manpages for more information about them). Setting this as empty tells LyX to use the internal (inferior) formatter. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Output line length \end_layout \end_inset With this command you can set the default line length of the plain text output file. Setting it to 0 means that no line breaks will be inserted except between paragraphs and the like. \end_layout \begin_layout Section The rest \end_layout \begin_layout Standard There are many other configuration options that can be used to customize LyX behavior. Most of them are sufficiently self-explanatory that we have not felt it necessary to document them here. Please ask on the \begin_inset CommandInset href LatexCommand href name "mailing lists" target "http://www.lyx.org/mailing.php" \end_inset if you need some more information. \end_layout \begin_layout Chapter Internationalizing LyX \begin_inset CommandInset label LatexCommand label name "chap:i18n" \end_inset \end_layout \begin_layout Standard LyX supports using a translated interface. Last time we checked, LyX provided text in thirty languages. The language of choice is called your \emph on locale \emph default . (For further reading on locale settings, see also the documentation for locale that comes with your operating system. For Linux, the manual page for \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout locale(5) \end_layout \end_inset could be a good place to start). \end_layout \begin_layout Standard Notice that these translations will work, but do contain a few flaws. In particular, all dialogs have been designed with the English text in mind, which means that some of the translated text will be too large to fit within the space allocated. This is only a display problem and will not cause any harm. Also, you will find that some of the translations do not define shortcut keys for everything. Sometimes, there are simply not enough free letters to do it. Other times, the translator just hasn't got around to doing it yet. Our localization team, which you may wish to join, \begin_inset Foot status collapsed \begin_layout PlainLayout If you are a fluent speaker of a language other than English, joining these teams is a great way to give back to the LyX community! \end_layout \end_inset will of course try to fix these shortcomings in future versions of LyX. \end_layout \begin_layout Section Translating LyX \end_layout \begin_layout Subsection Translating the graphical user interface (text messages). \end_layout \begin_layout Standard LyX uses the GNU \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout gettext \end_layout \end_inset library to handle the internationalization of the interface. To have LyX speak your favorite language in all menus and dialogs, you need a \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout po \end_layout \end_inset -file for that language. When this is available, you'll have to generate a \begin_inset Flex CharStyle:Code status open \begin_layout PlainLayout mo \end_layout \end_inset -file from it and install the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout mo \end_layout \end_inset -file. The process of doing all of this is explained in the documentation for GNU \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout gettext \end_layout \end_inset . It is possible to do this just for yourself, but if you're going to do it, you might as well share the results of your labors with the rest of the LyX community. Send a message to the LyX developers' list for more information about how to proceed. \end_layout \begin_layout Standard In short, this is what you should do (xx denotes the language code): \end_layout \begin_layout Itemize Check out the LyX source code. (See the \begin_inset CommandInset href LatexCommand href name "information on the web" target "http://www.lyx.org/devel/cvs.php" \end_inset .) \end_layout \begin_layout Itemize Copy \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout po/lyx.pot \end_layout \end_inset to \series bold \series default \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout xx.po \end_layout \end_inset (if \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout lyx.pot \end_layout \end_inset doesn't exist, it can be remade with \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout make lyx.pot \end_layout \end_inset in that directory, or you can use an existing po-file for some other language as a template). \end_layout \begin_layout Itemize Edit \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout xx.po \end_layout \end_inset . \begin_inset Foot status collapsed \begin_layout PlainLayout This is just a text file, so it can be edited in any text editor. But there are also specialized programs that support such editing, such as KBabel (for KDE). Emacs contains a `mode' for editing \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout po \end_layout \end_inset files, as well. \end_layout \end_inset For some menu- and widget-labels, there are also shortcut keys that should be translated. Those keys are marked after a `|', and should be translated according to the words and phrases of the language. You should also fill also out the information at the beginning of the new \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout po \end_layout \end_inset -file with your email-address, etc., so people know where to reach you with suggestions and entertaining flames. \end_layout \begin_layout Standard If you are just doing this on your own, then: \end_layout \begin_layout Itemize Generate \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout xx.mo \end_layout \end_inset . This can be done with \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout msgfmt -o xx.mo < xx.po \end_layout \end_inset . \end_layout \begin_layout Itemize Copy the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout mo \end_layout \end_inset -file to your locale-tree, at the correct directory for application messages for the language \series bold \series default xx, and under the name \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout lyx.mo \end_layout \end_inset (e.g. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout /usr/local/share/locale/xx/LC_MESSAGES/lyx.mo \end_layout \end_inset \series bold . \end_layout \begin_layout Standard As said, however, it would be best if the new \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout po \end_layout \end_inset -file could be added to the LyX distribution, so others can use it. Adding it involves making additional changes to LyX. So send an email to the developers' mailing list if you're interested in doing that. \end_layout \begin_layout Subsubsection Ambigous messages \end_layout \begin_layout Standard Sometimes it turns out that one English message needs to be translated into different messages in the target language. One example is the message \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout To \end_layout \end_inset which has the German translation \lang german Nach \lang english or \lang german Bis \lang english , depending upon exactly what the English \begin_inset Quotes eld \end_inset to \begin_inset Quotes erd \end_inset means. GNU \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout gettext \end_layout \end_inset does not handle such ambigous translations. Therefore you have to add some context information to the message: Instead of \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout To \end_layout \end_inset it becomes \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout To[[as in 'From format x to format y']] \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout To[[as in 'From page x to page y']]. \end_layout \end_inset Now the two occurences of \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout To \end_layout \end_inset are different for \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout gettext \end_layout \end_inset and can be translated correctly to \lang german Nach \lang english and \lang german Bis \lang english , respectively. \end_layout \begin_layout Standard Of course the context information needs to be stripped off the original message when no translation is used. Therefore you have to put it in double square brackets at the end of the message (see the example above). The translation mechanism of LyX ensures that everything in double square brackets at the end of messages is removed before displaying the message. \end_layout \begin_layout Subsection Translating the documentation. \end_layout \begin_layout Standard The online documentation (in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under H \bar default elp \end_layout \end_inset -menu) can (and should!) be translated. If there are translated versions of the documentation available \begin_inset Foot status collapsed \begin_layout PlainLayout As of March 2008, at least some of the documents have been translated into fourteen languages, with the Tutorial available in a few more. \end_layout \end_inset and the locale is set accordingly, these will be used automagically by LyX. LyX looks for translated versions as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir/doc/xx_DocName.lyx \end_layout \end_inset , where \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout xx \end_layout \end_inset is the code for the language currently in use. If there are no translated documents, the default English versions will be displayed. Note that the translated versions must have the same filenames ( \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout DocName \end_layout \end_inset above) as the original. If you feel up to translating the documentation (an excellent way to proof-read the original documentation by the way!), there are a few things you should do right away: \end_layout \begin_layout Itemize Read \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout DocStyle.lyx \end_layout \end_inset , the guide to writing LyX documentation. Pay special attention to the translator's section. \end_layout \begin_layout Itemize Check out the documentation translation web page at \begin_inset CommandInset href LatexCommand href name "http://www.devel.lyx.org" target "http://www.devel.lyx.org" \end_inset . That way, you can find out which (if any) documents have already been translate d into your language. You can also find out who (if anyone) is organizing the effort to translate the documentation into your language. If no one is organizing the effort, please let us know that you're interested. \end_layout \begin_layout Standard Once you get to actually translating, here's a few hints for you that may save you trouble: \end_layout \begin_layout Itemize Join the documentation team! There is information on how to do that in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Intro.lyx \end_layout \end_inset ( \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under H \bar default elp\SpecialChar \menuseparator \bar under I \bar default ntroduction \end_layout \end_inset ), which by the way is the first document you should translate. \end_layout \begin_layout Itemize Learn the typographic conventions for the language you are translating to. Typography is an ancient art and over the centuries, a great variety of conventions have developed throughout different parts of the world. Also study the professional terminology amongst typographers in your country. Inventing your own terminology will only confuse the users. \emph on (Warning! Typography is addictive!) \end_layout \begin_layout Itemize Make a copy of the document. This will be your working copy. You can use this as your personal translated help-file by placing it in your \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir/doc/ \end_layout \end_inset directory. \end_layout \begin_layout Itemize Sometimes the original document (from the LyX-team) will be updated. Use the source viewer at \begin_inset CommandInset href LatexCommand href name "http://www.lyx.org/trac/timeline" target "http://www.lyx.org/trac/timeline" \end_inset to see what has been changed. That way you can easily see which parts of the translated document need to be updated. \end_layout \begin_layout Standard If you ever find an error in the original document, fix it and notify the rest of the documentation team of the changes! (You didn't forget to join the documentation team, did you?) \end_layout \begin_layout Standard \begin_inset Branch OutDated status open \begin_layout Section International Keyboard Support \end_layout \begin_layout Standard \emph on [Editor's Note: The following section is by \emph default \shape smallcaps \emph on Ivan Schreter \shape default . It needs to be fixed to conform to the new Documentation Style sheet and to make use of the new v1.0 features. The whole thing also needs to be merged with the section following it.-jw It may also be badly out of date.-rh (2008)] \end_layout \begin_layout Subsection Defining Own Keymaps: Keymap File Format \end_layout \begin_layout Standard Let's look at a keyboard definition file a little closer. It is a plain text file defining \end_layout \begin_layout Itemize key-to-key or key-to-string translations \end_layout \begin_layout Itemize dead keys \end_layout \begin_layout Itemize dead keys exceptions \end_layout \begin_layout Standard To define key-to-key or key-to-string translation, use this command: \end_layout \begin_layout Quotation \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash kmap \end_layout \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout key \end_layout \end_inset outstring \end_layout \begin_layout Standard where \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout key \end_layout \end_inset is the key to be translated and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout outstring \end_layout \end_inset is the string to be inserted into the document. To define dead keys, use: \end_layout \begin_layout Quotation \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash kmod \end_layout \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout key \end_layout \end_inset deadkey \end_layout \begin_layout Standard where \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout key \end_layout \end_inset is a keyboard key and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout deadkey \end_layout \end_inset is dead key name. The following dead keys are supported (shortcut name is in parentheses): \end_layout \begin_layout Quotation \emph on Name \begin_inset Space \hfill{} \end_inset Example \end_layout \begin_layout Quotation acute (acu) \begin_inset Space \hfill{} \end_inset áéíóú \end_layout \begin_layout Quotation grave (gra) \begin_inset Space \hfill{} \end_inset àèìòù \end_layout \begin_layout Quotation macron (mac) \begin_inset Space \hfill{} \end_inset ō \end_layout \begin_layout Quotation tilde (til) \begin_inset Space \hfill{} \end_inset ñÑ \end_layout \begin_layout Quotation underbar (underb) \begin_inset Space \hfill{} \end_inset \begin_inset ERT status open \begin_layout PlainLayout \backslash b o \end_layout \end_inset \end_layout \begin_layout Quotation cedilla (ced) \begin_inset Space \hfill{} \end_inset çÇ \end_layout \begin_layout Quotation underdot (underd) \begin_inset Space \hfill{} \end_inset \begin_inset ERT status open \begin_layout PlainLayout \backslash d o \end_layout \end_inset \end_layout \begin_layout Quotation circumflex (circu) \begin_inset Space \hfill{} \end_inset âêîôû \end_layout \begin_layout Quotation circle (circl) \begin_inset Space \hfill{} \end_inset ÅůŮ \end_layout \begin_layout Quotation tie (tie) \begin_inset Space \hfill{} \end_inset \begin_inset ERT status open \begin_layout PlainLayout \backslash t o \end_layout \end_inset \end_layout \begin_layout Quotation breve (bre) \begin_inset Space \hfill{} \end_inset ă \begin_inset ERT status open \begin_layout PlainLayout \backslash u o \end_layout \end_inset \end_layout \begin_layout Quotation caron (car) \begin_inset Space \hfill{} \end_inset čšž \end_layout \begin_layout Quotation hungarian umlaut (hug) \begin_inset Space \hfill{} \end_inset őű \end_layout \begin_layout Quotation umlaut (uml) \begin_inset Space \hfill{} \end_inset äöü \end_layout \begin_layout Quotation dot (dot) \begin_inset Space \hfill{} \end_inset ż \begin_inset ERT status open \begin_layout PlainLayout \backslash .s \end_layout \end_inset \end_layout \begin_layout Standard Since in many international keyboards there are exceptions to what some dead keys should do, you can define them using \end_layout \begin_layout Quotation \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash kxmod \end_layout \end_inset deadkey key outstring \end_layout \begin_layout Standard For example, on Slovak keyboard, if you enter caron-o, it generates circumflex-o , so you put in \end_layout \begin_layout Quotation \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash kxmod \end_layout \end_inset caron o " \backslash ^o" \end_layout \begin_layout Standard to make it work correctly. Also, you have to define as exceptions dead keys over i and j, to remove the dot from them before inserting an accent mark. I will change this when the time comes, but so far I haven't had time. \end_layout \begin_layout Standard Oh, and about characters: backslash is escaped, so to enter it, you'll need double backslash. Also, quotes and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout # \end_layout \end_inset have different meaning. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout # \end_layout \end_inset marks comments, quotes start and end LaTeX-style commands. To enter quote, you'll need to use \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash " \end_layout \end_inset , to enter \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout # \end_layout \end_inset , use \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash # \end_layout \end_inset . \end_layout \begin_layout Standard If you make a keyboard description file that works for your language, please mail it to me, so I can include it in the next keymap distribution. \end_layout \begin_layout Standard More keywords will be supported in keymap configuration file in future, like \end_layout \begin_layout Itemize \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash kinclude filename \end_layout \end_inset \emph on \begin_inset Space \hfill{} \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout include \end_layout \end_inset another file \end_layout \begin_layout Itemize \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash kprog program \end_layout \end_inset \emph on \begin_inset Space \hfill{} \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout define \end_layout \end_inset an external keymap translation program \end_layout \begin_layout Standard Also, it should look into \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout lyxrc \end_layout \end_inset file for defaults, too (for example, a \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash kinclude \end_layout \end_inset option to include default keyboard). \end_layout \end_inset \end_layout \begin_layout Section \begin_inset CommandInset label LatexCommand label name "sec:keymap" \end_inset International Keymap Stuff \end_layout \begin_layout Standard \begin_inset Note Note status open \begin_layout PlainLayout In doing the revisions on this document in March 2008, I did not look over this stuff, as I do not understand it. It would be good if someone else could do so. \end_layout \end_inset \end_layout \begin_layout Standard The next two sections describe the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up .kmap \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up .cdef \end_layout \end_inset file syntax in detail. These sections should help you design your own key map if the ones provided do not meet your needs. \end_layout \begin_layout Subsection The .kmap File \end_layout \begin_layout Standard A \shape up . \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout kmap \end_layout \end_inset file maps keystrokes to characters or strings. As the name suggests, it sets a keyboard mapping. The \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .kmap \end_layout \end_inset \shape default file keywords \shape up \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up kmap \end_layout \end_inset \shape default , \shape up \shape default \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up kmod \end_layout \end_inset , \shape up \shape default \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up ksmod \end_layout \end_inset , and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up kcomb \end_layout \end_inset are described in this section. \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up kmap \end_layout \end_inset Map a character to a string \end_layout \begin_layout LyX-Code \backslash kmap \family roman \emph on char \family default \emph default \family roman \emph on string \end_layout \begin_layout Standard This will ma \family roman p \family default \family roman \emph on char \family default \emph default \family roman to \family default \family roman \emph on string \emph default . Note that in \family default \family roman \emph on string \emph default , \family default \family roman \shape up the double-quote (") \family default \shape default \family roman and \family default \family roman \shape up the backslash ( \backslash ) \family default \shape default \family roman must be escaped with a preceding backslash ( \shape up \backslash \shape default ) \family default . \end_layout \begin_layout Standard An example of a \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \shape up kmap \end_layout \end_inset statement to cause the symbol \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \shape up / \end_layout \end_inset to be output for the keystroke \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \shape up & \end_layout \end_inset is: \end_layout \begin_layout LyX-Code \backslash kmap & / \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up kmod \end_layout \end_inset Specify an accent character \end_layout \begin_layout LyX-Code \backslash kmod \family roman \emph on char accent allowed \end_layout \begin_layout Standard This will make the cha \family roman racter \family default \family roman \emph on char \family default \emph default \family roman \shape up \emph on be an accent \family default \shape default \emph default \family roman \shape up on the \family default \shape default \family roman \shape up \emph on allowed \family default \shape default \emph default \family roman \shape up cha \family default racter(s). This is the dead key \begin_inset Foot status collapsed \begin_layout PlainLayout The term \family roman \emph on dead key \family default \emph default refers to a key that does not produce a character by itself, but when followed with another key, produces the desired accent character. For example, a German characte \family roman r with an umlaut like \family default \family roman \emph on ä \family default \emph default \family roman can be produced in this manner. \end_layout \end_inset mechanism. \end_layout \begin_layout Standard If you \family roman hit \family default \family roman \emph on char \family default \emph default \family roman and then another key not in \family default \family roman \emph on allowed \emph default , you will get a \family default \family roman \emph on char \family default \emph default \family roman followed by the other, unallowed key, as output. \family default Note that a \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \shape up Backspace \end_layout \end_inset cancels a dead key, so if \family roman you hit \family default \family roman \emph on char \family default \emph default \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \shape up \emph on Backspace \end_layout \end_inset , the cursor will not go one position backwards but will instead cancel the effect t \family roman hat \family default \family roman \shape up \emph on char \family default \shape default \emph default \family roman \shape up might have had on the next keystroke. \end_layout \begin_layout Standard The following example specifies that the character ' is to be an acute accent, allowed on the characters a, e, i, o, u, A, E, I, O, and U: \end_layout \begin_layout LyX-Code \backslash kmod ' acute aeiouAEIOU \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ksmod \end_layout \end_inset Specify an exception to the accent character \end_layout \begin_layout LyX-Code \backslash kxmod \family roman \emph on accent char result \end_layout \begin_layout Standard This defines an exce \family roman ption for \family default \family roman \emph on accent \family default \emph default \family roman on \family default \family roman \emph on char \emph default . T \shape up he \family default \shape default \family roman \shape up \emph on accent \family default \shape default \emph default \family roman \shape up must \family default \shape default \shape up have been assigned a keystroke with a previous \shape default \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up \backslash kmo \shape default d \end_layout \end_inset declar \family roman ation and \family default \family roman \emph on char \family default \emph default \family roman must not belong in the \family default \family roman \emph on allowed \family default \emph default \family roman set of \family default \family roman \emph on accent \emph default . When \family default \family roman \shape up you enter the \family default \shape default \family roman \shape up \emph on accent char \family default \shape default \emph default \family roman \shape up sequence, \family default \shape default \family roman \shape up \emph on result \family default \shape default \emph default \family roman \shape up is produced. If such a declaration does not exist in \family default \shape default \shape up the \shape default \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up .kmap \end_layout \end_inset file and yo \family roman u enter \family default \family roman \emph on accent char \emph default , you get \family default \family roman \emph on accent_key char \family default \emph default \family roman where \family default \family roman \emph on accent_key \family default \emph default \family roman is the first arg \family default ument of the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up \backslash kmod \end_layout \end_inset declaration. \end_layout \begin_layout Standard The following command produces causes äi to be produced when you enter acute-i ('i): \end_layout \begin_layout LyX-Code \backslash kxmod acute i " \backslash \backslash '{ \backslash \backslash i}" \end_layout \begin_layout List \labelwidthstring 00.00.0000 \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout kcomb \end_layout \end_inset Combine two accent characters \end_layout \begin_layout LyX-Code \backslash kcomb \family roman \emph on accent1 accent2 allowed \end_layout \begin_layout Standard This one is getting pretty esoteric. It allows you to combine the effect \family roman of \family default \family roman \emph on accent1 \family default \emph default \family roman and \family default \family roman \emph on accent2 \family default \emph default \family roman (in that order!) on \family default \family roman \emph on allowed \family default \emph default \family roman chars. The keystrokes for \family default \family roman \emph on accent1 \family default \emph default \family roman and \family default \family roman \emph on accent2 \family default \emph default \family roman must have be \family default en set with a \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up \backslash kmod \end_layout \end_inset command at \family roman a \family default \family roman \emph on previous \family default \emph default \family roman point in the \family default file. \end_layout \begin_layout Standard Consider this example from the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up greek.kmap \end_layout \end_inset file: \end_layout \begin_layout LyX-Code \backslash kmod ; acute aeioyvhAEIOYVH \backslash kmod : umlaut iyIY \backslash kcomb acute umlaut iyIY \end_layout \begin_layout Standard This allows you to press \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \shape up ;:i \end_layout \end_inset and get the effect of \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up \backslash '{ \backslash "{i}} \end_layout \end_inset . \family roman \shape up A backspace \family default \shape default in this case cancels the last dead key, so if you press \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \shape up ;: Backspace i \end_layout \end_inset you get \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up \backslash '{i} \end_layout \end_inset . \end_layout \begin_layout Subsection The .cdef File \end_layout \begin_layout Standard After the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up .kmap \end_layout \end_inset mapping is performed, a \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up .cde \shape default f \end_layout \end_inset file maps the strings that the symbols generate to characters in the current font. The LyX distribution currently includes at least the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up iso8859-1.cdef \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up iso8859-2.cdef \end_layout \end_inset files. \end_layout \begin_layout Standard In general the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \shape up .cdef \end_layout \end_inset file is a sequence of declarations of the form \end_layout \begin_layout LyX-Code \family roman \emph on char_index_in_set \family default \emph default \family roman \emph on string \end_layout \begin_layout Standard For example, in order to map \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \shape up \backslash '{e} \end_layout \end_inset to the corresponding character in the iso-8859-1 set (233), the following declaration is used \end_layout \begin_layout LyX-Code 233 " \backslash \backslash '{e}" \end_layout \begin_layout Standard with \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout " \end_layout \end_inset being escap \family roman ed in \family default \family roman \emph on string \emph default . Note that \family default the same character can apply to more than one string. In the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout i \shape up so-8859-7.cdef \end_layout \end_inset file you have \end_layout \begin_layout LyX-Code 192 " \backslash \backslash '{ \backslash \backslash \backslash "{i}}" \newline 192 " \backslash \backslash \backslash "{ \backslash \backslash '{i}}" \end_layout \begin_layout Standard If LyX cannot find a mapping for the string produced by the keystroke or a deadkey sequence, it will check if it looks like an accented char and try to draw an accent over the character on screen. \end_layout \begin_layout Subsection Dead Keys \end_layout \begin_layout Standard There is a second way to add support for international characters through so-called dead-keys. A dead-key works in combination with a letter to produce an accented character. Here, we'll explain how to create a really simple dead-key to illustrate how they work. \end_layout \begin_layout Standard Suppose you happen to need the circumflex character, \begin_inset Quotes eld \end_inset ̂ \begin_inset Quotes erd \end_inset . You could bind the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout ^ \end_layout \end_inset -key [a.k.a. \begin_inset Space ~ \end_inset \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Shift-6 \end_layout \end_inset ] to the LyX command \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout accent-circumflex \end_layout \end_inset in your \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout lyxrc \end_layout \end_inset file. Now, whenever you type the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout ^ \end_layout \end_inset -key followed by a letter, that letter will have a circumflex accent on it. For example, the sequence \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout ^e \end_layout \end_inset \begin_inset Quotes erd \end_inset produces the letter: \begin_inset Quotes eld \end_inset ê \begin_inset Quotes erd \end_inset . If you tried to type \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout ^t \end_layout \end_inset \begin_inset Quotes erd \end_inset , however, LyX will complain with a beep, since a \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout t \end_layout \end_inset \begin_inset Quotes erd \end_inset never takes a circumflex accent. Hitting \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Space \end_layout \end_inset after a dead-key produces the bare-accent. Please note this last point! If you bind a key to a dead-key, you'll need to rebind the character on that key to yet another key. Binding the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout ,-key \end_layout \end_inset to a cedilla is a bad idea, since you'll only get cedillas instead of commas. \end_layout \begin_layout Standard One common way to bind dead-keys is to use \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Meta- \end_layout \end_inset , \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Ctrl- \end_layout \end_inset , and \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Shift- \end_layout \end_inset in combination with an accent, like \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout ~ \end_layout \end_inset \begin_inset Quotes erd \end_inset or \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout , \end_layout \end_inset \begin_inset Quotes erd \end_inset or \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout ^ \end_layout \end_inset \begin_inset Quotes erd \end_inset . Another way involves using \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout xmodmap \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout xkeycaps \end_layout \end_inset to set up the special \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Mode_Switch \end_layout \end_inset key. The \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Mode_Switch \end_layout \end_inset acts in some ways just like \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Shift \end_layout \end_inset and permits you to bind keys to accented characters. You can also turn keys into dead-keys by binding them to something like \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout usldead_cedilla \end_layout \end_inset and then binding this symbolic key to the corresponding LyX command. \begin_inset Foot status collapsed \begin_layout PlainLayout Note from \noun on John Weiss \noun default : This is exactly what I do in my \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ~/.lyx/lyxrc \end_layout \end_inset and my \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ~/.xmodmap \end_layout \end_inset files. I have my \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Scroll \begin_inset Space ~ \end_inset Lock \end_layout \end_inset key set up as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Mode_Shift \end_layout \end_inset and a bunch of these \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout usldead_* \end_layout \end_inset \begin_inset Quotes erd \end_inset symbolic keys bound such things as \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Scroll \begin_inset Space ~ \end_inset Lock-^ \end_layout \end_inset and \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Scroll \begin_inset Space ~ \end_inset Lock-~ \end_layout \end_inset . This is how I produce my accented characters. \end_layout \end_inset You can make just about anything into the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Mode_Switch \end_layout \end_inset key: One of the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Ctrl- \end_layout \end_inset keys, a spare function key, etc. As for the LyX commands that produce accents, check the entry for \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout accent-acute \end_layout \end_inset in the \emph on Reference Manual \emph default . You'll find the complete list there. \end_layout \begin_layout Subsection Saving your Language Configuration \end_layout \begin_layout Standard \begin_inset CommandInset label LatexCommand label name "sec:savlang" \end_inset You can edit your preferences so that your desired language environment is automatically configured when LyX starts up, via the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under E \bar default dit\SpecialChar \menuseparator \bar under P \bar default references \end_layout \end_inset dialog. \end_layout \begin_layout Chapter Installing New Document Classes, Layouts, and Templates \begin_inset CommandInset label LatexCommand label name "chap:textclass" \end_inset \begin_inset OptArg status collapsed \begin_layout PlainLayout Installing New Document Classes \end_layout \end_inset \end_layout \begin_layout Standard In this chapter, we describe the procedures for creating and installing new LyX layout and template files, as well as offer a refresher on correctly installing new LaTeX document classes. Some definitions: a document class is a LaTeX file (usually ending in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .cls \end_layout \end_inset or \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .sty \end_layout \end_inset ) that describes the format of a document such as an article, report, journal preprint, etc, and all the commands needed to realize that format. A layout file is a LyX file that corresponds to a LaTeX document class and that tells LyX how to \begin_inset Quotes eld \end_inset draw \begin_inset Quotes erd \end_inset things on the screen to make the display look something like the final printed page. More precisely, a layout file describes a \begin_inset Quotes eld \end_inset text class \begin_inset Quotes erd \end_inset which is the internal construct LyX uses to render the screen display. \begin_inset Quotes eld \end_inset Layout \begin_inset Quotes erd \end_inset and \begin_inset Quotes eld \end_inset text class \begin_inset Quotes erd \end_inset can be used somewhat interchangeably, but it is better to refer to the file as the layout, and the thing living in LyX's memory as the text class. A template file is simply a LyX document that contains a set of predefined entries for a given document class---entries that are generally required for that class. Templates are especially useful for things like journal manuscripts that are to be submitted electronically. \end_layout \begin_layout Section Installing a new LaTeX package \end_layout \begin_layout Standard Some installations may not include a LaTeX package that you would like to use within LyX. For example, you might need FoilTeX, a common (and very powerful) package for preparing slides or viewgraphs for overhead projectors. On some systems, you may have a GUI for installing such packages: MikTeX on Windows®, for example. \end_layout \begin_layout Standard If you don't have such a GUI, then you can follow these steps. \end_layout \begin_layout Enumerate Get the package from \begin_inset CommandInset href LatexCommand href name "CTAN" target "http://www.ctan.org/" \end_inset or wherever. \end_layout \begin_layout Enumerate You can install this package in several different places. If you want it to be available for all users on your system, then you should install it in your `local' TeX tree; if you want (or need) it to be available just for you, then you can install it in your own `user' TeX tree. Where these should be created, if they do not already exist, depends upon the details of your system. To find out, look in the file \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout texmf.cnf \end_layout \end_inset . \begin_inset Foot status collapsed \begin_layout PlainLayout This usually lives in the directory \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $TEXMF/web2c \end_layout \end_inset , though you can run \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout kpsewhich texmf.cnf \end_layout \end_inset to locate it. \end_layout \end_inset The location of the `local' TeX tree is defined by \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TEXMFLOCAL \end_layout \end_inset ; this is usually somewhere like \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout /usr/local/share/texmf/ \end_layout \end_inset . The `user' TeX tree is defined by \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TEXMFHOME \end_layout \end_inset and is commonly at \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $HOME/texmf/ \end_layout \end_inset . (If these variables are not predefined, you can define them.) You'll probably need root permissions to create or modify the `local' tree; but your `user' tree shouldn't have such limitations. \end_layout \begin_layout Enumerate Make sure \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TEXMF \end_layout \end_inset includes the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TEXMFLOCAL \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TEXMFHOME \end_layout \end_inset variables; e.g. \newline \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TEXMF = {$TEXMFHOME,!!$TEXMFLOCAL,!!$TEXMFMAIN} \end_layout \end_inset \newline But, again, most of this will \begin_inset Quotes eld \end_inset just work \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Enumerate Create your local \begin_inset Foot status collapsed \begin_layout PlainLayout We'll assume henceforth that you're defining `local' TeX tree. If you're defining a user tree, just adjust as necessary. \end_layout \end_inset TeX tree. You must follow the directory structure of your existing \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout texmf \end_layout \end_inset directory, which will be found at \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TEXMFMAIN \end_layout \end_inset . For example, latex packages should go under \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $TEXMFLOCAL/tex/latex/ \end_layout \end_inset . \end_layout \begin_layout Enumerate Install the package. For example, you would unpack the FoilTeX tarball and copy it to \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $TEXMFLOCAL/tex/latex/foiltex \end_layout \end_inset . The \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout foiltex \end_layout \end_inset directory contains various files. \end_layout \begin_layout Enumerate Run: \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout texhash \end_layout \end_inset . This should create \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $TEXMFLOCAL/ls-R \end_layout \end_inset amongst others. \end_layout \begin_layout Standard Your package is now installed and available to LaTeX. To make it available to LyX, you need to create a Layout file, if one is not already available. (See the next section.) Once you have a layout file, you need only reconfigure ( \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under T \bar default ools\SpecialChar \menuseparator \bar under R \bar default econfigure \end_layout \end_inset ) and then restart LyX. You should then see your new package---for example \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout slides (FoilTeX) \end_layout \end_inset ---under \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under D \bar default ocument\SpecialChar \menuseparator \bar under S \bar default ettings \end_layout \end_inset in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Document Class \end_layout \end_inset drop box. \end_layout \begin_layout Section \begin_inset CommandInset label LatexCommand label name "sec:Layouts" \end_inset Layouts \end_layout \begin_layout Standard This section describes how to write and install your own LyX layout files and walks through the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout article \end_layout \end_inset text class format as an example. The \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .layout \end_layout \end_inset files describe what paragraph and character styles are available for a given document class and how LyX should display them. We try to provide a thorough description of the process here; however, there are so many different types of documents supported by LaTeX classes that we can't hope to cover every different possibility or problem you might encounter. (The LyX users' list is frequented by people with lots of experience with layout design who are willing to share what they've learned.) \end_layout \begin_layout Standard As you prepare to write a new layout, it is extremely helpful to look at the example layouts distributed with LyX. If you use a nice LaTeX document class that might be of interest for others, too, and have a nice corresponding LyX layout, feel free to contribute the stuff to us, so we may put it into the distribution. There is also a \begin_inset CommandInset href LatexCommand href name "section on the LyX wiki" target "http://wiki.lyx.org/Layouts/Layouts" \end_inset for this kind of material. \end_layout \begin_layout Standard All the tags described in this chapter are case-insensitive; this means that \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Style \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout style \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout StYlE \end_layout \end_inset are really the same command. The possible values are printed in brackets after the feature's name. The default value if a feature isn't specified inside a text class-description is typeset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on emphasized \end_layout \end_inset . If the argument has a datatype like \begin_inset Quotes eld \end_inset string \begin_inset Quotes erd \end_inset or \begin_inset Quotes eld \end_inset float \begin_inset Quotes erd \end_inset , the default is shown like this: \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout float= \emph on default \end_layout \end_inset . \end_layout \begin_layout Subsection \begin_inset CommandInset label LatexCommand label name "sub:Layout-modules" \end_inset Layout modules \end_layout \begin_layout Standard Similar to layout files, and new with LyX 1.6, are layout \emph on modules \emph default . Modules are to LaTeX packages much as layouts are to LaTeX classes, and some modules---such as the Endnotes module---provide support for just such a package. In a sense, layout modules are similar to included files---files like \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout stdsections.inc \end_layout \end_inset ---in that modules are not specific to a given document layout but may be used with many different layouts. The difference is that using a layout module does not require editing the layout file. Rather, modules are selected in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under D \bar default ocument\SpecialChar \menuseparator \bar under S \bar default ettings \end_layout \end_inset dialog. \end_layout \begin_layout Standard Building modules is the easiest way to get started with layout editing, since it can be as simple as adding a single new paragraph or flex inset. But modules may, in principle, contain anything a layout file can contain. \end_layout \begin_layout Standard A module must begin with a line like the following: \end_layout \begin_layout LyX-Code # \backslash DeclareLyXModule[endnotes.sty]{Endnotes} \end_layout \begin_layout Standard The argument in square brackets is optional: It declares any LaTeX packages on which the module depends. The mandatory argument, in curly brackets, is the name of the module, as it should appear in \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Document\SpecialChar \menuseparator Settings \end_layout \end_inset . \end_layout \begin_layout Standard The module declaration should then be followed by lines like the following: \end_layout \begin_layout LyX-Code #DescriptionBegin \end_layout \begin_layout LyX-Code #Adds an endnote command, in addition to footnotes. \end_layout \begin_layout LyX-Code #You will need to add \backslash theendnotes in ERT where you \end_layout \begin_layout LyX-Code #want the endnotes to appear. \end_layout \begin_layout LyX-Code #DescriptionEnd \end_layout \begin_layout LyX-Code #Requires: somemodule | othermodule \end_layout \begin_layout LyX-Code #Excludes: badmodule \end_layout \begin_layout Standard The description is used in \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Document\SpecialChar \menuseparator Settings \end_layout \end_inset to provide the user with information about what the module does. The \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Requires \end_layout \end_inset line is used to identify other modules with which this one must be used; the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Excludes \end_layout \end_inset line is used to identify modules with which this one may not be used. Both are optional, and, as shown, multiple modules should be separated with the pipe symbol: |. Note that the required modules are treated disjunctively: \emph on at least one \emph default of the required modules must be used. Similarly, \emph on no \emph default excluded module may be used. Note that modules are identified here by their \emph on filenames \emph default without the .module extension. So \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout somemodule \end_layout \end_inset is really \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout somemodule.module \end_layout \end_inset . \end_layout \begin_layout Standard After creating a new module, you will need to reconfigure and then restart LyX for the module to appear in the menu. However, changes you make to the module will be seen immediately, if you open \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Document\SpecialChar \menuseparator Settings \end_layout \end_inset , highlight something, and then hit \begin_inset Quotes eld \end_inset OK \begin_inset Quotes erd \end_inset . \emph on It is strongly recommended that you save your work before doing so \emph default . In fact, \emph on it is strongly recommended that you not attempt to edit modules while simultaneo usly working on documents \emph default . Though of course the developers strive to keep LyX stable in such situations, syntax errors and the like in your module file could cause strange behavior. \end_layout \begin_layout Subsection Supporting new document classes \end_layout \begin_layout Standard There are two situations you are likely to encounter when wanting to support a new LaTeX document class, involving LaTeX2e class ( \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .cls \end_layout \end_inset ) and style ( \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .sty \end_layout \end_inset ) files. Supporting a style file is usually fairly easy. Supporting a new document class is a bit harder. \end_layout \begin_layout Subsection A layout for a \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout sty \end_layout \end_inset file \end_layout \begin_layout Standard If your new document class is provided as a style file that is used in conjuncti on with an existing, supported document class---for the sake of the example, we'll assume that the style file is called \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout myclass.sty \end_layout \end_inset and it is meant to be used with \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout report.cls \end_layout \end_inset , which is a standard class---start by copying the existing class's layout file into your local directory: \end_layout \begin_layout LyX-Code cp report.layout ~/.lyx/layouts/myclass.layout \end_layout \begin_layout Standard Then edit \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout myclass.layout \end_layout \end_inset and change the line: \end_layout \begin_layout LyX-Code \backslash DeclareLaTeXClass{report} \end_layout \begin_layout Standard to read \end_layout \begin_layout LyX-Code \backslash DeclareLaTeXClass[report, myclass.sty]{report (myclass)} \end_layout \begin_layout Standard Then add: \end_layout \begin_layout LyX-Code Preamble \newline \backslash usepackage{myclass} \newline EndPreamble \end_layout \begin_layout Standard near the top of the file. \end_layout \begin_layout Standard Start LyX and select \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under T \bar default ools\SpecialChar \menuseparator \bar under R \bar default econfigure \end_layout \end_inset . Then restart LyX and try creating a new document. You should see " \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout report (myclass) \end_layout \end_inset " as a document class option in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under D \bar default ocument\SpecialChar \menuseparator \bar under S \bar default ettings \end_layout \end_inset dialog. It is likely that some of the sectioning commands and such in your new class will work differently from how they worked in the base class--- \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout report \end_layout \end_inset in this example---so you can fiddle around with the settings for the different sections if you wish. \end_layout \begin_layout Subsection Layout for a \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout cls \end_layout \end_inset file \end_layout \begin_layout Standard There are two possibilities here. One is that the class file is itself based upon an existing document class. For example, many thesis classes are based upon \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout book.cls \end_layout \end_inset . To see whether yours is, look for a line like \end_layout \begin_layout LyX-Code \backslash LoadClass{book} \end_layout \begin_layout Standard in the file. If so, then you may proceed largely as in the previous section, though the DeclareLaTeXClass line will be different. If your new class is thesis, and it is based upon book, then the line should read: \begin_inset Foot status collapsed \begin_layout PlainLayout And it will be easiest if you save the file to \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout thesis.layout \end_layout \end_inset : LyX assumes that the document class has the same name as the layout file. \end_layout \end_inset \end_layout \begin_layout LyX-Code \backslash DeclareLaTeXClass[thesis,book]{thesis} \end_layout \begin_layout Standard If, on the other hand, the new class is not based upon an existing class, you will probably have to \begin_inset Quotes eld \end_inset roll your own \begin_inset Quotes erd \end_inset layout. We strongly suggest copying an existing layout file which uses a similar LaTeX class and then modifying it, if you can do so. At least use an existing file as a starting point so you can find out what items you need to worry about. Again, the specifics are covered below. \end_layout \begin_layout Section Declaring a new text class \end_layout \begin_layout Standard When it's finally time to get your hands dirty and create or edit your own layout file, the following sections describe what you're up against. Our advice is to go slowly, save and test often, listen to soothing music, and enjoy one or two of your favorite adult beverages; more if you are getting particularly stuck. It's really not that hard, except that the multitude of options can become overwhelming if you try to do to much in one sitting. Go have another adult beverage, just for good measure. \end_layout \begin_layout Standard Here we go! \end_layout \begin_layout Standard Lines in a layout file which begin with a \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout # \end_layout \end_inset are comments. There is one exception to this rule: all layouts should begin with lines like: \end_layout \begin_layout LyX-Code \size small #% Do not delete the line below; configure depends on this \end_layout \begin_layout LyX-Code \size small # \backslash DeclareLaTeXClass{article} \end_layout \begin_layout Standard The second line is used when you configure LyX. The layout file is read by the LaTeX script \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout chkconfig.ltx \end_layout \end_inset , in a special mode where \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout # \end_layout \end_inset is ignored. The first line is just a LaTeX comment, and the second one contains the declaration of the text class. If these lines appear in a file named \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout article.layout \end_layout \end_inset , then they define a text class of name \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout article \end_layout \end_inset (the name of the layout file) which uses the LaTeX document class \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout article.cls \end_layout \end_inset (the default is to use the same name as the layout). The string \begin_inset Quotes eld \end_inset article \begin_inset Quotes erd \end_inset that appears above is used as a description of the text class in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under D \bar default ocument\SpecialChar \menuseparator \bar under S \bar default ettings \end_layout \end_inset dialog. \end_layout \begin_layout Standard Let's assume that you wrote your own text class that uses the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout article.cls \end_layout \end_inset document class, but where you changed the appearance of the section headings. If you put it in a file \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout myarticle.layout \end_layout \end_inset , the header of this file should be: \end_layout \begin_layout LyX-Code \size small #% Do not delete the line below; configure depends on this \end_layout \begin_layout LyX-Code \size small # \backslash DeclareLaTeXClass[article]{article (with my own headings)} \end_layout \begin_layout Standard This declares a text class \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout myarticle \end_layout \end_inset , associated with the LaTeX document class \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout article.cls \end_layout \end_inset and described as \begin_inset Quotes eld \end_inset article (with my own headings) \begin_inset Quotes erd \end_inset . If your text class depends on several packages, you can declare it as: \end_layout \begin_layout LyX-Code \size small #% Do not delete the line below; configure depends on this \end_layout \begin_layout LyX-Code \size small # \backslash DeclareLaTeXClass[article,foo.sty]{article (with my own headings)} \end_layout \begin_layout Standard This indicates that your text class uses the foo.sty package. Finally, it is also possible to declare classes for DocBook code. Typical declarations will look like \end_layout \begin_layout LyX-Code \size small #% Do not delete the line below; configure depends on this \end_layout \begin_layout LyX-Code \size small # \backslash DeclareDocBookClass[article]{SGML (DocBook article)} \end_layout \begin_layout Standard Note that these declarations can also be given an optional parameter declaring the name of the document class (but not a list). \end_layout \begin_layout Standard So, to be as explicit as possible, the form of the layout declaration is: \end_layout \begin_layout LyX-Code \size small # \backslash DeclareLaTeXClass[class,package.sty]{layout description} \end_layout \begin_layout Standard The class need only be specified if the name of the LaTeX class file and the name of the layout file are different; if the name of the classfile is not specified, then LyX will simply assume that it is the same as the name of the layout file. \end_layout \begin_layout Standard When the text class has been modified to your taste, all you have to do is to copy it either to \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir/layouts/ \end_layout \end_inset or to \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir/layouts \end_layout \end_inset , run \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under T \bar default ools\SpecialChar \menuseparator \bar under R \bar default econfigure \end_layout \end_inset , exit LyX and restart it. Then your new text class should be available along with the others. \end_layout \begin_layout Standard In versions of LyX prior to 1.6, you had to restart LyX to see any changes you made to your layout files. As a result, editing layout files could be very time consuming. Beginning with 1.6, however, you can force a reload of the layout currently in use by using the LyX function \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout layout-reload \end_layout \end_inset . There is no default binding for this function---though, of course, you can bind it to a key yourself (see section \begin_inset CommandInset ref LatexCommand ref reference "sec:bindings" \end_inset ). If you want to use this function, then, you should simply enter it in the mini-buffer. \emph on Warning \emph default : This is very much an `advanced feature'. It is \emph on strongly \emph default recommended that you save your work before using this function. In fact, it is \emph on strongly \emph default recommended that you not attempt to edit your layout while simultaneously working on a document that you care about. Use a test document. Syntax errors and the like in your layout file could cause peculiar behavior. In particular, such errors could cause LyX to regard the current layout as invalid and to attempt to switch to some other layout. The LyX team strives to keep LyX stable in such situations, but safe is better than sorry. \end_layout \begin_layout Subsection File format \end_layout \begin_layout Standard The first non-comment line must contain the file format number: \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Format \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout int \end_layout \end_inset ] This tag was introduced with LyX 1.4.0 (layout files of LyX 1.3.x and earlier don't have an explicit file format). The file format that is documented here is format 7. \end_layout \begin_layout Subsection General text class parameters \end_layout \begin_layout Standard These are the general parameters which describe the form of the entire document: \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout AddToPreamble \end_layout \end_inset Adds information to the document preamble. Must end with \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout EndPreamble \end_layout \end_inset \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ClassOptions \end_layout \end_inset Describes various global options supported by the document class. See Section \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "sec:classoptions" \end_inset for a description. Must end with \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout End \end_layout \end_inset \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Columns \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on 1 \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 2 \end_layout \end_inset ] Whether the class should default to having one or two columns. Can be changed in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under D \bar default ocument\SpecialChar \menuseparator \bar under S \bar default ettings \end_layout \end_inset dialog. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Counter \end_layout \end_inset This sequence defines a new counter. See Section \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "sec:counter" \end_inset for details. Must end with \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout End \end_layout \end_inset \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout DefaultFont \end_layout \end_inset Sets the default font used to display the document. See Section \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "sec:fonts" \end_inset for how to declare fonts. Must end with \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout EndFont \end_layout \end_inset \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout DefaultStyle \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset ] This is the style that will be assigned to new paragraphs, usually \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Standard \end_layout \end_inset . This will default to the first defined style if not given, but you are highly encouraged to use this directive. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Float \end_layout \end_inset Defines a new float. See Section \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "sec:floats" \end_inset for details. Must end with \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout End \end_layout \end_inset \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Input \end_layout \end_inset As its name implies, this command allows you to include another layout definition file within yours to avoid duplicating commands. Common examples are the standard layout files, for example, \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout stdclass.inc \end_layout \end_inset , which contains most of the basic layouts. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout InsetLayout \end_layout \end_inset This section (re-)defines the layout of an inset. It can be applied to an existing inset of to a new, user-defined inset, e.g., a new character style. See Section \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "sec:charstyle" \end_inset for more information. Must end with \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout End \end_layout \end_inset \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LeftMargin \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout NoFloat \end_layout \end_inset This command deletes an existing float. This is particularly useful when you want to suppress a float that has be defined in an input file. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout NoStyle \end_layout \end_inset This command deletes an existing style. This is particularly useful when you want to suppress a style that has be defined in an input file. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout OutputType \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \series medium PageStyle \end_layout \end_inset [ \emph on \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on plain \end_layout \end_inset \emph default , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout empty \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout headings \end_layout \end_inset ] The class default pagestyle. Can be changed in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under D \bar default ocument\SpecialChar \menuseparator \bar under S \bar default ettings \end_layout \end_inset dialog. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Preamble \end_layout \end_inset Sets the preamble for the LaTeX document. Note that this will completely override any prior \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Premable \end_layout \end_inset or \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout AddToPreamble \end_layout \end_inset declarations. Must end with \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout EndPreamble \end_layout \end_inset \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Provides \end_layout \end_inset \begin_inset CommandInset label LatexCommand label name "des:Provides" \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset ] [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on 0 \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 1 \end_layout \end_inset ] Whether the class already provides the feature \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset . A feature is in general the name of a package ( \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout amsmath \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout makeidx \end_layout \end_inset , \SpecialChar \ldots{} ) or a macro ( \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout url \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout boldsymbol \end_layout \end_inset ,\SpecialChar \ldots{} ); the complete list of supported features is unfortunately not documented outside the LyX source code---but see \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LaTeXFeatures.cpp \end_layout \end_inset if you're interested. \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under H \bar default elp\SpecialChar \menuseparator \bar under L \bar default aTeX Configuration \end_layout \end_inset also gives an overview of the supported packages. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Requires \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset ] Whether the class requires the feature \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset . Multiple features must be separated by commas. Note that you can only request supported features. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout RightMargin \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout SecNumDepth \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Sides \end_layout \end_inset [ \emph on \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on 1 \end_layout \end_inset \emph default , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 2 \end_layout \end_inset ] Whether the class-default should be printing on one or both sides of the paper. Can be changed in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under D \bar default ocument\SpecialChar \menuseparator \bar under S \bar default ettings \end_layout \end_inset dialog. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Style \end_layout \end_inset This sequence defines a new paragraph style. If the style already exists, it will redefine some of its parameters instead. See Section \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "sec:style" \end_inset for details. Must end with \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout End \end_layout \end_inset \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TitleLatexName \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string="maketitle" \end_layout \end_inset ] The name of the command or environment to be used with \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TitleLatexType \end_layout \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TitleLatexType \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on CommandAfter \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Environment \end_layout \end_inset ] Indicates what kind of markup is used to define the title of a document. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout CommandAfter \end_layout \end_inset means that the macro with name \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TitleLatexName \end_layout \end_inset will be inserted after the last layout which has \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout InTitle 1 \end_layout \end_inset \begin_inset Quotes erd \end_inset . \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Environment \end_layout \end_inset corresponds to the case where the block of paragraphs which have \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout InTitle 1 \end_layout \end_inset \begin_inset Quotes erd \end_inset should be enclosed into the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TitleLatexName \end_layout \end_inset environment. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TocDepth \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Subsection \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ClassOptions \end_layout \end_inset section \end_layout \begin_layout Standard \begin_inset CommandInset label LatexCommand label name "sec:classoptions" \end_inset The \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ClassOptions \end_layout \end_inset section can contain the following entries: \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout FontSize \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string="10|11|12" \end_layout \end_inset ] The list of available font sizes for the document's main font, separated by \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout | \end_layout \end_inset \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Header \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout PageStyle \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string="empty|plain|headings|fancy" \end_layout \end_inset ] The list of available page styles, separated by \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout | \end_layout \end_inset \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Other \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string="" \end_layout \end_inset ] Some document class options, separated by a comma, that will be added to the optional part of the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash documentclass \end_layout \end_inset command. \end_layout \begin_layout Standard The \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ClassOptions \end_layout \end_inset section must end with \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout End \end_layout \end_inset \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Subsection Paragraph Styles \end_layout \begin_layout Standard \begin_inset CommandInset label LatexCommand label name "sec:style" \end_inset A paragraph style description looks like this: \begin_inset Foot status collapsed \begin_layout PlainLayout Note that this will either define a new layout or modify an existing one. \end_layout \end_inset \end_layout \begin_layout LyX-Code Style \family roman \emph on name \end_layout \begin_layout LyX-Code ... \end_layout \begin_layout LyX-Code End \end_layout \begin_layout Standard where the following commands are allowed: \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Align \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on block \emph default , left, right, center \end_layout \end_inset ] Paragraph alignment. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout AlignPossible \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on block \emph default , left, right, center \end_layout \end_inset ] A comma separated list of permitted alignments. (Some LaTeX styles prohibit certain alignments, since those wouldn't make sense. For example a right-aligned or centered enumeration isn't possible.) \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout BottomSep \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout float=0 \end_layout \end_inset ] \begin_inset Foot status collapsed \begin_layout PlainLayout Note that a `float' here is a real number, such as: 1.5. \end_layout \end_inset The vertical space with which the last of a chain of paragraphs with this layout is separated from the following paragraph. If the next paragraph has another layout, the separations are not simply added, but the maximum is taken. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Category \end_layout \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout [string] \end_layout \end_inset The category for this style. This is used to group related styles in the Layout combobox on the toolbar. Any string can be used, but you may want to use existing categories with your own styles. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout CommandDepth \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout CopyStyle \end_layout \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout [string] \end_layout \end_inset Copies all the features of an existing style into the current one. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout DependsOn \end_layout \end_inset The name of a style whose preamble should be output \emph on before \emph default this one. This allows to ensure some ordering of the preamble snippets when macros definitions depend on one another. \begin_inset Foot status collapsed \begin_layout PlainLayout Note that, besides that functionality, there is no way to ensure any ordering of preambles. The ordering that you see in a given version of LyX may change without warning in later versions. \end_layout \end_inset \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout EndLabeltype \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on No_Label \emph default , Box, Filled_Box, Static \end_layout \end_inset ] The type of label that stands at the end of the paragraph (or sequence of paragraphs if \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LatexType \end_layout \end_inset is \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Environment \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Item_Environment \end_layout \end_inset or \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout List_Environment \end_layout \end_inset ). \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout No_Label \end_layout \end_inset means \begin_inset Quotes eld \end_inset nothing \begin_inset Quotes erd \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Box \end_layout \end_inset (resp. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \begin_inset Space ~ \end_inset Filled_Box \end_layout \end_inset ) is a white (resp. \begin_inset Space ~ \end_inset black) square suitable for end of proof markers, \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Static \end_layout \end_inset is an explicit text string. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout EndLabelString \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string="" \end_layout \end_inset ] The string used for a label with a \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Static \end_layout \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout EndLabelType \end_layout \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Fill_Bottom \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on 0 \emph default ,1 \end_layout \end_inset ] Similar to \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Fill_Top \end_layout \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Fill_Top \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on 0 \emph default ,1 \end_layout \end_inset ] With this parameter the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Fill \end_layout \end_inset value of the \begin_inset Quotes eld \end_inset Vertical space above \begin_inset Quotes erd \end_inset list of the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under E \bar default dit\SpecialChar \menuseparator \bar under P \bar default aragraph \begin_inset Space ~ \end_inset Settings \end_layout \end_inset dialog can be set when initializing a paragraph with this style. \begin_inset Foot status collapsed \begin_layout PlainLayout \emph on Note from Jean-Marc: \emph default I'm not sure that this setting has much use, and it should probably be removed in later versions. \end_layout \end_inset \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Font \end_layout \end_inset The font used for both the text body \emph on and \emph default the label. See section \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "sec:fonts" \end_inset . Note that defining this font automatically defines the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelFont \end_layout \end_inset to the same value. So you should define this one first if you also want to define \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelFont \end_layout \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout FreeSpacing \end_layout \end_inset \begin_inset CommandInset label LatexCommand label name "des:FreeSpacing" \end_inset [ \emph on \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on 0 \end_layout \end_inset \emph default , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 1 \end_layout \end_inset ] Usually LyX doesn't allow you to insert more than one space between words, since a space is considered as the separation between two words, not a character or symbol of its own. This is a very fine thing but sometimes annoying, for example, when typing program code or plain LaTeX code. For this reason, \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout FreeSpacing \end_layout \end_inset can be enabled. Note that LyX will create protected blanks for the additional blanks when in another mode than LaTeX-mode. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout InnerTag \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout InTitle \end_layout \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout [1, 0] \end_layout \end_inset If 1, marks the layout as being part of a title block (see also the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TitleLatexType \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TitleLatexName \end_layout \end_inset global entries). \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ItemSep \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout float=0 \end_layout \end_inset ] This provides extra space between paragraphs that have the same layout. If you put other layouts into an environment, each is separated with the environment's \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Parsep \end_layout \end_inset . But the whole items of the environment are additionally separated with this \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Itemsep \end_layout \end_inset . Note that this is a \emph on multiplier. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ItemTag \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout KeepEmpty \end_layout \end_inset \begin_inset CommandInset label LatexCommand label name "des:KeepEmpty" \end_inset [ \emph on \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on 0 \end_layout \end_inset \emph default , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 1 \end_layout \end_inset ] Usually LyX does not allow you to leave a paragraph empty, since it would lead to empty LaTeX output. There are some cases where this could be desirable however: in a letter template, the required fields can be provided as empty fields, so that people do not forget them; in some special classes, a layout can be used as some kind of break, which does not contain actual text. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelBottomsep \end_layout \end_inset [float=0] The vertical space between the label and the text body. Only used for labels that are above the text body ( \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Top_Environment \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Centered_Top_Environment \end_layout \end_inset ). \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelCounter \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string="" \end_layout \end_inset ] \newline The name of the counter for automatic numbering (see Section \begin_inset CommandInset ref LatexCommand ref reference "sec:counter" \end_inset for details). This must be given if \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Labeltype \end_layout \end_inset is \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Counter \end_layout \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelFont \end_layout \end_inset The font used for the label. See section \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "sec:fonts" \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Labelsep \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string="" \end_layout \end_inset ] The horizontal space between the label and the text body. Only used for labels that are not above the text body. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelString \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string="" \end_layout \end_inset ] The string used for a label with a \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Static \end_layout \end_inset labeltype. When \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelCounter \end_layout \end_inset is set, this string can be contain the special formatting commands described in Section \begin_inset CommandInset ref LatexCommand ref reference "sec:counter" \end_inset . \begin_inset Foot status collapsed \begin_layout PlainLayout For the sake of backwards compatibility, the string \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout @ \emph on style-name \emph default @ \end_layout \end_inset will be replaced by the expanded \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelString \end_layout \end_inset of style \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on style-name \end_layout \end_inset . This feature is now obsolete and should be replaced by the mechanisms of Section \begin_inset CommandInset ref LatexCommand ref reference "sec:counter" \end_inset . \end_layout \end_inset \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelStringAppendix \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string="" \end_layout \end_inset ] This is used inside the appendix instead of \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelString \end_layout \end_inset . Note that every \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelString \end_layout \end_inset statement resets \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelStringAppendix \end_layout \end_inset too. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Labeltype \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on No_Label \emph default , Manual, Static, Top_Environment, \newline Centered_Top_Environment, Sensitive, Counter \end_layout \end_inset ] \newline \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Manual \end_layout \end_inset means the label is the very first word (up to the first real blank). \begin_inset Foot status collapsed \begin_layout PlainLayout Use protected spaces if you want more than one word as the label. \end_layout \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Static \end_layout \end_inset means it is defined in the layout (see \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelString \end_layout \end_inset ). \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Top_Environment \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Centered_Top_Environment \end_layout \end_inset are special cases of \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Static \end_layout \end_inset . The label will be printed above the paragraph, but only at the top of an environment or the top of a chain of paragraphs with this layout. Usage is for example the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Abstract \end_layout \end_inset layout or the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Bibliography \end_layout \end_inset layout. This is also the case for \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Manual \end_layout \end_inset labels with latex type \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Environment \end_layout \end_inset , in order to make layouts for theorems work correctly. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Sensitive \end_layout \end_inset is a special case for the caption-labels \begin_inset Quotes eld \end_inset Figure \begin_inset Quotes erd \end_inset and \begin_inset Quotes eld \end_inset Table \begin_inset Quotes erd \end_inset . \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Sensitive \end_layout \end_inset means the (hardcoded) label string depends on the kind of float. The \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Counter \end_layout \end_inset label type defines automatically numbered labels. See Section \begin_inset CommandInset ref LatexCommand ref reference "sec:counter" \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LatexFooter \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LatexHeader \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LatexName \end_layout \end_inset \begin_inset CommandInset label LatexCommand label name "des:LatexName" \end_inset The name of the corresponding LaTeX stuff. Either the environment or command name. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LatexParagraph \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LatexParam \end_layout \end_inset \begin_inset CommandInset label LatexCommand label name "des:LatexParam" \end_inset An optional parameter for the corresponding \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LatexName \end_layout \end_inset stuff. This parameter cannot be changed from within LyX. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LatexType \end_layout \end_inset \begin_inset CommandInset label LatexCommand label name "des:LatexType" \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on Paragraph \emph default , Command, Environment, Item_Environment, \end_layout \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout List_Environment \end_layout \end_inset ] How the layout should be translated into LaTeX. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Paragraph \end_layout \end_inset means nothing special. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Command \end_layout \end_inset means \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash \emph on LatexName \emph default {\SpecialChar \ldots{} } \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Environment \end_layout \end_inset means \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash begin{ \emph on LatexName \emph default }\SpecialChar \ldots{} \backslash end{ \emph on LatexName \emph default } \end_layout \end_inset . \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Item_Environment \end_layout \end_inset is the same as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Environment \end_layout \end_inset , except that a \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash item \end_layout \end_inset is generated for each paragraph of this environment. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout List_Environment \end_layout \end_inset is the same as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Item_Environment \end_layout \end_inset , except that \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelWidthString \end_layout \end_inset is passed as an argument to the environment. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelWidthString \end_layout \end_inset can be defined in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under L \bar default ayout\SpecialChar \menuseparator \bar under P \bar default aragraph \end_layout \end_inset dialog. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on LatexType \end_layout \end_inset is perhaps a bit misleading, since these rules apply to SGML classes, too. Visit the SGML class files for specific examples. \end_layout \begin_layout Standard Putting the last few things together, the LaTeX output will be either: \end_layout \begin_layout LyX-Code \backslash latexname[latexparam]{\SpecialChar \ldots{} } \end_layout \begin_layout Standard or: \end_layout \begin_layout LyX-Code \backslash begin{latexname}[latexparam] \SpecialChar \ldots{} \backslash end{latexname}. \end_layout \begin_layout Standard depending upon the LaTex type. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LeftMargin \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string="" \end_layout \end_inset ] If you put layouts into environments, the leftmargins are not simply added, but added with a factor \begin_inset Formula $\frac{4}{depth+4}$ \end_inset . Note that this parameter is also used when the margin is defined as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Manual \end_layout \end_inset or \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Dynamic \end_layout \end_inset . Then it is added to the manual or dynamic margin. \newline The argument is passed as a string. For example \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout MM \end_layout \end_inset \begin_inset Quotes erd \end_inset means that the paragraph is indented with the width of \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout MM \end_layout \end_inset \begin_inset Quotes erd \end_inset in the normal font. You can get a negative width by prefixing the string with \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout - \end_layout \end_inset \begin_inset Quotes erd \end_inset . This way was chosen so that the look is the same with each used screen font. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Margin \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on Static \emph default , Manual, Dynamic, First_Dynamic, Right_Address_Box \end_layout \end_inset ] \newline The kind of margin that the layout has on the left side. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Static \end_layout \end_inset just means a fixed margin. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Manual \end_layout \end_inset means that the left margin depends on the string entered in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under E \bar default dit\SpecialChar \menuseparator \bar under P \bar default aragraph \begin_inset Space ~ \end_inset Settings \end_layout \end_inset dialog. This is used to typeset nice lists without tabulators. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Dynamic \end_layout \end_inset means that the margin depends on the size of the label. This is used for automatic enumerated headlines. It is obvious that the headline \begin_inset Quotes eld \end_inset 5.4.3.2.1 Very long headline \begin_inset Quotes erd \end_inset must have a wider left margin (as wide as \begin_inset Quotes eld \end_inset 5.4.3.2.1 \begin_inset Quotes erd \end_inset plus the space) than \begin_inset Quotes eld \end_inset 3.2 Very long headline \begin_inset Quotes erd \end_inset , even if standard \begin_inset Quotes eld \end_inset word processors \begin_inset Quotes erd \end_inset are not able to do this. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout First_Dynamic \end_layout \end_inset is similar, but only the very first row of the paragraph is dynamic, while the others are static; this is used, for example, for descriptions. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Right_Address_Box \end_layout \end_inset means the margin is chosen in a way that the longest row of this paragraph fits to the right margin. This is used to typeset an address on the right edge of the page. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout NeedProtect \end_layout \end_inset \begin_inset CommandInset label LatexCommand label name "des:NeedProtect" \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on 0 \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 1 \end_layout \end_inset ] Whether fragile commands in this layout should be \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash protect \end_layout \end_inset 'ed. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Newline \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 0 \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on 1 \end_layout \end_inset ] Whether newlines are translated into LaTeX newlines ( \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash \backslash \end_layout \end_inset ) or not. The translation can be switched off to allow more comfortable LaTeX editing inside LyX. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout NextNoIndent \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 1 \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on 0 \end_layout \end_inset ] Whether the following Paragraph is allowed to indent its very first row. \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 1 \end_layout \end_inset means that it is not allowed to do so; \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 0 \end_layout \end_inset means it could do so if it wants to. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ObsoletedBy \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout OptionalArgs \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout int=0 \end_layout \end_inset ] The number of optional arguments that can be used with this layout. This is useful for things like section headings, and only makes sense with LaTeX. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ParIndent \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string="" \end_layout \end_inset ] The indent of the very first line of a paragraph. The \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Parindent \end_layout \end_inset will be fixed for a certain layout. The exception is Standard layout, since the indentation of a Standard layout paragraph can be prohibited with \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout NextNoIndent \end_layout \end_inset . Also, Standard layout paragraphs inside environments use the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Parindent \end_layout \end_inset of the environment, not their native one. For example, Standard paragraphs inside an enumeration are not indented. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Parsep \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout float=0 \end_layout \end_inset ] The vertical space between two paragraphs of this layout. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Parskip \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout float=0 \end_layout \end_inset ] LyX allows the user to choose either \begin_inset Quotes eld \end_inset indent \begin_inset Quotes erd \end_inset or \begin_inset Quotes eld \end_inset skip \begin_inset Quotes erd \end_inset to typeset a document. When \begin_inset Quotes eld \end_inset indent \begin_inset Quotes erd \end_inset is chosen, this value is completely ignored. When \begin_inset Quotes eld \end_inset skip \begin_inset Quotes erd \end_inset is chosen, the parindent of a LaTeXtype \begin_inset Quotes eld \end_inset Paragraph \begin_inset Quotes erd \end_inset layout is ignored and all paragraphs are separated by this parskip argument. The vertical space is calculated with \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout value \begin_inset Space ~ \end_inset * DefaultHeight \end_layout \end_inset where \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout DefaultHeight \end_layout \end_inset is the height of a row with the normal font. This way, the look stays the same with different screen fonts. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout PassThru \end_layout \end_inset \begin_inset CommandInset label LatexCommand label name "des:PassThru" \end_inset [ \emph on \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on 0 \end_layout \end_inset \emph default , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 1 \end_layout \end_inset ] Whether the contents of this paragraph should be output in raw form, meaning without special translations that LaTeX would require. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Preamble \end_layout \end_inset \begin_inset CommandInset label LatexCommand label name "des:Preamble" \end_inset Information to be included in the LaTeX preamable when this style is used. Used to define macros, load packages, etc., required by this particular style. Must end with \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout EndPreamble \end_layout \end_inset \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Requires \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset ] \begin_inset CommandInset label LatexCommand label name "des:Requires" \end_inset Whether the layout requires the feature \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset . See the description of \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Provides \end_layout \end_inset above (page \begin_inset CommandInset ref LatexCommand pageref reference "des:FreeSpacing" \end_inset ) for information on `features'. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout RightMargin \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string="" \end_layout \end_inset ] Similar to \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LeftMargin \end_layout \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Spacing \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on single \emph default , onehalf, double, other \end_layout \end_inset \emph on value \emph default ] This defines what the default spacing should be in the layout. The arguments \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout single \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout onehalf \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout double \end_layout \end_inset correspond respectively to a multiplier value of 1, 1.25 and 1.667. If you specify the argument \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout other \end_layout \end_inset , then you should also provide a numerical argument which will be the actual multiplier value. Note that, contrary to other parameters, \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Spacing \end_layout \end_inset implies the generation of specific LaTeX code, using the package \family roman \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout setspace.sty \end_layout \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TextFont \end_layout \end_inset The font used for the text body . See section \begin_inset CommandInset ref LatexCommand ref reference "sec:fonts" \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \series medium TocLevel [int] \end_layout \end_inset The level of the style in the table of contents. This is used for automatic numbering of section headings. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TopSep \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout float=0 \end_layout \end_inset ] The vertical space with which the very first of a chain of paragraphs with this layout is separated from the previous paragraph. If the previous paragraph has another layout, the separations are not simply added, but the maximum is taken. \end_layout \begin_layout Subsection Floats \end_layout \begin_layout Standard \begin_inset CommandInset label LatexCommand label name "sec:floats" \end_inset Since version 1.3.0 of LyX, it is has been both possible and necessary to define the floats ( \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout figure \end_layout \end_inset , \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout table \end_layout \end_inset , \SpecialChar \ldots{} ) in the text class itself. Standard floats are included in the file \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout stdfloats.inc \end_layout \end_inset , so you may have to do no more than add \end_layout \begin_layout LyX-Code Input stdfloats.inc \end_layout \begin_layout Standard to your layout file. If you want to implement a text class that proposes some other float types (like the AGU class bundled with LyX), the information below will hopefully help you: \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Extension \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset = \begin_inset Quotes erd \end_inset \begin_inset Quotes erd \end_inset ] The file name extension of an auxiliary file for the list of figures (or whatever). LaTeX writes the captions to this file. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout GuiName \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset = \begin_inset Quotes erd \end_inset \begin_inset Quotes erd \end_inset ] The string that will be used in the menus and also for the caption. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LaTeXBuiltin \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on 0 \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 1 \end_layout \end_inset ] Set to \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 1 \end_layout \end_inset if the float is already defined by the LaTeX document class. If this is set to \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout 0 \end_layout \end_inset , the float will be defined using the LaTeX package \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout float \end_layout \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ListName \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset = \begin_inset Quotes erd \end_inset \begin_inset Quotes erd \end_inset ] The heading used for the list of floats. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout NumberWithin \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset = \begin_inset Quotes erd \end_inset \begin_inset Quotes erd \end_inset ] This (optional) argument determines whether floats of this class will be numbered within some sectional unit of the document. For example, if within is equal to \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout chapter \end_layout \end_inset , the floats will be numbered within chapters. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Placement \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset = \begin_inset Quotes erd \end_inset \begin_inset Quotes erd \end_inset ] The default placement for the given class of floats. The string should be as in standard LaTeX: \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout t \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout b \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout p \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout h \end_layout \end_inset for top, bottom, page, and here, respectively. \begin_inset Foot status collapsed \begin_layout PlainLayout Note that the order of these letters in the string is irrelevant, like in LaTeX. \end_layout \end_inset On top of that there is a new type, \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout H \end_layout \end_inset , which does not really correspond to a float, since it means: put it \begin_inset Quotes eld \end_inset here \begin_inset Quotes erd \end_inset and nowhere else. Note however that the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout H \end_layout \end_inset specifier is special and, because of implementation details, cannot be used in non-builtin float types. If you do not understand what this means, just use \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout tbp \end_layout \end_inset \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Style \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset = \begin_inset Quotes erd \end_inset \begin_inset Quotes erd \end_inset ] The style used when defining the float using \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash newfloat \end_layout \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Type \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset = \begin_inset Quotes erd \end_inset \begin_inset Quotes erd \end_inset ] The \begin_inset Quotes eld \end_inset type \begin_inset Quotes erd \end_inset of the new class of floats, like program or algorithm. After the appropriate \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash newfloat \end_layout \end_inset , commands such as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash begin{program} \end_layout \end_inset or \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash end{algorithm*} \end_layout \end_inset will be available. \end_layout \begin_layout Standard Note that defining a float with type \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on type \end_layout \end_inset automatically defines the corresponding counter with name \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on type \end_layout \end_inset . \end_layout \begin_layout Subsection Inset layouts and Flex insets \end_layout \begin_layout Standard \begin_inset CommandInset label LatexCommand label name "sec:charstyle" \end_inset LyX has supported character styles since version 1.4.0; since version 1.6.0 these are called Flex insets. \end_layout \begin_layout Standard Furthermore, it is possible to define the general layout of many different types of insets. Currently, InsetLayout can be used to customize the layout parameters for footnotes, marginal notes, note insets, ERT insets, branches, listings, indexes, boxes, tables, algorithms, URLs, and optional arguments, as well as Flex insets. \end_layout \begin_layout Standard Flex insets come in three different kinds: \end_layout \begin_layout Itemize character style ( \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout CharStyle \end_layout \end_inset ): These define semantic markup corresponding to such LaTeX commands as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash noun \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash code \end_layout \end_inset . \end_layout \begin_layout Itemize user custom ( \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Custom \end_layout \end_inset ): These can be used to define custom collapsable insets, similar to ERT, footnote, and the like. \end_layout \begin_layout Itemize XML elements ( \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Element \end_layout \end_inset ): For use with DocBook classes. \end_layout \begin_layout Standard The \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout InsetLayout \end_layout \end_inset definition starting line is of the form \end_layout \begin_layout LyX-Code InsetLayout \end_layout \begin_layout Standard where \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \end_layout \end_inset can be \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Algorithm \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Branch \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Box \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ERT \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Figure \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Foot \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Index \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Listings \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Marginal \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Note:Comment \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Note:Note \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Note:GreyedOut \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout OptArg \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Table \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout URL \end_layout \end_inset , or \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Flex \end_layout \end_inset . If \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \end_layout \end_inset is \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Flex \end_layout \end_inset , then \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \end_layout \end_inset should have the form \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout SubType:StyleName \end_layout \end_inset , where \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout SubType \end_layout \end_inset is either \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout CharStyle \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Custom \end_layout \end_inset , or \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Element \end_layout \end_inset , and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout StyleName \end_layout \end_inset is any valid identifier. \end_layout \begin_layout Standard The following \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout InsetLayout \end_layout \end_inset section can contain the following entries: \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout BgColor \end_layout \end_inset The color for the inset's background. These valid colors are defined in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout src/ColorCode.h \end_layout \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Decoration \end_layout \end_inset can be \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Classic \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Minimalistic \end_layout \end_inset , or \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Conglomerate \end_layout \end_inset , describing the rendering style used for the inset's frame and buttons. Footnotes generally use \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Classic \end_layout \end_inset ; ERT insets generally use \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Minimalistic \end_layout \end_inset ; and character styles use \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Conglomerate \end_layout \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Font \end_layout \end_inset The font used for both the text body \emph on and \emph default the label. See section \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "sec:fonts" \end_inset . Note that defining this font automatically defines the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelFont \end_layout \end_inset to the same value, so define this first and define \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelFont \end_layout \end_inset later if you want them to be different. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ForceLTR \end_layout \end_inset [[FIXME]] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout FreeSpacing \end_layout \end_inset As with paragraph styles (see page \begin_inset CommandInset ref LatexCommand pageref reference "des:FreeSpacing" \end_inset ). \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout KeepEmpty \end_layout \end_inset As with paragraph styles (see page \begin_inset CommandInset ref LatexCommand pageref reference "des:KeepEmpty" \end_inset ). \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelString \end_layout \end_inset What will be displayed on the button or elsewhere as the inset label. Some inset types (ERT and Branch) modify this label on the fly. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelFont \end_layout \end_inset The font used for the label. See section \begin_inset Space ~ \end_inset \begin_inset CommandInset ref LatexCommand ref reference "sec:fonts" \end_inset . Note that this definition can never appear before \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Font \end_layout \end_inset , lest it be ineffective. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LatexName \end_layout \end_inset The name of the corresponding LaTeX stuff. Either the environment or command name. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LatexParam \end_layout \end_inset The optional parameter for the corresponding \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LatexName \end_layout \end_inset stuff, including possible bracket pairs like \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout [] \end_layout \end_inset . This parameter cannot be changed from within LyX. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LatexType \end_layout \end_inset As with paragraph styles (see page \begin_inset CommandInset ref LatexCommand pageref reference "des:LatexType" \end_inset ). \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyxType \end_layout \end_inset Can be \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout charstyle \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout custom \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout element \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout end \end_layout \end_inset (indicating a dummy definition ending definitions of charstyles etc.). This entry is only meaningful for Flex (user definable) insets. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Preamble \end_layout \end_inset As with paragraph styles (see page \begin_inset CommandInset ref LatexCommand pageref reference "des:Preamble" \end_inset ). \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Requires \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset ] As with paragraph styles (see page \begin_inset CommandInset ref LatexCommand pageref reference "des:Requires" \end_inset ). \end_layout \begin_layout Subsection Counters \end_layout \begin_layout Standard \begin_inset CommandInset label LatexCommand label name "sec:counter" \end_inset Since version 1.3.0 of LyX, it is both possible and necessary to define the counters ( \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout chapter \end_layout \end_inset , \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout figure \end_layout \end_inset , \SpecialChar \ldots{} ) in the text class itself. The standard counters are defined in the file \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout stdcounters.inc \end_layout \end_inset , so you may have to do no more than add \end_layout \begin_layout LyX-Code Input stdcounters.inc \end_layout \begin_layout Standard to your layout file to get them to work. But if you want to define custom counters, then you can do so, using the following parameters: \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelString [string=""] \end_layout \end_inset when this is defined, this string defines how the counter is displayed. Setting this value sets \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelStringAppendix \end_layout \end_inset to the same value. The following special constructs can be used in the string: \end_layout \begin_deeper \begin_layout Itemize \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash thecounter \end_layout \end_inset will be replaced by the expansion of the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelString \end_layout \end_inset (or \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelStringAppendix \end_layout \end_inset ) of the counter \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout counter \end_layout \end_inset . \end_layout \begin_layout Itemize counter values can be expressed using LaTeX-like macros \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash \emph on numbertype \emph default { \emph on counter \emph default } \end_layout \end_inset , where \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on numbertype \end_layout \end_inset can be: \begin_inset Foot status collapsed \begin_layout PlainLayout \family roman \series medium \shape up \size normal \emph off \bar no \noun off \color none Actually, the situation is a bit more complicated: any \family default \series default \shape default \emph default \bar default \size default \emph on \noun default \color inherit numbertype \family roman \series medium \shape up \size normal \emph off \bar no \noun off other than those descibed below will produce arabic numerals. It would not be surprising to see this change in the future. \end_layout \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout arabic \end_layout \end_inset : 1, 2, 3,\SpecialChar \ldots{} ; \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout alph \end_layout \end_inset for lower-case letters: a, b, c, \SpecialChar \ldots{} ; \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Alph \end_layout \end_inset for upper-case letters: A, B, C, \SpecialChar \ldots{} ; \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout roman \end_layout \end_inset for lower-case roman numerals: i, ii, iii, \SpecialChar \ldots{} ; \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Roman \end_layout \end_inset for upper-case roman numerals: I, II, III\SpecialChar \ldots{} ; \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout hebrew \end_layout \end_inset for hebrew numerals. \end_layout \end_deeper \begin_layout Standard If LabelString is not defined, a default value is constructed as follows: if the counter has a master counter \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout master \end_layout \end_inset (defined via \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Within \end_layout \end_inset ), the string \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash themaster. \backslash arabic{counter} \end_layout \end_inset is used; otherwise the string \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash arabic{counter} \end_layout \end_inset is used. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelStringAppendix [string=""] \end_layout \end_inset Same as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LabelString \end_layout \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Name \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset = \begin_inset Quotes erd \end_inset \begin_inset Quotes erd \end_inset ] The name of the counter. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Within \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset = \begin_inset Quotes erd \end_inset \begin_inset Quotes erd \end_inset ] If this is set to the name of another counter, the present counter will be reset everytime the other one is increased. For example, \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout subsection \end_layout \end_inset is numbered inside \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout section \end_layout \end_inset . \end_layout \begin_layout Subsection Font description \end_layout \begin_layout Standard \begin_inset CommandInset label LatexCommand label name "sec:fonts" \end_inset A font description looks like this: \end_layout \begin_layout LyX-Code Font \family roman \emph on or \family default \emph default LabelFont \end_layout \begin_layout LyX-Code ... \end_layout \begin_layout LyX-Code EndFont \end_layout \begin_layout Standard The following commands are available: \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Color \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on none \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout black \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout white \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout red \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout green \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout blue \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout cyan \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout magenta \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout yellow \end_layout \end_inset ] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Family \end_layout \end_inset [ \emph on \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on Roman \end_layout \end_inset \emph default , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Sans \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Typewriter \end_layout \end_inset ] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Misc \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout string \end_layout \end_inset ] Valid argument sare: \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout emph \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout noun \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout underbar \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout no_emph \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout no_noun \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout no_bar \end_layout \end_inset . Each of these turns on or off the corresponding attribute. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Series \end_layout \end_inset [ \emph on \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on Medium \end_layout \end_inset \emph default , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Bold \end_layout \end_inset ] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Shape \end_layout \end_inset [ \emph on \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on Up \end_layout \end_inset \emph default , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Italic \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout SmallCaps \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Slanted \end_layout \end_inset ] \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Size \end_layout \end_inset [ \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout tiny \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout small \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \emph on normal \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout large \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout larger \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout largest \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout huge \end_layout \end_inset , \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout giant \end_layout \end_inset ] \end_layout \begin_layout Subsection Upgrading old layout files \end_layout \begin_layout Standard The file format of layout files changes from time to time, so old layout files need to be converted. This process has been automated since LyX 1.4.0: If LyX reads an old format layout file it will call the conversion tool \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir/scripts/layout2layout.py \end_layout \end_inset and convert it to a temporary file in current format. The original file is left untouched. If you want to convert the layout file permanently, just call the converter by hand: \end_layout \begin_layout LyX-Code python $LyXDir/scripts/layout2layout.py myclass.layout myclassnew.layout \end_layout \begin_layout Standard (You need to replace \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $LyXDir \end_layout \end_inset with the name of your LyX system directory, unless you happen to have defined such an environment variable.) Then copy \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout myclassnew.layout \end_layout \end_inset to \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir/layouts/ \end_layout \end_inset . \end_layout \begin_layout Standard The automatic conversion only handles syntax changes. It cannot handle the case where the contents of included files was changed, so these will have to be converted separately. \end_layout \begin_layout Section Creating Templates \begin_inset CommandInset label LatexCommand label name "sec:templates" \end_inset \end_layout \begin_layout Standard Templates are created just like usual documents. The only difference is that usual documents contain all possible settings, including the font scheme and the paper size. Usually a user doesn't want a template to overwrite his defaults in these cases. For that reason, the designer of a template should remove the corresponding commands like \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash fontscheme \end_layout \end_inset or \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash papersize \end_layout \end_inset from the template LyX file. This can be done with any simple text-editor, for example \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout vi \end_layout \end_inset or \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout xedit \end_layout \end_inset . \end_layout \begin_layout Standard Put the edited template files you create in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir/templates/ \end_layout \end_inset , copy the ones you use from the global template directory in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir/templates/ \end_layout \end_inset to the same place, and redefine the template path in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under T \family sans \bar default ools \family default \SpecialChar \menuseparator \bar under P \bar default references\SpecialChar \menuseparator Paths \end_layout \end_inset dialog. \end_layout \begin_layout Standard Note that there is a template which has a particular meaning: \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout defaults.lyx \end_layout \end_inset . This template is loaded everytime you create a new document with \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under F \bar default ile \end_layout \end_inset \SpecialChar \menuseparator \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under N \bar default ew \end_layout \end_inset in order to provide useful defaults. To create this template from inside LyX, all you have to do is to open a document with the correct settings, and use the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Sa \bar under v \bar default e as Document Defaults \end_layout \end_inset button. \end_layout \begin_layout Chapter Including External Material \end_layout \begin_layout Standard The use of material from sources external to LyX is covered in detail in the \emph on Embedded Objects \emph default manual. This part of the manual covers what needs to happen behind the scenes for new sorts of material to be included. \end_layout \begin_layout Section How does it work? \end_layout \begin_layout Standard The external material feature is based on the concept of a \emph on template \emph default . A template is a specification of how LyX should interface with a certain kind of material. As bundled, LyX comes with predefined templates for Xfig figures, various raster format images, chess diagrams, and LilyPond music notation. You can check the actual list by using the menu \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout Insert\SpecialChar \menuseparator File\SpecialChar \menuseparator External Material \end_layout \end_inset . Furthermore, it is possible to roll your own template to support a specific kind of material. Later we'll describe in more detail what is involved, and hopefully you will submit all the templates you create so we can include them in a later LyX version. \end_layout \begin_layout Standard Another basic idea of the external material feature is to distinguish between the original file that serves as a base for final material and the produced file that is included in your exported or printed document. For example, consider the case of a figure produced with \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Xfig \end_layout \end_inset . The Xfig application itself works on an original file with the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .fig \end_layout \end_inset extension. Within XFig, you create and change your figure, and when you are done, you save the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout fig \end_layout \end_inset -file. When you want to include the figure in your document, you invoke \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout transfig \end_layout \end_inset in order to create a PostScript file that can readily be included in your LaTeX file. In this case, the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .fig \end_layout \end_inset file is the original file, and the PostScript file is the produced file. \end_layout \begin_layout Standard This distinction is important in order to allow updating of the material while you are in the process of writing the document. Furthermore, it provides us with the flexibility that is needed to support multiple export formats. For instance, in the case of a plain text file, it is not exactly an award-winn ing idea to include the figure as raw PostScript®. Instead, you'd either prefer to just include a reference to the figure or try to invoke some graphics to Ascii converter to make the final result look similar to the real graphics. The external material management allows you to do this, because it is parameter ized on the different export formats that LyX supports. \end_layout \begin_layout Standard Besides supporting the production of different products according to the exported format, it supports tight integration with editing and viewing applications. In the case of an XFig figure, you are able to invoke Xfig on the original file with a single click from within the external material dialog in LyX, and also preview the produced PostScript file with ghostview with another click. No more fiddling around with the command line and/or file browsers to locate and manipulate the original or produced files. In this way, you are finally able to take full advantage of the many different applications that are relevant to use when you write your documents, and ultimately be more productive. \end_layout \begin_layout Section The external template configuration file \end_layout \begin_layout Standard It is relatively easy to add custom external template definitions to LyX. However, be aware that doing this in an careless manner most probably \emph on will \emph default introduce an easily exploitable security hole. So before you do this, please read the discussion about security in section \begin_inset CommandInset ref LatexCommand ref reference "sec:Security-discussion" \end_inset . \end_layout \begin_layout Standard Having said that, we encourage you to submit any interesting templates that you create. \end_layout \begin_layout Standard The external templates are defined in the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout LyXDir/lib/external_templates \end_layout \end_inset file. You can place your own version in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir/external_templates \end_layout \end_inset . \end_layout \begin_layout Standard A typical template looks like this: \end_layout \begin_layout LyX-Code Template XFig \end_layout \begin_layout LyX-Code GuiName "XFig: $$AbsOrRelPathParent$$Basename" \end_layout \begin_layout LyX-Code HelpText \end_layout \begin_layout LyX-Code An XFig figure. \end_layout \begin_layout LyX-Code HelpTextEnd \end_layout \begin_layout LyX-Code InputFormat fig \end_layout \begin_layout LyX-Code FileFilter "*.fig" \end_layout \begin_layout LyX-Code AutomaticProduction true \end_layout \begin_layout LyX-Code Transform Rotate \end_layout \begin_layout LyX-Code Transform Resize \end_layout \begin_layout LyX-Code Format LaTeX \end_layout \begin_layout LyX-Code TransformCommand Rotate RotationLatexCommand \end_layout \begin_layout LyX-Code TransformCommand Resize ResizeLatexCommand \end_layout \begin_layout LyX-Code Product "$$RotateFront$$ResizeFront \end_layout \begin_layout LyX-Code \backslash \backslash input{$$AbsOrRelPathMaster$$Basename.pstex_t} \end_layout \begin_layout LyX-Code $$ResizeBack$$RotateBack" \end_layout \begin_layout LyX-Code UpdateFormat pstex \end_layout \begin_layout LyX-Code UpdateResult "$$AbsPath$$Basename.pstex_t" \end_layout \begin_layout LyX-Code Requirement "graphicx" \end_layout \begin_layout LyX-Code ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pstex_t" \end_layout \begin_layout LyX-Code ReferencedFile latex "$$AbsPath$$Basename.eps" \end_layout \begin_layout LyX-Code ReferencedFile dvi "$$AbsPath$$Basename.eps" \end_layout \begin_layout LyX-Code FormatEnd \end_layout \begin_layout LyX-Code Format PDFLaTeX \end_layout \begin_layout LyX-Code TransformCommand Rotate RotationLatexCommand \end_layout \begin_layout LyX-Code TransformCommand Resize ResizeLatexCommand \end_layout \begin_layout LyX-Code Product "$$RotateFront$$ResizeFront \end_layout \begin_layout LyX-Code \backslash \backslash input{$$AbsOrRelPathMaster$$Basename.pdftex_t} \end_layout \begin_layout LyX-Code $$ResizeBack$$RotateBack" \end_layout \begin_layout LyX-Code UpdateFormat pdftex \end_layout \begin_layout LyX-Code UpdateResult "$$AbsPath$$Basename.pdftex_t" \end_layout \begin_layout LyX-Code Requirement "graphicx" \end_layout \begin_layout LyX-Code ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pdftex_t" \end_layout \begin_layout LyX-Code ReferencedFile latex "$$AbsPath$$Basename.pdf" \end_layout \begin_layout LyX-Code FormatEnd \end_layout \begin_layout LyX-Code Format Ascii \end_layout \begin_layout LyX-Code Product "$$Contents( \backslash "$$AbsPath$$Basename.asc \backslash ")" \end_layout \begin_layout LyX-Code UpdateFormat asciixfig \end_layout \begin_layout LyX-Code UpdateResult "$$AbsPath$$Basename.asc" \end_layout \begin_layout LyX-Code FormatEnd \end_layout \begin_layout LyX-Code Format DocBook \end_layout \begin_layout LyX-Code Product " \end_layout \begin_layout LyX-Code " \end_layout \begin_layout LyX-Code UpdateFormat eps \end_layout \begin_layout LyX-Code UpdateResult "$$AbsPath$$Basename.eps" \end_layout \begin_layout LyX-Code ReferencedFile docbook "$$AbsPath$$Basename.eps" \end_layout \begin_layout LyX-Code ReferencedFile docbook-xml "$$AbsPath$$Basename.eps" \end_layout \begin_layout LyX-Code FormatEnd \end_layout \begin_layout LyX-Code Product "[XFig: $$FName]" \end_layout \begin_layout LyX-Code FormatEnd \end_layout \begin_layout LyX-Code TemplateEnd \end_layout \begin_layout Standard As you can see, the template is enclosed in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Template \end_layout \end_inset \SpecialChar \ldots{} \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TemplateEnd \end_layout \end_inset . It contains a header specifying some general settings and, for each supported primary document file format, a section \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Format \end_layout \end_inset \SpecialChar \ldots{} \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout FormatEnd \end_layout \end_inset . \end_layout \begin_layout Subsection The template header \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout AutomaticProduction \begin_inset Space ~ \end_inset true|false \end_layout \end_inset Whether the file represented by the template must be generated by LyX. This command must occur exactly once. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout FileFilter \begin_inset Space ~ \end_inset \end_layout \end_inset A glob pattern that is used in the file dialog to filter out the desired files. If there is more than one possible file extension (e.g. \begin_inset Space ~ \end_inset tgif has \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .obj \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .tgo \end_layout \end_inset ), use something like \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout "*.{obj,tgo}" \end_layout \end_inset . This command must occur exactly once. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout GuiName \begin_inset Space ~ \end_inset \end_layout \end_inset The text that is displayed on the button. This command must occur exactly once. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout HelpText \begin_inset Space ~ \end_inset \begin_inset Space ~ \end_inset HelpTextEnd \end_layout \end_inset The help text that is used in the External dialog. Provide enough information to explain to the user just what the template can provide him with. This command must occur exactly once. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout InputFormat \begin_inset Space ~ \end_inset \end_layout \end_inset The file format of the original file. This must be the name of a format that is known to LyX (see section \begin_inset CommandInset ref LatexCommand ref reference "sub:Formats" \end_inset ). Use \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout * \end_layout \end_inset \begin_inset Quotes erd \end_inset if the template can handle original files of more than one format. LyX will attempt to interrogate the file itself in order to deduce its format in this case. This command must occur exactly once. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Template \begin_inset Space ~ \end_inset \end_layout \end_inset A unique name for the template. It must not contain substitution macros (see below). \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Transform \begin_inset Space ~ \end_inset Rotate|Resize|Clip|Extra \end_layout \end_inset This command specifies which transformations are supported by this template. It may occur zero or more times. This command enables the corresponding tabs in the external dialog. Each \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Transform \end_layout \end_inset command must have either a corresponding \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TransformCommand \end_layout \end_inset or a \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TransformOption \end_layout \end_inset command in the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Format \end_layout \end_inset section. Otherwise the transformation will not be supported by that format. \end_layout \begin_layout Subsection The Format section \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Format \begin_inset Space ~ \end_inset LaTeX|PDFLaTeX|PlainText|DocBook \end_layout \end_inset The primary document file format that this format definition is for. Not every template has a sensible representation in all document file formats. Please define nevertheless a \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Format \end_layout \end_inset section for all formats. Use a dummy text when no representation is available. Then you can at least see a reference to the external material in the exported document. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Option \begin_inset Space ~ \end_inset \begin_inset Space ~ \end_inset \end_layout \end_inset This command defines an additional macro \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$ \end_layout \end_inset for substitution in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Product \end_layout \end_inset . \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \end_layout \end_inset itself may contain substitution macros. The advantage over using \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \end_layout \end_inset directly in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Product \end_layout \end_inset is that the substituted value of \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$ \end_layout \end_inset is sanitized so that it is a valid optional argument in the document format. This command may occur zero or more times. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Product \begin_inset Space ~ \end_inset \end_layout \end_inset The text that is inserted in the exported document. This is actually the most important command and can be quite complex. This command must occur exactly once. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Preamble \begin_inset Space ~ \end_inset \end_layout \end_inset This command specifies a preamble snippet that will be included in the LaTeX preamble. It has to be defined using \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout PreambleDef \end_layout \end_inset \SpecialChar \ldots{} \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout PreambleDefEnd \end_layout \end_inset . This command may occur zero or more times. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ReferencedFile \begin_inset Space ~ \end_inset \begin_inset Space ~ \end_inset \end_layout \end_inset This command denotes files that are created by the conversion process and are needed for a particular export format. If the filename is relative, it is interpreted relative to the master document. This command may be given zero or more times. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Requirement \begin_inset Space ~ \end_inset \end_layout \end_inset The name of a required LaTeX package. The package is included via \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout \backslash usepackage{} \end_layout \end_inset in the LaTeX preamble. This command may occur zero or more times. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TransformCommand \begin_inset Space ~ \end_inset Rotate \begin_inset Space ~ \end_inset RotationLatexCommand \end_layout \end_inset This command specifies that the built in LaTeX command should be used for rotation. This command may occur once or not at all. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TransformCommand \begin_inset Space ~ \end_inset Resize \begin_inset Space ~ \end_inset ResizeLatexCommand \end_layout \end_inset This command specifies that the built in LaTeX command should be used for resizing. This command may occur once or not at all. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TransformOption \begin_inset Space ~ \end_inset Rotate \begin_inset Space ~ \end_inset RotationLatexOption \end_layout \end_inset This command specifies that rotation is done via an optional argument. This command may occur once or not at all. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TransformOption \begin_inset Space ~ \end_inset Resize \begin_inset Space ~ \end_inset ResizeLatexOption \end_layout \end_inset This command specifies that resizing is done via an optional argument. This command may occur once or not at all. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TransformOption \begin_inset Space ~ \end_inset Clip \begin_inset Space ~ \end_inset ClipLatexOption \end_layout \end_inset This command specifies that clipping is done via an optional argument. This command may occur once or not at all. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TransformOption \begin_inset Space ~ \end_inset Extra \begin_inset Space ~ \end_inset ExtraLatexOption \end_layout \end_inset This command specifies that an extra optional argument is used. This command may occur once or not at all. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UpdateFormat \begin_inset Space ~ \end_inset \end_layout \end_inset The file format of the converted file. This must be the name of a format that is known to LyX (see the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under T \bar default ools\SpecialChar \menuseparator \bar under P \bar default references:Conversion \end_layout \end_inset dialog). This command must occur exactly once. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UpdateResult \begin_inset Space ~ \end_inset \end_layout \end_inset The file name of the converted file. The file name must be absolute. This command must occur exactly once. \end_layout \begin_layout Subsection Preamble definitions \end_layout \begin_layout Standard The external template configuration file may contain additional preamble definitions enclosed by \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout PreambleDef \end_layout \end_inset \SpecialChar \ldots{} \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout PreambleDefEnd \end_layout \end_inset . They can be used by the templates in the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Format \end_layout \end_inset section. \end_layout \begin_layout Section The substitution mechanism \end_layout \begin_layout Standard When the external material facility invokes an external program, it is done on the basis of a command defined in the template configuration file. These commands can contain various macros that are expanded before execution. Execution always take place in the directory of the containing document. \end_layout \begin_layout Standard Also, whenever external material is to be displayed, the name will be produced by the substitution mechanism, and most other commands in the template definition support substitution as well. \end_layout \begin_layout Standard The available macros are the following: \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$AbsOrRelPathMaster \end_layout \end_inset The file path, absolute or relative to the master LyX document. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$AbsOrRelPathParent \end_layout \end_inset The file path, absolute or relative to the LyX document. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$AbsPath \end_layout \end_inset The absolute file path. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$Basename \end_layout \end_inset The filename without path and without the extension. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$Contents( \begin_inset Quotes eld \end_inset filename.ext \begin_inset Quotes erd \end_inset ) \end_layout \end_inset This macro will expand to the contents of the file with the name \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout filename.ext \end_layout \end_inset . \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$Extension \end_layout \end_inset The file extension (including the dot). \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$FName \end_layout \end_inset The filename of the file specified in the external material dialog. This is either an absolute name, or it is relative to the LyX document. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$FPath \end_layout \end_inset The path part of \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$FName \end_layout \end_inset (absolute name or relative to the LyX document). \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$RelPathMaster \end_layout \end_inset The file path, relative to the master LyX document. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$RelPathParent \end_layout \end_inset The file path, relative to the LyX document. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$Sysdir \end_layout \end_inset This macro will expand to the absolute path of the system directory. This is typically used to point to the various helper scripts that are bundled with LyX. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$Tempname \end_layout \end_inset A name and full path to a temporary file which will be automatically deleted whenever the containing document is closed, or the external material insertion deleted. \end_layout \begin_layout Standard All path macros contain a trailing directory separator, so you can construct e.g. the absolute filename with \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$AbsPath$$Basename$$Extension \end_layout \end_inset . \end_layout \begin_layout Standard The macros above are substituted in all commands unless otherwise noted. The command \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Product \end_layout \end_inset supports additionally the following substitutions if they are enabled by the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Transform \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TransformCommand \end_layout \end_inset commands: \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$ResizeFront \end_layout \end_inset The front part of the resize command. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$ResizeBack \end_layout \end_inset The back part of the resize command. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$RotateFront \end_layout \end_inset The front part of the rotation command. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$RotateBack \end_layout \end_inset The back part of the rotation command. \end_layout \begin_layout Standard The value string of the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Option \end_layout \end_inset command supports additionally the following substitutions if they are enabled by the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout Transform \end_layout \end_inset and \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout TransformOption \end_layout \end_inset commands: \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$Clip \end_layout \end_inset The clip option. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$Extra \end_layout \end_inset The extra option. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$Resize \end_layout \end_inset The resize option. \end_layout \begin_layout Description \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$Rotate \end_layout \end_inset The rotation option. \end_layout \begin_layout Standard You may ask why there are so many path macros. There are mainly two reasons: \end_layout \begin_layout Enumerate Relative and absolute file names should remain relative or absolute, respectivel y. Users may have reasons to prefer either form. Relative names are useful for portable documents that should work on different machines, for example. Absolute names may be required by some programs. \end_layout \begin_layout Enumerate LaTeX treats relative file names differently than LyX and other programs in nested included files. For LyX, a relative file name is always relative to the document that contains the file name. For LaTeX, it is always relative to the master document. These two definitions are identical if you have only one document, but differ if you have a master document that includes part documents. That means that relative filenames must be transformed when presented to LaTeX. Fortunately LyX does this automatically for you if you choose the right macros. \end_layout \begin_layout Standard So which path macro should be used in new template definitions? The rule is not difficult: \end_layout \begin_layout Itemize Use \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$AbsPath \end_layout \end_inset if an absolute path is required. \end_layout \begin_layout Itemize Use \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$AbsOrRelPathMaster \end_layout \end_inset if the substituted string is some kind of LaTeX input. \end_layout \begin_layout Itemize Else use \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout $$AbsOrRelPathParent \end_layout \end_inset in order to preserve the user's choice. \end_layout \begin_layout Standard There are special cases where this rule does not work and e.g. \begin_inset Space ~ \end_inset relative names are needed, but normally it will work just fine. One example for such a case is the command \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pstex_t" \end_layout \end_inset in the XFig template above: We can't use the absolute name because the copier for \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .pstex_t \end_layout \end_inset files needs the relative name in order to rewrite the file content. \end_layout \begin_layout Section \begin_inset CommandInset label LatexCommand label name "sec:Security-discussion" \end_inset Security discussion \end_layout \begin_layout Standard \begin_inset Note Note status collapsed \begin_layout PlainLayout This section is outdated \end_layout \end_inset The external material feature interfaces with a lot of external programs and does so automatically, so we have to consider the security implications of this. In particular, since you have the option of including your own filenames and/or parameter strings and those are expanded into a command, it seems that it would be possible to create a malicious document which executes arbitrary commands when a user views or prints the document. This is something we definately want to avoid. \end_layout \begin_layout Standard However, since the external program commands are specified in the template configuration file only, there are no security issues if LyX is properly configured with safe templates only. This is so because the external programs are invoked with the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout execvp \end_layout \end_inset -system call rather than the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout system \end_layout \end_inset system-call, so it's not possible to execute arbitrary commands from the filename or parameter section via the shell. \end_layout \begin_layout Standard This also implies that you are restricted in what command strings you can use in the external material templates. In particular, pipes and redirection are not readily available. This has to be so if LyX should remain safe. If you want to use some of the shell features, you should write a safe script to do this in a controlled manner, and then invoke the script from the command string. In the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout lib/scripts \end_layout \end_inset directory of the LyX installation, you can find a safe wrapper script \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout general_command_wrapper.py \end_layout \end_inset that supports redirection of input and output. That can serve as an example for how to write safe template scripts. For a more advanced example that uses \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout fork \end_layout \end_inset and friends, take a look at the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout pic2ascii.py \end_layout \end_inset converter script. \end_layout \begin_layout Standard It is possible to design a template that interacts directly with the shell, but since this would allow a malicious user to execute arbitrary commands by writing clever filenames and/or parameters, we generally recommend that you only use safe scripts that work with the \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout execvp \end_layout \end_inset system call in a controlled manner. Of course, for use in a controlled environment, it can be tempting to just fall back to use ordinary shell scripts. If you do so, be aware that you \emph on will \emph default provide an easily exploitable security hole in your system. Of course it stands to reason that such unsafe templates will never be included in the standard LyX distribution, although we do encourage people to submit new templates in the open source tradition. But LyX as shipped from the official distribution channels will never have unsafe templates. \end_layout \begin_layout Standard Including external material provides a lot of power, and you have to be careful not to introduce security hazards with this power. A subtle error in a single line in an innocent looking script can open the door to huge security problems. So if you do not fully understand the issues, we recommend that you consult a knowledgable security professional or the LyX development team if you have any questions about whether a given template is safe or not. And do this before you use it in an uncontrolled environment. \end_layout \begin_layout Chapter The LyX Server \end_layout \begin_layout Section Introduction \end_layout \begin_layout Standard The LyX server is a method implemented in LyX that will enable other programs to talk to LyX, invoke LyX commands, and retrieve information about the LyX internal state. This is only intended for advanced users, but they should find it useful. Please note that, at present, \emph on the server does not work on Windows \emph default . \begin_inset Foot status collapsed \begin_layout PlainLayout There is no principled reason it cannot do so. But none of the developers on Windows® have yet implemented this functionality there. \end_layout \end_inset \end_layout \begin_layout Section Starting the LyX Server \end_layout \begin_layout Standard The LyX server works through the use of a pair of named pipes. These are usually located in \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout UserDir \end_layout \end_inset and have the names \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .lyxpipe.in \end_layout \end_inset \begin_inset Quotes erd \end_inset and \begin_inset Quotes eld \end_inset \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .lyxpipe.out \end_layout \end_inset \begin_inset Quotes erd \end_inset . External programs write into \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .lyxpipe.in \end_layout \end_inset and read back data from \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .lyxpipe.out \end_layout \end_inset . The stem of the pipe names can be defined in the \begin_inset Flex CharStyle:MenuItem status collapsed \begin_layout PlainLayout \bar under T \bar default ools\SpecialChar \menuseparator \bar under P \bar default references \end_layout \end_inset dialog, for example \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout "/home/myhome/.lyxpipe" \end_layout \end_inset . \end_layout \begin_layout Standard LyX will add the ' \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .in \end_layout \end_inset ' and ' \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout .out \end_layout \end_inset ' to create the pipes. The above setting also has the effect of activating the LyX server. If one of the pipes already exists, LyX will assume that another LyX process is already running and will not start the server. To have several LyX processes with servers at the same time, you have to change the configuration between the start of the programs. \end_layout \begin_layout Standard If you are developing a client program, you might find it useful to enable debugging information from the LyX server. Do this by starting LyX as lyx -dbg lyxserver. \end_layout \begin_layout Standard Warning: if LyX crashes, it may not manage to remove the pipes; in this case you must remove them manually. If LyX starts and the pipes exist already, it will not start any server. \end_layout \begin_layout Standard Other than this, there are a few points to consider: \end_layout \begin_layout Itemize Both server and clients must run on UNIX or OS/2 machines. Communications between LyX on UNIX and clients on OS/2 or vice versa is not possible right now. \end_layout \begin_layout Itemize On OS/2, only one client can connect to LyXServer at a time. \end_layout \begin_layout Itemize On OS/2, clients must open inpipe with \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout O_WRONLY \end_layout \end_inset \end_layout \begin_layout Standard mode. \end_layout \begin_layout Standard You can find a complete example client written in C in the source distribution as \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout development/lyxserver/server_monitor.c \end_layout \end_inset . \end_layout \begin_layout Section Normal communication \end_layout \begin_layout Standard To issue a LyX call, the client writes a line of ASCII text into the input pipe. This line has the following format: \end_layout \begin_layout Quote LYXCMD: \emph on clientname \emph default : \emph on function \emph default : \emph on argument \end_layout \begin_layout Description \emph on clientname \emph default is a name that the client can choose arbitrarily. Its only use is that LyX will echo it if it sends an answer---so a client can dispatch results from different requesters. \end_layout \begin_layout Description \emph on function \emph default is the function you want LyX to perform. It is the same as the commands you'd use in the minibuffer. \end_layout \begin_layout Description \emph on argument \emph default is an optional argument which is meaningful only to some functions (for instance \begin_inset Quotes eld \end_inset self-insert \begin_inset Quotes erd \end_inset which will insert the argument as text at the cursor position.) \end_layout \begin_layout Standard The answer from LyX will arrive in the output pipe and be of the form \end_layout \begin_layout Quote INFO: \emph on clientname \emph default : \emph on function \emph default : \emph on data \end_layout \begin_layout Standard where \emph on clientname \emph default and \emph on function \emph default are just echoed from the command request, while \emph on data \emph default is more or less useful information filled according to how the command execution worked out. Some commands will return information about the internal state of LyX, such as \begin_inset Quotes eld \end_inset font-state \begin_inset Quotes erd \end_inset , while other will return an empty data-response. This means that the command execution went fine. \end_layout \begin_layout Standard In case of errors, the response from LyX will have this form \end_layout \begin_layout Quote ERROR: \emph on clientname \emph default : \emph on function \emph default : \emph on error message \end_layout \begin_layout Standard where the \emph on error message \emph default should contain an explanation of why the command failed. \end_layout \begin_layout Standard Examples: \end_layout \begin_layout LyX-Code echo "LYXCMD:test:beginning-of-buffer:" >~/.lyxpipe.in \end_layout \begin_layout LyX-Code echo "LYXCMD:test:get-xy:" >~/.lyxpipe.in \newline read a <~/.lyxpipe.out \newline echo $a \end_layout \begin_layout Section Notification \end_layout \begin_layout Standard LyX can notify clients of events going on asynchronously. Currently it will only do this if the user binds a key sequence with the function \begin_inset Quotes eld \end_inset notify \begin_inset Quotes erd \end_inset . The format of the string LyX sends is as follows: \end_layout \begin_layout Quote \begin_inset Flex CharStyle:Code status collapsed \begin_layout PlainLayout NOTIFY: \end_layout \end_inset \emph on key-sequence \end_layout \begin_layout Standard where \emph on key-sequence \emph default is the printed representation of the key sequence that was actually typed by the user. \end_layout \begin_layout Standard This mechanism can be used to extend LyX's command set and implement macros: bind some key sequence to \begin_inset Quotes eld \end_inset notify \begin_inset Quotes erd \end_inset , start a client that listens on the out pipe, dispatches the command according to the sequence and starts a function that may use LyX calls and LyX requests to issue a command or a series of commands to LyX. \end_layout \begin_layout Section The simple LyX Server Protocol \end_layout \begin_layout Standard LyX implements a simple protocol that can be used for session management. All messages are of the form \end_layout \begin_layout Quote LYXSRV: \emph on clientname \emph default : \emph on protocol message \end_layout \begin_layout Standard where \emph on protocol message \emph default can be \begin_inset Quotes eld \end_inset hello \begin_inset Quotes erd \end_inset or \begin_inset Quotes eld \end_inset bye \begin_inset Quotes erd \end_inset . If \begin_inset Quotes eld \end_inset hello \begin_inset Quotes erd \end_inset is received from a client, LyX will report back to inform the client that it's listening to it's messages, while \begin_inset Quotes eld \end_inset bye \begin_inset Quotes erd \end_inset sent from LyX will inform clients that LyX is closing. \end_layout \end_body \end_document