#LyX 1.6.4svn created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass scrbook
\begin_preamble
% DO NOT ALTER THIS PREAMBLE!!!
%
% This preamble is designed to ensure that this document prints
% out as advertised. If you mess with this preamble,
% parts of this document may not print out as expected.  If you
% have problems LaTeXing this file, please contact 
% the documentation team
% email: lyx-docs@lists.lyx.org

\usepackage{ifpdf} % part of the hyperref bundle
\ifpdf % if pdflatex is used

 % set fonts for nicer pdf view
 \IfFileExists{lmodern.sty}
  {\usepackage{lmodern}}{}

\fi % end if pdflatex is used

% the pages of the TOC is numbered roman
% and a pdf-bookmark for the TOC is added
\let\myTOC\tableofcontents
\renewcommand\tableofcontents{%
  \frontmatter
  \pdfbookmark[1]{\contentsname}{}
  \myTOC
  \mainmatter }

% 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
\options fleqn,liststotoc,bibtotoc,idxtotoc,BCOR7.5mm,titlepage,tablecaptionabove
\use_default_options false
\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 auto
\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 default
\paperfontsize 12
\spacing single
\use_hyperref true
\pdf_title "LyX Configuration Manual"
\pdf_author "LyX Team"
\pdf_subject "LyX-documentation Customization"
\pdf_keywords "LyX, documentation, customization"
\pdf_bookmarks true
\pdf_bookmarksnumbered true
\pdf_bookmarksopen true
\pdf_bookmarksopenlevel 1
\pdf_breaklinks false
\pdf_pdfborder false
\pdf_colorlinks true
\pdf_backref false
\pdf_pdfusetitle false
\pdf_quoted_options "linkcolor=black, citecolor=black, urlcolor=blue, filecolor=blue,pdfpagelayout=OneColumn, pdfnewwindow=true,pdfstartview=XYZ, plainpages=false, pdfpagelabels"
\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 "" 
\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 Plain Layout
\noindent
If you have comments or error corrections, please send them to the LyX Documenta
tion mailing list, 
\begin_inset CommandInset href
LatexCommand href
target "lyx-docs@lists.lyx.org"
type "mailto:"

\end_inset

.
 Include 
\begin_inset Quotes eld
\end_inset

[Customization]
\begin_inset Quotes erd
\end_inset

 in the subject header, and please cc the current maintainer of this file,
 Richard Heck <rgheck@comcast.net>.
\end_layout

\end_inset


\begin_inset Newline newline
\end_inset


\begin_inset Newline newline
\end_inset

Version 1.6.x 
\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 collapsed

\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
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 Plain Layout
Help\SpecialChar \menuseparator
About
\begin_inset space ~
\end_inset

LyX
\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 Plain Layout
LyXDir
\end_layout

\end_inset

 and the latter 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
LyXDir
\end_layout

\end_inset

?
\end_layout

\begin_layout Standard
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LyXDir
\end_layout

\end_inset

 and its sub-directories contain a number of files and that can be used
 to customize LyX's behavior.
 You can change many of these files from within LyX itself through the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Tools\SpecialChar \menuseparator
Preferences
\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 Plain Layout
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 Plain Layout
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 Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
lyxrc.defaults
\end_layout

\end_inset

 contains defaults for various commands.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Help\SpecialChar \menuseparator
LaTeX
\begin_inset space ~
\end_inset

Configuration
\end_layout

\end_inset

.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
layout/
\end_layout

\end_inset

 directories, along with the associated LaTeX document class and their descripti
on.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
lyxmodules.lst
\end_layout

\end_inset

 the list of layout modules found in your 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
layout/
\end_layout

\end_inset

 directories
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
*files.lst
\end_layout

\end_inset

 lists of various sorts of LaTeX-related files found on your system
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
doc/LaTeXConfig.lyx
\end_layout

\end_inset

 is automatically generated during configuration from the file 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
LyXDir
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
UserDir
\end_layout

\end_inset

 will be used.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
bind/
\end_layout

\end_inset

 this directory contains files with the extension 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
.bind
\end_layout

\end_inset

 that define the keybindings used in LyX.
 If there exists an internationalized version of the bind file named 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$LANG_xxx.bind
\end_layout

\end_inset

, that will be used first.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
clipart/
\end_layout

\end_inset

 contains graphics files that can be included in documents.
 
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
LaTeXConfig.lyx
\end_layout

\end_inset

 deserves special attention, as noted above.
 The internationalized help docs are in subdirectories 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
doc/xx
\end_layout

\end_inset

 where 
\begin_inset Quotes eld
\end_inset

xx
\begin_inset Quotes erd
\end_inset

 is the ISO language code.
 See chapter
\begin_inset space ~
\end_inset


\begin_inset CommandInset ref
LatexCommand ref
reference "cha:Internationalizing-LyX"

\end_inset

 for details.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Examples
\end_layout

\end_inset

 button to get there.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
images/
\end_layout

\end_inset

 contains image files that are used by the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
kbd/
\end_layout

\end_inset

 contains keyboard keymapping files.
 See Chapter
\begin_inset space ~
\end_inset


\begin_inset CommandInset ref
LatexCommand ref
reference "sec:International-Keymap-Stuff"

\end_inset

 for details.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 "cha:Installing-New-Document"

\end_inset

.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
lyx2lyx
\end_layout

\end_inset

 contains the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
scripts/
\end_layout

\end_inset

 contains some files that demonstrate the capabilities of the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
External
\begin_inset space ~
\end_inset

Template
\end_layout

\end_inset

 feature.
 Also contains some scripts used by LyX itself.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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:Creating-Templates"

\end_inset

.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
ui/
\end_layout

\end_inset

 contains files with the extension 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
.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.
\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 Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Help\SpecialChar \menuseparator
About
\begin_inset space ~
\end_inset

LyX
\end_layout

\end_inset

.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
chkconfig.ltx
\end_layout

\end_inset

 this is a LaTeX script used during the configuration process.
 Do not run directly.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
encodings
\end_layout

\end_inset

 this contains tables describing how different character encodings can be
 mapped to Unicode
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
external_templates
\end_layout

\end_inset

 this file contains the templates available to the new 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
External
\begin_inset space ~
\end_inset

Template
\end_layout

\end_inset

 feature.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
Help\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 Plain Layout
LyXDir
\end_layout

\end_inset

, which means that every file in 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
UserDir
\end_layout

\end_inset

 is a replacement for the corresponding file in 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Tools\SpecialChar \menuseparator
Preferences
\end_layout

\end_inset

 dialog are saved to a file 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
preferences
\end_layout

\end_inset

 in 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
UserDir
\end_layout

\end_inset

.
\end_layout

\begin_layout Itemize
When you reconfigure using 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Tools\SpecialChar \menuseparator
Reconfigure
\end_layout

\end_inset

, LyX runs the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
Document\SpecialChar \menuseparator
Settings
\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 Plain Layout
UserDir/doc/
\end_layout

\end_inset

 and the items in the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Help
\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 Plain Layout
-userdir
\end_layout

\end_inset

 
\emph on
<some directory>
\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 Plain Layout
-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 Plain Layout
LYX_USERDIR_16x
\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 Plain Layout
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 Plain Layout
doc/
\end_layout

