#LyX 1.1 created this file. For more info see http://www.lyx.org/
\lyxformat 218
\textclass book
\begin_preamble
\usepackage{multicol}
\IfFileExists{isolatin.def}
{\usepackage[isolatin]{inputenc}}
{\usepackage[latin1]{inputenc}}
\end_preamble
\language english
\inputencoding default
\fontscheme default
\graphics none
\paperfontsize default
\spacing single 
\papersize Default
\paperpackage a4
\use_geometry 0
\use_amsmath 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\quotes_times 2
\papercolumns 1
\papersides 2
\paperpagestyle headings

\layout Title

Customizing LyX: Features for the Advanced User
\layout Author

by the LyX Team
\begin_float footnote 
\layout Standard
\noindent 
This file is currently maintained by 
\noun on 
Mike Ressler
\noun default 
, mike.ressler@alum.mit.edu.
 Please send comments or error corrections to that address.
\end_float 
 
\layout Standard


\begin_inset LatexCommand \tableofcontents{}

\end_inset 


\layout Chapter

Introduction
\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 widgets 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.
\layout Standard

LyX 1.1.6 introduces a new user interface to its customizable features that
 can be invoked through 
\family sans 
\bar under 
E
\bar default 
dit\SpecialChar \menuseparator

\bar under 
P
\bar default 
references
\family default 
.
 This does not render obsolete the discussion below about LyX configuration
 files, but we hope that it simplifies considerably the process of tailoring
 LyX to 
\emph on 
your
\emph default 
 needs.
\layout Chapter

LyX configuration files
\layout Standard


\begin_inset LatexCommand \label{chap:config}

\end_inset 

This chapter aims to help you to find your way through the LyX configuration
 files.
 Before continuing to read this chapter, you should find out where your
 LyX library directory is by using 
\family sans 
\bar under 
H
\bar default 
elp\SpecialChar \menuseparator

\bar under 
V
\bar default 
ersion
\family default 
.
 This directory is the place where LyX places its system-wide configuration
 files, and we will simply name it 
\family typewriter 
LyXDir
\family default 
 in the remainder of this document.
 
\layout Section

What's in 
\family typewriter 
LyXDir
\family default 
?
\layout Standard


\family typewriter 
LyXDir
\family default 
 and its sub-directories contain a number of files and that can be used
 to customise LyX's behaviour.
 New to LyX 1.1.6 is the ability to invoke these files from within LyX itself
 through the 
\family sans 
\bar under 
E
\bar default 
dit\SpecialChar \menuseparator

\bar under 
P
\bar default 
references
\family default 
 popup.
 Most customization that you might want to do to LyX is possible through
 this popup.
 However, many other inner aspects of LyX can be customized by modifying
 the files in 
\family typewriter 
LyXDir
\family default 
.
 They fall in different categories, described in the following subsections.
\layout Subsection

Automatically generated files
\layout Standard

These files 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.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\series medium 
lyxrc.defaults
\family default 
\series default 
 contains defaults for various commands.
 If you don't like some values given there, you can override them using
 the new 
\family sans 
\bar under 
E
\bar default 
dit\SpecialChar \menuseparator

\bar under 
P
\bar default 
references
\family default 
 popup.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\series medium 
packages.lst
\family default 
\series default 
 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 
\family sans 
\bar under 
H
\bar default 
elp\SpecialChar \menuseparator
L
\bar under 
a
\bar default 
TeX\SpecialChar ~
Configuration
\family default 
.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\series medium 
textclass.lst
\family default 
\series default 
 is the list of textclasses that have been found in your 
\family typewriter 
layout/
\family default 
 directory, along with the associated LaTeX document class and their description.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
doc/LaTeXConfig.lyx
\family default 
 is automatically generated during configuration from the file 
\family typewriter 
LaTeXConfig.lyx.in
\family default 
.
 Each string of the form 
\begin_inset Quotes eld
\end_inset 

@chk_foo@
\begin_inset Quotes erd
\end_inset 

 will be replaced by 
\begin_inset Quotes eld
\end_inset 

yes
\begin_inset Quotes erd
\end_inset 

 or 
\begin_inset Quotes eld
\end_inset 

no
\begin_inset Quotes erd
\end_inset 

 depending on whether the package 
\family typewriter 
foo
\family default 
 has been found.
\layout Subsection

Directories
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\series medium 
bind/
\family default 
\series default 
 this directory contains files with the extension 
\family typewriter 
.bind
\family default 
 that define the keybindings used in LyX (see section\SpecialChar ~

\begin_inset LatexCommand \ref{sec:bindings}

\end_inset 

).
 If there exists an internationalized version of the bindfile named 
\family typewriter 
$LANG_xxx.bind
\family default 
, that will be used first.
 See Chapter\SpecialChar ~

\begin_inset LatexCommand \ref{chap:i18n}

\end_inset 

, and section 
\begin_inset LatexCommand \ref{sec:bindings}

\end_inset 

for details.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\series medium 
clipart/
\family default 
\series default 
 contains PostScript® pictures that can be included in documents.
 
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\series medium 
doc/
\family default 
\series default 
 contains LyX documentation files (including the one you are currently reading).
 The file 
\family typewriter 
LaTeXConfig.lyx
\family default 
 deserves special attention, as noted above.
 If there exists an internationalized version of the help-document with
 
\family typewriter 
$LANG_
\family default 
 prepended to the name, that will be used first.
 See Chapter\SpecialChar ~

\begin_inset LatexCommand \ref{chap:i18n}

\end_inset 

 for details.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\series medium 
examples/
\family default 
\series default 
 contains example files that explain how to use some features.
 In the file browser, press the 
\family sans 
Examples
\family default 
 button to get there.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
images/
\family default 
 contains image files that are used by the 
\family sans 
Document
\family default 
 popup.
 In addition, it also contains the individual icons used in the toolbar
 and the banners that can be shown when LyX is launched.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\series medium 
kbd/
\family default 
\series default 
 contains keyboard keymapping files.
 See Chapter\SpecialChar ~

\begin_inset LatexCommand \ref{sec:keymap}

\end_inset 

 for details.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\series medium 
layouts/
\family default 
\series default 
 contains the textclass files described in Chapter\SpecialChar ~

\begin_inset LatexCommand \ref{chap:textclass}

\end_inset 

.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
reLyX/
\family default 
 contains lots of files that together make up reLyX, the translator of 
\begin_inset Quotes eld
\end_inset 

well behaved
\begin_inset Quotes erd
\end_inset 

 LaTeX into LyX.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
scripts/
\family default 
 contains some files that demonstrate the capabilities of the 
\family sans 
External\SpecialChar ~
Template
\family default 
 inset.
 See 
\family sans 
\bar under 
H
\bar default 
elp\SpecialChar \menuseparator
External\SpecialChar ~

\bar under 
M
\bar default 
aterial
\family default 
 for more information.
 [
\emph on 
Author's Note: If this file is merged into one of the standard docs, then
 this it won't be found here! --- AL
\emph default 
].
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
templates/ 
\family default 
contains the standard LyX template files described in Chapter\SpecialChar ~

\begin_inset LatexCommand \ref{sec:templates}

\end_inset 

.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
tex/
\family default 
 contains some LaTeX cls files distributed with LyX.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
ui/
\family default 
 contains files with the extension 
\family typewriter 
.ui
\family default 
 that define the user interface to LyX.
 That is, the files define which items appear in which menu and the items
 appearing on the toolbar.
 See Chapter\SpecialChar ~

\begin_inset LatexCommand \ref{sec:ui}

\end_inset 

 for details.
\layout Subsection

Files you don't want to modify
\layout Standard

These files are used internally by LyX and you generally do not need to
 modify them unless you are a developer.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\series medium 
CREDITS
\family default 
\series default 
 this file contains the list of LyX developers.
 The contents are displayed with the menu entry 
\family sans 
\bar under 
H
\bar default 
elp\SpecialChar \menuseparator
Cr
\bar under 
e
\bar default 
dits
\family default 
.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\series medium 
chkconfig.ltx
\family default 
\series default 
 this is a LaTeX script used during the configuration process.
 Do not run directly.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\series medium 
configure
\family default 
\series default 
 this is the script that is used to re-configure LyX.
 It creates configuration files in the directory it was run from.
\layout Subsection

Other files needing a line or two...
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
encodings
\family default 
 ???
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
external_templates
\family default 
 this file contains the templates available to the new 
\family sans 
External\SpecialChar ~
Template
\family default 
 inset.
 See 
\family sans 
\bar under 
H
\bar default 
elp\SpecialChar \menuseparator
External\SpecialChar ~

\bar under 
M
\bar default 
aterial
\family default 
 for more information.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
languages
\family default 
 this file contains a list of all the languages currently supported by LyX.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
lyxrc.example
\family default 
 Deprecated and definitely obfuscated.
 This is the old style preferences file.
 It will probably disappear in the near future.
\layout Section

Your local configuration directory
\layout Standard

Even if you are using LyX as an unprivileged user, you might want to change
 LyX configuration for your own use.
 The 
\family typewriter 
UserDir
\family default 
 directory that 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 
\family sans 
\bar under 
H
\bar default 
elp\SpecialChar \menuseparator

\bar under 
V
\bar default 
ersion
\family default 
.
 This directory is used as a mirror of 
\family typewriter 
LyXDir
\family default 
, which means that every file in 
\family typewriter 
UserDir
\family default 
 is a replacement for the corresponding file in 
\family typewriter 
LyXDir
\family default 
.
 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.
\layout Standard

To make things clearer, let's provide a few examples:
\layout Itemize

In order to customize LyX's behaviour before version 1.1.6, the user would
 copy the file
\family typewriter 
 LyXDir/lyxrc.example
\family default 
 to 
\family typewriter 
UserDir/lyxrc
\family default 
 and modify it directly.
 Newer versions of LyX still read this file, if it is present in 
\family typewriter 
UserDir
\family default 
, but any subsequent changes made using the new 
\family sans 
\bar under 
E
\bar default 
dit\SpecialChar \menuseparator

\bar under 
P
\bar default 
references
\family default 
 popup are saved to a new file 
\family typewriter 
preferences
\family default 
.
 Thereafter 
\family typewriter 
lyxrc
\family default 
 is never read again and it may be removed.
\layout Itemize

when you reconfigure using 
\family sans 
\bar under 
O
\bar default 
ptions\SpecialChar \menuseparator

\bar under 
R
\bar default 
econfigure
\family default 
, LyX runs 
\family typewriter 
configure
\family default 
 and the resulting files are written in your local configuration directory
 (see section\SpecialChar ~

\begin_inset LatexCommand \ref{sec:autodetected}

\end_inset 

 to have a list of the 
\family typewriter 
preferences
\family default 
 settings affected by this section).
 This means that any additional textclass file that you might have added
 in 
\family typewriter 
UserDir/layouts
\family default 
 will be added to the list of classes in the 
\family sans 
\bar under 
L
\bar default 
ayout\SpecialChar \menuseparator

\bar under 
D
\bar default 
ocument
\family default 
 popup.
\layout Itemize

Similarly, if you have installed some LaTeX document classes in your home
 directory, that LaTeX can find with your 
\family typewriter 
TEXINPUTS
\family default 
 path, they will show up in your list of text classes.
\begin_float footnote 
\layout Standard

as long as LyX or yourself have a 
\family typewriter 
.layout
\family default 
 file for it, of course.
\end_float 
\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 
\family typewriter 
UserDir/doc/
\family default 
 and the items in the 
\family sans 
\bar under 
H
\bar default 
elp
\family default 
 menu will open them!
\layout Section

Running
\latex latex 
 
\latex default 
LyX with multiple configurations
\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.
\layout Standard

Invoking LyX with the command line switch 
\family typewriter 
-userdir 
\family default 
\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 this switch as described above).
 If this 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 
\family typewriter 
Userdir
\family default 
 exactly as you would for the default directory.
 These directories are completely independent (but read on).
 Note that setting the environment variable 
\family typewriter 
LYX_USERDIR_11x
\family default 
 to some value has exactly the same effect
\family typewriter 
.
\layout Standard

Having several configurations also requires more maintenance: if you want
 to add a new layout to 
\family typewriter 
Userdir/layouts
\family default 
 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 
\family typewriter 
\series medium 
doc/
\family default 
\series default 
 subirectory, however, since it contains a file written by the configuration
 script (also accessible through 
\family sans 
\bar under 
O
\bar default 
ptions\SpecialChar \menuseparator

\bar under 
R
\bar default 
econfigure 
\begin_inset LatexCommand \ref{sec:autodetected}

\end_inset 

)
\family default 
 which is configuration-specific.
\layout Chapter

The 
\family sans 
\bar under 
E
\bar default 
dit\SpecialChar \menuseparator

\bar under 
P
\bar default 
references
\family default 
 popup
\layout Section

Using the popup for the first time
\layout Standard

Historically, you could customize LyX's behaviour by modifying the contents
 of the file 
\family typewriter 
UserDir/lyxrc
\family default 
.
 This has changed in LyX 1.1.6 in that we now provide an 
\family sans 
\bar under 
E
\bar default 
dit\SpecialChar \menuseparator

\bar under 
P
\bar default 
references
\family default 
 popup to take the drudgery out of the customization process.
 
\family typewriter 
UserDir/lyxrc
\family default 
 will still be read until you use the new popup for the first time.
 Thereafter, any changes will be saved to a new file, 
\family typewriter 
preferences
\family default 
, and 
\family typewriter 
lyxrc
\family default 
 will never be read again.
 It may then be removed.
\layout Standard

The new 
\family typewriter 
UserDir/preferences
\family default 
 file will contain only changes that you have made to the default behaviour,
 some of which is hard-coded into LyX and some of which is contained in
 the system file 
\family typewriter 
LyXDir/lyxrc.defaults
\family default 
.
 Note that in both files lines beginning with a 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
#
\family default 

\begin_inset Quotes erd
\end_inset 

 are just comments and not interpreted.
 However, only system administrators should edit 
\family typewriter 
LyXDir/lyxrc
\family default 
.
 Users should use the
\family sans 
 
\bar under 
E
\bar default 
dit\SpecialChar \menuseparator

\bar under 
P
\bar default 
references
\family default 
 popup to create and modify their own 
\family typewriter 
UserDir/preferences
\family default 
 file.
\layout Standard

We hope that the 
\family sans 
\bar under 
E
\bar default 
dit\SpecialChar \menuseparator

\bar under 
P
\bar default 
references
\family default 
 popup will be largely self-explanatory.
 Almost all the commands have an associated comment, so you shouldn't have
 too much trouble modifying it to taste.
 Before we highlight a few of the more important commands below, however,
 a word of warning: 
\family sans 
Apply
\family default 
ing some of your changes (e.g., screen fonts) will have instant effect.
 Others (e.g.
 changing the bind file) will not.
 Bear with us; this is a work-in-progress.
 If nothing appears to have changed, just 
\family sans 
Save
\family default 
 the changes and restart LyX.
\layout Section

Screen & Fonts
\layout Standard

The font used to display your documents on the LyX screen is very important,
 since you'll be reading all your documents with this font.
 Therefore it is important that the font is as readable and good-looking
 as possible.
 The LyX team tried to provide the best possible default font for you, but
 since practically all X11 systems are different, it's very likely that
 the default fonts will be sub-optimal on your system.
 Fortunately, you can do something about this.
 Before we explain how to do this, you should learn a bit more about fonts
 so that you are better prepared for choosing your fonts, because it is
 a trade-off that is specific to your preferences and the capabilities of
 your system.
\layout Standard

Notice that this section only deals with the fonts on the 
\emph on 
screen
\emph default 
 inside the LyX window.
 The fonts that appear on the 
\emph on 
paper
\emph default 
 
\emph on 
output
\emph default 
 are independent from these fonts, and are determined by the document class.
 Read the 
\emph on 
User's Guide
\emph default 
 to learn how to change the font of the printed version of your document.
\layout Standard

Basically, screen fonts come in two different kinds: scalable outline fonts
 and non-scalable bitmap fonts.
 This distinction seems a bit arbitrary, since non-scalable fonts are actually
 scalable in most modern font renderers.
 The difference lies the 
\emph on 
quality
\emph default 
 of the scaling, and the 
\emph on 
speed
\emph default 
 of display.
 The most important decision is thus whether you should use non-scalable
 bitmap fonts or scalable outline fonts.
\layout Standard

The scalable fonts are built from 
\emph on 
outlines
\emph default 
 of the single glyphs (i.e.
 characters) in the font.
 This means that each glyph is defined using mathematical curves that are
 well suited for scaling to any requested size.
 This mathematical definition is interpreted by the font renderer and turned
 into a small picture composed of pixels according to which size and glyph,
 the programmer requests.
 This means that scalable fonts will look pretty good in all sizes.
 Well, almost all sizes.
 Since scalable fonts are defined in an abstract way, it can be hard to
 provide a good rendering at small sizes, where each pixel has to be very
 carefully computed to provide a good image.
 Technically it is possible to do this from the mathematical definition,
 but in order to keep the rendering reasonably fast, tradeoffs have to be
 made, and the result is that scalable fonts can be difficult to read at
 small sizes.
\layout Standard

Bitmap fonts on the other hand, are defined by bitmap graphics from the
 start, so they will look good at all the sizes they are meant for.
 However, they don't scale well, because in order to scale a glyph, each
 pixel is enlarged into several pixels.
 It is the same effect that happens if you try to enlarge a picture in 
\family typewriter 
xv
\family default 
 or any other picture manipulation program.
 In order to relieve this effect, bitmap fonts are typically provided in
 several fixed sizes typically from around 8 pixels high up to 34 pixels
 or so high in steps according to what is believed to be useful.
 The advantage of bitmap fonts is that no complicated computations are necessary
 to display each glyph, so bitmap fonts are thus faster displayed than scalable
 fonts.
 The disadvantage is that sizes that don't exists as fixed versions have
 to be scaled by doubling pixels, and thus look bad.
\layout Standard

The net result of all this, is that bitmap fonts are generally best for
 the small sizes, where they are available, while scalable fonts are generally
 best for large sizes.
 The logical conclusion would thus be to use bitmap fonts for the small
 sizes, and scalable fonts for the large sizes.
 Unfortunately, this is not a good idea, since bitmap fonts and scalable
 fonts are not designed to be used together, so the overall look of such
 a scheme would be bad.
 The best you can do is thus to try both schemes and decide for yourself
 what suits you.
\layout Standard

By default, LyX uses non-scalable bitmap fonts.
 For serif fonts, 
\emph on 
times
\emph default 
 is used, for sans serif fonts, 
\emph on 
helvetica
\emph default 
 is used, while 
\emph on 
courier
\emph default 
 is used as the monospaced/typewriter font.
\layout Standard

In the following, we will describe what to do if the text does not look
 good in LyX.
 We'll start with the most important parameters: DPI and font zoom.
\layout Subsection

DPI setting and Font Zoom
\layout Standard

LyX automatically tries to scale the fonts to look as close as the paper
 output size as possible, except for the so-called font zoom factor.
\layout Standard

In order for this to work on all systems, it relies on the screen DPI (dots
 per inch) setting to be correct.
 The DPI setting for your system is autodetected by LyX using the information
 the X server can provide.
 You can check what LyX autodetects the DPI setting to, by running LyX as
 
\family typewriter 
lyx -dbg 
\family default 
2.
\layout Standard

On many systems, X is not set up correctly, so you should check that it
 is correct by hand.
 Run 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
xdpyinfo | more
\family default 

\begin_inset Quotes erd
\end_inset 

 and write down what the DPI is for the resolution you use (this will be
 close to the value LyX detects).
 It is the number mentioned as 
\begin_inset Quotes eld
\end_inset 

resolution
\begin_inset Quotes erd
\end_inset 

.
 Also write down the number of pixels you have in the width (the first number
 under 
\begin_inset Quotes eld
\end_inset 

dimensions
\begin_inset Quotes erd
\end_inset 

).
\layout Standard

Then get the good old ruler out of the closet, and measure the width of
 the visible screen-image on your monitor.
 Convert this measurement to inches if you used a centimeter ruler by dividing
 by 2.54.
 Now you can determine the correct DPI setting for your screen by dividing
 the number of pixels in the width by the width of the screen-image on the
 monitor.
 If this number is more than, say, 5 DPI from the detected value, you should
 either fix the X setup, or at least tell LyX that the DPI is different
 than the detected value.
\layout Standard

If you can't fix the X setup (which of course is best since other programs
 than LyX will benefit from this as well), you can tell LyX the correct
 DPI using the 
\family sans 
Preferences
\family default 
 popup.
\layout Standard

If the text is too small or too big for your taste, you should fiddle with
 the font zoom setting.
 This setting is used to scale the point size of the text.
 If your DPI setting is correct, and the font zoom setting is set to 100,
 this means that LyX will try to display the text exactly the same size
 as it will appear on the paper-output.
 If you set the zoom factor to 200, the text will try to be 2 times as big
 as on paper.
 Of course, this will only happen if LyX can find a font that has the appropriat
e size, which you can't count on.
 But since LyX is a WYSIWYM system anyways, this limitation isn't much of
 an issue.
\layout Standard

The default font zoom setting is 150 since a monitor is typically wider
 than a piece of paper, but you should try to fiddle with it through the
 
\family sans 
Font\SpecialChar ~

\bar under 
Z
\bar default 
oom
\family default 
 setting in the 
\family sans 
Preferences
\family default 
 popup to find a size that you like.
 When you've found a setting that seems to work nicely for you (tip: use
 the 