\end_inset

 subdirectory, however, since it contains a file written by the configuration
 script (also accessible through 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Tools\SpecialChar \menuseparator
Reconfigure
\end_layout

\end_inset

) which is configuration-specific.
\end_layout

\begin_layout Chapter
The Preferences dialog
\end_layout

\begin_layout Standard
All options of the preferences dialog are described in the Appendix 
\emph on
The Preferences Dialog
\emph default
 in the 
\emph on
User's Guide
\emph default
.
 For some options you might find here more details.
\end_layout

\begin_layout Section
Formats
\begin_inset CommandInset label
LatexCommand label
name "sec:Formats"

\end_inset


\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 Plain Layout
Tools\SpecialChar \menuseparator
Preferences
\end_layout

\end_inset

 dialog.
 Under 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
File Handling\SpecialChar \menuseparator
File formats
\end_layout

\end_inset

 press the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
New\SpecialChar \ldots{}

\end_layout

\end_inset

 button to define your new format.
 The 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Format
\end_layout

\end_inset

 field contains the name used to identify the format in the GUI.
 The 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Short Name
\end_layout

\end_inset

 is used to identify the format internally.
 You will also need to enter a file extension.
 These are all required.
 The optional 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Alt-V D
\end_layout

\end_inset

 will 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Viewer
\end_layout

\end_inset

 and an 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Editor
\end_layout

\end_inset

 associated with it.
 For example, you might want to use 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
View
\end_layout

\end_inset

 menu.
 The editor is for example launched when you right-click on an image and
 choose 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Edit externally
\end_layout

\end_inset

 in the appearing context menu.
\end_layout

\begin_layout Standard
The 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Document format
\end_layout

\end_inset

 option tells LyX that a format is suitable for document export.
 If this is set and if a suitable conversion route exists (see sec.
\begin_inset space \thinspace{}
\end_inset


\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Converters"

\end_inset

), the format will appear in the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
pdf
\end_layout

\end_inset

 should use it.
\end_layout

\begin_layout Standard
The option 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
pdflatex
\end_layout

\end_inset

 export.
 Included graphics may need to be converted to either 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
pdf
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
png
\end_layout

\end_inset

, or 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
jpg
\end_layout

\end_inset

, since 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
pdf
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
png
\end_layout

\end_inset

, or 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
jpg
\end_layout

\end_inset

 format, it is converted to 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
pdf
\end_layout

\end_inset

 if the vector format option is set, and otherwise to 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
png
\end_layout

\end_inset

.
\end_layout

\begin_layout Section
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 Plain Layout
For example, the file may refer to other files—images, for example—using
 relative file names, 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 Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$s
\end_layout

\end_inset

 The LyX system directory (e.
\begin_inset space \thinspace{}
\end_inset

g.
\begin_inset space \space{}
\end_inset


\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
/usr/share/lyx
\end_layout

\end_inset

).
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$i
\end_layout

\end_inset

 The input file
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$o
\end_layout

\end_inset

 The output file
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$l
\end_layout

\end_inset

 The `LaTeX name'
\end_layout

\begin_layout Standard
The latter should be the filename as it would be used in a LaTeX's 
\series bold

\backslash
include
\series default
 command.
 It 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 Plain Layout
/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 Plain Layout

#!/bin/bash
\end_layout

\begin_layout Plain Layout

FROMFILE=$1
\end_layout

\begin_layout Plain Layout

TOFILE=`basename $2`
\end_layout

\begin_layout Plain Layout

cp $FROMFILE /home/you/pdf/$TOFILE
\end_layout

\end_inset

Save it in your local LyX directory—say, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
/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 Plain Layout
Tools\SpecialChar \menuseparator
Preferences
\end_layout

\end_inset

 dialog, select under 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
File Handling\SpecialChar \menuseparator
File formats
\end_layout

\end_inset

 the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
pdfcopier.sh $$i $$o
\end_layout

\end_inset

 into the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
HTML
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
LyXconv
\end_layout

\end_inset


\begin_inset Quotes erd
\end_inset

, so HTML generated from 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
/path/to/filename.lyx
\end_layout

\end_inset

 will end up in 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
/path/to/filename.html.LyXconv
\end_layout

\end_inset

.
 
\end_layout

\end_inset


\end_layout

\begin_layout Section
Converters
\begin_inset CommandInset label
LatexCommand label
name "sec:Converters"

\end_inset


\end_layout

\begin_layout Standard
You can define your own Converters to convert files between different formats.
 This is done in the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
From
\begin_inset space ~
\end_inset

format
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Add
\end_layout

\end_inset

 button.
 Several variables can be used in the definition of converters:
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$s
\end_layout

\end_inset

 The LyX system directory
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$i
\end_layout

\end_inset

 The input file
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$o
\end_layout

\end_inset

 The output file
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$b
\end_layout

\end_inset

 The base filename of the input file (i.
\begin_inset space \thinspace{}
\end_inset

g., without the extension)
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$p
\end_layout

\end_inset

 The path to the input file
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$r
\end_layout

\end_inset

 The path to the original input file (this is different from $$p when a
 chain of converters is called).
\end_layout

\begin_layout Standard
In the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
needaux
\end_layout

\end_inset

 Needs the LaTeX 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
.aux
\end_layout

\end_inset

 file for the conversion.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
key
\begin_inset space ~
\end_inset

=
\begin_inset space ~
\end_inset

value
\end_layout

\end_inset

 format:
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
script < infile.out > infile.log
\end_layout

\end_inset

.
 The argument may contain 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$s
\end_layout

\end_inset

.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
$$b
\end_layout

\end_inset

, which will be replaced by the base name of the input and output files,
 respectively, when the directory is copied.
\begin_inset Newline newline
\end_inset

Note that resultdir and usetempdir make no sense together.
 The latter will be ignored if the former is given.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
resultfile
\end_layout

\end_inset

 Determines the output file name and may, contain 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$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 for all 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 Plain Layout
pdflatex
\end_layout

\end_inset

; via (DVI and) PostScript, using 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
ps2pdf
\end_layout

\end_inset

; or via DVI, using 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 "sec:Formats"

\end_inset

.
 For example, in the standard configuration, the formats named 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
pdf
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
pdf2
\end_layout

\end_inset

, and 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
pdf3
\end_layout

\end_inset

 are defined, all of which share the extension 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
.pdf
\end_layout

\end_inset

, and which correspond to the conversion methods just mentioned.
\end_layout

\begin_layout Chapter
Internationalizing LyX
\begin_inset CommandInset label
LatexCommand label
name "cha:Internationalizing-LyX"

\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 Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
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 collapsed

\begin_layout Plain Layout
mo
\end_layout

\end_inset

-file from it and install the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 the file 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
lyx.pot
\end_layout

\end_inset

 to the folder of the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
**.po
\end_layout

\end_inset

 files.
 Then rename it to 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
xx.po
\end_layout

\end_inset

.
 (If 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
lyx.pot
\end_layout

\end_inset

 doesn't exist anywhere, it can be remade with the console command 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
xx.po
\end_layout

\end_inset

.
\begin_inset Foot
status collapsed

\begin_layout Plain Layout
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 
\family typewriter
Poedit
\family default
 (for all platforms) or 
\family typewriter
KBabel
\family default
 (for KDE).
 
\family typewriter
Emacs
\family default
 contains a `mode' for editing 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
xx.mo
\end_layout

\end_inset

.
 This can be done with 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
lyx.mo
\end_layout

\end_inset

 (e.
\begin_inset space \thinspace{}
\end_inset

g.
\begin_inset space \space{}
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
/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 Plain Layout
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
Ambiguous 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 Plain Layout
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 Plain Layout
gettext
\end_layout

\end_inset

 does not handle such ambiguous translations.
 Therefore you have to add some context information to the message: Instead
 of 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
To
\end_layout

\end_inset

 it becomes 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
To[[as in 'From format x to format y']]
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
To[[as in 'From page x to page y']].
\end_layout

\end_inset

 Now the two occurrences of 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
To
\end_layout

\end_inset

 are different for 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Help
\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 Plain Layout
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 Plain Layout
LyXDir/doc/xx/DocName.lyx
\end_layout

\end_inset

, where 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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
Check out the documentation translation web page at 
\begin_inset CommandInset href
LatexCommand href
name "http://www.lyx.org/Translation"
target "http://www.lyx.org/Translation"

\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 Plain Layout
Intro.lyx
\end_layout

\end_inset

 (
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Help\SpecialChar \menuseparator
Introduction
\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 Plain Layout
UserDir/doc/xx/
\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 collapsed

\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 Plain Layout

\backslash
kmap
\end_layout

\end_inset

 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
key
\end_layout

\end_inset

 outstring 
\end_layout

\begin_layout Standard
where 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
key
\end_layout

\end_inset

 is the key to be translated and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout

\backslash
kmod
\end_layout

\end_inset

 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
key
\end_layout

\end_inset

 deadkey
\end_layout

\begin_layout Standard
where 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
key
\end_layout

\end_inset

 is a keyboard key and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout


\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 Plain Layout


\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 Plain Layout


\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 Plain Layout


\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 Plain Layout


\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 Plain Layout

\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 Plain Layout

\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 Plain Layout
#
\end_layout

\end_inset

 have different meaning.
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
#
\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 Plain Layout

\backslash
"
\end_layout

\end_inset

, to enter 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
#
\end_layout

\end_inset

, use 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout

\backslash
kinclude filename
\end_layout

\end_inset


\emph on

\begin_inset space \hfill{}
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
include
\end_layout

\end_inset

 another file
\end_layout

\begin_layout Itemize
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\backslash
kprog program
\end_layout

\end_inset


\emph on

\begin_inset space \hfill{}
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
lyxrc
\end_layout

\end_inset

 file for defaults, too (for example, a 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\backslash
kinclude
\end_layout

\end_inset

 option to include default keyboard).
\end_layout

\end_inset


\end_layout

\begin_layout Section
International Keymap Stuff
\begin_inset CommandInset label
LatexCommand label
name "sec:International-Keymap-Stuff"

\end_inset


\end_layout

\begin_layout Standard
\begin_inset Note Note
status open

\begin_layout Plain Layout
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 Plain Layout

\shape up
.kmap
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout
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 Plain Layout
.kmap
\end_layout

\end_inset


\shape default
 file keywords 
\shape up

\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\shape up
kmap
\end_layout

\end_inset


\shape default
,
\shape up
 
\shape default

\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\shape up
kmod
\end_layout

\end_inset

,
\shape up
 
\shape default

\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\shape up
ksmod
\end_layout

\end_inset

, and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\shape up
kcomb
\end_layout

\end_inset

 are described in this section.
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout

\shape up
kmap
\end_layout

\end_inset

 statement to cause the symbol 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout

\shape up
/
\end_layout

\end_inset

 to be output for the keystroke 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout

\shape up
&
\end_layout

\end_inset

 is:
\end_layout

\begin_layout LyX-Code

\backslash
kmap & /
\end_layout

\begin_layout Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout
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, not allowed key, as output.

\family default
 Note that a 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout

\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 Plain Layout

\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 Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout

\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
\emph default
 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 Plain Layout

\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
\emph default
 where
\family default
 
\family roman
\emph on
accent_key
\emph default
 is the first arg
\family default
ument of the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Labeling
\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout

\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 Plain Layout

\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 Plain Layout

\shape up
;:i
\end_layout

\end_inset

 and get the effect of 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout

\shape up
;: Backspace i
\end_layout

\end_inset

 you get 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout

\shape up
.kmap
\end_layout

\end_inset

 mapping is performed, a 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout

\shape up
iso8859-1.cdef
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout

\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 Plain Layout

\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 Plain Layout

\backslash

\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
"
\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 Plain Layout
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}}"
\begin_inset Newline newline
\end_inset

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 Plain Layout
^
\end_layout

\end_inset

-key [a.k.a.
\begin_inset space ~
\end_inset


\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Shift-6
\end_layout

\end_inset

] to the LyX command 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
accent-circumflex
\end_layout

\end_inset

 in your 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
lyxrc
\end_layout

\end_inset

 file.
 Now, whenever you type the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
^
\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 Plain Layout
^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 Plain Layout
^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 Plain Layout
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 Plain Layout
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 Plain Layout
,-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 Plain Layout
Meta-
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Ctrl-
\end_layout

\end_inset

, and 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
~
\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 Plain Layout
,
\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 Plain Layout
^
\end_layout

\end_inset


\begin_inset Quotes erd
\end_inset

.
 Another way involves using 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
xmodmap
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
xkeycaps
\end_layout

\end_inset

 to set up the special 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Mode_Switch
\end_layout

\end_inset

 key.
 The 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Mode_Switch
\end_layout

\end_inset

 acts in some ways just like 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
usldead_cedilla
\end_layout

\end_inset

 and then binding this symbolic key to the corresponding LyX command.
\begin_inset Foot
status collapsed

\begin_layout Plain Layout
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 Plain Layout
~/.lyx/lyxrc
\end_layout

\end_inset

 and my 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
~/.xmodmap
\end_layout

\end_inset

 files.
 I have my 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Scroll
\begin_inset space ~
\end_inset

Lock
\end_layout

\end_inset

 key set up as 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
Scroll
\begin_inset space ~
\end_inset

Lock-^
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Mode_Switch
\end_layout

\end_inset

 key: One of the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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
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 Plain Layout
Edit\SpecialChar \menuseparator
Preferences
\end_layout

\end_inset

 dialog.
\end_layout

\begin_layout Chapter
Installing New Document Classes, Layouts, and Templates
\begin_inset CommandInset label
LatexCommand label
name "cha:Installing-New-Document"

\end_inset


\begin_inset OptArg
status collapsed

\begin_layout Plain Layout
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 Plain Layout
.cls
\end_layout

\end_inset

 or 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
.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 package for preparing slides or
 viewgraphs for overhead projectors.
 Modern LaTeX distributions like TeXLive (2008 or newer) or MiKTeX provide
 a user interface for that.
 For example on MiKTeX you start its program 
\begin_inset Quotes eld
\end_inset

Browse Packages
\begin_inset Quotes erd
\end_inset

 to get a list of available packages.
 To install one, right click on it or use the installing toolbar button.
 When the package you want to install is not in the list, but you have it
 in form of a 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
.cls
\end_layout

\end_inset

 or 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
.sty
\end_layout

\end_inset

-file, then copy these files to a subfolder of your LaTeX distribution,
 for example to the folder 