\family sans 
\bar under 
A
\bar default 
pply
\family default 
 button to keep the pop-up open while you experiment), you can make this
 setting the default by using the 
\family sans 
\bar under 
S
\bar default 
ave
\family default 
 button.
\layout Standard

While it is often possible to find a suitable size for the text on the screen,
 this doesn't necessarily mean that the fonts are the best ones available
 on your system.
 In order to help you get the most out of your system, you can use the font
 definition commands to fine-tune the look of the text in greater detail
 than merely size.
\layout Subsection

Font definition commands
\layout Standard

As mentioned, LyX uses non-scalable bitmap fonts by default.
 For serif fonts, 
\emph on 
times
\emph default 
 is used, for sans serif fonts, 
\emph on 
helvetica
\emph default 
 is used, while 
\emph on 
courier
\emph default 
 is used as the monospaced/typewriter font.
\layout Standard

You can change all of these from within the 
\family sans 
Preferences
\family default 
 popup.
 The number of fonts that are available on different systems vary, but the
 program 
\family typewriter 
xfontsel
\family default 
 should be available everywhere.
 Use that program to find candidate fonts.
 When you've found a font that you like, try to insert the first two elements
 of the name (called 
\begin_inset Quotes eld
\end_inset 

fndry
\begin_inset Quotes erd
\end_inset 

 and 
\begin_inset Quotes eld
\end_inset 

fmly
\begin_inset Quotes erd
\end_inset 

 in 
\family typewriter 
xfontsel
\family default 
) in the appropriate field in the 
\family sans 
Preferences
\family default 
 pop-up and press 
\family sans 
\bar under 
A
\bar default 
pply
\family default 
.
 LyX will then reformat your document using the new font, and if you like
 the font, you should 
\family sans 
\bar under 
S
\bar default 
ave
\family default 
 it.
 One place to start for a new font is to see if the scalable font 
\begin_inset Quotes eld
\end_inset 

utopia
\begin_inset Quotes erd
\end_inset 

 is available.
 Tip: You can see whether a font is a bitmap font or a scalable font by
 checking the 
\begin_inset Quotes eld
\end_inset 

resx
\begin_inset Quotes erd
\end_inset 

 or 
\begin_inset Quotes eld
\end_inset 

resy
\begin_inset Quotes erd
\end_inset 

 fields in 
\family typewriter 
xfontsel
\family default 
.
 If the value 0 is available, the font is scalable.
 If the value 0 isn't available, the font is a bitmap font.
\layout Standard

Before you go about scrapping a bitmap font because the larger sizes look
 
\begin_inset Quotes eld
\end_inset 

blocky
\begin_inset Quotes erd
\end_inset 

, you should toggle the 
\begin_inset Quotes eld
\end_inset 

Use scalable fonts
\begin_inset Quotes erd
\end_inset 

 button.
 This is only useful if you use bitmap fonts, because only these don't scale
 well.
 If you define this flag, LyX will only use the fixed font sizes that are
 available, and this guarantees that all bitmap fonts look well.
 (You can see which individual font sizes are available with the 
\family typewriter 
xlsfonts
\family default 
 command.
 Try 
\family typewriter 
man xlsfonts
\family default 
.) However, the prize is that the difference between the size of the fonts
 on screen and the size of fonts on paper will be larger because LyX will
 have to be satisfied with the closest available size, and not try to scale
 a size to fit.
 Also, you can risk that some logically different sizes, such as 
\family sans 
Large
\family default 
 and 
\family sans 
Larger
\family default 
, will be mapped to the same screen font, making it hard for you to see
 the difference on screen.
 We've decided not to use scalable fonts by default because of these artifacts,
 but since LyX is a WYSIWYM system, many people like to use the flag anyways,
 well-knowing that the font size on the screen can't be trusted.
 But remember that this flag only makes a difference when you use bitmap
 fonts.
 Scalable fonts won't be affected for reasons you should understand by now.
\layout Standard

One final note regarding this flag: you should know that there is nothing
 wrong with using bitmap and scalable fonts at the same time for different
 purposes.
 For instance, it's common to use the scalable 
\begin_inset Quotes eld
\end_inset 

Utopia
\begin_inset Quotes erd
\end_inset 

 for the serif text together with a bitmap version of 
\begin_inset Quotes eld
\end_inset 

Helvetica
\begin_inset Quotes erd
\end_inset 

.
 And you can safely select the 
\begin_inset Quotes eld
\end_inset 

Use scalable fonts
\begin_inset Quotes erd
\end_inset 

 button without worries: It will only apply to the Helvetica font.
\layout Standard

Sometimes the artifacts introduced by use the flag can be relieved by using
 the fine-detail screen font sizes which defines which point sizes the different
 logical font sizes correspond to.
 Run LyX as 
\family typewriter 
lyx -dbg 513
\family default 
 to see exactly what concrete fonts the logical sizes map to, and try adjusting
 the corresponding entries in the 
\family sans 
Preferences
\family default 
 popup until you've managed to hit the nail and get the fonts you want.
 This can be hard to do, because LyX uses the DPI setting and the font zoom
 settings to calculate which exact screen font size to ask the X server
 for, thus obfuscating the mapping.
 If you can't make it by trial-and-error, you can make the process more
 transparent if you set both the DPI setting and font zoom settings to 100---eve
n when this is known to be wrong.
 This will of course make your scalable fonts look weird, so use with care.
\layout Subsection

Font encoding
\layout Standard

By default, LyX will use fonts meant to write Western European text, including
 all kinds of English.
 This is defined through the so-called 
\emph on 
font
\emph default 
 
\emph on 
encoding
\emph default 
.
 If you want to use LyX to write for instance Eastern European text, Cyrillic
 or any other language not covered by the ISO-8859-1 font encoding, you
 can define a different one with the 
\family typewriter 

\backslash 
screen_font_encoding
\family default 
 setting.
 This requires you to have special fonts installed.
 You can use 
\family typewriter 
xfontsel
\family default 
 to see whether this is the case: check the 
\begin_inset Quotes eld
\end_inset 

rgstry
\begin_inset Quotes erd
\end_inset 

 and 
\begin_inset Quotes eld
\end_inset 

encdng
\begin_inset Quotes erd
\end_inset 

 fields for ISO-8859-X values different from ISO-8859-1, and search for
 one that contains the national characters of your language.
 If you find any, define this value in your 
\family typewriter 
lyxrc
\family default 
 file.
 If not, go searching the Web for appropriate fonts.
\layout Standard

When you've set LyX up to use a different font encoding, you should also
 consider changing the font used by pop-up windows in LyX.
 For instance, the 
\family sans 
Table\SpecialChar ~
of\SpecialChar ~
Contents
\family default 
 pop-up will not be understandable unless you tell LyX to use a different
 font for this.
 By default the menu font is set to 
\family typewriter 
-*-helvetica-medium-r
\family default 
, but often Helvetica is not available in the font encoding you need.
 Therefor you can change this font with the 
\family typewriter 

\backslash 
screen_font_menu
\family default 
 command.
\layout Standard

As you can see, there are quite a few options that can be used to fine tune
 the look of your fonts.
 This should not scare you from fiddling with the settings, because after
 all, you will hopefully be using LyX for many hours in the future.
 And contrary to real WYSIWYG word processors where you are tied to using
 fonts that have to look good both on paper and on screen, LyX gives you
 the possibility of using fonts that are designed to look good on the screen
 while using a different set of fonts to look good on paper.
\layout Standard

In a future version of LyX, we will try to support the 
\family typewriter 
T1Lib
\family default 
 font renderer, which provides 
\emph on 
anti-aliased
\emph default 
 text.
 This means that each glyph is built from several color shades rather than
 just two colors, in effect giving what appears to be higher resolution.
 This will not only make the text more readable on screen, but will also
 allow LyX to get really close to the font sizes as they appear on paper,
 since it will be possible for LyX to ask for, say, a point 14.4 font instance,
 contrary to now, where this has to be rounded to point 14.
\layout Section

Bindings
\begin_inset LatexCommand \label{sec:bindings}

\end_inset 


\layout Standard

Bindings are used to, well, bind a function to a key.
 Several prepackaged binding files are available: a CUA set of bindings
 (familiar as the typical set of PC and CDE set of keyboard shortcuts),
 an Emacs set of bindings, for those of us who follow the One True Way and
 refuse to lower our standards,
\begin_float footnote 
\layout Standard

I'm kidding here, of course!
\end_float 
 as well as specialty bindings (broadway and hollywood) and other languages
 (French, German, etc.).
\layout Standard

If, however, you'd like to customise the keybindings to your own exacting
 tastes, then copy the best-fit file in 
\family typewriter 
LyXDir/bind/
\family default 
 to your own 
\family typewriter 
UserDir/bind/
\family default 
 and modify that.
 Don't forget to load this new file into LyX using the 