\family sans
~
\backslash
tex
\backslash
latex
\family default
.
 Then update the file name database of your LaTeX-distribution.
 For example on MiKTeX this is done by pressing the button 
\family sans
Refresh
\begin_inset space ~
\end_inset

FNDB
\family default
 that you find in MiKTeX's 
\begin_inset Quotes eld
\end_inset

Settings
\begin_inset Quotes erd
\end_inset

 program.
 In both cases you need afterwards to reconfigure LyX using the menu 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Tools\SpecialChar \menuseparator
Reconfigure
\end_layout

\end_inset

 and then to restart LyX.
\end_layout

\begin_layout Standard
If your LaTeX distribution doesn't provide a user interface, then you can
 follow these steps by using a UNIX/Linux console.
\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 Plain Layout
texmf.cnf
\end_layout

\end_inset

.
\begin_inset Foot
status collapsed

\begin_layout Plain Layout
This usually lives in the directory 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$TEXMF/web2c
\end_layout

\end_inset

, though you can run 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
TEXMFLOCAL
\end_layout

\end_inset

; this is usually somewhere like 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
/usr/local/share/texmf/
\end_layout

\end_inset

.
 The `user' TeX tree is defined by 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
TEXMFHOME
\end_layout

\end_inset

 and is commonly at 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$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 Plain Layout
TEXMF
\end_layout

\end_inset

 includes the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
TEXMFLOCAL
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
TEXMFHOME
\end_layout

\end_inset

 variables; e.
\begin_inset space \thinspace{}
\end_inset

g.
\begin_inset Newline newline
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
TEXMF = {$TEXMFHOME,!!$TEXMFLOCAL,!!$TEXMFMAIN}
\end_layout

\end_inset


\begin_inset Newline newline
\end_inset

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 Plain Layout
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 Plain Layout
texmf
\end_layout

\end_inset

 directory, which will be found at 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
TEXMFMAIN
\end_layout

\end_inset

.
 For example, latex packages should go under 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$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 Plain Layout
$TEXMFLOCAL/tex/latex/foiltex
\end_layout

\end_inset

.
 The 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
foiltex
\end_layout

\end_inset

 directory contains various files.
\end_layout

\begin_layout Enumerate
Run: 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
texhash
\end_layout

\end_inset

.
 This should create 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$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 Plain Layout
Tools\SpecialChar \menuseparator
Reconfigure
\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 Plain Layout
slides (FoilTeX)
\end_layout

\end_inset

—under 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Document\SpecialChar \menuseparator
Settings
\end_layout

\end_inset

 in the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Document Class
\end_layout

\end_inset

 drop box.
 
\end_layout

\begin_layout Section
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 Plain Layout
article
\end_layout

\end_inset

 text class format as an example.
 The 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
.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 Plain Layout
Style
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
style
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout

\emph on
emphasized
\end_layout

\end_inset

.
 If the argument has a data type 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 Plain Layout
float=
\emph on
default
\end_layout

\end_inset

.
\end_layout

\begin_layout Subsection
Layout modules
\begin_inset CommandInset label
LatexCommand label
name "sub:Layout-modules"

\end_inset


\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 Plain Layout
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 Plain Layout
Document\SpecialChar \menuseparator
Settings
\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 Plain Layout
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 TeX code 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 Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
somemodule
\end_layout

\end_inset

 is really 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
.cls
\end_layout

\end_inset

) and style (
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
.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 Plain Layout
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 Plain Layout
myclass.sty
\end_layout

\end_inset

 and it is meant to be used with 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 
\begin_inset Newline newline
\end_inset

    
\backslash
usepackage{myclass}
\begin_inset Newline newline
\end_inset

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 Plain Layout
Tools\SpecialChar \menuseparator
Reconfigure
\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 Plain Layout
report (myclass)
\end_layout

\end_inset

" as a document class option in the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Document\SpecialChar \menuseparator
Settings
\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 Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
And it will be easiest if you save the file to 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
#
\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 Plain Layout
chkconfig.ltx
\end_layout

\end_inset

, in a special mode where 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
#
\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 Plain Layout
article.layout
\end_layout

\end_inset

, then they define a text class of name 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
Document\SpecialChar \menuseparator
Settings
\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 Plain Layout
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 Plain Layout
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 Plain Layout
myarticle
\end_layout

\end_inset

, associated with the LaTeX document class 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 class file
 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 Plain Layout
LyXDir/layouts/
\end_layout

\end_inset

 or to 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
UserDir/layouts
\end_layout

\end_inset

, run 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Tools\SpecialChar \menuseparator
Reconfigure
\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 Plain Layout
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.
 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 Plain Layout
Format
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 11.
\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 Plain Layout
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 Plain Layout
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 Plain Layout
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 "sub:ClassOptions"

\end_inset

 for a description.
 Must end with 
\begin_inset Quotes eld
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Columns
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
1
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Document\SpecialChar \menuseparator
Settings
\end_layout

\end_inset

 dialog.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 "sub:Counters"

\end_inset

 for details.
 Must end with 
\begin_inset Quotes eld
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 "sub:Font-description"

\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 Plain Layout
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 Plain Layout
DefaultModule
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
string]
\end_layout

\end_inset

 Specifies a module to be included by default with this document class,
 which should be specified by filename without the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
.module
\end_layout

\end_inset

 extension.
 The user can still remove the module, but it will be active at the outset.
 (This applies only when new files are created, or when this class is chosen
 for an existing document.)
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
DefaultStyle
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
ExcludesModule
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
string
\end_layout

\end_inset

] Indicates that the module in question—which should be specified by filename
 without the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
.module
\end_layout

\end_inset

 extension—cannot be used with this document class.
 This might be used in a journal-specific layout file to prevent, say, the
 use of the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
theorems-sec
\end_layout

\end_inset

 module that numbers theorems by section.
 This tag may 
\emph on
not
\emph default
 be used in a module.
 Modules have their own way of excluding other modules (see 
\begin_inset CommandInset ref
LatexCommand ref
reference "sub:Layout-modules"

\end_inset

).
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Float
\end_layout

\end_inset

 Defines a new float.
 See Section
\begin_inset space ~
\end_inset


\begin_inset CommandInset ref
LatexCommand ref
reference "sub:Floats"

\end_inset

 for details.
 Must end with 
\begin_inset Quotes eld
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
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.
\begin_inset space \thinspace{}
\end_inset

g.
\begin_inset space \space{}
\end_inset

a new character style.
 See Section
\begin_inset space ~
\end_inset


\begin_inset CommandInset ref
LatexCommand ref
reference "sub:Flex-insets-and"

\end_inset

 for more information.
 Must end with 
\begin_inset Quotes eld
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
LeftMargin
\end_layout

\end_inset

 A string that indicates the width of the left margin on the screen, for
 example, 
\begin_inset Quotes eld
\end_inset

MMMMM
\begin_inset Quotes erd
\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
OutputType
\end_layout

\end_inset

 A string indicating what sort of output documents using this class will
 produce.
 At present, the options are: `docbook', `latex', and `literate'.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\series medium
PageStyle
\end_layout

\end_inset

 [
\emph on

\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
plain
\end_layout

\end_inset


\emph default
, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
empty
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
headings
\end_layout

\end_inset

] The class default pagestyle.
 Can be changed in the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Document\SpecialChar \menuseparator
Settings
\end_layout

\end_inset

 dialog.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Preamble
\end_layout

\end_inset

 or 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
AddToPreamble
\end_layout

\end_inset

 declarations.
 Must end with 
\begin_inset Quotes eld
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Provides
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
string
\end_layout

\end_inset

] [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
0
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
1
\end_layout

\end_inset

] Whether the class already provides the feature 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
string
\end_layout

\end_inset

.
 A feature is in general the name of a package (
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
amsmath
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
makeidx
\end_layout

\end_inset

, \SpecialChar \ldots{}
) or a macro (
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
url
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
LaTeXFeatures.cpp
\end_layout

\end_inset

 if you're interested.
 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Help\SpecialChar \menuseparator
LaTeX 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 Plain Layout
ProvidesModule
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
string
\end_layout

\end_inset

] Indicates that this layout provides the functionality of the module mentioned,
 which should be specified by the filename without the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
.module
\end_layout

\end_inset

 extension.
 This will typically be used if the layout includes the module directly,
 rather than using the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
DefaultModule
\end_layout

\end_inset

 tag to indicate that it ought to be used.
 It could be used in a module that provided an alternate implementation
 of the same functionality.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Requires
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
string
\end_layout

\end_inset

] Whether the class requires the feature 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
RightMargin
\end_layout

\end_inset

 A string that indicates the width of the right margin on the screen, for
 example, 
\begin_inset Quotes eld
\end_inset

MMMMM
\begin_inset Quotes erd
\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
SecNumDepth
\end_layout

\end_inset

 Sets which divisions get numbered.
 Corresponds to the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
secnumdepth
\end_layout

\end_inset

 counter in LaTeX.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Sides
\end_layout

\end_inset

 [
\emph on

\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
1
\end_layout

\end_inset


\emph default
, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Document\SpecialChar \menuseparator
Settings
\end_layout

\end_inset

 dialog.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 "sub:Paragraph-Styles"

\end_inset

 for details.
 Must end with 
\begin_inset Quotes eld
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
TitleLatexName
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
TitleLatexType
\end_layout

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
TitleLatexType
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
CommandAfter
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
CommandAfter
\end_layout

\end_inset

 means that the macro with name 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
InTitle 1
\end_layout

\end_inset


\begin_inset Quotes erd
\end_inset

.
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
TitleLatexName
\end_layout

\end_inset

 environment.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
TocDepth
\end_layout

\end_inset

 Sets which divisions are included in the table of contents.
 Corresponds to the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
tocdepth
\end_layout

\end_inset

 counter in LaTeX.
\end_layout

\begin_layout Subsection
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
ClassOptions
\end_layout

\end_inset

 section
\begin_inset CommandInset label
LatexCommand label
name "sub:ClassOptions"

\end_inset


\end_layout

\begin_layout Standard
The 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
FontSize
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
|
\end_layout

\end_inset


\begin_inset Quotes erd
\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Header
\end_layout

\end_inset

 Used to set the DTD line with XML-based output classes.
 E.
\begin_inset space \thinspace{}
\end_inset

g.: PUBLIC 
\begin_inset Quotes eld
\end_inset

-//OASIS//DTD DocBook V4.2//EN
\begin_inset Quotes erd
\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
PageStyle
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
|
\end_layout

\end_inset


\begin_inset Quotes erd
\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Other
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout

\backslash
documentclass
\end_layout

\end_inset

 command.
\end_layout

\begin_layout Standard
The 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
ClassOptions
\end_layout

\end_inset

 section must end with 
\begin_inset Quotes eld
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
End
\end_layout

\end_inset


\begin_inset Quotes erd
\end_inset

.
\end_layout

\begin_layout Subsection
Paragraph Styles
\begin_inset CommandInset label
LatexCommand label
name "sub:Paragraph-Styles"

\end_inset


\end_layout

\begin_layout Standard
A paragraph style description looks like this:
\begin_inset Foot
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Align
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout
AlignPossible
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout
BottomSep
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
float=0
\end_layout

\end_inset

]
\begin_inset Foot
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Category
\end_layout

\end_inset

 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
[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 Plain Layout
CommandDepth
\end_layout

\end_inset

 Depth of XML command.
 Used only with XML-type formats.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
CopyStyle
\end_layout

\end_inset

 
\begin_inset CommandInset label
LatexCommand label
name "des:CopyStyle"

\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
[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 Plain Layout
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 Plain Layout
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 Plain Layout
EndLabeltype
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout
LatexType
\end_layout

\end_inset

 is 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Environment
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Item_Environment
\end_layout

\end_inset

 or 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
List_Environment
\end_layout

\end_inset

).
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Box
\end_layout

\end_inset

 (resp.
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
\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 Plain Layout
Static
\end_layout

\end_inset

 is an explicit text string.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
EndLabelString
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
string=""
\end_layout

\end_inset

] The string used for a label with a 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Static
\end_layout

\end_inset

 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
EndLabelType
\end_layout

\end_inset

.
 
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Fill_Bottom
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
0
\emph default
,1
\end_layout

\end_inset

] Similar to 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Fill_Top
\end_layout

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Fill_Top
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
0
\emph default
,1
\end_layout

\end_inset

] With this parameter the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Edit\SpecialChar \menuseparator
Paragraph
\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 Plain Layout

\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 Plain Layout
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 "sub:Font-description"

\end_inset

.
 Note that defining this font automatically defines the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
LabelFont
\end_layout

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout

\emph on
0
\end_layout

\end_inset


\emph default
, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
InnerTag
\end_layout

\end_inset

 [[FIXME]] (Used only with XML-type formats.)
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
InTitle
\end_layout

\end_inset

 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
[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 Plain Layout
TitleLatexType
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
TitleLatexName
\end_layout

\end_inset

 global entries).
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
ItemSep
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
ItemTag
\end_layout

\end_inset

 [[FIXME]] (Used only with XML-type formats.)
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout

\emph on
0
\end_layout

\end_inset


\emph default
, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
Top_Environment
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Centered_Top_Environment
\end_layout

\end_inset

).
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelCounter
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
string=""
\end_layout

\end_inset

]
\begin_inset Newline newline
\end_inset

The name of the counter for automatic numbering (see Section 
\begin_inset CommandInset ref
LatexCommand ref
reference "sub:Counters"

\end_inset

 for details).
 This must be given if 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Labeltype
\end_layout

\end_inset

 is 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Counter
\end_layout

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 "sub:Font-description"

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelIndent
\end_layout

\end_inset

 Text that indicates how far a label should be indented.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Labelsep
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
LabelString
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
string=""
\end_layout

\end_inset

] The string used for a label with a 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Static
\end_layout

\end_inset

 labeltype.
 When 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 "sub:Counters"

\end_inset

.
\begin_inset Foot
status collapsed

\begin_layout Plain Layout
For the sake of backwards compatibility, the string 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
@
\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 Plain Layout
LabelString
\end_layout

\end_inset

 of style 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 "sub:Counters"

\end_inset

.
\end_layout

\end_inset


\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelStringAppendix
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
string=""
\end_layout

\end_inset

] This is used inside the appendix instead of 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelString
\end_layout

\end_inset

.
 Note that every 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelString
\end_layout

\end_inset

 statement resets 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelStringAppendix
\end_layout

\end_inset

 too.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelTag
\end_layout

\end_inset

 [FIXME] (Used only with XML-type formats.)
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Labeltype
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
No_Label
\emph default
, Manual, Static, Top_Environment, 
\begin_inset Newline newline
\end_inset

Centered_Top_Environment, Sensitive, Counter
\end_layout

\end_inset

] 
\begin_inset Newline newline
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
Static
\end_layout

\end_inset

 means it is defined in the layout (see 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelString
\end_layout

\end_inset

).
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Top_Environment
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Centered_Top_Environment
\end_layout

\end_inset

 are special cases of 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Abstract
\end_layout

\end_inset

 layout or the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
Bibliography
\end_layout

\end_inset

 layout.
 This is also the case for 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Manual
\end_layout

\end_inset

 labels with latex type 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Environment
\end_layout

\end_inset

, in order to make layouts for theorems work correctly.
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
Counter
\end_layout

\end_inset

 label type defines automatically numbered labels.
 See Section 
\begin_inset CommandInset ref
LatexCommand ref
reference "sub:Counters"

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
LatexParam
\end_layout

\end_inset

 An optional parameter for the corresponding 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout

\emph on
Paragraph
\emph default
, Command, Environment, Item_Environment,
\end_layout

\end_inset

 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
List_Environment
\end_layout

\end_inset

] How the layout should be translated into LaTeX.
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Paragraph
\end_layout

\end_inset

 means nothing special.
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Command
\end_layout

\end_inset

 means 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\backslash

\emph on
LatexName
\emph default
{\SpecialChar \ldots{}
}
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Environment
\end_layout

\end_inset

 means 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout
Item_Environment
\end_layout

\end_inset

 is the same as 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Environment
\end_layout

\end_inset

, except that a 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\backslash
item
\end_layout

\end_inset

 is generated for each paragraph of this environment.
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
List_Environment
\end_layout

\end_inset

 is the same as 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Item_Environment
\end_layout

\end_inset

, except that 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelWidthString
\end_layout

\end_inset

 is passed as an argument to the environment.
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelWidthString
\end_layout

\end_inset

 can be defined in the 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout

\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 Plain Layout

\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 Plain Layout
LeftMargin
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Manual
\end_layout

\end_inset

 or 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Dynamic
\end_layout

\end_inset

.
 Then it is added to the manual or dynamic margin.
 
\begin_inset Newline newline
\end_inset

The argument is passed as a string.
 For example 
\begin_inset Quotes eld
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
-
\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 Plain Layout
Margin
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
Static
\emph default
, Manual, Dynamic, First_Dynamic, Right_Address_Box
\end_layout

\end_inset

] 
\begin_inset Newline newline
\end_inset

The kind of margin that the layout has on the left side.
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Static
\end_layout

\end_inset

 just means a fixed margin.
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Edit\SpecialChar \menuseparator
Paragraph
\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 Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
NeedProtect
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
0
\end_layout

\end_inset

,
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
1
\end_layout

\end_inset

] Whether fragile commands in this layout should be 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\backslash
protect
\end_layout

\end_inset

'ed.
 (Note: This is 
\emph on
not
\emph default
 whether this command should itself be protected.)
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Newline
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
0
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
1
\end_layout

\end_inset

] Whether newlines are translated into LaTeX newlines (
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout
NextNoIndent
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
1
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout
1
\end_layout

\end_inset

 means that it is not allowed to do so; 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
ObsoletedBy
\end_layout

\end_inset

 Name of a layout that has replaced this layout.
 This is used to rename a layout, while keeping backward compatibility.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
OptionalArgs
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
ParIndent
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
NextNoIndent
\end_layout

\end_inset

.
 Also, Standard layout paragraphs inside environments use the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Parsep
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Parskip
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
value
\begin_inset space ~
\end_inset

* DefaultHeight
\end_layout

\end_inset

 where 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
PassThru
\end_layout

\end_inset

 
\begin_inset CommandInset label
LatexCommand label
name "des:PathThru"

\end_inset

[
\emph on

\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
0
\end_layout

\end_inset


\emph default
, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Preamble
\end_layout

\end_inset

 
\begin_inset CommandInset label
LatexCommand label
name "des:Preamble"

\end_inset

Information to be included in the LaTeX preamble 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 Plain Layout
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 Plain Layout
Requires 
\end_layout

\end_inset

[
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
string
\end_layout

\end_inset

.
 See the description of 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
RightMargin
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
string=""
\end_layout

\end_inset

] Similar to 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LeftMargin
\end_layout

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Spacing
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout
single
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
onehalf
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
setspace.sty
\end_layout

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
TextFont
\end_layout

\end_inset

 The font used for the text body .
 See section 
\begin_inset CommandInset ref
LatexCommand ref
reference "sub:Font-description"

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout
TopSep
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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
\begin_inset CommandInset label
LatexCommand label
name "sub:Floats"

\end_inset


\end_layout

\begin_layout Standard
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 Plain Layout
figure
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
Extension
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
GuiName
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
LaTeXBuiltin
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
0
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
1
\end_layout

\end_inset

] Set to 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
0
\end_layout

\end_inset

, the float will be defined using the LaTeX package 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
float
\end_layout

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
ListName
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
NumberWithin
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
Placement
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
t
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
b
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
p
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
h
\end_layout

\end_inset

 for top, bottom, page, and here, respectively.
\begin_inset Foot
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
H
\end_layout

\end_inset

 specifier is special and, because of implementation details, cannot be
 used in non-built in 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 Plain Layout
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 Plain Layout
Style
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout

\backslash
newfloat
\end_layout

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Type
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout

\backslash
newfloat
\end_layout

\end_inset

, commands such as 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\backslash
begin{program}
\end_layout

\end_inset

 or 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout

\emph on
type
\end_layout

\end_inset

 automatically defines the corresponding counter with name 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
type
\end_layout

\end_inset

.
\end_layout

\begin_layout Subsection
Flex insets and InsetLayout
\begin_inset CommandInset label
LatexCommand label
name "sub:Flex-insets-and"

\end_inset


\end_layout

\begin_layout Standard
LyX has supported character styles since version 1.4.0; as of version 1.6.0,
 these are called 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 Plain Layout
CharStyle
\end_layout

\end_inset

): These define semantic markup corresponding to such LaTeX commands as
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\backslash
noun
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\backslash
code
\end_layout

\end_inset

.
\end_layout

\begin_layout Itemize
user custom (
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Custom
\end_layout

\end_inset

): These can be used to define custom collapsible insets, similar to TeX
 code, footnote, and the like.
 An obvious example is an endnote inset, which is defined in the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
endnote
\end_layout

\end_inset

 module.
\end_layout

\begin_layout Itemize
XML elements (
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Element
\end_layout

\end_inset

): For use with DocBook classes.
\end_layout

\begin_layout Standard
Flex insets are defined using the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
InsetLayout
\end_layout

\end_inset

 tag, which shall be explained in a moment.
\end_layout

\begin_layout Standard
The 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
InsetLayout
\end_layout

\end_inset

 tag also serves another function: It can be used to customize the general
 layout of many different types of insets.
 Currently, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
InsetLayout
\end_layout

\end_inset

 can be used to customize the layout parameters for footnotes, marginal
 notes, note insets, TeX code (ERT) insets, branches, listings, indexes,
 boxes, tables, algorithms, URLs, and optional arguments, as well as to
 define Flex insets.
\end_layout

\begin_layout Standard
The 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
InsetLayout
\end_layout

\end_inset

 definition must begin with a line of the form:
\end_layout

\begin_layout LyX-Code
InsetLayout <Type>
\end_layout

\begin_layout Standard
Here 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
<Type>
\end_layout

\end_inset

 indicates the inset whose layout is being defined, and here there are two
 cases.
\end_layout

\begin_layout Enumerate
The layout for a pre-existing inset is being modified.
 In this case, can be 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
<Type>
\end_layout

\end_inset

 any one of the following: 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Algorithm
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Branch
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Box
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Box:shaded
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
ERT
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Figure
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Foot
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Index
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Info
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Info:menu
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Info:shortcut
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Info:shortcuts
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Listings
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Marginal
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Note:Comment
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Note:Note
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Note:GreyedOut
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
OptArg
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Table
\end_layout

\end_inset

, or 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
URL
\end_layout

\end_inset

.
 
\end_layout

\begin_layout Enumerate
The layout for a Flex inset is being defined.
 In this case, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
<Type>
\end_layout

\end_inset

 can be any valid identifier not used by a pre-existing inset.
 Note that the definition of a flex inset must
\emph on
 als
\emph default
o include a 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LyXType
\end_layout

\end_inset

 entry.
\end_layout

\begin_layout Standard
The 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
InsetLayout
\end_layout

\end_inset

 definition can contain the following entries:
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
BgColor
\end_layout

\end_inset

 The color for the inset's background.
 The valid colors are defined in 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
src/ColorCode.h
\end_layout

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
CopyStyle
\end_layout

\end_inset

 As with paragraph styles (see page 
\begin_inset CommandInset ref
LatexCommand ref
reference "des:CopyStyle"

\end_inset

).
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
CustomPars
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
0
\end_layout

\end_inset

,
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
1
\end_layout

\end_inset

] Indicates whether the user may employ the Paragraph Settings dialog to
 customize the paragraph.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Decoration
\end_layout

\end_inset

 can be 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Classic
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Minimalistic
\end_layout

\end_inset

, or 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Classic
\end_layout

\end_inset

, ERT insets generally 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Minimalistic
\end_layout

\end_inset

, and character styles 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Conglomerate
\end_layout

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
End
\end_layout

\end_inset

 Required at the end of the InsetLayout declarations.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 "sub:Font-description"

\end_inset

.
 Note that defining this font automatically defines the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelFont
\end_layout

\end_inset

 to the same value, so define this first and define 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
ForceLTR
\end_layout

\end_inset

 Force the 
\begin_inset Quotes eld
\end_inset

latex
\begin_inset Quotes erd
\end_inset

 language, leading to Left-to-Right (latin) output, e.
\begin_inset space \thinspace{}
\end_inset

g.
\begin_inset space \space{}
\end_inset

in TeX code or URL.
 A kludge.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
ForcePlain
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
0
\end_layout

\end_inset

,
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
1
\end_layout

\end_inset

] Indicates whether the PlainLayout should be used or, instead, the user
 can change the paragraph style used in the inset.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
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 "sub:Font-description"

\end_inset

.
 Note that this definition can never appear before 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Font
\end_layout

\end_inset

, lest it be ineffective.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelString
\end_layout

\end_inset

 What will be displayed on the button or elsewhere as the inset label.
 Some inset types (TeX code and Branch) modify this label on the fly.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
LatexParam
\end_layout

\end_inset

 The optional parameter for the corresponding 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LatexName
\end_layout

\end_inset

 stuff, including possible bracket pairs like 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
[]
\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 Plain Layout
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 Plain Layout
LyxType 
\end_layout

\end_inset

 Can be 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
charstyle
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
custom
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
element
\end_layout

\end_inset

, or 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
end
\end_layout

\end_inset

 (indicating a dummy definition ending definitions of charstyles, etc).
 This entry is required in and is only meaningful for Flex insets.
 Among other things, it determines on which menu this inset will appear.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
MultiPar
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
0
\end_layout

\end_inset

,
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
1
\end_layout

\end_inset

] Whether multiple paragraphs are permitted in this inset.
 This will also set CustomPars to the same value and ForcePlain to the opposite
 value.
 These can be reset to other values, if they are used 
\emph on
after
\emph default
 MultiPar.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
NeedProtect
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
0
\end_layout

\end_inset

,
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
1
\end_layout

\end_inset

] Whether fragile commands in this layout should be 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\backslash
protect
\end_layout

\end_inset

'ed.
 (Note: This is 
\emph on
not
\emph default
 whether the command should itself be protected.)
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
PassThru
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
0
\end_layout

\end_inset

,
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
1
\end_layout

\end_inset

] As with paragraph styles (see page 
\begin_inset CommandInset ref
LatexCommand ref
reference "des:PathThru"

\end_inset

).
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Requires 
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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
\begin_inset CommandInset label
LatexCommand label
name "sub:Counters"

\end_inset


\end_layout

\begin_layout Standard
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 Plain Layout
chapter
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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.
 The counter declaration must begin with:
\end_layout

\begin_layout LyX-Code
Counter name
\end_layout

\begin_layout Standard
where of course `name' is replaced by the name of the counter.
 And it must end with 
\begin_inset Quotes eld
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
End
\end_layout

\end_inset


\begin_inset Quotes erd
\end_inset

.
 The following parameters can also be used:
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout

\backslash
thecounter
\end_layout

\end_inset

 will be replaced by the expansion of the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelString
\end_layout

\end_inset

 (or 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelStringAppendix
\end_layout

\end_inset

) of the counter 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout

\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 Plain Layout

\emph on
numbertype
\end_layout

\end_inset

 can be:
\begin_inset Foot
status collapsed

\begin_layout Plain Layout

\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 described 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 Plain Layout
arabic
\end_layout

\end_inset

: 1, 2, 3,\SpecialChar \ldots{}
; 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
alph
\end_layout

\end_inset

 for lower-case letters: a, b, c, \SpecialChar \ldots{}
; 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Alph
\end_layout

\end_inset

 for upper-case letters: A, B, C, \SpecialChar \ldots{}
; 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
roman
\end_layout

\end_inset

 for lower-case roman numerals: i, ii, iii, \SpecialChar \ldots{}
; 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Roman
\end_layout

\end_inset

 for upper-case roman numerals: I, II, III\SpecialChar \ldots{}
; 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
master
\end_layout

\end_inset

 (defined via 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Within
\end_layout

\end_inset

), the string 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\backslash
themaster.
\backslash
arabic{counter}
\end_layout