\family sans 
Preferences
\family default 
 popup.
 (For the moment you'll have to restart LyX for these changes to take effect.)
\layout Standard

LyX supports internationalization of the user interface (see Chapter\SpecialChar ~

\begin_inset LatexCommand \ref{chap:i18n}

\end_inset 

).
 If your 
\emph on 
locale
\emph default 
 is set, with the environment variable 
\family typewriter 
$LANG
\family default 
, LyX will try to use bindfiles by prepending 
\family typewriter 
$LANG_
\family default 
 to their name.
 For example, you can put a translated copy of some standard bind file in
 your personal 
\family typewriter 
bind/
\family default 
 directory, and LyX will use it automatically.
 [
\emph on 
Author's Note: Not sure if this is true anymore.
 Perhaps someone who uses such a thing could test.
 --- AL
\emph default 
].
\layout Standard

The syntax of the 
\family typewriter 
.bind
\family default 
 files is straightforward:
\layout Standard


\family typewriter 

\backslash 
bind <key combination> <lyx-function>
\layout Standard

Both key combination and lyx-function (including any arguments) must be
 enclosed in "double quotes".
 All the LyX functions are listed in the 
\emph on 
Reference Guide
\emph default 
.
\layout Section

User Interface
\begin_inset LatexCommand \label{sec:ui}

\end_inset 


\layout Standard

The appearance of both the menu and toolbar may both be changed using the
 
\family sans 
Preferences
\family default 
 popup.
 Simply change the 
\family typewriter 
.ui
\family default 
 file in 
\family typewriter 
LyXDir/ui/
\family default 
.
 For the moment, only one file exists, 
\family typewriter 
default.ui
\family default 
, but feel free to experiment.
 Just copy the file to the 
\family typewriter 
UserDir/ui/
\family default 
 directory and play! Note that, for the moment, you'll have to restart LyX
 for these changes to take effect.
\layout Standard

The syntax of the 
\family typewriter 
.ui
\family default 
 files is straightforward: have a look at 
\family typewriter 
default.ui.
 The Menubar
\family default 
, 
\family typewriter 
Menu
\family default 
 and 
\family typewriter 
Toolbar
\family default 
 entries must be ended with an explicit 
\family typewriter 
End
\family default 
.
 They may contain 
\family typewriter 
Submenu
\family default 
s, 
\family typewriter 
Item
\family default 
s, 
\family typewriter 
OptItem
\family default 
s, 
\family typewriter 
Separator
\family default 
s, 
\family typewriter 
Icon
\family default 
s and in the case of the 
\begin_inset Quotes eld
\end_inset 

file
\begin_inset Quotes erd
\end_inset 

 menus, a 
\family typewriter 
Lastfiles
\family default 
 entry.
 One small word of warning.
 
\family typewriter 
Submenu
\family default 
s may be inserted in a 
\family typewriter 
Menubar
\family default 
 or 
\family typewriter 
Menu
\family default 
, but they are defined as 
\family typewriter 
Menu
\family default 
s, not as 
\family typewriter 
Submenu
\family default 
s.
\layout Section

Converters, Formats and Viewers
\layout Standard

LyX has a new and powerful mechanism to convert to and from any file format
 using external programs.
 Define a pair of formats, e.g.

\family typewriter 
 LaTeX
\family default 
 and 
\family typewriter 
PDF
\family default 
.
 Now define a converter from one format to the other.
 In our example, two possible mechanisms exist.
\layout Enumerate

A direct conversion, from LaTeX to PDF using pdflatex
\layout Enumerate

A more convoluted route using intermediate formats and converters: LaTeX
 to DVI (using latex) to PostScript® (using dvips) to PDF (using ps2pdf).
\layout Standard

LyX will always choose the shortest possible route, so you must specify
 two different Format names for 
\family typewriter 
.pdf
\family default 
 files to be able to use either.
 Both are included by default in the 
\family sans 
Preferences
\family default 
 popup.
 Have a look and then invent your own!
\layout Standard

Moreover, each Format can have a Viewer associated with it.
 For example, you might want to use 
\family typewriter 
ghostview
\family default 
 to examine PostScript® files.
\layout Standard

[
\emph on 
Author's Note: This section probably needs expanding, but it completely
 replaces the next one.
 Morover, I'm not sure how relevant the Printer and Changing Colors sections
 are anymore.
 The Ascii-Export section is still needed, although it needs to be played
 with to take it from the lyxrc way to the Preferences popup way.
 --- AL
\emph default 
].
\layout Section

On-screen Previewing
\layout Standard

In addition to viewing documents within LyX, you can also preview your document
 in the form in which it will appear on the paper output.
 By default, LyX uses 
\family typewriter 
xdvi
\family default 
 for on-screen previewing of .
\family typewriter 
dvi
\family default 
 files (the output from LaTeX).
\layout Standard

LyX can also use 
\family typewriter 
dvips
\family default 
 to convert 
\family typewriter 
.dvi
\family default 
 files to .
\family typewriter 
ps
\family default 
 files and 
\family typewriter 
ghostview
\family default 
 for previewing.
 A number of options in the 
\family typewriter 
lyxrc
\family default 
 file can be used to customize these settings.
\layout Description


\family typewriter 
\series medium 

\backslash 
view_dvi_command
\family default 
\series default 
 Allows you to replace 
\family typewriter 
xdvi
\family default 
 by some other 
\family typewriter 
.dvi
\family default 
 previewer, or to supply arguments to 
\family typewriter 
xdvi
\family default 
.
\layout Description


\family typewriter 
\series medium 

\backslash 
view_ps_command
\family default 
\series default 
 Allows you to replace 
\family typewriter 
ghostview
\family default 
 with your preferred Post
\latex latex 

\backslash 
-
\latex default 
Script previewer, or to provide arguments to 
\family typewriter 
ghostview
\family default 
.
\layout Description


\family typewriter 
\series medium 

\backslash 
view_pspic_command
\family default 
\series default 
 Defines the program used to do full-screen previews of PostScript® figures.
 You can not use this setting to include any options.
\layout Description


\family typewriter 
\series medium 

\backslash 
ps_command
\family default 
\series default 
 Defines the program to use to embed PostScript® figures within a LyX document.
 You can not include any options.
 If you define this to the empty string (""), LyX will not render any figures.
 This can be useful if you have a slow machine and work with lots of figures.
\layout Description


\family typewriter 
\series medium 

\backslash 
default_papersize
\family default 
\series default 
 Sets the paper size used by LyX when previewing documents.
 The default value is USletter paper.
 If LaTeX is configured to use a different default size at your site, you
 may wish to change this setting.
\layout Section

ASCII-Export Options
\layout Standard
\added_space_top bigskip \noindent 
There are a couple of commands that can be used to 
\begin_inset Quotes eld
\end_inset 

clean up
\begin_inset Quotes erd
\end_inset 

 exported ASCII text files.
 Note that LyX automatically detects and uses the best settings for your
 system at installation time, but you can modify them if you disagree with
 its interpretation:
\layout Description


\family typewriter 
\series medium 

\backslash 
ascii_roff_command
\family default 
 
\series default 
This command allows you to set the command to produce better ASCII tables
 with the 
\family typewriter 
groff/troff/nroff
\family default 
 UNIX-commands (refer to their manpages for more information about them).
 Not defining it at all tells LyX to use the internal (inferior) formatter.
\layout Description


\family typewriter 
\series medium 

\backslash 
ascii_linelen
\family default 
 
\series default 
With this command you can set the default line length of the ASCII output
 file.
 Setting it to 0 means endless lines.
 Default is 75 characters.
\layout Paragraph


\series medium 
Examples:
\layout LyX-Code

# This let's you generate ASCII tables with latin1
\newline 
# characters, using the groff formatter 
\newline 
#
\newline 

\backslash 
ascii_roff_command 
\begin_inset Quotes eld
\end_inset 

groff -t -ms -Tlatin1
\begin_inset Quotes erd
\end_inset 


\newline 

\newline 
# This let's you generate ASCII tables using the
\newline 
# nroff formatter
\newline 
#
\newline 

\backslash 
ascii_roff_command 
\begin_inset Quotes eld
\end_inset 

nroff
\begin_inset Quotes erd
\end_inset 


\newline 

\newline 
# This sets the line length to 80 characters
\newline 
#
\newline 

\backslash 
ascii_linelen 80
\layout Section

Printer
\layout Standard

There are a bunch of commands that help you setup the printer command from
 LyX.
 Normally, you only need to use a few of them, but all are provided for
 completeness.
\layout Description


\family typewriter 
\series medium 

\backslash 
printer
\family default 
\series default 
 This setting defines the default name of your printer.
\layout Description


\family typewriter 
\series medium 

\backslash 
print_command
\family default 
\series default 
 This setting defines which command LyX should use to print your document.
\layout Description


\family typewriter 
\series medium 

\backslash 
print_evenpage_flag
\family default 
\series default 
 This setting defines which print command flag will trigger printing of
 only the even pages.
\layout Description


\family typewriter 
\series medium 

\backslash 
print_oddpage_flag
\family default 
\series default 
 This setting defines which print command flag will print only the odd pages.
\layout Description


\family typewriter 
\series medium 

\backslash 
print_reverse_flag
\family default 
\series default 
 With this command, you can define what print command flag will print the
 pages in reverse order.
\layout Description


\family typewriter 
\series medium 

\backslash 
print_landscape_flag
\family default 
\series default 
 This command defines what flag is set when you've requested printing of
 your document in landscape.
 No option is passed, if the document is printed in portrait.
\layout Description


\family typewriter 
\series medium 

\backslash 
print_to_printer
\family default 
\series default 
 If you specify an explicit name of a printer, you'll typically have to
 prepend this name with a flag on the printing command line.
 This command defines what flag should appear before the printer name.
\layout Description


\family typewriter 
\series medium 

\backslash 
print_to_file
\family default 
\series default 
 If you want to print to a file, you have to provide a flag before the filename.
 This command allows you to define how this flag looks.
\layout Description


\family typewriter 
\series medium 

\backslash 
print_file_extension
\family default 
\series default 
 When you print to a file, you can define what extension the printed file
 will have with this command.
\layout Description


\family typewriter 
\series medium 

\backslash 
print_extra_options
\family default 
\series default 
 With this command, you can define a series of flags that will be put on
 the printing command after the other flags.
 
\layout Description


\family typewriter 
\series medium 

\backslash 
print_spool_cmd
\family default 
\series default 
 If you specify something in this command, LyX will print in two steps:
 First, the program specified with the 
\family typewriter 

\backslash 
print_command
\family default 
 setting will be executed with the directive to print to a file.
 Then, the command specified with 
\family typewriter 

\backslash 
print_spool_cmd
\family default 
 will be executed with the output file from the previous command on the
 command line, and if specified, the directive (
\family typewriter 

\backslash 
print_to_printer
\family default 
) to send the output to a named printer before the filename.
\layout Standard

All in all, we hope that this will allow you to be able to print your documents
 without fuss.
\layout Subsection

Changing Colors
\layout Standard

You can change the colors used by LyX on-screen using the new 
\family sans 
Preferences
\family default 
 pop-up.
 Alternatively, if you're feeling particularly perverse you could use the
 
\family typewriter 
set-color
\family default 
 bindable function (see the 
\emph on 
Reference Guide
\emph default 
).
 Input would have the format:
\layout Standard


\family typewriter 
set-color LyXName X11Color
\layout Standard

Here is a (partial) list of the functions and default colors:
\layout Standard
\added_space_top 0.3cm \added_space_bottom 0.3cm \align center 

\begin_inset  Tabular
<lyxtabular version="2" rows="10" columns="3">
<features rotate="false" islongtable="false" endhead="0" endfirsthead="0" endfoot="0" endlastfoot="0">
<column alignment="left" valignment="top" leftline="true" rightline="false" width="" special="">
<column alignment="left" valignment="top" leftline="true" rightline="false" width="" special="">
<column alignment="center" valignment="top" leftline="true" rightline="true" width="" special="">
<row topline="true" bottomline="true" newpage="false">
<cell multicolumn="0" alignment="center" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
LyX Name
\end_inset 
</cell>
<cell multicolumn="0" alignment="center" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
Purpose
\end_inset 
</cell>
<cell multicolumn="0" alignment="center" valignment="top" topline="true" bottomline="false" leftline="true" rightline="true" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
Default Color (X11)
\end_inset 
</cell>
</row>
<row topline="true" bottomline="false" newpage="false">
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
background
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
text background
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="true" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
black
\end_inset 
</cell>
</row>
<row topline="true" bottomline="false" newpage="false">
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
foreground
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
text foreground
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="true" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
linen
\end_inset 
</cell>
</row>
<row topline="true" bottomline="false" newpage="false">
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
latex
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
LaTeX code
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="true" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
DarkRed
\end_inset 
</cell>
</row>
<row topline="true" bottomline="false" newpage="false">
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
math
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
Mathed formulae
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="true" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
DarkBlue
\end_inset 
</cell>
</row>
<row topline="true" bottomline="false" newpage="false">
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
mathline
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
fraction Lines, brackets, etc.
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="true" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
Blue
\end_inset 
</cell>
</row>
<row topline="true" bottomline="false" newpage="false">
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
mathbg
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard

\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="true" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
AntiqueWhite
\end_inset 
</cell>
</row>
<row topline="true" bottomline="false" newpage="false">
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
mathframe
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard

\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="true" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
Magenta
\end_inset 
</cell>
</row>
<row topline="true" bottomline="false" newpage="false">
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
mathcursor
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard

\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="true" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
black
\end_inset 
</cell>
</row>
<row topline="true" bottomline="true" newpage="false">
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
selection
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="false" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
selection background
\end_inset 
</cell>
<cell multicolumn="0" alignment="left" valignment="top" topline="true" bottomline="false" leftline="true" rightline="true" rotate="false" usebox="none" width="" special="">
\begin_inset Text

\layout Standard


\family roman 
\series medium 
\shape up 
\size normal 
\emph off 
\bar no 
\noun off 
\latex no_latex 
\color none
LightBlue
\end_inset 
</cell>
</row>
</lyxtabular>

\end_inset 


\layout Standard

The complete list is currently found only in the LColor.C source file.
\layout Section

TeX
\layout Standard

Some sites
\begin_float footnote 
\layout Standard


\emph on 
like my office machine --Dave Johnson
\end_float 
 still have the default LaTeX version as 2.09.
 Though we can't imagine why this should be the default any longer since
 2.09 has been obsolete since 
\emph on 
c.

\emph default 
 1994, it will be necessary to deal with LyX in such an environment.
 Don't even 
\emph on 
think
\emph default 
 about 
\begin_inset Quotes eld
\end_inset 

fixing
\begin_inset Quotes erd
\end_inset 

 LyX to run under LaTeX 2.09.
 Upgrading your LaTeX will be easier, and is the right way to go, anyway.
 Most large systems should, even if they default to 2.09, have a version
 of LaTeX2e available, but perhaps using a different executable name.
 You can change the name of the appropriate LaTeX command, say to the name
 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
latex2e
\family default 

\begin_inset Quotes erd
\end_inset 


\begin_float footnote 
\layout Standard


\emph on 
as it is at my office --Dave Johnson
\end_float 
 by placing the line
\layout LyX-Code


\backslash 
latex_command latex2e
\layout Standard

in your 
\family typewriter 
lyxrc
\family default 
 file.
 At installation time, LyX will try to autodetect whether this setting is
 needed, so normally, you don't need to worry about it.
\layout Section

The autodetected settings
\layout Standard


\begin_inset LatexCommand \label{sec:autodetected}

\end_inset 

There are several items that are detected for you when you run
\latex latex 
 
\family sans 
\bar under 
\latex default 
O
\bar default 
ptions
\bar under 
\SpecialChar \menuseparator
R
\bar default 
econfigure
\family default 
.
 In this section, we list those which pertain to 
\family typewriter 
lyxrc
\family default 
.
 In what follows, all the 
\family typewriter 
*_command
\family default 
 entries are set to none if no suitable command is found.
 In this case, the corresponding functions are not available.
\layout Description


\family typewriter 
\series medium 

\backslash 
latex_command
\family default 
\series default 
 is set to a valid LaTeX2e processor (programs tested are 
\family typewriter 
latex
\family default 
 and 
\family typewriter 
latex2e
\family default 
).
\layout Description


\family typewriter 
\series medium 

\backslash 
ps_command
\family default 
\series default 
 is set to 
\family typewriter 
gs
\family default 
 if you have Ghostscript installed.
\layout Description


\family typewriter 
\series medium 

\backslash 
view_ps_command
\family default 
\series default 
 is set to 
\family typewriter 
gv
\family default 
 or 
\family typewriter 
ghostview
\family default 
 if they are found (
\family typewriter 

\backslash 
view_pspic_command
\family default 
 is set to use the same program).
\layout Description


\family typewriter 
\series medium 

\backslash 
ascii_roff_command
\family default 
\series default 
 uses either 
\family typewriter 
groff
\family default 
 or 
\family typewriter 
nroff
\family default 
+
\family typewriter 
tbl
\family default 
, depending on what is available.
\layout Description


\family typewriter 
\series medium 

\backslash 
chktex_command
\family default 
\series default 
 is set to 
\family typewriter 
chktex
\family default 
 plus a bunch of options.
\layout Description


\family typewriter 
\series medium 

\backslash 
fax_command
\family default 
\series default 
 is set to 
\family typewriter 
fax\SpecialChar ~
send
\family default 
 or 
\family typewriter 
sendfax
\family default 
, depending on what fax package is found.
 The needed command line options are also added.
\layout Description


\family typewriter 
\series medium 

\backslash 
print_spool_command
\family default 
\series default 
 is set to 
\family typewriter 
lp
\family default 
 on systems (so-called System V) who have this command, and 
\family typewriter 
lpr
\family default 
 otherwise (BSD systems).
\layout Description


\family typewriter 
\series medium 

\backslash 
print_spool_printerprefix
\family default 
\series default 
 is set to 
\family typewriter 
-d
\family default 
 or 
\family typewriter 
-P
\family default 
, depending on whether 
\family typewriter 
lp
\family default 
 or 
\family typewriter 
lpr
\family default 
 was found.
\layout Description


\family typewriter 
\series medium 

\backslash 
font_encoding
\family default 
\series default 
 is set to 
\family typewriter 
T1
\family default 
 if the 
\family typewriter 
ec
\family default 
 fonts are found and LaTeX has support for these fonts built-in.
 You can set it manually if you only have the so-called 
\family typewriter 
dc
\family default 
 fonts.
\layout Section

The rest
\layout Standard

There are many other 
\family typewriter 
lyxrc
\family default 
 commands that can be used to customize LyX behavior.
 We still need to document them here, but again, most should be fairly obvious
 and if you get really desperate, the 
\family typewriter 
lyxrc.example
\family default 
 file is richly commented, so walk through that to get an idea of what you
 can customize.
 You can also try your luck in the 
\emph on 
Reference Guide,
\emph default 
 but no guarantees since it's hard to keep that guide truly up-to-date.
\layout Chapter

The LyX Server
\layout Section

Introduction
\layout Standard

The LyX server is a method implemented in LyX that will enable other programs
 to talk to LyX, invoke LyX commands, and retrieve information about the
 LyX internal state.
 This is only intended for advanced users, but they should find it useful.
\layout Section

Starting the LyX Server
\layout Standard

The LyX server works through the use of a pair of named pipes.
 These are usually located in your home directory and have the names 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
.lyxpipe.in
\family default 

\begin_inset Quotes erd
\end_inset 

 and 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
.lyxpipe.out
\family default 

\begin_inset Quotes erd
\end_inset 

.
 External programs write into 
\family typewriter 
.lyxpipe.in
\family default 
 and read back data from 
\family typewriter 
.lyxpipe.out
\family default 
.
 The stem of the pipe names can be defined in the 
\family typewriter 
lyxrc
\family default 
 file by adding a line like:
\layout LyX-Code


\backslash 
serverpipe "/home/myhome/.lyxpipe"
\layout Standard

LyX will add the '
\family typewriter 
.in
\family default 
' and '
\family typewriter 
.out
\family default 
' to create the pipes.
 The above line also has the effect of activating the LyX server.
 If one of the pipes already exists, LyX will assume that another LyX process
 is already running and will not start the server.
 To have several LyX processes with servers at the same time, you have to
 change the 
\family typewriter 
lyxrc
\family default 
 between the start of the programs.
\layout Standard

If you are developing a client program, you might find it useful to enable
 debugging information from the LyX server.
 Do this by starting LyX as 
\family typewriter 
lyx -dbg 8192.
\layout Standard

Warning: if LyX crashes, it may not manage to remove the pipes; in this
 case you must remove them manually.
 If LyX starts and the pipes exist already, it will not start any server.
\layout Standard

Other than this, there are a few points to consider:
\layout Itemize

Both server and clients must run on UNIX or OS/2 machines.
 Communications between LyX on UNIX and clients on OS/2 or vice versa is
 not possible right now.
\layout Itemize

On OS/2, only one client can connect to LyXServer at a time.
\layout Itemize

On OS/2, clients must open inpipe with 
\family typewriter 
O_WRONLY
\family default 
 mode.
\layout Standard

You can find a complete example client written in C in the source distribution
 as 
\family typewriter 
development/server_monitor.c
\family default 
.
\layout Section

Normal communication
\layout Standard

To issue a LyX call, the client writes a line of ASCII text into the input
 pipe.
 This line has the following format:
\layout Quote

LYXCMD:
\emph on 
clientname
\emph default 
:
\emph on 
function
\emph default 
:
\emph on 
argument
\layout Standard

Here 
\emph on 
clientname
\emph default 
 is a name that the client can choose arbitrarily.
 Its only use is that LyX will echo it if it sends an answer - so a client
 can dispatch results from different requesters.
\layout Standard


\emph on 
function
\emph default 
 is the function you want LyX to perform.
 It is the same as the commands you'd use in the minibuffer.
\layout Standard


\emph on 
argument
\emph default 
 is an optional argument which is meaningful only to some functions (for
 instance 
\begin_inset Quotes eld
\end_inset 

self-insert
\begin_inset Quotes erd
\end_inset 

 which will insert the argument as text at the cursor position.)
\layout Standard

The answer from LyX will arrive in the output pipe and be of the form
\layout Quote

INFO:
\emph on 
clientname
\emph default 
:
\emph on 
function
\emph default 
:
\emph on 
data
\layout Standard

where 
\emph on 
clientname
\emph default 
 and 
\emph on 
function
\emph default 
 are just echoed from the command request, while 
\emph on 
data
\emph default 
 is more or less useful information filled according to how the command
 execution worked out.
 Some commands will return information about the internal state of LyX,
 such as 
\begin_inset Quotes eld
\end_inset 

font-state
\begin_inset Quotes erd
\end_inset 

, while other will return an empty data-response.
 This means that the command execution went fine.
\layout Standard

In case of errors, the response from LyX will have this form
\layout Quote

ERROR:
\emph on 
clientname
\emph default 
:
\emph on 
function
\emph default 
:
\emph on 
error message
\layout Standard

where the 
\emph on 
error message
\emph default 
 should contain an explanation of why the command failed.
\layout Standard

Examples:
\layout LyX-Code

echo "LYXCMD:test:beginning-of-buffer:" >~/.lyxpipe.in
\layout LyX-Code

echo "LYXCMD:test:get-xy:" >~/.lyxpipe.in
\newline 
read a <~/.lyxpipe.out
\newline 
echo $a
\layout Section

Notification
\layout Standard

LyX can notify clients of events going on asynchronously.
 Currently it will only do this if the user binds a key sequence with the
 function 
\begin_inset Quotes eld
\end_inset 

notify
\begin_inset Quotes erd
\end_inset 

.
 The format of the string LyX sends is as follows:
\layout Quote


\family typewriter 
NOTIFY:
\family default 
\emph on 
key-sequence
\layout Standard

where 
\emph on 
key-sequence
\emph default 
 is the printed representation of the key sequence that was actually typed
 by the user.
\layout Standard

This mechanism can be used to extend LyX's command set and implement macros:
 bind some key sequence to 
\begin_inset Quotes eld
\end_inset 

notify
\begin_inset Quotes erd
\end_inset 

, start a client that listens on the out pipe, dispatches the command according
 to the sequence and starts a function that may use LyX calls and LyX requests
 to issue a command or a series of commands to LyX.
\layout Section

The simple LyX Server Protocol
\layout Standard

LyX implements a simple protocol that can be used for session management.
 All messages are of the form
\layout Quote

LYXSRV:
\emph on 
clientname
\emph default 
:
\emph on 
protocol message
\layout Standard

where 
\emph on 
protocol message
\emph default 
 can be 
\begin_inset Quotes eld
\end_inset 

hello
\begin_inset Quotes erd
\end_inset 

 or 
\begin_inset Quotes eld
\end_inset 

bye
\begin_inset Quotes erd
\end_inset 

.
 If 
\begin_inset Quotes eld
\end_inset 

hello
\begin_inset Quotes erd
\end_inset 

 is received from a client, LyX will report back to inform the client that
 it's listening to it's messages, while 
\begin_inset Quotes eld
\end_inset 

bye
\begin_inset Quotes erd
\end_inset 

 sent from LyX will inform clients that LyX is closing.
\layout Chapter

Internationalizing LyX
\begin_inset LatexCommand \label{chap:i18n}

\end_inset 


\layout Standard

LyX supports using a translated interface.
 Last time we checked, LyX provided text in 14 languages together with the
 default English text.
 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 locale(5) could be a good place to start).
\layout Standard

Notice that these translations will work, but do contain a few flaws.
 In particular, all pop-ups 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 short-cut
 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.
 We'll try to fix these shortcomings in future version of LyX.
\layout Section

Selecting an alternative language for the user interface
\layout Standard

This feature is disabled by default, meaning that the text will be English.
 To enable an alternative language, you have to set an appropriate environment
 variable.
 Use 
\family typewriter 
"setenv LANG xx"
\family default 
 
\family roman 
for csh class shells
\family default 
 or 
\family typewriter 
"export LANG=xx"
\family default 
 
\family roman 
for sh class shells
\family default 
.
 Substitute the 
\family typewriter 
xx
\family default 
 with the two letter code for the language you want.
 For instance, 
\family typewriter 
no
\family default 
 is Norwegian.
\layout Standard

Normally, you'll want to put the appropriate line in 
\family typewriter 
~/.Xsession
\family default 
 or 
\family typewriter 
~/.xinitrc
\family default 
 so that the translation is on by default.
 Remember that if LyX is configured and compiled with 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
--disable-nls
\family default 

\begin_inset Quotes erd
\end_inset 

, this will not work.
\layout Section

Adapting shortcuts for alternative languages
\layout Standard


\latex latex 

\backslash 
begin{sloppypar}
\layout Standard

One main cause for inconsistencies in the translated versions of LyX is
 the fact that all the keyboard shortcuts for the menu functions are based
 on the English version of the text.
 This is, regardless of the entry in the menu, 
\family sans 
M-f t 
\family default 
will open the new-file-from-template popup.
 It is, however, easy to change this, as all the shortcuts for menu operations
 are defined in one file, 
\family typewriter 
LyXDir/bind/menus.bind
\family default 
.
 Every user can have his own copy of that file in his private directory,
 
\family typewriter 
~/.lyx/bind
\family default 
, which will then take precedence over the systemwide file.
 In this private copy, one can easily change the definitions, e.g.
 for the German version change 
\family sans 
M-f t
\family default 
 to 
\family sans 
M-d v
\family default 
 (for 
\family sans 
Datei\SpecialChar \menuseparator
Vorlage
\family default 
).
 For some languages, examples for adapted 
\family typewriter 
menus.bind
\family default 
 files can be found in 
\family typewriter 
LyXDir/bind/
\series bold 
xx
\series default 
_menus.bind 
\family default 
(
\series bold 
xx 
\series default 
denotes the language code).
 These will be used automatically by LyX if they exist (and if your locale
 is set with 
\family typewriter 
$LANG=
\series bold 
xx
\family default 
\series default 
).
\layout Standard


\latex latex 

\backslash 
end{sloppypar}
\layout Standard

You will have to take care that the new definitions for shortcuts do not
 collide with other, previous definitions.
 For example the aforementioned binding 
\family sans 
M-d v
\family default 
 would generate an error for those who use 
\family typewriter 
(x)emacs.bind
\family default 
, where 
\family sans 
M-d
\family default 
 is bound to 
\family typewriter 
word-delete-forward
\family default 
.
 
\layout Standard

The translated names for the top level menus (translated in the po-files)
 are used by the keybinding mechanism, therefore the 
\emph on 
translated 
\emph default 
menu name must be used in the translated 
\family typewriter 
menus.bind
\family default 
.
\layout Section

Translating LyX
\layout Subsection

Translating the graphical user interface (text messages).
\layout Standard

LyX uses the GNU gettext-library to handle the internationalization of the
 interface.
 To have LyX speak your favorite language in all menus and dialog boxes,
 you need a po-file for that language.
 When this is available, you'll have to generate a mo-file from it and install
 the mo-file.
 The process of doing all of this is explained in the documentation for
 GNU gettext, but in short, this is what you do (
\series bold 
xx 
\series default 
denotes the language code):
\layout Standard


\latex latex 

\backslash 
begin{sloppypar}
\layout Itemize

Copy 
\family typewriter 
LYX-SOURCE-DIR/po/lyx.pot
\family default 
 to 
\series bold 
xx
\family typewriter 
\series default 
.po
\family default 
 (if 
\family typewriter 
lyx.pot
\family default 
 doesn't exist, it can be remade with
\family typewriter 
 make lyx.pot
\family default 
 in that directory, or you can use an existing po-file for some other language
 as a template).
\layout Itemize

Edit 
\family typewriter 
xx.po
\begin_float footnote 
\layout Standard

We recommend that you use Emacs to do this, since the gettext distribution
 includes a nice mode that supports you in doing this.