\end_inset

 is used; otherwise the string 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\backslash
arabic{counter}
\end_layout

\end_inset

 is used.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelStringAppendix [string=""]
\end_layout

\end_inset

 Same as 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
LabelString
\end_layout

\end_inset

, but for use in the Appendix.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Within
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 every time the other one is increased.
 For example, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
subsection
\end_layout

\end_inset

 is numbered inside 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
section
\end_layout

\end_inset

.
\end_layout

\begin_layout Subsection
Font description
\begin_inset CommandInset label
LatexCommand label
name "sub:Font-description"

\end_inset


\end_layout

\begin_layout Standard
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 Plain Layout
Color
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
none
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
black
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
white
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
red
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
green
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
blue
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
cyan
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
magenta
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
yellow
\end_layout

\end_inset

]
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Family
\end_layout

\end_inset

 [
\emph on

\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
Roman
\end_layout

\end_inset


\emph default
, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Sans
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Typewriter
\end_layout

\end_inset

] 
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Misc
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
string
\end_layout

\end_inset

] Valid argument are: 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
emph
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
noun
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
underbar
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
no_emph
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
no_noun
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Series
\end_layout

\end_inset

 [
\emph on

\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
Medium
\end_layout

\end_inset


\emph default
, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Bold
\end_layout

\end_inset

] 
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Shape
\end_layout

\end_inset

 [
\emph on

\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
Up
\end_layout

\end_inset


\emph default
, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Italic
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
SmallCaps
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Slanted
\end_layout

\end_inset

] 
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Size
\end_layout

\end_inset

 [
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
tiny
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
small
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\emph on
normal
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
large
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
larger
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
largest
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
huge
\end_layout

\end_inset

, 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
$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 Plain Layout
myclassnew.layout
\end_layout

\end_inset

 to 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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:Creating-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 Plain Layout

\backslash
fontscheme
\end_layout

\end_inset

 or 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout

\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 Plain Layout
vi
\end_layout

\end_inset

 or 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
Tools\SpecialChar \menuseparator
Preferences\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 Plain Layout
defaults.lyx
\end_layout

\end_inset

.
 This template is loaded every time you create a new document with 
\begin_inset Flex CharStyle:MenuItem
status collapsed

\begin_layout Plain Layout
File\SpecialChar \menuseparator
New
\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 Plain Layout
Save as Document Defaults
\end_layout

\end_inset

 button.
\end_layout

\begin_layout Chapter
Including External Material
\end_layout

\begin_layout Standard
\begin_inset Box Shadowbox
position "t"
hor_pos "c"
has_inner_box 1
inner_pos "t"
use_parbox 0
width "100col%"
special "none"
height "1in"
height_special "totalheight"
status open

\begin_layout Plain Layout
WARNING: This portion of the documentation has not been updated for some
 time.
 We certainly hope that it is still accurate, but there are no guarantees.
\end_layout

\end_inset


\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 Plain Layout
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 Plain Layout
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 Plain Layout
.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 Plain Layout
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 Plain Layout
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 Plain Layout
.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 parametri
zed 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 Plain Layout
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 Plain Layout
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 "<graphic fileref=
\backslash
"$$AbsOrRelPathMaster$$Basename.eps
\backslash
">
\end_layout

\begin_layout LyX-Code
         </graphic>"
\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 Plain Layout
Template
\end_layout

\end_inset

 \SpecialChar \ldots{}
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
Format
\end_layout

\end_inset

 \SpecialChar \ldots{}
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
FileFilter
\begin_inset space ~
\end_inset

<pattern>
\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.
\begin_inset space \thinspace{}
\end_inset

g.
\begin_inset space \space{}
\end_inset

tgif has 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
.obj
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
.tgo
\end_layout

\end_inset

), use something like 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
"*.{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 Plain Layout
GuiName
\begin_inset space ~
\end_inset