\end_float 
.
 For some menu- and widget-labels, there are also shortcut keys that should
 be translated.
 Those keys are marked after a `
\family typewriter 
|
\family default 
', and should be translated according to the words and phrases of the 
\series bold 
xx
\series default 
-language.
 There is a tool named 
\family typewriter 
scgen.pl
\family default 
 written in Prolog in 
\family typewriter 
LYX-SOURCE-DIR/development/tools/
\family default 
 that may be useful to help determine short-cut keys.
 Note that XForms (version 0.86 at least) can't handle anything but 7-bit
 characters as shortcut keys.
 You should also fill also out the information at the beginning of the new
 po-file with your email-address, etc., so people know where to reach you
 with suggestions and entertaining flames.
\layout Itemize

Generate 
\series bold 
xx
\family typewriter 
\series default 
.mo
\family default 
.
 This can be done with
\newline 

\family typewriter 
msgfmt -o 
\family default 
\series bold 
xx
\family typewriter 
\series default 
.mo < 
\family default 
\series bold 
xx
\family typewriter 
\series default 
.po
\layout Itemize

Copy the mo-file to your locale-tree, at the correct directory for application
 messages for the language 
\series bold 
xx
\series default 
, and under the name 
\family typewriter 
lyx.mo
\family default 

\newline 
(e.g.
 
\family typewriter 
/usr/local/share/locale/
\family default 
\series bold 
xx
\family typewriter 
\series default 
/LC_MESSAGES/lyx.mo
\family default 
)
\layout Standard


\latex latex 

\backslash 
end{sloppypar}
\layout Standard

Adding a new po-file to the 
\emph on 
distribution 
\emph default 
of LyX involves altering the configure scripts and more, but the way gettext
 works, you don't actually need the source-code of LyX to translate it---having
 
\family typewriter 
lyx.pot
\family default 
 (or an existing po-file) and the gettext tools suffices.
\layout Standard

If you've written a translation file for a language that LyX does not currently
 support, feel free to submit it for inclusion by sending a patch.
 In this case, we recommend that you read the README provided in the 
\family typewriter 
LYX-SOURCE-DIR/po/
\family default 
 directory for more instructions.
\layout Subsection

Translating the documentation.
\layout Standard

The online documentation (in the 
\family sans 
Help
\family default 
-menu) can (and should!) be translated.
 If there are translated versions of the documentation available
\begin_float footnote 
\layout Standard

As of April, 1999, almost all of the docs have been translated into German.
 The Tutorial has been translated into French, Polish, Portugese, and Swedish,
 with other translations in progress.
 The library of translated documents is growing rapidly.
\end_float 
, and the locale is set accordingly, these will be used automagically by
 LyX.
 LyX looks for translated versions as 
\family typewriter 
LyXDir/doc/
\series bold 
xx
\series default 
_DocName.lyx
\family default 
, where 
\family typewriter 
\series bold 
xx
\family default 
\series default 
 denotes the language as set by the environmental variable 
\family typewriter 
$LANG
\family default 
.
 If there are none, the default English versions will be displayed.
 Note that the translated versions must have the same filenames (
\family typewriter 
DocName
\family default 
 above) as the original.
 If you feel up to translating the documentation (an excellent way to proof-read
 the original documentation BTW!), there are a few things you should do
 right away:
\layout Itemize

Read 
\family typewriter 
DocStyle.lyx
\family default 
, the guide to writing LyX documentation.
 Pay special attention to the translator's section.
\layout Itemize

Check out the documentation translation web page at 
\begin_inset LatexCommand \url[The LyX Developer's Web Site]{http://www.devel.lyx.org}

\end_inset 

.
 That way, you can find out which (if any) documents have already been translate
d into your language.
 You can also find out who (if anyone) is organizing the effort to translate
 the documentation into your language.
 If no one is organizing the effort, please let us know that you're interested.
\layout Standard

Once you get to actually translating, here's a few hints for you that may
 save you trouble:
\layout Itemize

Join the documentation team! There is information on how to do that in 
\family typewriter 
Intro.lyx
\family default 
 (
\family sans 
Help\SpecialChar \menuseparator
Introduction
\family default 
), which by the way is the first document you should translate.
\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!)
\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 
\family typewriter 
~/.lyx/doc/
\family default 
-directory.
\layout Itemize

Sometimes the original document (from the LyX-team) will be updated.
 Use the CVSweb tool available at the developer's web site to see what has
 been changed
\begin_float footnote 
\layout Standard

Alternatively, you can keep a copy of the latest version of the English
 document which you've translated.
\end_float 
.
 That way you can easily see which parts of the translated document need
 to be updated.
\layout Itemize

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?)
\layout Section

International Keyboard Support
\layout Standard


\emph on 
Editor's Note: The following section is by Ivan Schreter.
 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
\layout Subsection

Defining Own Keymaps: Keymap File Format
\layout Standard

Let's look at a keyboard definition file a little closer.
 It is a plain ASCII file defining
\layout Itemize

key-to-key or key-to-string translations
\layout Itemize

dead keys
\layout Itemize

dead keys exceptions
\layout Standard

To define key-to-key or key-to-string translation, use this command:
\layout Quotation


\family typewriter 

\backslash 
kmap
\family default 
 
\family typewriter 
key
\emph on 
 
\emph default 
outstring
\layout Standard

where 
\family typewriter 
key
\family default 
 is the key to be translated and 
\family typewriter 
outstring
\family default 
 is the string to be inserted into the document.
 To define dead keys, use:
\layout Quotation


\family typewriter 

\backslash 
kmod
\family default 
 
\family typewriter 
key
\family default 
 
\family typewriter 
deadkey
\layout Standard

where 
\family typewriter 
key
\family default 
 is keyboard key and 
\family typewriter 
deadkey
\family default 
 is dead key name.
 The following dead keys are supported (shortcut name is in parentheses):
\layout Quotation


\emph on 
Name
\hfill 
Example
\layout Quotation

acute (acu)
\hfill 
áéíóú
\layout Quotation

grave (gra)
\hfill 
àèìòù
\layout Quotation

macron (mac)
\hfill 
 \i \={o}

\layout Quotation

tilde (til)
\hfill 
ñÑ
\layout Quotation

underbar (underb)
\hfill 

\latex latex 

\backslash 
b o
\layout Quotation

cedilla (ced)
\hfill 
çÇ
\layout Quotation

underdot (underd)
\hfill 

\latex latex 

\backslash 
d o
\layout Quotation

circumflex (circu)
\hfill 
âêîôû
\layout Quotation

circle (circl)
\hfill 
Å\i \r{u}
\i \r{U}

\layout Quotation

tie (tie)
\hfill 

\latex latex 

\backslash 
t oo
\layout Quotation

breve (bre)
\hfill 
\i \u{a}

\latex latex 

\backslash 
u o
\layout Quotation

caron (car)
\hfill 
\i \v{c}
\i \v{s}
\i \v{z}

\layout Quotation

hungarian umlaut (hug)
\hfill 
\i \H{o}
\i \H{u}

\layout Quotation

umlaut (uml)
\hfill 
äöü
\layout Quotation

dot (dot)
\hfill 
\i \.{z}

\latex latex 

\backslash 
.s
\layout Standard

Since in many international keyboards there are exceptions to what some
 dead keys should do, you can define them using
\layout Quotation


\family typewriter 

\backslash 
kxmod
\family default 
 
\family typewriter 
deadkey key outstring
\layout Standard

For example, on Slovak keyboard, if you enter caron-o, it generates circumflex-o
, so you put in
\layout Quotation


\family typewriter 

\backslash 
kxmod
\family default 
 
\family typewriter 
caron o "
\backslash 
^o"
\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.
\layout Standard

Oh, and about characters: backslash is escaped, so to enter it, you'll need
 double backslash.
 Also, quotes and 
\family typewriter 
#
\family default 
 have different meaning.
 
\family typewriter 
#
\family default 
 marks comments, quotes start and end LaTeX-style commands.
 To enter quote, you'll need to use 
\family typewriter 

\backslash 
"
\family default 
, to enter 
\family typewriter 
#
\family default 
, use 
\family typewriter 

\backslash 
#
\family default 
.
\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.
\layout Standard

More keywords will be supported in keymap configuration file in future,
 like
\layout Itemize


\family typewriter 

\backslash 
kinclude filename
\family default 
\emph on 

\hfill 

\family typewriter 
\emph default 
include
\family default 
 another file
\layout Itemize


\family typewriter 

\backslash 
kprog program
\family default 
\emph on 

\hfill 

\family typewriter 
\emph default 
define
\family default 
 an external keymap translation program 
\layout Standard

Also, it should look into 
\family typewriter 
lyxrc
\family default 
 file for defaults, too (for example, a 
\family typewriter 

\backslash 
kinclude
\family default 
 option to include default keyboard).
\layout Section

International Keymap Stuff
\begin_inset LatexCommand \label{sec:keymap}

\end_inset 


\layout Standard

The next two sections describe the 
\family typewriter 
\shape up 
.kmap
\family default 
\shape default 
 and 
\family typewriter 
\shape up 
.cdef
\family default 
\shape default 
 file syntax in detail.
 These sections should help you design your own key map if the ones provided
 do not meet your needs.
\layout Subsection

The .kmap File
\layout Standard

A 
\family sans 
\shape up 
.
\family typewriter 
kmap
\family default 
\shape default 
 file maps keystrokes to characters or strings.
 As the name suggests it sets a keyboard mapping.
 The 
\family typewriter 
.kmap
\family default 
 file keywords 
\family typewriter 
\shape up 
kmap
\shape default 
,
\shape up 
kmod
\shape default 
,
\shape up 
ksmod
\family default 
\shape default 
, and 
\family typewriter 
\shape up 
kcomb
\family default 
\shape default 
 are described in this section.
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\shape up 
kmap
\family default 
\shape default 
 Map a character to a string
\layout LyX-Code


\backslash 
kmap 
\family roman 
\emph on 
char
\emph default 
 
\emph on 
string
\layout Standard

This will ma
\family roman 
p 
\emph on 
char 
\emph default 
to 
\emph on 
string
\emph default 
.
 Note that in 
\emph on 
string
\emph default 
, 
\shape up 
the double-quote (")
\shape default 
 and 
\shape up 
the backslash (
\backslash 
) 
\shape default 
must be escaped with a preceding backslash (
\shape up 

\backslash 

\shape default 
)
\family default 
.
\layout Standard

An example of a 
\family sans 
\shape up 
kmap
\family default 
\shape default 
 statement to cause the symbol
\family sans 
\shape up 
 / 
\family default 
\shape default 
to be output for the keystroke
\family sans 
\shape up 
 & 
\family default 
\shape default 
is:
\layout LyX-Code


\backslash 
kmap & /
\layout List
\labelwidthstring 00.00.0000


\family typewriter 
\shape up 
kmod
\family default 
\shape default 
 Specify an accent character
\layout LyX-Code


\backslash 
kmod
\family roman 
 
\emph on 
char accent allowed
\layout Standard

This will make the cha
\family roman 
racter 
\emph on 
char
\shape up 
 be an accent
\emph default 
 on the 
\emph on 
allowed 
\emph default 
cha
\family default 
racter(s).
 This is the dead key
\begin_float footnote 
\layout Standard

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 
\emph on 
ä
\emph default 
 can be produced in this manner.
\end_float 
 mechanism.
 
\layout Standard

If you 
\family roman 
hit 
\emph on 
char 
\emph default 
and then another key not in 
\emph on 
allowed
\emph default 
, you will get a 
\emph on 
char 
\emph default 
followed by the other, unallowed key, as output.
 
\family default 
Note that a 
\family sans 
\shape up 
Backspace
\family default 
\shape default 
 cancels a dead key, so if 
\family roman 
you hit 
\emph on 
char
\family sans 
 
\shape up 
Backspace
\family default 
\emph default 
, the cursor will not go one position backwards but will instead cancel
 the effect t
\family roman 
hat 
\emph on 
char
\emph default 
 might have had on the next keystroke.
 
\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:
\layout LyX-Code


\backslash 
kmod ' acute aeiouAEIOU
\layout List
\labelwidthstring 00.00.0000

ksmod Specify an exception to the accent character
\layout LyX-Code


\backslash 
kxmod 
\family sans 
\emph on 
 
\family roman 
accent char result
\layout Standard

This defines an exce
\family roman 
ption for 
\emph on 
accent 
\emph default 
on 
\emph on 
char
\emph default 
.
 T
\shape up 
he
\emph on 
 accent 
\emph default 
must 
\family default 
have been assigned a keystroke with a previous 
\family typewriter 

\backslash 
kmo
\shape default 
d
\family default 
 declar
\family roman 
ation and 
\emph on 
char 
\emph default 
must not belong in the 
\emph on 
allowed 
\emph default 
set of 
\emph on 
accent
\emph default 
.
 When 
\shape up 
you enter the 
\emph on 
accent char 
\emph default 
sequence, 
\emph on 
result
\emph default 
  is produced.
 If such a declaration does not exist in
\family default 
 the
\family sans 
 
\family typewriter 
.kmap
\family default 
\shape default 
 file and yo
\family roman 
u enter 
\emph on 
accent  char
\emph default 
, you get 
\emph on 
accent_key char 
\emph default 
 where 
\emph on 
accent_key 
\emph default 
 is the first arg
\family default 
ument of the 
\family typewriter 
\shape up 

\backslash 
kmod
\family default 
\shape default 
 declaration.
 
\layout Standard

The following command produces causes äi to be produced when you enter acute-i
 ('i):
\layout LyX-Code


\backslash 
kxmod acute i "
\backslash 

\backslash 
'{
\backslash 

\backslash 
i}"
\layout List
\labelwidthstring 00.00.0000


\family sans 
\shape up 
kcomb
\family default 
\shape default 
 Combine two accent characters
\layout LyX-Code


\backslash 
kcomb 
\family roman 
\emph on 
accent1 accent2 allowed
\layout Standard

This one is getting pretty esoteric.
 It allows you to combine the effect
\family roman 
 of 
\emph on 
accent1
\emph default 
 and 
\emph on 
accent2
\emph default 
 (in that order!) on 
\emph on 
allowed
\emph default 
 chars.
 The keystrokes for 
\emph on 
accent1
\emph default 
 and 
\emph on 
accent2
\emph default 
 must have be
\family default 
en set with a 
\family typewriter 
\shape up 

\backslash 
kmod
\family default 
\shape default 
 command at 
\family roman 
a 
\emph on 
previous
\emph default 
 point in the 
\family default 
file.
 
\layout Standard

Consider this example from the 
\family typewriter 
\shape up 
greek.kmap
\family default 
\shape default 
 file:
\layout LyX-Code


\backslash 
kmod ; acute aeioyvhAEIOYVH 
\backslash 
kmod : umlaut iyIY 
\backslash 
kcomb acute umlaut iyIY
\layout Standard

This allows you to press 
\family sans 
\shape up 
;:i
\family default 
\shape default 
 and get the effect of 
\family typewriter 
\shape up 

\backslash 
'{
\backslash 
"{i}}
\family default 
\shape default 
.
 
\family roman 
\shape up 
A backspace 
\family default 
\shape default 
in this case cancels the last dead key, so if you press
\family sans 
\shape up 
 ;: Backspace i 
\family default 
\shape default 
you get 
\family typewriter 
\shape up 

\backslash 
'{i}
\family default 
\shape default 
.
\layout Subsection

The .cdef File
\layout Standard

After the 
\family typewriter 
\shape up 
.kmap
\family sans 
 
\family default 
\shape default 
mapping is performed, a 
\family typewriter 
\shape up 
.cde
\shape default 
f
\family default 
 file maps the strings that the symbols generate to characters in the current
 font.
 The LyX distribution currently includes at least the 
\family typewriter 
\shape up 
iso8859-1.cdef
\family default 
\shape default 
 and 
\family typewriter 
\shape up 
iso8859-2.cdef
\family default 
\shape default 
 files.
\layout Standard

In general the 
\family typewriter 
\shape up 
.cdef
\family sans 
 
\family default 
\shape default 
file is a sequence of declarations of the form
\layout LyX-Code


\family roman 
\emph on 
char_index_in_set
\emph default 
 
\emph on 
 string
\layout Standard

For example, in order to map 
\family sans 
\shape up 

\backslash 
'{e}
\family default 
\shape default 
 to the corresponding character in the iso-8859-1 set (233), the following
 declaration is used
\layout LyX-Code

233 "
\backslash 

\backslash 
'{e}"
\layout Standard

with 
\family typewriter 

\backslash 

\family default 
 and 
\family typewriter 
"
\family default 
 being escap
\family roman 
ed in 
\emph on 
string
\emph default 
.
 Note that 
\family default 
the same character can apply to more than one string.
 In the 
\family typewriter 
i
\shape up 
so-8859-7.cdef
\family sans 
 
\family default 
\shape default 
file you have
\layout LyX-Code

192 "
\backslash 

\backslash 
'{
\backslash 

\backslash 

\backslash 
"{i}}"
\newline 
192 "
\backslash 

\backslash 

\backslash 
"{
\backslash 

\backslash 
'{i}}"
\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.
\layout Subsection

Dead Keys
\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.
\layout Standard

Suppose you happen to need the circumflex character, 
\begin_inset Quotes eld
\end_inset 

\i \^{}

\begin_inset Quotes erd
\end_inset 

.
 You could bind the 
\family sans 
^
\family default 
-key [a.k.a.\SpecialChar ~

\family sans 
Shift-6
\family default 
] to the LyX command 
\family typewriter 
accent-circumflex
\family default 
 in your 
\family typewriter 
lyxrc
\family default 
 file.
 Now, whenever you type the 
\family sans 
^
\family default 
-key followed by a letter, that letter will have a circumflex accent on
 it.
 For example, the sequence 
\begin_inset Quotes eld
\end_inset 


\family sans 
^e
\family default 

\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 


\family sans 
^t
\family default 

\begin_inset Quotes erd
\end_inset 

, however, LyX will complain with a beep, since a 
\begin_inset Quotes eld
\end_inset 


\family sans 
t
\family default 

\begin_inset Quotes erd
\end_inset 

 never takes a circumflex accent.
 Hitting 
\family sans 
Space
\family default 
 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 
\family sans 
,-key
\family default 
 to a cedilla is a bad idea, since you'll only get cedillas instead of commas.
\layout Standard

One common way to bind dead-keys is to use 
\family sans 
Meta-
\family default 
, 
\family sans 
Ctrl-
\family default 
, and 
\family sans 
Shift-
\family default 
 in combination with an accent, like 
\begin_inset Quotes eld
\end_inset 


\family sans 
~
\family default 

\begin_inset Quotes erd
\end_inset 

 or 
\begin_inset Quotes eld
\end_inset 


\family sans 
,
\family default 

\begin_inset Quotes erd
\end_inset 

 or 
\begin_inset Quotes eld
\end_inset 


\family sans 
^
\family default 

\begin_inset Quotes erd
\end_inset 

.
 Another way involves using 
\family typewriter 
xmodmap
\family default 
 and 
\family typewriter 
xkeycaps
\family default 
 [remember them from section?] to set up the special 
\family typewriter 
Mode_Switch
\family default 
 key.
 The 
\family typewriter 
Mode_Switch
\family default 
 acts in some ways just like 
\family sans 
Shift
\family default 
 and permits you to bind keys to accented characters.
 You can also turn keys into dead-keys by binding them to something like
 
\family typewriter 
usldead_cedilla
\family default 
 and then binding this symbolic key to the corresponding LyX command.
\begin_float footnote 
\layout Standard

Note from 
\noun on 
John Weiss
\noun default 
: This is exactly what I do in my 
\family typewriter 
~/.lyx/lyxrc
\family default 
 and my 
\family typewriter 
~/.xmodmap
\family default 
 files.
 I have my 
\family sans 
Scroll\SpecialChar ~
Lock
\family default 
 key set up as 
\family typewriter 
Mode_Shift
\family default 
 and a bunch of these 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
usldead_*
\family default 

\begin_inset Quotes erd
\end_inset 

 symbolic keys bound such things as 
\family sans 
Scroll\SpecialChar ~
Lock-^
\family default 
 and 
\family sans 
Scroll\SpecialChar ~
Lock-~
\family default 
.
 This is how I produce my accented characters.
\end_float 
 You can make just about anything into the 
\family typewriter 
Mode_Switch
\family default 
 key: One of the 
\family sans 
Ctrl-
\family default 
 keys, a spare function key, etc.
 As for the LyX commands that produce accents, check the entry for 
\family typewriter 
accent-acute
\family default 
 in the 
\emph on 
Reference Manual
\emph default 
.
 You'll find the complete list there.
\layout Subsection

Saving your Language Configuration
\layout Standard


\begin_inset LatexCommand \label{sec:savlang}

\end_inset 

You can edit your 
\family typewriter 
lyxrc
\family default 
 file so that your desired language environment is automatically configured
 when LyX starts up.
 This section describes 
\family typewriter 
\shape up 
lyxrc
\family default 
\shape default 
 commands to specify:
\layout Itemize

default, primary, and secondary keymaps
\layout Itemize

character set
\layout Standard

Look at your 
\family typewriter 
\shape up 
lyxrc
\family default 
\shape default 
 file for the various examples of how to configure it.
 In particular, you can set a keymap like this:
\layout LyX-Code


\backslash 
kbmap true
\layout LyX-Code


\backslash 
kbmap_primary german 
\layout LyX-Code


\backslash 
kbmap_secondary american
\layout Standard

and a font-mapping (
\family typewriter 
\shape up 
.cdef
\family default 
\shape default 
 file) like this:
\layout LyX-Code


\backslash 
screen_font_encoding iso8859-2
\layout Chapter

Installing New Document Classes, Layouts, and Templates 
\begin_inset LatexCommand \label{chap:textclass}

\end_inset 


\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 
\family typewriter 
.cls
\family default 
 or 
\family typewriter 
.sty
\family default 
) which 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 which corresponds to a LaTeX document class
 and which 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 

textclass
\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 

textclass
\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 textclass.
 A template file is simply a LyX document which contains a set of predefined
 entries for a given document class which are generally required for that
 class.
 Templates are especially useful for things like journal manuscripts which
 are to be submitted electronically.
\layout Section

Installing a new LaTeX package
\layout Standard

Some installations may not include a LaTeX package that you would like to
 use within LyX.
 For example, you might need FoilTeX, a common (and very powerful) package
 for preparing slides or viewgraphs for overhead projectors.
\begin_float footnote 
\layout Standard

See the 
\emph on 
Extended LyX Features
\emph default 
 Manual
\emph on 
 
\emph default 
for more documentation on FoilTeX.
\end_float 
 Here are the formal steps involved in getting the package up and running
 if you use a recent version of teTeX
\begin_float footnote 
\layout Standard

This procedure is definitely valid for v1.0 and all known v0.9 beta versions.
 Comments on whether it works under v0.4 would be appreciated, though you
 are better off upgrading to v1.0.x anyway.
\end_float 
 or some other web2c based distribution.
 
\layout Enumerate

Get the package from CTAN or wherever.
\begin_float footnote 
\layout Standard

See the 
\emph on 
Inventory of your LaTeX configuration
\emph default 
 manual for details of what CTAN is and where supported document classes
 can be found.
\end_float 
\layout Enumerate

Read the file 
\family typewriter 
texmf.cnf
\family default 
 (this usually lives in the directory 
\family typewriter 
$TEXMF/web2c
\family default 
, though you can run 
\family typewriter 
kpsewhich texmf.cnf
\family default 
 to locate it).
 It describes how to add a local 
\family typewriter 
texmf
\family default 
 directory; follow the instructions.
 You need to insert the name of your local 
\family typewriter 
texmf
\family default 
 directory in 
\family typewriter 
texmf.cnf
\family default 
.
 Under Linux, 
\family typewriter 
/usr/local
\family default 
 is a logical place to install software that did not come with your distribution
, so you might use 
\family typewriter 
/usr/local/texmf
\family default 
.
 Usually, you will have to modify only two things:
\begin_deeper 
\layout Enumerate

Set 
\family typewriter 
TEXMFLOCAL
\family default 
 to the directory you chose; e.g.
 
\newline 

\family typewriter 
TEXMFLOCAL = /usr/local/texmf
\layout Enumerate

Make sure 
\family typewriter 
TEXMF
\family default 
 includes the 
\family typewriter 
TEXMFLOCAL
\family default 
 variable; e.g.
 
\newline 

\family typewriter 
TEXMF = {$HOMETEXMF,!!$TEXMFLOCAL,!!$TEXMFMAIN}
\end_deeper 
\layout Enumerate

Create your local 
\family typewriter 
texmf
\family default 
 directory (e.g.
 
\family typewriter 
/usr/local/texmf
\family default 
).
 You must follow the directory structure of your existing 
\family typewriter 
texmf
\family default 
 directory (for example, latex packages should go under 
\family typewriter 
/usr/local/texmf/tex/latex/
\family default 
).
\layout Enumerate

Install the package.
 For example, you would unpack the FoilTeX tarball and create 
\family typewriter 
/usr/local/texmf/tex/latex/foiltex
\family default 
.
 The 
\family typewriter 
foiltex
\family default 
 directory contains various files.
\layout Enumerate

Run: 
\family typewriter 
texhash
\family default 
.
 This should create 
\family typewriter 
/usr/local/texmf/ls-R 
\family default 
amongst others.
\layout Enumerate

From within LyX, do: 
\family sans 
\bar under 
O
\bar default 
ptions\SpecialChar \menuseparator

\bar under 
R
\bar default 
econfigure
\family default 
.
 Restart LyX.
\layout Standard

Now you should see your new package---for example 
\family sans 
slides (FoilTeX)
\family default 
---under 
\family sans 
\bar under 
L
\bar default 
ayout\SpecialChar \menuseparator

\bar under 
D
\bar default 
ocument
\family default 
, field 
\family sans 
\bar under 
C
\bar default 
lass
\family default 
.
 Note that there are simpler ways of installing packages: you can add a
 link to the new package directory in the system LaTeX directory (
\family typewriter 
$TEXMF/tex/latex
\family default 
, don't forget to then run 
\family typewriter 
texconfig
\family default 
), or sometimes simply set the 
\family typewriter 
$TEXINPUTS
\family default 
 environment variable to include the new package.
 However, the formal procedure described in 
\family typewriter 
texmf.cnf
\family default 
 is guaranteed to work, so you should follow it unless circumstances absolutely
 prevent it: such as, when you don't have superuser access.
\layout Section

Layouts
\layout Standard

This section describes how to write and install your own LyX layout files
 (also known as textclasses) and walks through the 
\family typewriter 
article
\family default 
 textclass format as an example.
 The 
\family typewriter 
.layout
\family default 
 files describe what paragraph 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
 we can't hope to cover every different possibility or problem you might
 encounter.
 
\layout Standard

When you plan 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.
\layout Standard

All the tags described in this chapter are case-insensitive; this means
 that 
\family typewriter 
Style
\family default 
, 
\family typewriter 
style
\family default 
 and 
\family typewriter 
StYlE
\family default 
 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 textclass-description
 is typeset 
\family typewriter 
\emph on 
emphasized
\family default 
\emph default 
.
 If the argument has a datatype like 
\begin_inset Quotes eld
\end_inset 

string
\begin_inset Quotes erd
\end_inset 

 or 
\begin_inset Quotes eld
\end_inset 

float
\begin_inset Quotes erd
\end_inset 

, the default is shown like this: 
\family typewriter 
float=
\emph on 
default
\family default 
\emph default 
.
\layout Subsection

Supporting new document classes
\layout Standard

There are three situations you are likely to encounter when wanting to support
 a new LaTeX document class.
 The two easiest types involve LaTeX2e class (
\family typewriter 
.cls
\family default 
) and style (
\family typewriter 
.sty
\family default 
) files.
 If you are very unlucky you'll be in the third situation of having to support
 a LaTeX 2.09 style file.
 The process of creating a layout file for these three situations is similar;
 however, an extra step is required to allow LyX to use LaTeX 2.09.
\layout Subsection

LaTeX2e 
\family sans 
sty file
\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, start by copying the existing
 class's layout file into your local directory.
 For the sake of example we'll assume that the style file is called 
\family sans 
myclass.sty
\family default 
 and it is meant to be used with 
\family sans 
report.cls
\family default 
 which is a standard class.
\layout LyX-Code

cp report.layout ~/.lyx/layouts/myclass.layout
\layout Standard

Then edit 
\family typewriter 
myclass.layout
\family default 
 and change the line: 
\layout LyX-Code


\backslash 
DeclareLaTeXClass{report}
\layout Standard

to read
\layout LyX-Code


\backslash 
DeclareLaTeXClass[report, myclass.sty]{report (myclass)}
\layout Standard

Then add:
\layout LyX-Code

Preamble 
\newline 
    
\backslash 
usepackage{myclass}
\newline 
EndPreamble
\layout Standard

near the top of the file.
\layout Standard

Start LyX and select 
\family sans 
\bar under 
O
\bar default 
ptions\SpecialChar \menuseparator

\bar under 
R
\bar default 
econfigure
\family default 
.
 Restart LyX and try creating a new document.
 You should see "
\family sans 
report (myclass)
\family default 
" as a document class option in the 
\family sans 
\bar under 
L
\bar default 
ayout\SpecialChar \menuseparator

\bar under 
D
\bar default 
ocument
\family default 
 popup.
 It is likely that some of the sectioning commands and such will differ
 from how the base class
\begin_float footnote 
\layout Standard


\family typewriter 
report
\family default 
 in this example
\end_float 
 works, so you can fiddle around with the settings for the different sections
 if you wish.
 See below for more discussion on this.
\layout Subsection

LaTeX2e 
\family sans 
cls
\family default 
 file
\layout Standard

In this case, 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 modifying it if at all possible.
 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.
\layout Subsection

LaTeX 2.09 
\family sans 
sty file
\layout Standard

If the 
\family typewriter 
.sty
\family default 
 file is specifically for the now defunct LaTeX 2.09 you can tell this by
 one of two things:
\layout Enumerate

An example file or the documentation in the 
\family sans 
sty
\family default 
 file states its used with 
\family typewriter 

\backslash 
documentstyle{myclass}
\family default 
 (as opposed to 
\family typewriter 

\backslash 
documentclass
\family default 
)
\layout Enumerate

Running LaTeX on an example file will produce a big banner warning that
 it is entering compatibility mode.
\layout Standard

LyX technically only supports LaTeX2e documents.
 But don't give up hope yet! Where there's a will, there's a way (or 
\begin_inset Quotes eld
\end_inset 

Adapting it is impossible; we have therefore done it anyway.
\begin_inset Quotes erd
\end_inset 

).
 The existing support for ReVTeX 3.1, for example, wraps the 2.09 codes for
 use in 2e formatted documents.You can reuse the ReVTeX wrapper for your
 
\family typewriter 
myclass.sty
\family default 
 (if it turns out to be 2.09 code).tweaking
\layout Standard

Okay, here's what you do:
\layout LyX-Code

cp 
\family typewriter 
LyXDir
\begin_float footnote 
\layout Standard


\family typewriter 
LyXDir
\family default 
 is the system directory where LyX is installed and is usually 
\family typewriter 
/usr/local/share/lyx/
\end_float 
/tex/revtex.cls ~/tex/myclass.cls
\layout Standard

or to where ever you keep your local TeX files.
 Now edit 
\family typewriter 
myclass.cls
\family default 
 and do a search-and-replace on ``revtex'' and ``myclass''.
 It's likely that some of the 
\family typewriter 

\backslash 
DeclareOption
\family default 
 statements in the file are not relevant for your style file but we won't
 worry about that now.
\layout Standard

The next step is to repeat the process of creating the 
\family typewriter 
myclass.layout
\family default 
 file given above only this time you use:
\layout LyX-Code


\backslash 
DeclareLaTeXClass{myclass}
\layout Standard

and shouldn't need any 
\family typewriter 
Preamble
\family default 
 definitions.
 Run LyX and reconfigure, restart LyX and with luck you'll have a reasonably
 usable system that only needs fine-tuning of the display.
 This involves tweaking the values used by LyX for spacing, font styles
 and so on that are defined in the 
\family typewriter 
.layout
\family default 
 files.
\layout Standard

You'll also need to check that you have all the environments available from
 the 
\family typewriter 
myclass.sty
\family default 
 available in your 
\family typewriter 
myclass.layout
\family default 
 file.
 If any are missing you'll need to add entries.
 Just copy another style that looks similar and tweak that.
 The easiest way to do this is with: 
\layout LyX-Code

Style MissingStyle
\layout LyX-Code

    CopyStyle SimilarStyle
\layout LyX-Code

    # whatever is different you now redefine
\layout LyX-Code

End
\layout Standard

See below for details about what each element in a 
\family typewriter 
.layout
\family default 
 file does.
\layout Standard

That should be enough to get you on the road.
 Refer to the following sections for details on the actual contents of the
 layout files and remember if all else fails ask for help on the LyX mailing
 lists.
 We're always happy to have new document classes.
\layout Section

Declaring a new textclass
\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.
\layout Standard

Here we go!
\layout Standard

Lines in a layout file which begin with a 
\family typewriter 
#
\family default 
 are comments.
 There is one exception to this rule: all layouts should begin with lines
 like:
\layout LyX-Code


\size small 
#% Do not delete the line below; configure depends on this 
\layout LyX-Code


\size small 
#  
\backslash 
DeclareLaTeXClass{article}
\layout Standard

The second line is used when you configure LyX.
 The layout file is read by the LaTeX script 
\family typewriter 
chkconfig.ltx
\family default 
, in a special mode where 
\family typewriter 
#
\family default 
 is ignored.
 The first line is just a LaTeX comment, and the second one contains the
 declaration of the textclass.
 If these lines appear in a file named 
\family typewriter 
article.layout
\family default 
, then they define a textclass of name 
\family typewriter 
article
\family default 
 (the name of the layout file) which uses the LaTeX document class 
\family typewriter 
article.cls
\family default 
 (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 textclass in the 
\family sans 
\bar under 
L
\bar default 
ayout\SpecialChar \menuseparator

\bar under 
D
\bar default 
ocument
\family default 
 popup.
\layout Standard

Let's assume that you wrote your own textclass that uses the 
\family typewriter 
article.cls
\family default 
 documentclass, but where you changed the appearance of the section headings.
 If you put it in a file 
\family typewriter 
myarticle.layout
\family default 
, the header of this file should be:
\layout LyX-Code


\size small 
#% Do not delete the line below; configure depends on this 
\layout LyX-Code


\size small 
#  
\backslash 
DeclareLaTeXClass[article]{article (with my own headings)}
\layout Standard

This declares a textclass 
\family typewriter 
myarticle
\family default 
, associated with the LaTeX document class 
\family typewriter 
article.cls
\family default 
 and described as 
\begin_inset Quotes eld
\end_inset 

article (with my own headings)
\begin_inset Quotes erd
\end_inset 

.
 If your textclass depends on several packages, you can declare it as:
\layout LyX-Code


\size small 
#% Do not delete the line below; configure depends on this 
\layout LyX-Code


\size small 
#  
\backslash 
DeclareLaTeXClass[article,foo.sty]{article (with my own headings)}
\layout Standard

This indicates that your textclass uses the foo.sty package.
 Finally, it is also possible to declare classes for SGML and DocBook code.
 Typical declarations will look like
\layout LyX-Code


\size small 
#% Do not delete the line below; configure depends on this 
\layout LyX-Code


\size small 
# 
\backslash 
DeclareSGMLClass{SGML (LinuxDoc)}
\layout Standard

or
\layout LyX-Code

#% Do not delete the line below; configure depends on this 
\layout LyX-Code

# 
\backslash 
DeclareDocBookClass[article]{SGML (DocBook article)}
\layout Standard

Note that these declarations can also be given an optional parameter declaring
 the name of the document class (but not a list).
\layout Standard

When the textclass has been modified to your taste, all you have to do is
 to copy it either in 
\family typewriter 
$LyXDir/layouts/
\family default 
 or in 
\family typewriter 
$UserDir/layouts
\family default 
 and run 
\family sans 
\bar under 
O
\bar default 
ptions\SpecialChar \menuseparator

\bar under 
R
\bar default 
econfigure
\family default 
.
 Exit LyX and restart it; then your new textclass should be available along
 with the others.
\layout Subsection

General textclass parameters
\layout Standard

These are the general parameters which describe the form of the entire document:
\layout Standard


\latex latex 

\backslash 
begin{sloppypar}
\layout Description


\family typewriter 
\series medium 
Columns
\family default 
\series default 
 [
\family typewriter 
\emph on 
1
\emph default 
, 2
\family default 
] Whether the class-default should have one or two columns.
 Can be changed in the 
\family sans 
\bar under 
L
\bar default 
ayout\SpecialChar \menuseparator

\bar under 
D
\bar default 
ocument
\family default 
\emph on 
 
\emph default 
popup.
 This setting (same goes for 
\family typewriter 
Sides
\family default 
, too) is important: if your textclass has two columns by default but you
 forget to set it correctly, the 
\family typewriter 
twocolumn
\family default 
 LaTeX option will 
\emph on 
not
\emph default 
 be output when you select 
\family sans 
Two columns
\family default 
 in 
\family sans 
\bar under 
L
\bar default 
ayout\SpecialChar \menuseparator

\bar under 
D
\bar default 
ocument.
\layout Description


\family typewriter 
\series medium 
Sides
\family default 
\series default 
 [
\family typewriter 
\emph on 
1
\emph default 
, 2
\family default 
] Whether the class-default should be printing on one or both sides of the
 paper.
 Can be changed in the 
\family sans 
\bar under 
L
\bar default 
ayout\SpecialChar \menuseparator

\bar under 
D
\bar default 
ocument
\family default 
\emph on 
 
\emph default 
popup.
\layout Description


\family typewriter 
\series medium 
PageStyle
\series default 
 
\family default 
[
\family typewriter 
\emph on 
plain
\emph default 
, empty, headings
\family default 
] The class default pagestyle.
 Can be changed in the 
\family sans 
\bar under 
L
\bar default 
ayout\SpecialChar \menuseparator

\bar under 
D
\bar default 
ocument
\family default 
\emph on 
 
\emph default 
popup.
\layout Description


\family typewriter 
\series medium 
MaxCounter
\family default 
\series default 
 [
\family typewriter 
\emph on 
Counter_Chapter
\emph default 
, Counter_Section, Counter_Subsection, Counter_Subsubsection, Counter_Paragraph,
 
\newline 
Counter_Subparagraph, Counter_EnumI, Counter_EnumII, 
\newline 
Counter_EnumIII, Counter_EnumIV
\family default 
] The highest level of automatic enumeration.
 Useful values are 
\family typewriter 
Counter_Chapter
\family default 
 for a book or report and 
\family typewriter 
Counter_Section
\family default 
 for an article.
 If there is no enumeration needed at all, for example inside a letter class,
 
\family typewriter 
MaxCounter
\family default 
 should be set to 
\family typewriter 
Counter_EnumI
\family default 
.
 
\layout Description


\family typewriter 
\series medium 
ClassOptions\SpecialChar \ldots{}
End
\family default 
\series default 
 This section describes various global options supported by the document
 class.
 See Section\SpecialChar ~

\begin_inset LatexCommand \ref{sec:classoptions}

\end_inset 

 for a description.
\layout Description


\family typewriter 
\series medium 
ProvidesAmsmath
\family default 
\series default 
 [
\family typewriter 
\emph on 
0
\emph default 
, 1
\family default 
] Whether the class already loads the 
\family typewriter 
amsmath
\family default 
 package.
 This is the case of the 
\family typewriter 
amsart
\family default 
 and 
\family typewriter 
amsbook
\family default 
 document classes.
\layout Description


\family typewriter 
\series medium 
ProvidesMakeidx
\family default 
\series default 
 [
\family typewriter 
\emph on 
0
\emph default 
, 1
\family default 
] Whether the class already provides the functionality of the 
\family typewriter 
makeidx
\family default 
 package.
 This is the case of the 
\family typewriter 
amsart
\family default 
 and 
\family typewriter 
amsbook
\family default 
 document classes.
\layout Description


\family typewriter 
\series medium 
ProvidesUrl
\family default 
\series default 
 [
\family typewriter 
\emph on 
0
\emph default 
, 1
\family default 
] Whether the class already provides the functionality of the 
\family typewriter 
url
\family default 
 package.
 This is the case of the
\family typewriter 
 AASTeX 
\family default 
document class.
\layout Description


\family typewriter 
\series medium 
DefaultFont
\family default 
\series default 
 This is used to describe the default font of the document.
 See Section\SpecialChar ~

\begin_inset LatexCommand \ref{sec:fonts}

\end_inset 

 for a description.
\layout Description


\family typewriter 
\series medium 
Preamble\SpecialChar \ldots{}
EndPreamble
\family default 
\series default 
 A set of macro definitions that will be output at the beginning of the
 LaTeX files.
 Use this for global definitions.
\layout Description


\family typewriter 
\series medium 
Input
\family default 
\series default 
 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, 
\family typewriter 
stdclass.inc
\family default 
, which contains most of the basic layouts.
\layout Description


\family typewriter 
\series medium 
NoStyle
\family default 
\series default 
 This command deletes an existing style.
 This is particularly useful when you want to suppress a layout that has
 be defined in an input file.
\layout Standard


\latex latex 

\backslash 
end{sloppypar}
\layout Subsection


\family typewriter 
ClassOptions
\family default 
 section
\layout Standard


\begin_inset LatexCommand \label{sec:classoptions}

\end_inset 

The 
\family typewriter 
ClassOptions
\family default 
 section can contain the following entries:
\layout Description


\family typewriter 
\series medium 
FontSize
\family default 
\series default 
 [
\family typewriter 
string="10|11|12"
\family default 
] The list of available font sizes for the document's main font, separated
 by 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
|
\family default 

\begin_inset Quotes erd
\end_inset 

.
\layout Description


\family typewriter 
\series medium 
PageStyle
\family default 
\series default 
 [
\family typewriter 
string="empty|plain|headings|fancy"
\family default 
] The list of available page styles, separated by 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
|
\family default 

\begin_inset Quotes erd
\end_inset 

.
\layout Description


\family typewriter 
\series medium 
Other
\family default 
\series default 
 [
\family typewriter 
string=""
\family default 
] Some document class options, separated by a comma, that will be added
 to the optional part of the 
\family typewriter 

\backslash 
documentclass
\family default 
 command.
\layout Subsection

Specific Paragraph Layouts
\layout Standard

A paragraph layout description looks like this
\begin_float footnote 
\layout Standard

Note that this will either define a new layout or modify an existing one.
\end_float 
:
\layout LyX-Code

Style 
\family roman 
\emph on 
name
\layout LyX-Code

 ...
\layout LyX-Code

End
\layout Standard

where the following commands are allowed:
\layout Standard


\latex latex 

\backslash 
begin{sloppypar}
\layout Description


\family typewriter 
\series medium 
CopyStyle
\family default 
\series default 
 This is used to copy all the features of an existing layout into the current
 one.
 
\layout Description


\family typewriter 
\series medium 
LatexType
\family default 
\series default 
 [
\family typewriter 
\emph on 
Paragraph
\emph default 
, Command, Environment, Item_Environment,
\family default 
 
\family typewriter 
List_Environment
\family default 
] How the layout should be translated into LaTeX.
 
\family typewriter 
Paragraph
\family default 
 means nothing special.
 
\family typewriter 
Command
\family default 
 means 
\family typewriter 

\backslash 

\emph on 
LatexName
\emph default 
{\SpecialChar \ldots{}
}
\family default 
 and 
\family typewriter 
Environment
\family default 
 means 
\family typewriter 

\backslash 
begin{
\emph on 
LatexName
\emph default 
}\SpecialChar \ldots{}

\backslash 
end{
\emph on 
LatexName
\emph default 
}
\family default 
.
 
\family typewriter 
Item_Environment
\family default 
 is the same as 
\family typewriter 
Environment
\family default 
, except that a 
\family typewriter 

\backslash 
item
\family default 
 is generated for each paragraph of this environment.
 
\family typewriter 
List_Environment
\family default 
 is the same as 
\family typewriter 
Item_Environment
\family default 
, except that 
\family typewriter 
LabelWidthString
\family default 
 is passed as an argument to the environment.
 
\family typewriter 
LabelWidthString
\family default 
 can be defined in the 
\family sans 
\bar under 
L
\bar default 
ayout\SpecialChar \menuseparator

\bar under 
P
\bar default 
aragraph
\family default 
 popup.
 
\family typewriter 
\emph on 
LatexName
\family default 
\emph default 
 is perhaps a bit misleading, since these rules apply to SGML classes, too.
 Visit the SGML class files for specific examples.
\layout Description


\family typewriter 
\series medium 
InTitle
\series default 
 [1, 0] 
\family default 
If 1, marks the layout as needing a 
\family typewriter 

\backslash 
maketitle
\family default 
 afterwards.
 
\layout Description


\family typewriter 
\series medium 
LatexName
\family default 
\series default 
 The name of the corresponding LaTeX stuff.
 Either the environment or command name.
\layout Description


\family typewriter 
\series medium 
LatexParam
\family default 
\series default 
 The optional parameter for the corresponding 
\family typewriter 
\series medium 
LatexName
\family default 
\series default 
 stuff.
 This parameter cannot be changed from within LyX.
\layout Description


\family typewriter 
\series medium 
Margin
\family default 
\series default 
 [
\family typewriter 
\emph on 
Static
\emph default 
, Manual, Dynamic, First_Dynamic, Right_Address_Box
\family default 
] 
\newline 
The kind of margin that the layout has on the left side.
 
\family typewriter 
Static
\family default 
 just means a fixed margin.
 
\family typewriter 
Manual
\family default 
 means that the left margin depends on the string entered in the 
\family sans 
\bar under 
L
\bar default 
ayout\SpecialChar \menuseparator

\bar under 
P
\bar default 
aragraph
\family default 
 popup.
 This is used to typeset nice lists without tabulators.
 
\family typewriter 
Dynamic
\family default 
 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 

) than 
\begin_inset Quotes eld
\end_inset 

3.2 Very long headline
\begin_inset Quotes erd
\end_inset 

, even if other word processors are not able to do this.
 
\family typewriter 
First_Dynamic
\family default 
 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.
 
\family typewriter 
Right_Address_Box
\family default 
 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.
\layout Description


\family typewriter 
\series medium 
NextNoIndent
\family default 
\series default 
 [
\family typewriter 
1, 
\emph on 
0
\family default 
\emph default 
] Whether the following Paragraph is allowed to indent its very first row.
 
\family typewriter 
1
\family default 
 means that it is not allowed to do so, 
\family typewriter 
0
\family default 
 means it could do so if it wants to.
\layout Description


\family typewriter 
\series medium 
ParIndent
\family default 
\series default 
 [
\family typewriter 
string=""
\family default 
] The indent of the very first line of a paragraph.
 The argument is passed as a string.
 For example 
\family typewriter 
"MM"
\family default 
 means that the paragraph is indented with the width of 
\family typewriter 
"MM"
\family default 
 in 
\family typewriter 
the
\family default 
 normal font.
 You can get a negative width by prefixing the string with 
\family typewriter 
"-"
\family default 
.
 This way was chosen so that the look is the same with each used screen
 font.
 The 
\family typewriter 
Parindent
\family default 
 will be fixed for a certain layout.
 The exception is Standard layout, since the indentation of a Standard layout
 paragraph can be prohibited with 
\family typewriter 
NextNoIndent
\family default 
.
 Also, Standard layout paragraphs inside environments use the 
\family typewriter 
Parindent
\family default 
 of the environment, not their native one.
 For example, Standard paragraphs inside an enumeration are not indented.
\layout Description


\family typewriter 
\series medium 
Parskip
\family default 
\series default 
 [
\family typewriter 
float=0
\family default 
] LyX allows 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 additionally separated by this
 parskip argument.
 The vertical space is calculated with 
\family typewriter 
value*DefaultHeight()
\family default 
 where 
\family typewriter 
DefaultHeight()
\family default 
 is the height of a row with the normal font.
 This way, the look stays the same with different screen fonts.
\layout Description


\family typewriter 
\series medium 
TopSep
\family default 
\series default 
 [
\family typewriter 
float=0
\family default 
] 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.
\layout Description


\family typewriter 
\series medium 
BottomSep
\family default 
\series default 
 [
\family typewriter 
float=0
\family default 
] The same as 
\family typewriter 
TopSep
\family default 
 for the very last paragraph.
\layout Description


\family typewriter 
\series medium 
Parsep
\family default 
\series default 
 [
\family typewriter 
float=0
\family default 
] The vertical space between two paragraphs of this layout.
\layout Description


\family typewriter 
\series medium 
Itemsep
\family default 
\series default 
 [
\family typewriter 
float=0
\family default 
] This is an extra space between the paragraphs of an environment layout.
 If you put other layouts into an environment, each is separated with the
 environment's 
\family typewriter 
Parsep
\family default 
.
 But the whole items of the environment are additionally separated with
 this 
\family typewriter 
Itemsep
\family default 
.
 
\layout Description


\family typewriter 
\series medium 
LeftMargin
\family default 
\series default 
 [
\family typewriter 
string=""
\family default 
] 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 border is defined as 
\family typewriter 
Manual
\family default 
 or 
\family typewriter 
Dynamic
\family default 
.
 Then it is added to the manual or dynamic border.
 This string has the same meaning as for 
\family typewriter 
ParIndent
\family default 
.
\layout Description


\family typewriter 
\series medium 
RightMargin
\family default 
\series default 
 [
\family typewriter 
string=""
\family default 
] Similar to 
\family typewriter 
LeftMargin
\family default 
.
\layout Description


\family typewriter 
\series medium 
Labeltype
\family default 
\series default 
 [
\family typewriter 
\emph on 
No_Label
\emph default 
, Manual, Static, Top_Environment, 
\newline 
Centered_Top_Environment, Sensitive, Counter_Chapter, 
\newline 
Counter_Section, Counter_Subsection, Counter_Subsubsection, 
\newline 
Counter_Paragraph, Counter_Subparagraph, Counter_EnumI,
\family default 
 
\family typewriter 

\newline 
Counter_EnumII, Counter_EnumIII, Counter_EnumIV
\family default 
] 
\newline 

\family typewriter 
Manual
\family default 
 means the label is the very first word (up to the first real blank).
 
\family typewriter 
Static
\family default 
 means it is defined in the layout (see 
\family typewriter 
LabelString
\family default 
).
 
\family typewriter 
Top_Environment
\family default 
 and 
\family typewriter 
Centered_Top_Environment
\family default 
 are special cases of 
\family typewriter 
Static
\family default 
.
 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 
\family sans 
Abstract
\family default 
 layout or the 
\family sans 
Bibliography
\family default 
 layout.
 This is also the case for 
\family typewriter 
Manual
\family default 
 labels with latex type 
\family typewriter 
Environment
\family default 
, in order to make layouts for theorems work correctly.
 
\family typewriter 
Sensitive
\family default 
 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 

.
 
\family typewriter 
Sensitive
\family default 
 means the (hardcoded) label string depends on the kind of float.
 The 
\family typewriter 
Counter_xxx
\family default 
 label types should be self explanatory.
\layout Description


\family typewriter 
\series medium 
Labelsep
\family default 
\series default 
 [
\family typewriter 
string=""
\family default 
] The horizontal space between the label and the text body.
 Only used for labels that are not above the text body.
\layout Description


\family typewriter 
\series medium 
LabelBottomsep
\family default 
\series default 
 [float=0] The vertical space between the label and the text body.
 Only used for labels that are above the text body (
\family typewriter 
Top_Environment
\family default 
, 
\family typewriter 
Centered_Top_Environment
\family default 
).
\layout Description


\family typewriter 
\series medium 
LabelString
\family default 
\series default 
 [
\family typewriter 
string=""
\family default 
] The string used for a label with a 
\family typewriter 
Static
\family default 
 labeltype.
 When the border is 
\family typewriter 
Manual
\family default 
 this string is also used as a suggestion for the 
\family typewriter 
LabelWidthString
\family default 
 that can be set in the 
\family sans 
\bar under 
L
\bar default 
ayout\SpecialChar \menuseparator

\bar under 
P
\bar default 
aragraph
\family default 
 popup.
 When the labeltype is 
\family typewriter 
Counter_
\emph on 
xxx
\family default 
\emph default 
, this string is prepended to the counter.
\layout Description


\family typewriter 
\series medium 
Align
\family default 
\series default 
 [
\family typewriter 
\emph on 
block
\emph default 
, left, right, center
\family default 
] Paragraph alignment.
\layout Description


\family typewriter 
\series medium 
AlignPossible
\family default 
\series default 
 [
\family typewriter 
\emph on 
block
\emph default 
, left, right, center
\family default 
] A comma separated 
\emph on 
list
\emph default 
 of possible aligns.
 Some LaTeX styles prohibit certain alignments, since those wouldn't make
 sense.
 For example a right-aligned or centered enumeration isn't possible.
\layout Description


\family typewriter 
\series medium 
Fill_Top
\family default 
\series default 
 [
\family typewriter 
\emph on 
0
\emph default 
,1
\family default 
] With this parameter the 
\family sans 
Fill
\family default 
 value of the 
\begin_inset Quotes eld
\end_inset 

Vertical space above
\begin_inset Quotes erd
\end_inset 

 list of the 
\family sans 
\bar under 
L
\bar default 
ayout\SpecialChar \menuseparator

\bar under 
P
\bar default 
aragraph
\family default 
 popup can be set when initializing a paragraph with this layout
\begin_float footnote 
\layout Standard


\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_float 
.
 
\layout Description


\family typewriter 
\series medium 
Fill_Bottom
\family default 
\series default 
 [
\family typewriter 
\emph on 
0
\emph default 
,1
\family default 
] Similar to 
\family typewriter 
Fill_Top
\family default 
.
\layout Description


\family typewriter 
\series medium 
NeedProtect
\family default 
\series default 
 [
\family typewriter 
\emph on 
0
\emph default 
,1
\family default 
] Whether fragile commands in this layout should be 
\family typewriter 

\backslash 
protect
\family default 
'ed.
\layout Description


\family typewriter 
\series medium 
Newline
\family default 
\series default 
 [
\family typewriter 
0, 
\emph on 
1
\family default 
\emph default 
] Whether newlines are translated into LaTeX newlines (
\family typewriter 

\backslash 

\backslash 

\family default 
) or not.
 The translation can be switched off to allow more comfortable LaTeX editing
 inside LyX.
 
\layout Description


\family typewriter 
\series medium 
FreeSpacing
\family default 
\series default 
 [
\family typewriter 
\emph on 
0
\emph default 
, 1
\family default 
] 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, 
\family typewriter 
FreeSpacing
\family default 
 can be enabled.
 Note that LyX will create protected blanks for the additional blanks when
 in another mode than LaTeX-mode.
\layout Description


\family typewriter 
\series medium 
KeepEmpty
\family default 
\series default 
 [
\family typewriter 
\emph on 
0
\emph default 
, 1
\family default 
] 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.
\layout Description


\family typewriter 
\series medium 
Spacing
\family default 
\series default 
 [
\family typewriter 
\emph on 
single
\emph default 
, onehalf, double, other 
\family default 
\emph on 
value
\emph default 
] This defines what the default spacing should be in the layout.
 The arguments 
\family typewriter 
single
\family default 
, 
\family typewriter 
onehalf
\family default 
 and 
\family typewriter 
double
\family default 
 correspond respectively to a multiplier value of 1, 1.25 and 1.667.
 If you specify the argument 
\family typewriter 
other
\family default 
, then you should also provide a numerical argument which will be the actual
 multiplier value.
 Note that, contrary to other parameters, 
\family typewriter 
Spacing
\family default 
 implies the generation of specific LaTeX code, using the package 
\family typewriter 
setspace.sty
\family roman 
.
\layout Description


\family typewriter 
\series medium 
Font
\family default 
\series default 
 The font used for both the text body 
\emph on 
and
\emph default 
 the label.
 See section\SpecialChar ~

\begin_inset LatexCommand \ref{sec:fonts}

\end_inset 

.
 Note that defining this font automatically defines the 
\family typewriter 
LabelFont
\family default 
 to the same value.
\layout Description


\family typewriter 
\series medium 
TextFont
\family default 
\series default 
 The font used for the text body .
 See section\SpecialChar ~

\begin_inset LatexCommand \ref{sec:fonts}

\end_inset 

.
\layout Description


\family typewriter 
\series medium 
LabelFont
\family default 
\series default 
 The font used for the label.
 See section\SpecialChar ~

\begin_inset LatexCommand \ref{sec:fonts}

\end_inset 

.
\layout Description


\family typewriter 
\series medium 
Preamble\SpecialChar \ldots{}
EndPreamble
\family default 
\series default 
 A set of macro definitions that will be output at the beginning of the
 LaTeX files when the layout is used.
 Use this to define the macros needed by this particular layout.
\layout Standard


\latex latex 

\backslash 
end{sloppypar}
\layout Subsection

Font description
\layout Standard


\begin_inset LatexCommand \label{sec:fonts}

\end_inset 

A font description looks like that:
\layout LyX-Code

Font
\family roman 
\emph on 
 or 
\family default 
\emph default 
LabelFont
\layout LyX-Code

 ...
\layout LyX-Code

EndFont
\layout Standard

and the following commands are available:
\layout Description


\family typewriter 
\series medium 
Family
\family default 
\series default 
 [
\family typewriter 
\emph on 
Roman
\emph default 
, Sans, Typewriter
\family default 
] 
\layout Description


\family typewriter 
\series medium 
Series
\family default 
\series default 
 [
\family typewriter 
\emph on 
Medium
\emph default 
, Bold
\family default 
] 
\layout Description


\family typewriter 
\series medium 
Shape
\family default 
\series default 
 [
\family typewriter 
\emph on 
Up
\emph default 
, Italic, SmallCaps, Slanted
\family default 
] 
\layout Description


\family typewriter 
\series medium 
Size
\family default 
\series default 
 [
\family typewriter 
tiny, small, 
\emph on 
normal
\emph default 
, large, larger, largest, huge, giant
\family default 
]
\layout Description


\family typewriter 
\series medium 
Color
\series default 
 
\series bold 
[
\series default 
\emph on 
none
\emph default 
, black, white, red, green, blue, cyan, magenta, yellow
\series bold 
]
\layout Description


\family typewriter 
\series medium 
Latex
\family default 
\series default 
 [
\family typewriter 
\emph on 
no_latex
\emph default 
, latex
\family default 
] 
\family typewriter 
no_latex
\family default 
 means LyX will translate everything into LaTeX.
 
\family typewriter 
Latex
\family default 
 means a red screenprint and no translation at all.
\layout Section

Creating Templates
\begin_inset LatexCommand \label{sec:templates}

\end_inset 


\layout Standard

Templates are created just like usual documents.
 The only difference is that usual documents contain all possible settings,
 including the fontscheme and the papersize.
 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 
\family typewriter 

\backslash 
fontscheme
\family default 
 or 
\family typewriter 

\backslash 
papersize
\family default 
 from the template LyX file.
 This can be done with any simple text-editor, for example 
\family typewriter 
vi
\family default 
 or 
\family typewriter 
xedit
\family default 
.
 
\layout Standard

Put the edited template files you create in 
\family typewriter 
$UserDir/templates/
\family default 
, copy the ones you use from the global template directory in 
\family typewriter 
$LyXDir/templates/
\family default 
 to the same place, and redefine the template-directory in 
\family typewriter 
lyxrc
\family default 
 using the 
\family typewriter 

\backslash 
template_path
\family default 
 command.
\layout Chapter

A Printer Tutorial
\begin_inset LatexCommand \label{chap:printer}

\end_inset 


\layout Section

Introduction
\layout Standard

This chapter describes how it is possible to setup a printer under a Unix
 system, so that it can be used with LyX.
 
\size normal 
If you have a Linux system, and need to set up your printer, 
\size default 
you might also want to read 
\size normal 
the file 
\family typewriter 
Printing-HOWTO
\family default 
 [often in the directory 
\family typewriter 
/usr/doc/FAQ/HOWTO/
\family default 
 or 
\family typewriter 
/usr/doc/HOWTO/
\family default 
 depending on your system].
 Also, you will need to install the Ghostscript package from your Linux
 CD-ROM, if you never did so.
\layout Standard


\size normal 
Some Linux distributions now come with so-called 
\begin_inset Quotes eld
\end_inset 

magic filters
\begin_inset Quotes erd
\end_inset 

 and automatically set up your system to use them.
 You can use magic filters in place of or in addition to what we describe
 below, but it may be more difficult to take advantage of all of your printer's
 features.
 If your Linux distribution comes with some insta-setup tool for the printer,
 you might just want to use that, then look at the 
\family typewriter 
\size default 
Printing-HOWTO
\family default 
\size normal 
 when you're ready to customize things.
\layout Standard


\size normal 
So if you're feeling adventurous, or have no other choice, read on!
\layout Section

The 
\family typewriter 
/etc/printcap
\family default 
 File
\layout Subsection

Overview
\layout Standard


\size normal 
The 
\family typewriter 
/etc/printcap
\family default 
 file is how you tell Linux about your printer.
 Each entry defines a printer, giving it a name that you and other users
 call it by, and telling Linux how to handle output to it.
 You can actually have multiple 
\begin_inset Quotes eld
\end_inset 

printers
\begin_inset Quotes erd
\end_inset 

 on your system that all access the same physical printer, but use different
 features to do so.
\begin_float footnote 
\layout Standard

Note from 
\noun on 
John Weiss
\noun default 
: I do this with my Epson Stylus Color IIs.
 Since you need to change print heads to use color on the Stylus IIs, I
 set up a separate printer, 
\family typewriter 
color
\family default 
, for printing color documents.
 I also created a 
\family typewriter 
draft
\family default 
 printer that uses lower print resolution and less-accurate printing features.
 So you see, there are lots of things you can do with the printcaps.
\end_float 

\size normal 
 Of course, you will need a printcap entry for each physical printer you
 have.
\layout Standard


\size normal 
Here's a sample 
\family typewriter 
/etc/printcap
\family default 
 file:
\layout LyX-Code


\size normal 
lp|Text on an Epson:
\backslash 

\layout LyX-Code


\size normal 
        :lp=/dev/lp1:
\backslash 

\layout LyX-Code


\size normal 
        :sd=/var/spool/lpd/lp:
\backslash 

\layout LyX-Code


\size normal 
        :lf=/var/spool/lpd/lp/errs:
\backslash 

\layout LyX-Code


\size normal 
        :mx#0:
\backslash 

\layout LyX-Code


\size normal 
        :sh:
\backslash 

\layout LyX-Code


\size normal 
        :sf:
\newline 

\layout LyX-Code


\size normal 
draft|Postscript on an Epson Stylus Color IIs, 180dpi:
\backslash 

\layout LyX-Code


\size normal 
        :lp=/dev/lp1:
\backslash 

\layout LyX-Code


\size normal 
        :sd=/var/spool/lpd/draft:
\backslash 

\layout LyX-Code


\size normal 
        :lf=/var/spool/lpd/draft/errs:
\backslash 

\layout LyX-Code


\size normal 
        :if=/var/spool/lpd/draft/draft.filter:
\backslash 

\layout LyX-Code


\size normal 
        :mx#0:
\backslash 

\layout LyX-Code


\size normal 
        :sh:
\backslash 

\layout LyX-Code


\size normal 
        :sf:
\newline 

\layout LyX-Code


\size normal 
ps|Postscript on an Epson Stylus Color IIs, 360dpi:
\backslash 

\layout LyX-Code


\size normal 
        :lp=/dev/lp1:
\backslash 

\layout LyX-Code


\size normal 
        :sd=/var/spool/lpd/ps:
\backslash 

\layout LyX-Code


\size normal 
        :lf=/var/spool/lpd/ps/errs:
\backslash 

\layout LyX-Code


\size normal 
        :if=/var/spool/lpd/ps/ps.filter:
\backslash 

\layout LyX-Code


\size normal 
        :mx#0:
\backslash 

\layout LyX-Code


\size normal 
        :sh:
\backslash 

\layout LyX-Code


\size normal 
        :sf:
\layout Standard


\size normal 
Before we start explaining these heiroglyphs, we have an important message:
\layout Standard
\added_space_top 0.51cm \align center 

\size normal 
WARNING! WARNING! WARNING!
\layout Standard
\align center 

\size normal 
Use only one line between entries!!!
\layout Standard
\added_space_bottom 0.51cm \align center 

\size normal 
Make sure the line between entries is COMPLETELY BLANK!!!
\layout Standard


\size normal 
Even if you leave a space on the blank line between entries, weird things
 can happen, and the system will not parse your 
\family typewriter 
/etc/printcap
\family default 
 correctly.
\layout Standard


\size normal 
Take a look at one of the entries in the above example.
 Each part of the entry is followed by a 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
:
\family default 

\begin_inset Quotes eld
\end_inset 

 character.
 The 
\begin_inset Quotes eld
\end_inset 


\family typewriter 

\backslash 

\family default 

\begin_inset Quotes erd
\end_inset 

 character at the end of each line tells Linux that the entry continues
 on the next line.
 Don't put anything after the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 

\backslash 

\family default 

\begin_inset Quotes erd
\end_inset 

, not even a space.
 The 
\begin_inset Quotes eld
\end_inset 


\family typewriter 

\backslash 

\family default 

\begin_inset Quotes erd
\end_inset 

 should come right after the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
:
\family default 

\begin_inset Quotes eld
\end_inset 

 of the last part of the entry on the line you're breaking.
\layout Standard


\size normal 
If you do choose to break up the 
\family typewriter 
printcap
\family default 
 entry into multiple lines, be sure to put a 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
:
\family default 

\begin_inset Quotes eld
\end_inset 

 at the beginning of the 
\emph on 
text
\emph default 
 of the new line, after any space.
 For example, we could have written the first entry in the previous example
 as:
\layout LyX-Code


\size normal 
lp|Text:lp=/dev/lp1:sd=/var/spool/lpd/lp:lf=/var/spool/lpd/lp/errs:
\layout Standard


\size normal 
Notice that there is only one 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
:
\family default 

\begin_inset Quotes eld
\end_inset 

 between each part of the entry.
 If we wanted to break this entry into two lines:
\layout LyX-Code


\size normal 
lp|Text:lp=/dev/lp1:sd=/var/spool/lpd/lp:
\backslash 

\layout LyX-Code


\size normal 
     :lf=/var/spool/lpd/lp/errs:
\layout Standard


\size normal 
We break the line at a 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
:
\family default 

\begin_inset Quotes eld
\end_inset 

 by adding a 
\begin_inset Quotes eld
\end_inset 


\family typewriter 

\backslash 

\family default 

\begin_inset Quotes erd
\end_inset 

, starting a new line, adding some space, then adding a 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
:
\family default 

\begin_inset Quotes eld
\end_inset 

 before continuing.
 It's customary to indent the next line a bit if you break up a 
\family typewriter 
printcap
\family default 
 entry into multiple lines.
\layout Standard


\size normal 
Now we'll explain each part of the 
\family typewriter 
/etc/printcap
\family default 
 entry.
 Note that there are other options you can add to an entry.
 We'll only cover the four basic ones here.
 See the man page for the 
\family typewriter 
printcap
\family default 
 file for additional information.
\layout Subsection

The Printer Name
\layout Standard


\size normal 
The first line of a 
\family typewriter 
printcap
\family default 
 entry is the printer name.
 It contains the printer name, followed by a 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
|
\family default 

\begin_inset Quotes erd
\end_inset 

 character, followed by a text description of the printer, and ending, of
 course, with a 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
:
\family default 

\begin_inset Quotes eld
\end_inset 

 character.
 For example:
\layout LyX-Code


\size normal 
draft|OurPrinter in Draft Mode:
\backslash 

\layout Standard


\size normal 
is a printer called 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
draft
\family default 

\begin_inset Quotes erd
\end_inset 

 with the description 
\begin_inset Quotes eld
\end_inset 

OurPrinter in Draft Mode
\begin_inset Quotes erd
\end_inset 

 [Notice the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 

\backslash 

\family default 

\begin_inset Quotes erd
\end_inset 

 at the end of the line, indicating that we'll continue the entry on a new
 line.] The name 
\family typewriter 
draft
\family default 
 is what you pass to many printing commands using the 
\family typewriter 
-P
\family default 
 option.
 [The 
\family typewriter 
lpr
\family default 
 program is such a command.]
\layout Standard


\size normal 
It's traditional to name your main PostScript® printer 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
ps
\family default 

\begin_inset Quotes erd
\end_inset 

 and to call your text printer 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
lp
\family default 

\begin_inset Quotes erd
\end_inset 

.
\layout Subsection

The Printer Device
\layout Standard


\size normal 
The next part of our sample 
\family typewriter 
printcap
\family default 
 entries identifies the device to print to.
 In all of the example entries, there is a line:
\layout LyX-Code


\size normal 
        :lp=/dev/lp1:
\backslash 

\layout Standard


\size normal 
[Again, notice the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 

\backslash 

\family default 

\begin_inset Quotes erd
\end_inset 

 at the end of the line, as well as the beginning 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
:
\family default 

\begin_inset Quotes eld
\end_inset 

 after the space we used to indent the text proper.]
\layout Standard


\size normal 
The tag 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
lp=
\family default 

\begin_inset Quotes erd
\end_inset 

 takes the name of the printing device.
 In this case, it is 
\family typewriter 
/dev/lp1
\family default 
, the parallel port.
 There are printers that connect to the serial port.
 If you have one, you'd use 
\family typewriter 
/dev/ttyS0
\family default 
 for the first serial port, 
\family typewriter 
/dev/ttyS1
\family default 
 for the second, and so on.
 You'll also want to add other commands the the 
\family typewriter 
printcap
\family default 
 entry, such as the printer's baud rate.
 See the 
\family typewriter 
printcap
\family default 
 man page for more information.
\layout Standard


\size normal 
Most printers, however, use the parallel port.
 In addition, the printer port on 
\emph on 
most
\emph default 
 PC-compatible computers will be 
\family typewriter 
/dev/lp1
\family default 
.
 If you want to know why, look in this footnote.
\begin_float footnote 
\layout Standard

Why is 
\family typewriter 
/dev/lp1
\family default 
 and 
\emph on 
not 
\family typewriter 
/dev/lp0
\family default 
\emph default 
 the first printer port? It turns out that the I/O address of each parallel
 port is hard-coded into the Linux kernel.
 Address 
\family typewriter 
0x3BC
\family default 
 is 
\family typewriter 
/dev/lp0
\family default 
; address 
\family typewriter 
0x378
\family default 
 is 
\family typewriter 
/dev/lp1
\family default 
; and address 
\family typewriter 
0x278
\family default 
 is 
\family typewriter 
/dev/lp2
\family default 
.
 Since most PC-compatible computers assign the first parallel port to the
 I/O address 
\family typewriter 
0x378
\family default 
 by default, 
\family typewriter 
/dev/lp1
\family default 
 will be the parallel port on most systems.
\layout Standard

If you have more than one parallel port, the situation changes.
 Also, if you altered the I/O address of the parallel port for some reason,
 then one of the other 
\family typewriter 
lp
\family default 
 devices will point to your parallel port.
 Other systems may just simply be weird.
 In any case, you can go into DOS and check out which I/O address your parallel
 port has.
 Then you can use that address to figure out whether your parallel port
 is 
\family typewriter 
/dev/lp0
\family default 
, 
\family typewriter 
/dev/lp1
\family default 
, or 
\family typewriter 
/dev/lp2
\family default 
.
\end_float 

\size normal 
 Your system may be different, however, so check to be sure which device
 is the parallel port.
\layout Subsection

The Spool Directory and Log File
\layout Standard


\size normal 
In addition to naming your printer and telling Linux which device it is,
 you'll also need a directory for print spooling.
 The tag 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
sd=
\family default 

\begin_inset Quotes erd
\end_inset 

 identifies the spool directory for the printer.
 It's also a good idea to have a log file for errors.
 The tag 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
lf=
\family default 

\begin_inset Quotes erd
\end_inset 

 points to that.
\layout Standard


\size normal 
Most systems put all of the print spools into the directory 
\family typewriter 
/var/spool/lpd
\family default 
; some use only 
\family typewriter 
/var/spool
\family default 
.
 In any case, each printcap entry traditionally has its own spool directory
 named after the printer.
 You'll need to log on a 
\begin_inset Quotes eld
\end_inset 

root
\begin_inset Quotes erd
\end_inset 

 and make these directories yourself.
 You'll also need to change to ownership on these directories, so that their
 group is the 
\family typewriter 
daemon
\family default 
 group.
 You can do this with the command, 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
chgrp daemon 
\family default 
\emph on 
dirname
\emph default 

\begin_inset Quotes erd
\end_inset 

, where 
\emph on 
dirname
\emph default 
 is the name of the spool directory.
\layout Standard


\size normal 
For example, look at the entry for the printer 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
ps
\family default 

\begin_inset Quotes erd
\end_inset 

 in the example.
 It contains the lines:
\layout LyX-Code


\size normal 
        :sd=/var/spool/lpd/ps:
\backslash 

\layout LyX-Code


\size normal 
        :lf=/var/spool/lpd/ps/errs:
\backslash 

\layout Standard


\size normal 
This indicates that the spool directory is 
\family typewriter 
/var/spool/lpd/ps
\family default 
 and that the log file is the file 
\family typewriter 
/var/spool/lpd/ps/errs
\family default 
.
 You should 
\begin_inset Quotes eld
\end_inset 

create
\begin_inset Quotes erd
\end_inset 

 this file using the command 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
touch errs
\family default 

\begin_inset Quotes erd
\end_inset 

 in the spool directory.
\layout Standard


\size normal 
Similarly, the entry for the printer 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
lp
\family default 

\begin_inset Quotes erd
\end_inset 

 contains:
\layout LyX-Code


\size normal 
        :sd=/var/spool/lpd/lp:
\backslash 

\layout LyX-Code


\size normal 
        :lf=/var/spool/lpd/lp/errs:
\backslash 

\layout Standard


\size normal 
Again, the spool directory is 
\family typewriter 
/var/spool/lpd/lp
\family default 
 and the log file is 
\family typewriter 
/var/spool/lpd/lp/errs
\family default 
.
 
\layout Subsection

The Filter File
\layout Standard


\size normal 
Unlike 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
lp
\family default 

\begin_inset Quotes erd
\end_inset 

, which simply passes text to the printer unformatted, the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
draft
\family default 

\begin_inset Quotes erd
\end_inset 

 and 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
ps
\family default 

\begin_inset Quotes erd
\end_inset 

 printers need a filter [that's why they have an additional tag in them].
 The 
\family typewriter 
printcap
\family default 
 tag for the filter program is 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
if=
\family default 

\begin_inset Quotes erd
\end_inset 

 [stands for 
\family typewriter 
i
\family default 
nput 
\family typewriter 
f
\family default 
ilter, meaning input to the spool].
\layout Standard


\size normal 
There are actually several tags for filter programs, allowing you to specify
 a different filter for different purposes.
 You can also select different filters via options to 
\family typewriter 
lpr
\family default 
, but let's not get into that here.
\layout Standard


\size normal 
Let's look at the entry for the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
ps
\family default 

\begin_inset Quotes erd
\end_inset 

 printer:
\layout LyX-Code


\size normal 
        :if=/var/spool/lpd/ps/ps.filter:
\backslash 

\layout Standard


\size normal 
The file 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
ps.filter
\family default 

\begin_inset Quotes erd
\end_inset 

 is actually a shell script that resides in the spool directory for the
 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
ps
\family default 

\begin_inset Quotes erd
\end_inset 

 printer.
 You could also specify the path and filename of a program; however, calling
 a program via a shell script allows you to specify command line options.
\layout Standard


\size normal 
All filters, whether an actual program or a shell script, should take their
 input from 
\family typewriter 
stdin
\family default 
 [the standard input stream] and send their output to 
\family typewriter 
stdout
\family default 
 [the standard output stream].
\layout Subsection

Additional Tags
\layout Standard


\size normal 
There are three additional things you should put in your 
\family typewriter 
printcap
\family default 
 entries.
 You can see them at the end of all three examples.
 They are:
\layout LyX-Code


\size normal 
        :mx#0:
\backslash 

\layout LyX-Code


\size normal 
        :sh:
\backslash 

\layout LyX-Code


\size normal 
        :sf:
\layout Standard


\size normal 
The 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
mx#0
\family default 

\begin_inset Quotes erd
\end_inset 

 means 
\begin_inset Quotes eld
\end_inset 

don't limit the size of the file we can print.
\begin_inset Quotes erd
\end_inset 

 The 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
sf
\family default 

\begin_inset Quotes erd
\end_inset 

 prevents a form-feed from being sent after the document ends.
 Lastly, the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
sh
\family default 

\begin_inset Quotes erd
\end_inset 

 prevents a header page from being sent at the beginning of each job.
 You'll probably always want to add these to your 
\family typewriter 
printcap
\family default 
 entries.
\layout Section

Creating a Print Filter
\layout Subsection

Printing PostScript® Files Using Ghostscript
\layout Standard


\size normal 
The easiest way to make your printer understand PostScript® is by using
 the Ghostscript program as a print filter.
 There are probably other ways, but this is the most common.
 If, for some reason, you don't want to or can't use Ghostscript, you're
 on your own [see the 
\family typewriter 
Printing-HOWTO
\family default 
 for a start].
\layout Standard


\size normal 
The first thing you should do is install Ghostscript.
 There should be a version in your Linux distribution at the very least.
 If not, you can certainly get one from the Linux FTP archive 
\family typewriter 
sunsite.unc.edu
\family default 
.
 Once you've installed it, execute it using 
\layout LyX-Code


\size normal 
gs -h | more
\layout Standard


\size normal 
from the command line.
 This lists the available output devices and formats.
 Here's a list to help decipher what Ghostscript device name corresponds
 to which printer:
\layout Itemize


\size normal 
Apple Printers:
\begin_deeper 
\layout Description


\size normal 
appledmp Apple dot matrix printers
\layout Description


\size normal 
iwhi Imagewriter in high-res mode
\layout Description


\size normal 
iwlo Imagewriter in low-res mode
\layout Description


\size normal 
iwlq Imagewriter LQ in 
\size default 

\begin_inset Formula \( 320\times 216 \)
\end_inset 


\size normal 
 dpi mode
\end_deeper 
\layout Itemize


\size normal 
Canon Printers:
\begin_deeper 
\layout Description


\size normal 
bj10e BubbleJet BJ-10e
\layout Description


\size normal 
bj200 BubbleJet BJ-200
\layout Description


\size normal 
bjc600 Color BubbleJet BJC-600, BJC-4000 and BJC-70.
\begin_float footnote 
\end_deeper 
\layout Standard

Also good for Apple printers like the StyleWriter 2x00
\end_float 
\begin_deeper 
\layout Description


\size normal 
bjc800 Color BubbleJet BJC-800
\layout Description


\size normal 
lbp8 LBP-II8 laser printer
\layout Description


\size normal 
lips3 LIPS-III laser printer in CaPSL mode
\end_deeper 
\layout Itemize


\size normal 
DEC Printers:
\begin_deeper 
\layout Description


\size normal 
la50 LA50
\layout Description


\size normal 
la70 LA70
\layout Description


\size normal 
la70t LA70 with low-res text enhancement
\layout Description


\size normal 
la75 LA75
\layout Description


\size normal 
la75plus LA75 Plus
\layout Description


\size normal 
ln03 LN03
\layout Description


\size normal 
lj250 LJ250 color printer
\layout Description


\size normal 
declj250 Alternate LJ250 driver0
\end_deeper 
\layout Itemize


\size normal 
Epson Printers:
\begin_deeper 
\layout Description


\size normal 
ap3250 ActionPrinter AP3250 [and any printer using the ESC/P2 printer language]
\layout Description


\size normal 
escp2 All Epson printers using the ESC/P2 command set [thsi driver is possibly
 defunct.
 Use 
\series bold 
ap3250
\series medium 
 instead.]
\layout Description


\size normal 
epson All 9- and 24-pin dot matrix printers [and compatibles]
\layout Description


\size normal 
eps9mid All 9-pin dot matrix printers [and compatibles] in intermediate
 resolution
\layout Description


\size normal 
eps9hi All 9-pin dot matrix printers [and compatibles] in triple resolution
\layout Description


\size normal 
epsonc LQ-2550 color printer [also works for the Fujitsu 1200, 2400, and
 3400 printers
\size default 
]
\layout Description


\size normal 
st800 Stylus 800 inkjet
\layout Description


\size normal 
stcolor the Stylus Color, Stylus Color Pro, Stylus Color II and IIs color
 inkjet printers
\end_deeper 
\layout Itemize


\size normal 
Hewlet Packard [HP] Printers:
\begin_deeper 
\layout Description


\size normal 
lp2563 2563B line printer
\layout Description


\size normal 
cdeskjet DeskJet 500C with 1 bpp color
\layout Description


\size normal 
cdjcolor DeskJet 500C [and 540C] with 24 bpp color and Floyd-Steinberg dithering
\layout Description


\size normal 
cdjmono DeskJet 500C [and 510C, 520C, 540C], monochrome only.
\layout Description


\size normal 
cdj500 same as 
\series bold 
cdjcolor
\layout Description


\size normal 
cdj550 DeskJet 550C and 560C
\layout Description


\size normal 
deskjet DeskJet and DeskJet Plus
\layout Description


\size normal 
djet500 DeskJet 500
\layout Description


\size normal 
djet500c Alternate DeskJet 500C driver [does not work with the 550C or the
 560C]
\layout Description


\size normal 
dnj650c DesignJet 650C
\layout Description


\size normal 
ljet2p LaserJet IId, LaserJet IIp, and LaserJet III* with TIFF compression
\layout Description


\size normal 
ljet3 LaserJet III* with Delta Row compression
\layout Description


\size normal 
ljet3d LaserJet IIID with duplex capability
\layout Description


\size normal 
ljet4 LaserJet 4 [default res=600dpi]
\layout Description


\size normal 
lj4dith LaserJet 4 with Floyd-Steinberg dithering
\layout Description


\size normal 
ljetplus LaserJet Plus
\layout Description


\size normal 
pj PaintJet XL
\layout Description


\size normal 
pjetxl Alternate PaintJet XL driver
\layout Description


\size normal 
pjxl PaintJet XL color
\layout Description


\size normal 
pjxl300 PaintJet XL300 color [and 1200C]
\layout Description


\size normal 
paintjet Alternate PaintJet color driver
\end_deeper 
\layout Itemize


\size normal 
Tektronix Printers:
\begin_deeper 
\layout Description


\size normal 
t4693d2 4693d color printer with 2 bits/RGB component [=6 bpp]
\layout Description


\size normal 
t4693d4 4693d color printer with 4 bits/RGB component [=12 bpp]
\layout Description


\size normal 
t4693d8 4693d color printer with 8 bits/RGB component [=24 bpp]
\layout Description


\size normal 
tek4696 4695 and 4696 inkjet plotters
\end_deeper 
\layout Itemize


\size normal 
Miscellaneous Printers:
\begin_deeper 
\layout Description


\size normal 
cp50 Mitsubishi CP50 color printer
\layout Description


\size normal 
ibmpro IBM 9-pin Proprinter
\layout Description


\size normal 
imagen Imagen ImPress printers
\layout Description


\size normal 
jetp3852 IBM Jetprinter ink-jet color printer (Model #3852)
\layout Description


\size normal 
m8510 C.Itoh M8510 printer
\layout Description


\size normal 
necp6 NEC P6/P6+/P60 printers at 360 dpi 
\layout Description


\size normal 
nwp533 Sony Microsystems NWP533 laser printer [Sony only]
\layout Description


\size normal 
oce9050 OCE 9050 printer
\layout Description


\size normal 
oki182 Okidata MicroLine 182
\layout Description


\size normal 
okiibm Okidata MicroLine IBM-compatible printers
\layout Description


\size normal 
r4081 Ricoh 4081 laser printer
\layout Description


\size normal 
sj48 StarJet 48 inkjet printer
\layout Description


\size normal 
sparc SPARCprinter
\layout Description


\size normal 
xes Xerox XES printers (2700, 3700, 4045, etc.)
\end_deeper 
\layout Standard


\size normal 
If the Ghostscript package that came with your distribution doesn't include
 your printer, you can always hunt down the source code and compile it yourself.
 If your printer isn't 
\emph on 
directly
\emph default 
 supported by Ghostscript at all, try choosing the a printer that's compatible.
\layout Standard


\size normal 
Note that some printers require special command line arguments.
 For example, the 
\family typewriter 
stcolor
\family default 
 driver requires that the file 
\family typewriter 
stcolor.ps
\family default 
 be read before the input file.
 You should read the Ghostscript documentation for more details.
\layout Standard


\size normal 
Next, create the filter.
 We suggest giving it the name 
\begin_inset Quotes eld
\end_inset 


\emph on 
pname
\family typewriter 
\emph default 
.filter
\family default 

\begin_inset Quotes erd
\end_inset 

, where 
\begin_inset Quotes eld
\end_inset 


\emph on 
pname
\emph default 

\begin_inset Quotes erd
\end_inset 

 is the name you gave the printer in its 
\family typewriter 
printcap
\family default 
 entry.
 We also suggest putting the filter script in the printer's spool directory.
 The filter script should contain the following:
\layout LyX-Code


\size normal 
#!/bin/sh
\layout LyX-Code


\size normal 
/usr/bin/gs -q -dSAFER  -dNOPAUSE -sDEVICE=
\family roman 
\emph on 
devname
\family default 
\emph default 
 
\backslash 

\layout LyX-Code


\size normal 
       [-r
\family roman 
\emph on 
ResNum
\family default 
\emph default 
 
\family roman 
\emph on 
ExtraOptions
\family default 
\emph default 
] -sOutputFile=- [
\family roman 
\emph on 
precmd
\family default 
\emph default 
.ps] -
\layout Standard


\size normal 
where 
\emph on 
devname
\emph default 
 is the name of the Ghostscript device; 
\emph on 
ResNum 
\emph default 
is the resolution you want to use; 
\emph on 
ExtraOptions
\emph default 
 indicates any additional options to pass to Ghostscript; and 
\begin_inset Quotes eld
\end_inset 


\emph on 
precmd
\emph default 
.
\family typewriter 
ps
\family default 

\begin_inset Quotes erd
\end_inset 

 is the name of a file to be read before the input [like the file 
\family typewriter 
stcolor.ps
\family default 
 for the 
\family typewriter 
stcolor
\family default 
 driver].
 The 
\begin_inset Quotes eld
\end_inset 


\family typewriter 

\backslash 

\family default 

\begin_inset Quotes erd
\end_inset 

 at the end of the first line is how you break up a command into multiple
 lines in a shell script.
\layout Standard


\size normal 
Note that the above example assumes that 
\family typewriter 
gs
\family default 
 is in the directory 
\family typewriter 
/usr/bin
\family default 
.
 Your system may be different.
\layout Standard


\size normal 
Different Ghostscript drivers treat the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
-r
\family default 

\begin_inset Quotes erd
\end_inset 

 argument differently.
 Some are looking for a single number, for example, 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
-r600
\family default 

\begin_inset Quotes erd
\end_inset 

.
 Others want separate DPI resolutions for the x and y directions, e.g.
 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
-r360x360
\family default 

\begin_inset Quotes erd
\end_inset 

.
 The printer driver may take other options, as well.
 You'll need to consult the Ghostscript documentation for more information.
\layout Standard


\size normal 
After you've created the printer filter, use 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
chmod a+x
\family default 

\begin_inset Quotes erd
\end_inset 

 on the script file to make it executable.
 [You need to be logged in as root to do this].
\layout Standard


\size normal 
Here's an example of a Ghostscript print filter, used by 
\noun on 
John Weiss
\noun default 
 for his Epson Stylus Color IIs:
\layout LyX-Code


\size normal 
#!/bin/sh
\layout LyX-Code


\size normal 
/usr/bin/gs -q -dSAFER -sDEVICE=stcolor 
\backslash 

\layout LyX-Code


\size normal 
             -r360x360 -sDithering=fsmono 
\backslash 

\layout LyX-Code


\size normal 
             -dNOPAUSE -dnoWeave 
\backslash 

\layout LyX-Code


\size normal 
             -sOutputFile=- stcolor.ps -
\layout Standard


\size normal 
This filter generates 360dpi monochrome output on an Epson Stylus Color
 IIs.
\begin_float footnote 
\layout Standard

Note from 
\noun on 
John Weiss
\noun default 
: This is my 
\family typewriter 
ps
\family default 
 printer.
 I also use a similar filter for my 
\family typewriter 
draft
\family default 
 printer, which has the option 
\family typewriter 
-r180x180
\family default 
 instead of what you see above.
 And for my 
\family typewriter 
color
\family default 
 printer, I use a different value for the 
\family typewriter 
-sDithering
\family default 
 option.
\end_float 
\layout Subsection

If You Already Have a PostScript® Printer\SpecialChar \ldots{}

\layout Standard


\size normal 
Many modern laser printers now come with PostScript® built-in.
 On some laser printers, PostScript® is actually the native printer language.
 If you have such a printer, you won't need a filter and can pass a PostScript®
 file directly to the printer.
 In contrast, if you want to print a text file, you'll need to format it
 in PostScript® somehow.
\layout Standard


\size normal 
We know of three programs that translate plain ASCII text to PostScript®:
 
\family typewriter 
nenscript
\family default 
, 
\family typewriter 
a2ps
\family default 
, and 
\family typewriter 
mpage
\family default 
.
 
\family typewriter 
mpage
\family default 
 can also print multiple pages on a single sheet of paper.
 You should create a filter script using one of these programs for the 
\family typewriter 
lp
\family default 
 printer.
 [The 
\family typewriter 
lp
\family default 
 printer is traditionally the name of the printer that prints ASCII text
 files.] Read the 
\family typewriter 
Printing-HOWTO
\family default 
 for more information.
\layout Section

The Print Spool Daemon, 
\family typewriter 
lpd
\layout Standard


\size normal 
The program that actually does the spooling and printing of files is 
\family typewriter 
lpd
\family default 
.
 It's also the program that reads the 
\family typewriter 
/etc/printcap
\family default 
 file.
 Somewhere in your bootup scripts,
\begin_float footnote 
\layout Standard

Some machines keep their bootup scripts in the 
\family typewriter 
/etc/rc.d
\family default 
 directory.
 Others use 
\family typewriter 
/etc/init.d
\family default 
.
 You'll need to figure this out on your own.
\end_float 

\size normal 
 you'll need to execute 
\family typewriter 
lpd
\family default 
 to begin print spooling every time you boot your machine.
 You can also execute 
\family typewriter 
lpd
\family default 
 as a background job from the command line if you're logged on as root.
 
\layout Standard


\size normal 
Once 
\family typewriter 
lpd
\family default 
 is running on your system, you can control its behavior and that of the
 print spool using the 
\family typewriter 
lpc
\family default 
 command.
 Again, you'll need to log in as root to do this.
\layout Section

Putting It All Together
\layout Standard


\size normal 
We'll conclude this mini-HOWTO with the steps you need to follow to get
 a minimal setup.
 When finished, you'll have two printers, one named 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
lp
\family default 

\begin_inset Quotes erd
\end_inset 

 for printing ASCII text, and a second called 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
ps
\family default 

\begin_inset Quotes erd
\end_inset 

 for printing PostScript® files.
 The filter file for the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
ps
\family default 

\begin_inset Quotes erd
\end_inset 

 printer [included below] works for any Epson-compatible printer [which
 includes almost all dot-matrix printers these days], using the default
 printing resolution.
\layout Enumerate


\size normal 
Log in as 
\begin_inset Quotes eld
\end_inset 

root
\begin_inset Quotes erd
\end_inset 

 or use 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
su root
\family default 

\begin_inset Quotes erd
\end_inset 

.
 
\layout Enumerate


\size normal 
Execute the following commands:
\begin_deeper 
\layout Enumerate


\family typewriter 
\size normal 
cd /var/spool
\layout Enumerate


\family typewriter 
\size normal 
mkdir lpd
\family default 
 
\begin_deeper 
\layout Standard


\size normal 
[if it doesn't already exist]
\end_deeper 
\layout Enumerate


\family typewriter 
\size normal 
chgrp lp lpd
\begin_deeper 
\layout Standard


\size normal 
[You may need to use 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
daemon
\family default 

\begin_inset Quotes erd
\end_inset 

 instead of 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
lp
\family default 

\begin_inset Quotes erd
\end_inset 

]
\end_deeper 
\layout Enumerate


\family typewriter 
\size normal 
cd lpd
\layout Enumerate


\family typewriter 
\size normal 
mkdir lp ps
\begin_deeper 
\layout Standard


\size normal 
[only do this if these directories don't exist yet]
\end_deeper 
\layout Enumerate


\family typewriter 
\size normal 
touch lp/errs ps/errs
\layout Enumerate


\family typewriter 
\size normal 
chgrp daemon lp ps lp/errs ps/errs
\end_deeper 
\layout Enumerate


\size normal 
Now edit the file 
\family typewriter 
/etc/printcap
\begin_deeper 
\layout Enumerate


\size normal 
If this file exists, either
\size default 
\SpecialChar \ldots{}

\begin_deeper 
\layout Enumerate

\SpecialChar \ldots{}

\size normal 
rename the old version to something like 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
/etc/printcap.orig
\family default 

\begin_inset Quotes erd
\end_inset 


\layout Enumerate

\SpecialChar \ldots{}

\size normal 
or, comment out everything in the file by putting a 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
#
\family default 

\begin_inset Quotes erd
\end_inset 

 character at the beginning of each line.
\end_deeper 
\layout Enumerate


\size normal 
Put the following into 
\family typewriter 
/etc/printcap
\family default 
:
\begin_deeper 
\layout LyX-Code


\size normal 
lp|Text printer:
\backslash 

\layout LyX-Code


\size normal 
        :lp=/dev/lp1:
\backslash 

\layout LyX-Code


\size normal 
        :sd=/var/spool/lpd/lp:
\backslash 

\layout LyX-Code


\size normal 
        :lf=/var/spool/lpd/lp/errs:
\backslash 

\layout LyX-Code


\size normal 
        :mx#0:sh:sf:
\newline 

\layout LyX-Code


\size normal 
ps|Postscript printer:
\backslash 

\layout LyX-Code


\size normal 
        :lp=/dev/lp1:
\backslash 

\layout LyX-Code


\size normal 
        :sd=/var/spool/lpd/ps:
\backslash 

\layout LyX-Code


\size normal 
        :lf=/var/spool/lpd/ps/errs:
\backslash 

\layout LyX-Code


\size normal 
        :if=/var/spool/lpd/ps/ps.filter:
\backslash 

\layout LyX-Code


\size normal 
        :mx#0:sh:sf:
\end_deeper 
\layout Enumerate


\size normal 
MAKE SURE THAT:
\begin_deeper 
\layout Enumerate


\size normal 
the blank line between the two entries has nothing in it, not even whitespace
 characters.
\layout Enumerate


\size normal 
nothing follows the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 

\backslash 

\family default 

\begin_inset Quotes erd
\end_inset 

 character at the end of each line.
\end_deeper 
\end_deeper 
\layout Enumerate


\size normal 
Next, create the filter script for the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
ps
\family default 

\begin_inset Quotes erd
\end_inset 

 printer.
\begin_deeper 
\layout Enumerate


\size normal 
Put the following into the file 
\family typewriter 
/var/spool/lpd/ps/ps.filter
\family default 
:
\begin_deeper 
\layout LyX-Code


\size normal 
#!/bin/sh
\layout LyX-Code


\size normal 
/usr/bin/gs -q -dSAFER -dNOPAUSE 
\backslash 

\layout LyX-Code


\size normal 
            -sDEVICE=epson -sOutputFile=- -
\layout Standard


\size normal 
[If you don't have an Epson-compatible dot-matrix printer, replace the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
epson
\family default 

\begin_inset Quotes erd
\end_inset 

 with the appropriate Ghostscript device name.
 Also, if the program 
\family typewriter 
gs
\family default 
 isn't in 
\family typewriter 
/usr/bin
\family default 
, put in the correct path.]
\end_deeper 
\layout Enumerate


\size normal 
Execute these commands:
\begin_deeper 
\layout Enumerate


\family typewriter 
\size normal 
chmod a+x /var/spool/lpd/ps/ps.filter
\layout Enumerate


\family typewriter 
\size normal 
chgrp daemon /var/spool/lpd/ps/ps.filter
\end_deeper 
\end_deeper 
\layout Enumerate


\size normal 
Lastly, start up the printer daemon, 
\family typewriter 
lpd
\family default 
:
\begin_deeper 
\layout Enumerate


\size normal 
If it's not running already, use 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
lpd &
\family default 

\begin_inset Quotes erd
\end_inset 

 to start it.
\layout Enumerate


\size normal 
If it is running already, execute 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
lpc
\family default 

\begin_inset Quotes erd
\end_inset 

.
 Then, from within 
\family typewriter 
lpc
\family default 
, do a 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
restart all
\family default 

\begin_inset Quotes erd
\end_inset 

 and a 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
up all
\family default 

\begin_inset Quotes erd
\end_inset 

 to activate the new print spools.
 [The command 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
quit
\family default 

\begin_inset Quotes erd
\end_inset 

 leaves 
\family typewriter 
lpc
\family default 
].
\layout Enumerate


\size normal 
Be sure to add the appropriate command to your bootup scripts so that 
\family typewriter 
lpd
\family default 
 is executed every time you boot your system.
\end_deeper 
\layout Enumerate


\size normal 
You may now log out as root and test your new printers to make sure they
 work.
 Issue the command 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
lpr -Plp
\family default 

\begin_inset Quotes erd
\end_inset 

 followed by the name of a short ASCII text file to verify that the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
lp
\family default 

\begin_inset Quotes erd
\end_inset 

 printer works.
 Then use 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
lpr -Pps
\family default 

\begin_inset Quotes erd
\end_inset 

 followed by the name of a short PostScript® file to test the 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
ps
\family default 

\begin_inset Quotes erd
\end_inset 

 printer.
 
\layout Standard


\size normal 
A word of caution: when testing 
\begin_inset Quotes eld
\end_inset 


\family typewriter 
ps
\family default 

\begin_inset Quotes erd
\end_inset 

, if anything goes wrong, the system may end up passing garbage to your
 printer.
 If that happens, shut off your printer and use the 
\family typewriter 
lpq
\family default 
 and 
\family typewriter 
lprm
\family default 
 commands to kill the print job.
 After you kill the print job, you can turn your printer back on.
\layout Standard


\size normal 
If either of these printers doesn't work, check everything again, consult
 the 
\family typewriter 
man
\family default 
 pages for 
\family typewriter 
printcap
\family default 
 and 
\family typewriter 
lpd
\family default 
, and read the 
\family typewriter 
Printing-HOWTO
\family default 
 for help.
\layout Standard


\size normal 
If everything does work, congratulations!
\layout Chapter

The external material inset
\layout Section

Background
\layout Standard

One often requested feature from LyX users is to be able to interface LyX
 with XFig, Dia, or other similar applications that specialize in producing
 a certain kind of diagram, figure, schematic or whatever material might
 be relevant to include in your document.
 Previously, it was only possible to include boring, static, fixed images
 in LyX documents with the figure inset, but there are several limitations
 attached to this approach:
\layout Itemize

If you want to change the figure, you have to invoke an external program
 by hand
\layout Itemize

LyX does not notice that the referenced files change, so the on-screen display
 can fast become obsolete, and this is aggravated by the lack of a means
 of updating the display
\layout Itemize

The figure inset only supports PostScript material
\layout Itemize

The figure inset does not provide any mechanisms for coping with different
 exported formats such as DocBook, HTML or rawAscii
\layout Standard

The external material inset attempts to solve all of these problems
\begin_float footnote 
\layout Standard

Even if the figure inset can't solve all problems, it is still valuable
 because it does provide in-line preview of the figure, and supports advanced
 geometric transformations with a comfortable user interface.
\end_float 
.
 It does this by offering a general method to interface LyX to external
 applications.
 Instead of introducing a long list of different insets taylored for each
 specific application, we chose to sacrify the in-line displaying of the
 included material in order to provide a general construct to cover a wide
 range of applications.
 The result is the external inset.
 An external inset presents itself in the document simply as a button, but
 don't let this fool you.
 When you click on it, a dialog will appear that allows you to chose exactly
 what material to include, and in the following you will learn that this
 is indeed a powerful mechanism that can solve all of the above problems,
 and more.
\layout Section

How does it work?
\layout Standard

The external inset 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, Dia diagrams,
 various raster format images, gnuplot, and more.
 You can check the actual list by using the 
\family sans 
Insert\SpecialChar \menuseparator
Insert external material 
\family default 
command.
 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.
\layout Standard

Another basic idea of the external inset 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 XFig.
 The XFig application itself works on an original file with the 
\family typewriter 
.fig
\family default 
 extension.
 Within XFig, you create and change your figure, and when you are done,
 you save the 
\family typewriter 
fig
\family default 
-file.
 When you want to include the figure in your document, you invoke 
\family typewriter 
transfig
\family default 
 in order to create a PostScript file that can readily be included in your
 LaTeX file.
 In this case, the 
\family typewriter 
.fig
\family default 
 file is the original file, and the PostScript file is the produced file.
\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 an Ascii resulting file, it is not exactly
 an award-winning 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 inset allows you to do this, because it is parameterized
 on the different export formats that LyX supports.
\layout Standard

Besides supporting the production of different products according to the
 exported format, the external inset 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 inset 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.
\layout Standard

So, all in all, LyX has information about a number of different programs
 to use behind the scenes in order to realize all of this machinery.
 This information, in fact, is exactly what is contained in the templates.
 To each template, there is associated a list of command lines that are
 used to invoke applications, convert the original file to the produced
 file, and more.
 This mechanism allows the advanced user to extend the capabilities of LyX
 without fiddling with the source code.
 It requires some footwork to define all the different commands and flags,
 but luckily, the LyX team did all the hard work and specified these for
 you.
\layout Standard

But before the trees grow into the skies, we have to admit that we did take
 one tiny short-cut.
 Since the external inset can produce many different kinds of produced files
 to go with each exported format, one could also expect that it would be
 possible to preview each product.
 But, the LyX team decides against this in order to keep the user interface
 simple.
 Instead of providing a button for each exported file format, we decided
 to introduce the concept of the primary file format and just have one button.
 When you press 
\family sans 
View result
\family default 
 in the external inset dialog, you will get a view of the produced file
 in the primary file format.
 And the primary file format is specified by your document class.
 For most document classes, the primary file format is LaTeX, but for the
 DocBook document classes, the primary file format is DocBook.
 So, when you view the produced file, keep in mind that it will only be
 a preview of what the main result will be.
 If you want to see how other exported formats turn out, you have to export
 them and preview them by hand.
\layout Section

The external material inset dialog
\layout Standard

You insert an external inset from the 
\family sans 
Insert
\family default 
 menu.
 When you do this, a button is inserted into your document, and the external
 material inset dialog is shown.
 This dialog allows you to describe exactly what material should be included,
 and also how it should be included.
 Furthermore, it provides access to the external applications to either
 view, edit or produce the material that is used in the resulting file.
\layout Standard

At the top of this dialog, there is a drop-down list where you can chose
 which template the inset should use.
 Just below the template drop-down, there's an text area with a short blurp
 about the chosen template that should help you use it.
 Most often, it will provide a short description of the template, and a
 few hints on how to parameterize the use of it.
 Further down, you'll find a filename input field along with a browse-button
 that allows you to chose which file should be included, with the standard
 file browser.
 Thus this field specifies the original file.
 Since the produced file is automatically generated when needed, there is
 no need to give access to it in the user interface.
\layout Standard

At the bottom of the dialog, you'll find a general input box called 
\family sans 
Parameters
\family default 
.
 This box is generally used to parameterize the specific template.
 The specific use should be covered in the help blurp associated with the
 template, but in general it typically allows you to define variations on
 how the produced file should be generated.
\layout Standard

At the right side of the dialog, you'll find three buttons: 
\family sans 
Edit file
\family default 
, 
\family sans 
View result
\family default 
, and 
\family sans 
Update result
\family default 
.
 These in turn allows you to edit your original file with the appropriate
 editing application, view the produced file as included in the primary
 format document, and finally force an update of the resulting material
 in the primary format.
 Normally, the 
\family sans 
Update result
\family default 
 button will be disabled, because most templates are configured to automatically
 update the produced file when needed.
 In those cases, there is no need to force the production of a new produced
 file.
 However, some templates are configured to not be automatically producing
 the residual product, because the cost of producing the produced file might
 be so large that it would be a pain to do it all the time.
 Those insets are known as 
\emph on 
manual
\emph default 
 external insets.
 In those cases, you can use the button to force the production of the produced
 file exactly when you need it, and thus control the amount of work that
 is done.
 In fact, it is 
\emph on 
your
\emph default 
 responsibility to do this to keep the produced files current at all times:
 before printing, before exporting, before viewing, etc.
 At some time in the future, it might be possible that LyX will help you
 with this task.
 It would be nice to use a 
\family sans 
Edit\SpecialChar \menuseparator
Update all external inset
\family default 
 command to update all external insets that use a manual template.
 But be prepared that it might take some time for the updating to implemented.
\layout Standard

At the bottom of the dialog, you find the normal 
\family sans 
OK
\family default 
 and 
\family sans 
Cancel
\family default 
 buttons.
 The only thing worth mentioning about these is that any changes in the
 template, filename or parameters are actually applied whenever you press
 
\family sans 
Edit file
\family default 
, 
\family sans 
View result
\family default 
 or 
\family sans 
Update result
\family default 
 buttons.
 This implies that after using one of those, you will only be able to undo
 changes that occured after the use of those buttons, by pressing 
\family sans 
Cancel
\family default 
.
 Fortunately, you can use the general undo feature in LyX to revert to a
 previous state.
\layout Section

Examples
\layout Standard

In this section, we should include some examples of use of the external
 material inset.
 Those examples could include:
\layout Itemize

External raster images
\layout Itemize

External XFig figures
\layout Itemize

Chess diagrams
\layout Itemize

Sound samples
\layout Itemize

The use of makefiles
\layout Itemize

Recursive external LyX templates
\layout Section

The external template configuration file
\layout Standard

It is relatively easy to add custom external template definitions to LyX.
 However, be aware this 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 which
 will follow later.
\layout Standard

Having said that, we encourage you to submit any interesting templates that
 you create.
 
\layout Standard

The external templates are defined in the 
\family typewriter 
lib/external_templates
\family default 
 file.
 You can place your own version in 
\family typewriter 
.lyx/external_templates
\family default 
.
 At some point in time, hopefully somebody will document the template contents,
 and the syntax used to define your templates.
\layout Section

The substitution mechanism
\layout Standard

When the external material inset 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.
\layout Standard

Also, whenever an external inset is to be displayed, the name will be produced
 by the substitution mechanism.
\layout Standard

The available macros are the following:
\layout Description

$$FName The filename of the file specified in the external inset dialog.
\layout Description

$$Basename The filename without the extension.
\layout Description

$$Tempname A name and full path to a temporary file which will be automatically
 deleted whenever the containing document is closed, or the external inset
 deleted.
\layout Description

$$Contents(
\begin_inset Quotes eld
\end_inset 

filename.ext
\begin_inset Quotes erd
\end_inset 

) This macro will expand to the contents of the file with the name 
\family typewriter 
filename.ext
\family default 
.
\layout Description

$$Sysdir 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.
\layout Standard

In addition to these, the facility will expand general environment variables
 with a syntax like 
\family typewriter 
${PATH}
\family default 
.
\layout Section

Security discussion
\layout Standard

The external material inset interfaces with a lot of external programs and
 does so automatically, so we have to consider the security implications
 of this.
 In particular, since you have the option of including your own filenames
 and/or parameter strings and those are expanded into a command, it seems
 that it would be possible to create a malicious document which executes
 arbitrary commands when a user views or prints the document.
 This is something we definately want to avoid.
\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 
\family typewriter 
execvp
\family default 
-system call rather than the 
\family typewriter 
system
\family default 
 system-call, so it's not possible to execute arbitrary commands from the
 filename or parameter section via the shell.
\layout Standard

This also implies that you are restricted in what command strings you can
 use in the external material templates.
 In particular, pipes and redirection are not readily available.
 This has to be so if LyX should remain safe.
 If you want to use some of the shell features, you should write a safe
 script to do this in a controlled manner, and then invoke the script from
 the command string.
 In the 
\family typewriter 
lib/scripts
\family default 
 directory of the LyX installation, you can find a safe wrapper script 
\family typewriter 
general_command_wrapper.py
\family default 
 that supports redirection of input and output.
 That can serve as an example for how to write safe template scripts.
 For a more advanced example that uses 
\family typewriter 
fork
\family default 
 and friends, take a look at the 
\family typewriter 
pic2ascii.py
\family default 
 converter script.
\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 
\family typewriter 
execvp
\family default 
 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.
\layout Standard

The external material inset provides a lot of power, and you have to be
 careful not to introduce security hazards with this power.
 A subtile error in a single line in an innocent looking script can open
 the door to huge security problems.
 So if you do not fully understand the issues, we recommend that you consult
 a knowledgable security professional or the LyX development team if you
 have any questions about whether a given template is safe or not.
 And do this before you use it in an uncontrolled environment.
\layout Section

The future of the external inset
\layout Standard

The current implementation of the external inset is a stable and powerful
 construct that provides raw access to the inner parts of LyX, but as with
 any feature in LyX, it should always be considered work-in-progress.
 When and if somebody has time to continue work on it, here are some general
 directions that could be approached:
\layout Itemize

Support in-line previewing in various formats, rather than the button text
 we are restricted to now.
\layout Itemize

Support in-line editing using OpenParts or any other relevant protocol.
\layout Itemize

Extend the dynamic information to have optional parameter fields for the
 conversion commands in all export formats, and to have optional parameter
 fields for what is produced into all the different exported formats.
 At the moment, we are restricted to only one parameter string that is multiplex
ed across these many applications.
 Also, a change like this would allow us to get rid of the strange primary
 target format restrictions.
\layout Itemize

Extend the framework to provide more intelligent customization options in
 addition to the rather simplistic raw parameter strings.
 With a suitable scripting language, it would be possible to implement user
 friendly versions of many customizable insets that supports a wide range
 of formats, LaTeX packages, editors, etc.
\the_end