<guiname>
\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 Plain Layout
HelpText
\begin_inset space ~
\end_inset

<text>
\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 Plain Layout
InputFormat
\begin_inset space ~
\end_inset

<format>
\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 "sec:Formats"

\end_inset

).
 Use 
\begin_inset Quotes eld
\end_inset


\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
*
\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 Plain Layout
Template
\begin_inset space ~
\end_inset

<id>
\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 Plain Layout
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 Plain Layout
Transform
\end_layout

\end_inset

 command must have either a corresponding 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
TransformCommand
\end_layout

\end_inset

 or a 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
TransformOption
\end_layout

\end_inset

 command in the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
Option
\begin_inset space ~
\end_inset

<name>
\begin_inset space ~
\end_inset

<value>
\end_layout

\end_inset

 This command defines an additional macro 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$<name>
\end_layout

\end_inset

 for substitution in 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Product
\end_layout

\end_inset

.
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
<value>
\end_layout

\end_inset

 itself may contain substitution macros.
 The advantage over using 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
<value>
\end_layout

\end_inset

 directly in 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
Product
\end_layout

\end_inset

 is that the substituted value of 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$<name>
\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 Plain Layout
Product
\begin_inset space ~
\end_inset

<text>
\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 Plain Layout
Preamble
\begin_inset space ~
\end_inset

<name>
\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 Plain Layout
PreambleDef
\end_layout

\end_inset

 \SpecialChar \ldots{}
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
ReferencedFile
\begin_inset space ~
\end_inset

<format>
\begin_inset space ~
\end_inset

<filename>
\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 Plain Layout
Requirement
\begin_inset space ~
\end_inset

<package>
\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 Plain Layout

\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 Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
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 Plain Layout
UpdateFormat
\begin_inset space ~
\end_inset

<format>
\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 Plain Layout

\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 Plain Layout
UpdateResult
\begin_inset space ~
\end_inset

<filename>
\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 Plain Layout
PreambleDef
\end_layout

\end_inset

 \SpecialChar \ldots{}
 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
PreambleDefEnd
\end_layout

\end_inset

.
 They can be used by the templates in the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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 Plain Layout
$$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 Plain Layout
$$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 Plain Layout
$$AbsPath
\end_layout

\end_inset

 The absolute file path.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$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 Plain Layout
$$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 Plain Layout
filename.ext
\end_layout

\end_inset

.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$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 Plain Layout
$$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 Plain Layout
$$FPath
\end_layout

\end_inset

 The path part of 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$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 Plain Layout
$$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 Plain Layout
$$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 Plain Layout
$$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 Plain Layout
$$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.
\begin_inset space \thinspace{}
\end_inset

g.
\begin_inset space \space{}
\end_inset

the absolute filename with 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$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 Plain Layout
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 Plain Layout
Transform
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
TransformCommand
\end_layout

\end_inset

 commands:
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$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 Plain Layout
$$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 Plain Layout
$$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 Plain Layout
$$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 Plain Layout
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 Plain Layout
Transform
\end_layout

\end_inset

 and 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
TransformOption
\end_layout

\end_inset

 commands:
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$Clip
\end_layout

\end_inset

 The clip option.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$Extra
\end_layout

\end_inset

 The extra option.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$Resize
\end_layout

\end_inset

 The resize option.
\end_layout

\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
$$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 Plain Layout
$$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 Plain Layout
$$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 Plain Layout
$$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.
\begin_inset space \thinspace{}
\end_inset

g.
\begin_inset space \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 Plain Layout
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 Plain Layout
.pstex_t
\end_layout

\end_inset

 files needs the relative name in order to rewrite the file content.
\end_layout

\begin_layout Section
Security discussion
\begin_inset CommandInset label
LatexCommand label
name "sec:Security-discussion"

\end_inset


\end_layout

\begin_layout Standard
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 definitely 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 Plain Layout
execvp
\end_layout

\end_inset

-system call rather than the 
\begin_inset Flex CharStyle:Code
status collapsed

\begin_layout Plain Layout
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.
 
\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 Plain Layout
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 knowledgeable 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

\end_body
\end_document
