-#LyX 1.6.0svn created this file. For more info see http://www.lyx.org/
-\lyxformat 339
+#LyX 2.0.0svn created this file. For more info see http://www.lyx.org/
+\lyxformat 348
\begin_document
\begin_header
\textclass scrbook
% redefine the \LyX macro for PDF bookmarks
\def\LyX{\texorpdfstring{%
L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\@}
- {LyX }}
+ {LyX}}
% used for multi-column text
\usepackage{multicol}
\usepackage{inputenc}
\end_preamble
\options fleqn,liststotoc,bibtotoc,idxtotoc,BCOR7.5mm,titlepage,tablecaptionabove
+\use_default_options false
\begin_modules
logicalmkup
\end_modules
\font_sf_scale 100
\font_tt_scale 100
-\graphics none
+\graphics default
\paperfontsize 12
\spacing single
\use_hyperref true
\pdf_pdfborder false
\pdf_colorlinks true
\pdf_backref false
-\pdf_pagebackref false
\pdf_pdfusetitle false
\pdf_quoted_options "linkcolor=black, citecolor=black, urlcolor=blue, filecolor=blue,pdfpagelayout=OneColumn, pdfnewwindow=true,pdfstartview=XYZ, plainpages=false, pdfpagelabels"
\papersize default
\end_inset
.
+ Include
+\begin_inset Quotes eld
+\end_inset
+
+[Customization]
+\begin_inset Quotes erd
+\end_inset
+
+ in the subject header, and please cc the current maintainer of this file,
+ Richard Heck <rgheck@comcast.net>.
\end_layout
\end_inset
-
+
+\begin_inset Newline newline
+\end_inset
+
+
+\begin_inset Newline newline
+\end_inset
+
+Version 2.0.x
\end_layout
\begin_layout Standard
\end_inset
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Note
+status open
+
+\begin_layout Plain Layout
+Please use change tracking when modifying this document.
+ This makes it easier for our translators to recognize things that have
+ been changed, and it helps the maintainer keep up-to-date with what's been
+ done.
+\end_layout
+
+\end_inset
+
+
\end_layout
\begin_layout Chapter
In it, we discuss issues like keyboard shortcuts, screen previewing options,
printer options, sending commands to LyX via the LyX Server, internationalizati
on, installing new LaTeX classes and LyX layouts, etc.
- We can't possibly hope to touch on everything you can change---our developers
- add new features faster than we can document them---but we will explain
- the most common customizations and hopefully point you in the right direction
+ We can't possibly hope to touch on everything you can change—our developers
+ add new features faster than we can document them—but we will explain the
+ most common customizations and hopefully point you in the right direction
for some of the more obscure ones.
\end_layout
\begin_layout Standard
\begin_inset Branch OutDated
-status collapsed
+status open
\begin_layout Standard
Information from previous versions of this document that now seems to be
\end_layout
\begin_layout Standard
-\begin_inset CommandInset label
-LatexCommand label
-name "chap:config"
-
-\end_inset
-
This chapter aims to help you to find your way through the LyX configuration
files.
Before continuing to read this chapter, you should find out where your
status collapsed
\begin_layout Plain Layout
-
-\bar under
-H
-\bar default
-elp\SpecialChar \menuseparator
+Help\SpecialChar \menuseparator
About
\begin_inset space ~
\end_inset
-Ly
-\bar under
-X
+LyX
\end_layout
\end_inset
\end_inset
and its sub-directories contain a number of files and that can be used
- to customise LyX's behaviour.
+ to customize LyX's behavior.
You can change many of these files from within LyX itself through the
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-
-\bar under
-T
-\bar default
-ools\SpecialChar \menuseparator
-
-\bar under
-P
-\bar default
-references
+Tools\SpecialChar \menuseparator
+Preferences
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-
-\bar under
-H
-\bar default
-elp\SpecialChar \menuseparator
-L
-\bar under
-a
-\bar default
-TeX
+Help\SpecialChar \menuseparator
+LaTeX
\begin_inset space ~
\end_inset
\end_inset
- that define the keybindings used in LyX (see section
-\begin_inset space ~
-\end_inset
-
-
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sec:bindings"
-
-\end_inset
-
-).
+ that define the keybindings used in LyX.
If there exists an internationalized version of the bind file named
\begin_inset Flex CharStyle:Code
status collapsed
\end_inset
, that will be used first.
- See Chapter
-\begin_inset space ~
-\end_inset
-
-
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "chap:i18n"
-
-\end_inset
-
-, and section
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sec:bindings"
-
-\end_inset
-
-for details.
\end_layout
\begin_layout Labeling
\end_inset
deserves special attention, as noted above.
- If there exists an internationalized version of the help-document with
-
+ The internationalized help docs are in subdirectories
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$LANG_
+doc/xx
\end_layout
\end_inset
- prepended to the name, that will be used first.
- See Chapter
+ where
+\begin_inset Quotes eld
+\end_inset
+
+xx
+\begin_inset Quotes erd
+\end_inset
+
+ is the ISO language code.
+ See chapter
\begin_inset space ~
\end_inset
that define the user interface to LyX.
That is, the files define which items appear in which menus and the items
appearing on the toolbar.
- See
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sec:ui"
-
-\end_inset
-
- for details.
\end_layout
\begin_layout Subsection
status collapsed
\begin_layout Plain Layout
-
-\bar under
-H
-\bar default
-elp\SpecialChar \menuseparator
+Help\SpecialChar \menuseparator
About
\begin_inset space ~
\end_inset
\end_inset
this contains tables describing how different character encodings can be
- mapped to unicode
+ mapped to Unicode
\end_layout
\begin_layout Labeling
status collapsed
\begin_layout Plain Layout
-
-\bar under
-H
-\bar default
-elp\SpecialChar \menuseparator
+Help\SpecialChar \menuseparator
About
\begin_inset space ~
\end_inset
status collapsed
\begin_layout Plain Layout
-
-\bar under
-T
-\bar default
-ools\SpecialChar \menuseparator
-
-\bar under
-P
-\bar default
-references
+Tools\SpecialChar \menuseparator
+Preferences
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-
-\bar under
-T
-\bar default
-ools\SpecialChar \menuseparator
-
-\bar under
-R
-\bar default
-econfigure
+Tools\SpecialChar \menuseparator
+Reconfigure
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-
-\bar under
-D
-\bar default
-ocument\SpecialChar \menuseparator
-
-\bar under
-S
-\bar default
-ettings
+Document\SpecialChar \menuseparator
+Settings
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-
-\bar under
-H
-\bar default
-elp
+Help
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-LYX_USERDIR_16x
+LYX_USERDIR_VER
\end_layout
\end_inset
\end_inset
- subirectory, however, since it contains a file written by the configuration
+ subdirectory, however, since it contains a file written by the configuration
script (also accessible through
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-
-\bar under
-T
-\bar default
-ools\SpecialChar \menuseparator
-
-\bar under
-R
-\bar default
-econfigure
+Tools\SpecialChar \menuseparator
+Reconfigure
\end_layout
\end_inset
The Preferences dialog
\end_layout
+\begin_layout Standard
+All options of the preferences dialog are described in the Appendix
+\emph on
+The Preferences Dialog
+\emph default
+ in the
+\emph on
+User's Guide
+\emph default
+.
+ For some options you might find here more details.
+\end_layout
+
\begin_layout Section
Using the dialog for the first time
\end_layout
\end_inset
- file will contain only changes that you have made to the default behaviour,
+ file will contain only changes that you have made to the default behavior,
some of which is hard-coded into LyX and some of which is contained in
the system file
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-
-\bar under
-T
-\bar default
-ools\SpecialChar \menuseparator
-
-\bar under
-P
-\bar default
-references
+Tools\SpecialChar \menuseparator
+Preferences
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-
-\bar under
-T
-\bar default
-ools\SpecialChar \menuseparator
-
-\bar under
-P
-\bar default
-references
+Tools\SpecialChar \menuseparator
+Preferences
\end_layout
\end_inset
Most things in the dialog have associated `tool tips': hover your mouse
pointer over something for more information.
Before we highlight a few of the more important commands below, however,
- a word of warning:
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
+ a word of warning: Applying some of your changes (e.
+\begin_inset space \thinspace{}
+\end_inset
-\begin_layout Plain Layout
-Apply
-\end_layout
+g.
+\begin_inset space \space{}
+\end_inset
+
+screen fonts) will have an instant effect.
+ Others (e.
+\begin_inset space \thinspace{}
+\end_inset
+g.
+\begin_inset space \space{}
\end_inset
-ing some of your changes (e.g., screen fonts) will have an instant effect.
- Others (e.g.
- changing the bind file) will not.
+changing the bind file) will not.
If nothing appears to have changed, just
\begin_inset Flex CharStyle:MenuItem
status collapsed
\end_layout
\begin_layout Section
-Look and Feel
-\end_layout
-
-\begin_layout Subsection
-Screen fonts
-\end_layout
-
-\begin_layout Standard
-The font used to display your documents on the LyX screen is very important,
- since you'll be reading all your documents with this font.
- Therefore it is important that the font be as readable and good-looking
- as possible.
- The LyX team tried to provide the best possible default font for you, but
- since systems can be so different, it's quite possible that the default
- fonts will be sub-optimal on your system.
- Fortunately, you can do something about this.
- Before we explain how, you should learn a bit more about fonts so that
- you are better prepared for choosing your fonts.
- There are trade-offs that are specific to your preferences and the capabilities
- of your system.
+File Handling
\end_layout
\begin_layout Standard
-Notice that this section only deals with the fonts on the
-\emph on
-screen
-\emph default
- inside the LyX window.
- The fonts that appear on the
-\emph on
-paper
-\emph default
+LyX has a powerful mechanism to convert to and from any file format using
+ external programs.
-\emph on
-output
-\emph default
- are independent from these fonts, and are determined by the document class.
- Read the
-\emph on
-User's Guide
-\emph default
- to learn how to change the font of the printed version of your document.
\end_layout
-\begin_layout Standard
-Basically, screen fonts come in two different kinds: scalable outline fonts
- and non-scalable bitmap fonts.
- This distinction seems a bit arbitrary, since non-scalable fonts are actually
- scalable in most modern font renderers.
- The difference lies in the
-\emph on
-quality
-\emph default
- of the scaling and the
-\emph on
-speed
-\emph default
- of display.
- The most important decision is thus whether you should use non-scalable
- bitmap fonts or scalable outline fonts.
-\end_layout
+\begin_layout Subsection
+\begin_inset CommandInset label
+LatexCommand label
+name "sub:Formats"
-\begin_layout Standard
-The scalable fonts are built from
-\emph on
-outlines
-\emph default
- of the single glyphs (i.e.
- characters) in the font.
- This means that each glyph is defined using mathematical curves that are
- well suited for scaling to any requested size.
- This mathematical definition is interpreted by the font renderer and turned
- into a small picture composed of pixels according to which size and glyph
- (or symbol) the programmer requests.
- This means that scalable fonts will look pretty good in most sizes.Since
- scalable fonts are defined in an abstract way, it can be hard to provide
- a good rendering at small sizes, where each pixel has to be very carefully
- computed to provide a good image.
- Technically it is possible to do this from the mathematical definition,
- but in order to keep the rendering reasonably fast, tradeoffs have to be
- made, and the result is that scalable fonts can be difficult to read at
- small sizes.
-\end_layout
+\end_inset
-\begin_layout Standard
-Bitmap fonts on the other hand, are defined by bitmap graphics from the
- start, so they will look good at all the sizes they are meant for.
- However, they don't scale well, because in order to scale a glyph, each
- pixel is enlarged into several pixels.
- It is the same effect that happens if you try to enlarge a picture in an
- image manipulation program.
- In order to relieve this effect, bitmap fonts are typically provided in
- several fixed sizes typically from around 8 pixels high up to 34 pixels
- or so high in steps according to what is believed to be useful.
- The advantage of bitmap fonts is that no complicated computations are necessary
- to display each glyph, so bitmap fonts are thus faster displayed than scalable
- fonts.
- The disadvantage is that sizes that don't exists as fixed versions have
- to be scaled by doubling pixels, and thus look bad.
+Formats
\end_layout
\begin_layout Standard
-The net result of all this is that bitmap fonts are generally best for the
- small sizes, where they are available, while scalable fonts are generally
- best for large sizes.
- The logical conclusion would thus be to use bitmap fonts for the small
- sizes, and scalable fonts for the large sizes.
- Unfortunately, this is not a good idea, since bitmap fonts and scalable
- fonts are not designed to be used together, so the overall look of such
- a scheme would be bad.
- The best you can do is thus to try both schemes and decide for yourself
- what suits you.
-\end_layout
+The first step is to define your file formats if they are not already defined.
+ To do so, open the
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
-\begin_layout 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.
+\begin_layout Plain Layout
+Tools\SpecialChar \menuseparator
+Preferences
\end_layout
-\begin_layout Subsubsection
-DPI setting and Font Zoom
-\end_layout
+\end_inset
-\begin_layout Standard
-LyX automatically tries to scale the fonts to look as close as the paper
- output size as possible, except for the so-called font zoom factor.
+ dialog.
+ Under
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
+
+\begin_layout Plain Layout
+File Handling\SpecialChar \menuseparator
+File formats
\end_layout
-\begin_layout Standard
-In order for this to work on all systems, it relies on the screen DPI (dots
- per inch) setting to be correct.
- The DPI setting for your system is autodetected by LyX using information
- provided by your system.
- You can check what LyX autodetects the DPI setting to, by running LyX as
-
-\begin_inset Flex CharStyle:Code
+\end_inset
+
+ press the
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-lyx -dbg 2
+New\SpecialChar \ldots{}
+
\end_layout
\end_inset
-.
+ button to define your new format.
+ The
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
+
+\begin_layout Plain Layout
+Format
\end_layout
-\begin_layout Standard
-On many systems, this will not be correct, so you should check that it is
- correct by hand.
- On X11 systems, you can run
-\begin_inset Quotes eld
\end_inset
-
-\begin_inset Flex CharStyle:Code
+ field contains the named used to identify the format in the GUI.
+ The
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-xdpyinfo | more
+Short Name
\end_layout
\end_inset
+ is used to identify the format internally.
+ You will also need to enter a file extension.
+ These are all required.
+ The optional
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
-\begin_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
+\begin_layout Plain Layout
+Shortcut
+\end_layout
-.
- 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
+ field is used to provide a keyboard shortcut on the menus.
+ (For example, pressing
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
-).
+\begin_layout Plain Layout
+Alt-V D
\end_layout
-\begin_layout Standard
-Then get the good old ruler out of the closet, and measure the width of
- the visible screen-image on your monitor.
- Convert this measurement to inches if you used a centimeter ruler by dividing
- by 2.54.
- Now you can determine the correct DPI setting for your screen by dividing
- the number of pixels in the width by the width of the screen-image on the
- monitor.
- If this number is more than, say, 5 DPI from the detected value, you should
- either fix your system setup, or at least tell LyX that the DPI is different
- than the detected value.
-\end_layout
+\end_inset
-\begin_layout Standard
-If you can't fix system setup (which of course is best since other programs
- than LyX will benefit from this as well), you can tell LyX the correct
- DPI using the
+ will
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Preferences
+View\SpecialChar \menuseparator
+DVI
\end_layout
\end_inset
- dialog.
-\end_layout
-
-\begin_layout Standard
-If the text is too small or too big for your taste, you should fiddle with
- the font zoom setting.
- This setting is used to scale the point size of the text.
- If your DPI setting is correct, and the font zoom setting is set to 100,
- this means that LyX will try to display the text exactly the same size
- as it will appear on the paper-output.
- If you set the zoom factor to 200, the text will try to be 2 times as big
- as on paper.
- Of course, this will only happen if LyX can find a font that has the appropriat
-e size, which you can't count on.
- Since LyX is a WYSIWYM system anyways, this limitation isn't much of an
- issue.
+.)
\end_layout
\begin_layout Standard
-The default font zoom setting is 150, since a monitor is typically wider
- than a piece of paper, but you should try to fiddle with it through the
-
+A Format can have a
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Font
-\begin_inset space ~
+Viewer
+\end_layout
+
\end_inset
+ and
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
-\bar under
-Z
-\bar default
-oom
+\begin_layout Plain Layout
+Editor
\end_layout
\end_inset
- setting in the
+ associated with it.
+ For example, you might want to use
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Preferences
+Ghostview
\end_layout
\end_inset
- dialog to find a size that you like.
- When you've found a setting that seems to work nicely for you (tip: use
- the
+ to view PostScript files.
+ You can enter the command needed to start the program in the corresponding
+ fields.
+ In defining this command, you can use the four variables listed in the
+ next section.
+ The viewer is launched when you view an image in LyX or use the
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-
-\bar under
-A
-\bar default
-pply
+View
\end_layout
\end_inset
- button to keep the dialog open while you experiment), you can make this
- setting the default by using the
+ menu.
+ The editor is for example launched when you press the
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-
-\bar under
-S
-\bar default
-ave
+Edit
\end_layout
\end_inset
- button.
-\end_layout
+ button in the
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
-\begin_layout Standard
-While it is often possible to find a suitable size for the text on the screen,
- this doesn't necessarily mean that the fonts are the best ones available
- on your system.
- In order to help you get the most out of your system, you can use the font
- definition commands to fine-tune the look of the text in greater detail
- than merely size.
+\begin_layout Plain Layout
+Graphics
\end_layout
-\begin_layout Subsubsection
-Font definition commands
-\end_layout
+\end_inset
-\begin_layout Standard
-You can change LyX's screen fonts from within the
+ or the
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Preferences
+External material
\end_layout
\end_inset
dialog.
- The number of fonts that are available on different systems vary.
-
\end_layout
\begin_layout Standard
-Before you go about scrapping a bitmap font because the larger sizes look
-
-\begin_inset Quotes eld
-\end_inset
-
-blocky
-\begin_inset Quotes erd
-\end_inset
-
-, you should toggle the
-\begin_inset Flex CharStyle:Code
+The
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Use scalable fonts
+Document format
\end_layout
\end_inset
- button.
- This is only useful if you use bitmap fonts, because only these don't scale
- well.
- If you define this flag, LyX will only use the fixed font sizes that are
- available, and this guarantees that all bitmap fonts look good.
- However, the downside is that there will be a greater difference between
- the size of the fonts on screen and the size of fonts on paper because
- LyX will have to be satisfied with the closest available size, and not
- try to scale a size to fit.
- Also, you can risk that some logically different sizes, such as
+ option tells LyX that a format is suitable for document export.
+ If this is is set and if a suitable conversion route exists (see
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sub:Converters"
+
+\end_inset
+
+), the format will appear in the
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Large
+File\SpecialChar \menuseparator
+Export
\end_layout
\end_inset
- and
+ menu.
+ The format will also appear in the
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Larger
+View
\end_layout
\end_inset
-, will be mapped to the same screen font, making it hard for you to see
- the difference on screen.
-
-\end_layout
-
-\begin_layout Standard
-One final note regarding the
+ menu if a viewer is specified for the format.
+ Pure image formats, such as
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Use scalable fonts
+png
\end_layout
\end_inset
- flag: you should know that there is nothing wrong with using bitmap and
- scalable fonts at the same time for different purposes.
- For instance, it's common to use the scalable
-\begin_inset Quotes eld
-\end_inset
-
-Utopia
-\begin_inset Quotes erd
-\end_inset
-
- for the serif text together with a bitmap version of
-\begin_inset Quotes eld
-\end_inset
-
-Helvetica
-\begin_inset Quotes erd
-\end_inset
+, should not use this option.
+ Formats that can both represent vector graphics and documents like
+\begin_inset Flex CharStyle:Code
+status collapsed
-.
- And you can safely select the
-\begin_inset Quotes eld
-\end_inset
+\begin_layout Plain Layout
+pdf
+\end_layout
-Use scalable fonts
-\begin_inset Quotes erd
\end_inset
- button without worries: It will only apply to the Helvetica font.
+ should use it.
\end_layout
\begin_layout Standard
-Sometimes the artifacts introduced by use of the flag can be relieved by
- using the fine-detail screen font sizes which defines which point sizes
- the different logical font sizes correspond to.
- Run LyX as
-\begin_inset Flex CharStyle:Code
+The option
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-lyx -dbg 513
+Vector graphics format
\end_layout
\end_inset
- to see exactly what concrete fonts the logical sizes map to, and try adjusting
- the corresponding entries in the
+ tells LyX that a format can contain vector graphics.
+ This information is used to determine the target format of included graphics
+ for
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Preferences
+pdflatex
\end_layout
\end_inset
- dialog until you've managed to hit the nail and get the fonts you want.
- This can be hard to do, because LyX uses the DPI setting and the font zoom
- settings to calculate which exact screen font size to ask the X server
- for, thus obfuscating the mapping.
- If you can't make it by trial-and-error, you can make the process more
- transparent if you set both the DPI setting and font zoom settings to 100---eve
-n when this is known to be wrong.
- This will of course make your scalable fonts look weird, so use with care.
-\end_layout
-
-\begin_layout Standard
-\begin_inset Branch OutDated
-status collapsed
-
-\begin_layout Subsubsection
-Font encoding
-\end_layout
-
-\begin_layout Standard
-By default, LyX will use fonts meant to write Western European text, including
- all kinds of English.
- This is defined through the so-called
-\emph on
-font
-\emph default
-
-\emph on
-encoding
-\emph default
-.
- If you want to use LyX to write for instance Eastern European text, Cyrillic
- or any other language not covered by the ISO-8859-1 font encoding, you
- can define a different one with the encoding setting.
- This requires you to have special fonts installed.
- You can use
-\begin_inset Flex CharStyle:Code
+ export.
+ Included graphics may need to be converted to either
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-xfontsel
+pdf
\end_layout
\end_inset
- to see whether this is the case: check the
-\begin_inset Quotes eld
-\end_inset
-
-rgstry
-\begin_inset Quotes erd
-\end_inset
-
- and
-\begin_inset Quotes eld
-\end_inset
-
-encdng
-\begin_inset Quotes erd
-\end_inset
-
- fields for ISO-8859-X values different from ISO-8859-1, and search for
- one that contains the national characters of your language.
- If you find any, enter this encoding in the dialog.
- If not, go searching the Web for appropriate fonts.
- For the Qt frontend, it's recommended you use an iso646 font set.
-\end_layout
-
-\begin_layout Standard
-When you've set LyX up to use a different font encoding, you should also
- consider changing the font used by dialog windows in LyX.
- For instance, the
+,
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Table
-\begin_inset space ~
-\end_inset
-
-of
-\begin_inset space ~
-\end_inset
-
-Contents
+png
\end_layout
\end_inset
- dialog will not be understandable unless you tell LyX to use a different
- font for this.
- By default the menu font is set to
-\begin_inset Flex CharStyle:Code
+, or
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
--*-helvetica-medium-r
+jpg
\end_layout
\end_inset
-, but often Helvetica is not available in the font encoding you need, so
- the dialog allows this to be changed.
-\end_layout
+, since
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
-\begin_layout Standard
-As you can see, there are quite a few options that can be used to fine tune
- the look of your fonts.
- This should not scare you from fiddling with the settings, because after
- all, you will hopefully be using LyX for many hours in the future.
- And contrary to real WYSIWYG word processors where you are tied to using
- fonts that have to look good both on paper and on screen, LyX gives you
- the possibility of using fonts that are designed to look good on the screen
- while using a different set of fonts to look good on paper.
+\begin_layout Plain Layout
+pdflatex
\end_layout
\end_inset
+ cannot handle other image formats.
+ If an included graphic is not already in
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
+\begin_layout Plain Layout
+pdf
\end_layout
-\begin_layout Subsection
-User Interface
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:ui"
-
\end_inset
-
-\end_layout
-
-\begin_layout Standard
-The appearance of both the menu and toolbar may both be changed using the
-
+,
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Preferences
+png
\end_layout
\end_inset
- dialog.
- Simply select a different
-\begin_inset Flex CharStyle:Code
+, or
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-.ui
+jpg
\end_layout
\end_inset
- file in the
+ format, it is converted to
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Look & Feel\SpecialChar \menuseparator
-User Interface
+pdf
\end_layout
\end_inset
- section.
- You can customize the interface by copying one of the
-\begin_inset Flex CharStyle:Code
+ if the vector format option is set, and otherwise to
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-.ui
+png
\end_layout
\end_inset
- files from
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-LyXDir/ui/
+.
\end_layout
-\end_inset
+\begin_layout Subsection
+Copiers
+\end_layout
- to
-\begin_inset Flex CharStyle:Code
+\begin_layout Standard
+Since all conversions from one format to another take place in LyX's temporary
+ directory, it is sometimes necessary to modify a file before copying it
+ to the temporary directory in order that the conversion may be performed.
+\begin_inset Foot
status collapsed
\begin_layout Plain Layout
-UserDir/ui/
+For example, the file may refer to other files—images, for example—using
+ relative file names, and these may become invalid when the file is copied
+ to the temporary directory.
\end_layout
\end_inset
-.
- You may have to restart LyX for these changes to take effect.
+ This is done by a Copier: It copies a file to (or from) the temporary directory
+ and may modify it in the process.
\end_layout
\begin_layout Standard
-The syntax of the
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-.ui
+The definitions of the copiers may use four variables:
\end_layout
-\end_inset
-
- files is straightforward: have a look at
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-default.ui
+$$s
\end_layout
\end_inset
-.
- The
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-Menubar
-\end_layout
+ The LyX system directory (e.
+\begin_inset space \thinspace{}
+\end_inset
+g.
+\begin_inset space \space{}
\end_inset
-,
-\begin_inset Flex CharStyle:Code
+
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Menu
+/usr/share/lyx
\end_layout
\end_inset
- and
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-Toolbar
+).
\end_layout
-\end_inset
-
- entries must be ended with an explicit
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-End
+$$i
\end_layout
\end_inset
-.
- They may contain
+ The input file
+\end_layout
+
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Submenu
+$$o
\end_layout
\end_inset
-s,
+ The output file
+\end_layout
+
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Item
+$$l
\end_layout
\end_inset
-s,
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-OptItem
+ The `LaTeX name'
\end_layout
-\end_inset
+\begin_layout Standard
+The latter should be the filename as it would be used in a LaTeX's
+\series bold
+
+\backslash
+include
+\series default
+ command.
+ It is relevant only when exporting files suitable for such inclusion.
+\end_layout
-s,
+\begin_layout Standard
+Copiers can be used to do almost anything with output files.
+ For example, suppose you want generated pdf files to be copied to a special
+ directory,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Separator
+/home/you/pdf/
\end_layout
\end_inset
-s,
-\begin_inset Flex CharStyle:Code
-status collapsed
+.
+ Then you could write a shell script such as this one:
+\end_layout
+
+\begin_layout Standard
+\begin_inset listings
+inline false
+status open
\begin_layout Plain Layout
-Icon
+
+#!/bin/bash
\end_layout
-\end_inset
+\begin_layout Plain Layout
-s and in the case of the
-\begin_inset Quotes eld
-\end_inset
+FROMFILE=$1
+\end_layout
-file
-\begin_inset Quotes erd
-\end_inset
+\begin_layout Plain Layout
- menus, a
-\begin_inset Flex CharStyle:Code
-status collapsed
+TOFILE=`basename $2`
+\end_layout
\begin_layout Plain Layout
-Lastfiles
+
+cp $FROMFILE /home/you/pdf/$TOFILE
\end_layout
\end_inset
- entry.
- One small word of warning.
-
+Save that in your local LyX directory—say,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Submenu
+/home/you/.lyx/scripts/pdfcopier.sh
\end_layout
\end_inset
-s may be inserted in a
-\begin_inset Flex CharStyle:Code
+—and make it executable, if you need to do so on your platform.
+ Then, in the
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Menubar
+Tools\SpecialChar \menuseparator
+Preferences
\end_layout
\end_inset
- or
-\begin_inset Flex CharStyle:Code
+ dialog, select under
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Menu
+File Handling\SpecialChar \menuseparator
+File formats
\end_layout
\end_inset
-, but they are defined as
-\begin_inset Flex CharStyle:Code
+ the
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Menu
+PDF(pdflatex)
\end_layout
\end_inset
-s, not as
+ format—or one of the other pdf formats—and enter
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Submenu
+pdfcopier.sh $$i $$o
\end_layout
\end_inset
-s.
- A
-\begin_inset Flex CharStyle:Code
+ into the
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Submenu
+Copier
\end_layout
\end_inset
- tag is used to insert context-dependent information that is generated by
- LyX itself.
- Unfortunately, the available tags are not documented outside the source
- code.
+ field.
+
\end_layout
\begin_layout Standard
-Note that, as of LyX 1.6, there are extensive context menus, normally accessed
- via a right click.
- These are defined in the
-\begin_inset Flex CharStyle:Code
+Copiers are used by LyX in various of its own conversions.
+ For example, if appropriate programs are found, LyX will automatically
+ install copiers for the
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-.ui
+HTML
\end_layout
\end_inset
- files.
-\end_layout
+ and
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
-\begin_layout Section
-Editing
-\end_layout
+\begin_layout Plain Layout
+HTML
+\begin_inset space ~
+\end_inset
-\begin_layout Standard
-The settings in this section are used to customise the behavior of the LyX
- editor.
+(MS Word)
\end_layout
-\begin_layout Subsection
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:bindings"
-
\end_inset
-Shortcuts
-\end_layout
-
-\begin_layout Standard
-Bindings are used to associate a LyX function to a key.
- Several prepackaged binding files are available: a CUA set of bindings
- (familiar as the typical set of PC and CDE set of keyboard shortcuts),
- an Emacs set of bindings, for those of us who follow the One True Way and
- refuse to lower our standards,
+ formats.
+ When these formats are exported, the copier sees that not just the main
+ HTML file but various associated files (style files, images, etc.) are also
+ copied.
+ All these files are written to a subdirectory of the directory in which
+ the original LyX file was found.
\begin_inset Foot
status collapsed
\begin_layout Plain Layout
-I'm kidding here, of course!
-\end_layout
+This copier can be customized.
+ The optional
+\begin_inset Quotes eld
+\end_inset
+-e
+\begin_inset Quotes erd
\end_inset
- as well as specialty bindings (broadway and hollywood) and bindings for
- languages other than English.
- You can select your binding in the
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
+ argument takes a comma-separated list of extensions to be copied; if it
+ is omitted, all files will be copied.
+ The
+\begin_inset Quotes eld
+\end_inset
-\begin_layout Plain Layout
-Editing\SpecialChar \menuseparator
-Shortcuts
-\end_layout
+-t
+\begin_inset Quotes erd
+\end_inset
+ argument determines the extension added to the generated directory.
+ By default, it is
+\begin_inset Quotes eld
\end_inset
- section of the
-\bar under
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-
-\bar under
-T
-\bar default
-ools\SpecialChar \menuseparator
-
-\bar under
-P
-\bar default
-references
+LyXconv
\end_layout
\end_inset
-\bar default
- dialog.
-
-\end_layout
-
-\begin_layout Standard
-If, however, you'd like to customise the bindings to your own exacting tastes,
- then there are two ways to proceed.
- The first, and older method, is to copy a file from
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-LyXDir/bind/
-\end_layout
-
+\begin_inset Quotes erd
\end_inset
- to your own
-\begin_inset Flex CharStyle:Code
+, so HTML generated from
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-UserDir/bind/
+/path/to/filename.lyx
\end_layout
\end_inset
- and modify that in a text editor.
- Don't forget to select this file in
+ will end up in
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Editing\SpecialChar \menuseparator
-Shortcuts
+/path/to/filename.html.LyXconv
\end_layout
\end_inset
.
- The second method is to use the shortcut editor, which you will also find
- at
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
-
-\begin_layout Plain Layout
-Editing\SpecialChar \menuseparator
-Shortcuts
+
\end_layout
\end_inset
-.
- The changes you make here will be stored at
-\begin_inset Flex CharStyle:Code
-status collapsed
-\begin_layout Plain Layout
-UserDir/bind/user.bind
\end_layout
+\begin_layout Subsection
+\begin_inset CommandInset label
+LatexCommand label
+name "sub:Converters"
+
\end_inset
-.
+Converters
\end_layout
\begin_layout Standard
-LyX supports internationalization of the user interface (see Chapter
-\begin_inset space ~
-\end_inset
-
-
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "chap:i18n"
-
-\end_inset
-
-).
- If your
-\emph on
-locale
-\emph default
- is set, LyX will try to use bindfiles by prepending the standard language
- code to their name.
- For example, you can put a translated copy of some standard bind file in
- your personal
-\begin_inset Flex CharStyle:Code
-status collapsed
+You can define your own Converters to convert files between different formats.
+ This is done in the
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
\begin_layout Plain Layout
-bind/
+Tools\SpecialChar \menuseparator
+Preferences\SpecialChar \menuseparator
+File Handling\SpecialChar \menuseparator
+Converters
\end_layout
\end_inset
- directory, and LyX will use it automatically.
+ dialog.
\end_layout
\begin_layout Standard
-The syntax of the
-\begin_inset Flex CharStyle:Code
+To define a new converter, select the
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-.bind
-\end_layout
-
+From
+\begin_inset space ~
\end_inset
- files is straightforward:
+format
\end_layout
-\begin_layout LyX-Code
-
-\backslash
-bind ``<key combination>'' ``<lyx-function>
-\begin_inset Quotes erd
\end_inset
+ and
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
-\end_layout
-
-\begin_layout Standard
-Both key combination and lyx-function (including any arguments) must be
- enclosed in "double quotes".
- The LyX functions are partially documented on listed on the
-\begin_inset CommandInset href
-LatexCommand href
-name "LyXWiki"
-target "http://wiki.lyx.org/LyX/LyxFunctions"
-
+\begin_layout Plain Layout
+To
+\begin_inset space ~
\end_inset
-.
- A major effort is presently underway to improve this documentation.
+format
\end_layout
-\begin_layout Section
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:converters-etc"
-
\end_inset
-File Handling
-\end_layout
+ from the drop-down lists, enter the command needed for the conversion,
+ and then press the
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
-\begin_layout Standard
-LyX has a powerful mechanism to convert to and from any file format using
- external programs.
-
+\begin_layout Plain Layout
+Add
\end_layout
-\begin_layout Subsection
-\begin_inset CommandInset label
-LatexCommand label
-name "sub:Formats"
-
\end_inset
-Formats
+ button.
+ Several variables can be used in the definition of converters:
\end_layout
-\begin_layout Standard
-The first step is to define your file formats if they are not already defined.
- To do so, open the
-\begin_inset Flex CharStyle:MenuItem
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Tools\SpecialChar \menuseparator
-Preferences\SpecialChar \menuseparator
-File Handling\SpecialChar \menuseparator
-File Formats
+$$s
\end_layout
\end_inset
- dialog.
- Press the
-\begin_inset Flex CharStyle:MenuItem
+ The LyX system directory
+\end_layout
+
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-New\SpecialChar \ldots{}
-
+$$i
\end_layout
\end_inset
- button to define your new format.
- The
-\begin_inset Flex CharStyle:MenuItem
+ The input file
+\end_layout
+
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Format
+$$o
\end_layout
\end_inset
- field contains the named used to identify the format in the GUI.
- The
-\begin_inset Flex CharStyle:MenuItem
+ The output file
+\end_layout
+
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Short Name
+$$b
\end_layout
\end_inset
- is used to identify the format interally.
- You will also need to enter a file extension.
- These are all required.
- The optional
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
+ The base filename of the input file (i.
+\begin_inset space \thinspace{}
+\end_inset
-\begin_layout Plain Layout
-Shortcut
+g., without the extension)
\end_layout
-\end_inset
-
- field is used to provide a keyboard shortcut on the menus.
- (For example, pressing
-\begin_inset Flex CharStyle:MenuItem
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Alt-V D
+$$p
\end_layout
\end_inset
- will
-\begin_inset Flex CharStyle:MenuItem
+ The path to the input file
+\end_layout
+
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-View\SpecialChar \menuseparator
-DVI
+$$r
\end_layout
\end_inset
-.)
+ The path to the original input file (this is different from $$p when chain
+ of converters is called).
\end_layout
\begin_layout Standard
-A Format can have a
+In the
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Viewer
-\end_layout
-
+Extra
+\begin_inset space ~
\end_inset
- and
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
-
-\begin_layout Plain Layout
-Editor
+Flag
\end_layout
\end_inset
- associated with it.
- For example, you might want to use
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
-
-\begin_layout Plain Layout
-Ghostview
+ field you can enter the following flags, separated by commas:
\end_layout
-\end_inset
-
- to view PostScript files.
- You can enter the command needed to start the program in the corresponding
- fields.
- In defining this command, you can use the four variables listed in the
- next section.
- The viewer is launched when you view an image in LyX or use the
-\begin_inset Flex CharStyle:MenuItem
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-View
+latex
\end_layout
\end_inset
- menu.
- The editor is for example launched when you press the
-\begin_inset Flex CharStyle:MenuItem
+ This converter runs some form of LaTeX.
+ This will make LyX's LaTeX error logs available.
+\end_layout
+
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Edit
+needaux
\end_layout
\end_inset
- button in the
+ Needs the LaTeX
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Graphics
+.aux
\end_layout
\end_inset
- or the
-\begin_inset Flex CharStyle:MenuItem
+ file for the conversion.
+\end_layout
+
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-External material
+xml
\end_layout
\end_inset
- dialog.
+ Output is XML.
\end_layout
\begin_layout Standard
-The
+The following three flags are not really flags at all because they take
+ an argument in the
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Document format
-\end_layout
+key
+\begin_inset space ~
+\end_inset
+=
+\begin_inset space ~
\end_inset
- option tells LyX that a format is suitable for document export.
- If this is is set and if a suitable conversion route exists (see
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sub:Converters"
+value
+\end_layout
\end_inset
-), the format will appear in the
-\begin_inset Flex CharStyle:MenuItem
+ format:
+\end_layout
+
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-File\SpecialChar \menuseparator
-Export
+parselog
\end_layout
\end_inset
- menu.
- The format will also appear in the
-\begin_inset Flex CharStyle:MenuItem
+ If set, the converter's standard error will be redirected to a file
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-View
+infile.out
\end_layout
\end_inset
- menu if a viewer is specified for the format.
- Pure image formats, such as
+, and the script given as argument will be run as:
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-png
+script <infile.out >infile.log
\end_layout
\end_inset
-, should not use this option.
- Formats that can both represent vector graphics and documents like
+.
+ The argument may contain
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-pdf
+$$s
\end_layout
\end_inset
- should use it.
+.
\end_layout
-\begin_layout Standard
-The option
-\begin_inset Flex CharStyle:MenuItem
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Vector graphics format
+resultdir
\end_layout
\end_inset
- tells LyX that a format can contain vector graphics.
- This information is used to determine the target format of included graphics
- for
-\begin_inset Flex CharStyle:MenuItem
+ The name of the directory in which the converter will dump the generated
+ files.
+ LyX will not create this directory, and it does not copy anything into
+ it, though it will copy this directory to the destination.
+ The argument may contain
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-pdflatex
+$$b
\end_layout
\end_inset
- export.
- Included graphics may need to be converted to either
-\begin_inset Flex CharStyle:MenuItem
+, which will be replaced by the base name of the input and output files,
+ respectively, when the directory is copied.
+\begin_inset Newline newline
+\end_inset
+
+Note that resultdir and usetempdir make no sense together.
+ The latter will be ignored if the former is given.
+\end_layout
+
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-pdf
+resultfile
\end_layout
\end_inset
-,
-\begin_inset Flex CharStyle:MenuItem
+ Determines the output file name and may, contain
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-png
+$$b
\end_layout
\end_inset
-, or
+.
+ Sensible only with resultdir and optional even then; if not given, it defaults
+ to `index'.
+\end_layout
+
+\begin_layout Standard
+None of these last three are presently used in any of the converters that
+ are installed with LyX.
+
+\end_layout
+
+\begin_layout Standard
+You do not have to define converters between all the formats between which
+ you want to convert.
+ For example, you will note that there is no `LyX to PostScript' converter,
+ but LyX will export PostScript.
+ It does so by first creating a LaTeX file (no converter needs to be defined
+ for this) which is then converted to DVI using the `LaTeX to DVI' converter,
+ and finally converting the resulting DVI file to PostScript.
+ LyX finds such `chains' of converters automatically, and it will always
+ choose the shortest possible chain.
+ You can, though, still define multiple conversion methods between file
+ formats.
+ For example, the standard LyX configuration provides three ways to convert
+ LaTeX to PDF: Directly, using
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-jpg
+pdflatex
\end_layout
\end_inset
-, since
+; via (DVI and) PostScript, using
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-pdflatex
+ps2pdf
\end_layout
\end_inset
- cannot handle other image formats.
- If an included graphic is not already in
+; or via DVI, using
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-pdf
+dvipdfm
\end_layout
\end_inset
-,
+.
+ To define such alternate chains, you must define multiple target `file
+ formats', as described in section
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sub:Formats"
+
+\end_inset
+
+.
+ For example, in the standard configuration, the formats named
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-png
+pdf
\end_layout
\end_inset
-, or
+,
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-jpg
+pdf2
\end_layout
\end_inset
- format, it is converted to
+, and
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-pdf
+pdf3
\end_layout
\end_inset
- if the vector format option is set, and otherwise to
+ are defined, all of which share the extension
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-png
+.pdf
\end_layout
\end_inset
-.
+, and which correspond to the conversion methods just mentioned.
\end_layout
-\begin_layout Subsection
-Copiers
+\begin_layout Chapter
+Internationalizing LyX
+\begin_inset CommandInset label
+LatexCommand label
+name "chap:i18n"
+
+\end_inset
+
+
\end_layout
\begin_layout Standard
-Since all conversions from one format to another take place in LyX's temporary
- directory, it is sometimes necessary to modify a file before copying it
- to the temporary directory in order that the conversion may be performed.
-\begin_inset Foot
+LyX supports using a translated interface.
+ Last time we checked, LyX provided text in thirty languages.
+ The language of choice is called your
+\emph on
+locale
+\emph default
+.
+ (For further reading on locale settings, see also the documentation for
+ locale that comes with your operating system.
+ For Linux, the manual page for
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-For example, the file may refer to other files---images, for example---using
- relative filenames, and these may become invalid when the file is copied
- to the temporary directory.
+locale(5)
\end_layout
\end_inset
- This is done by a Copier: It copies a file to (or from) the temporary directory
- and may modify it in the process.
+ could be a good place to start).
\end_layout
\begin_layout Standard
-The definitions of the copiers may use four variables:
-\end_layout
-
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
-\begin_inset Flex CharStyle:Code
+Notice that these translations will work, but do contain a few flaws.
+ In particular, all dialogs have been designed with the English text in
+ mind, which means that some of the translated text will be too large to
+ fit within the space allocated.
+ This is only a display problem and will not cause any harm.
+ Also, you will find that some of the translations do not define shortcut
+ keys for everything.
+ Sometimes, there are simply not enough free letters to do it.
+ Other times, the translator just hasn't got around to doing it yet.
+ Our localization team, which you may wish to join,
+\begin_inset Foot
status collapsed
\begin_layout Plain Layout
-$$s
+If you are a fluent speaker of a language other than English, joining these
+ teams is a great way to give back to the LyX community!
\end_layout
\end_inset
- The LyX system directory (e.
-\begin_inset space \thinspace{}
-\end_inset
+ will of course try to fix these shortcomings in future versions of LyX.
+\end_layout
-g.
-\begin_inset space ~
-\end_inset
+\begin_layout Section
+Translating LyX
+\end_layout
+\begin_layout Subsection
+Translating the graphical user interface (text messages).
+\end_layout
-\begin_inset Flex CharStyle:MenuItem
+\begin_layout Standard
+LyX uses the GNU
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-/usr/share/lyx
+gettext
\end_layout
\end_inset
-).
-\end_layout
-
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
+ library to handle the internationalization of the interface.
+ To have LyX speak your favorite language in all menus and dialogs, you
+ need a
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$i
+po
\end_layout
\end_inset
- The input file
-\end_layout
-
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
+-file for that language.
+ When this is available, you'll have to generate a
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$o
+mo
\end_layout
\end_inset
- The output file
-\end_layout
-
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
+-file from it and install the
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$l
+mo
\end_layout
\end_inset
- The `LaTeX name'
-\end_layout
-
-\begin_layout Standard
-The latter is to be given in a form suitable for inclusion in a LaTeX's
-
-\series bold
-
-\backslash
-include
-\series default
- command and is relevant only when exporting files suitable for such inclusion.
-\end_layout
-
-\begin_layout Standard
-Copiers can be used to do almost anything with output files.
- For example, suppose you want generated pdf files to be copied to a special
- directory,
+-file.
+ The process of doing all of this is explained in the documentation for
+ GNU
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-/home/you/pdf/
+gettext
\end_layout
\end_inset
.
- Then you could write a shell script such as this one:
+ It is possible to do this just for yourself, but if you're going to do
+ it, you might as well share the results of your labors with the rest of
+ the LyX community.
+ Send a message to the LyX developers' list for more information about how
+ to proceed.
\end_layout
\begin_layout Standard
-\begin_inset listings
-inline false
-status open
-
-\begin_layout Plain Layout
-
-#!/bin/bash
+In short, this is what you should do (xx denotes the language code):
\end_layout
-\begin_layout Plain Layout
+\begin_layout Itemize
+Check out the LyX source code.
+ (See the
+\begin_inset CommandInset href
+LatexCommand href
+name "information on the web"
+target "http://www.lyx.org/devel/cvs.php"
-FROMFILE=$1
+\end_inset
+
+.)
\end_layout
-\begin_layout Plain Layout
+\begin_layout Itemize
+Copy the file
+\begin_inset Flex CharStyle:Code
+status collapsed
-TOFILE=`basename $2`
-\end_layout
-
-\begin_layout Plain Layout
-
-cp $FROMFILE /home/you/pdf/$TOFILE
+\begin_layout Plain Layout
+lyx.pot
\end_layout
\end_inset
-Save that in your local LyX directory---say,
+ to the folder of the
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-/home/you/.lyx/scripts/pdfcopier.sh
+**.po
\end_layout
\end_inset
----and make it executable, if you need to do so on your platform.
- Then, in the
-\begin_inset Flex CharStyle:MenuItem
+ files.
+ Then rename it to
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Tools\SpecialChar \menuseparator
-Preferences:Copiers
+xx.po
\end_layout
\end_inset
- dialog, select the
-\begin_inset Flex CharStyle:MenuItem
+.
+ (If
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-PDF(pdflatex)
+lyx.pot
\end_layout
\end_inset
- format---or one of the other pdf formats---and enter
+ doesn't exist anywhere, it can be remade with the console command
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-pdfcopier.sh $$i $$o
+make lyx.pot
\end_layout
\end_inset
- into the
-\begin_inset Flex CharStyle:MenuItem
+ in that directory, or you can use an existing po-file for some other language
+ as a template).
+\end_layout
+
+\begin_layout Itemize
+Edit
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Copier
+xx.po
\end_layout
\end_inset
- field.
-
-\end_layout
-
-\begin_layout Standard
-Copiers are used by LyX in various of its own conversions.
- For example, if appropriate programs are found, LyX will automatically
- install copiers for the
-\begin_inset Flex CharStyle:MenuItem
+.
+\begin_inset Foot
status collapsed
\begin_layout Plain Layout
-HTML
-\end_layout
-
-\end_inset
-
- and
-\begin_inset Flex CharStyle:MenuItem
+This is just a text file, so it can be edited in any text editor.
+ But there are also specialized programs that support such editing, such
+ as
+\family typewriter
+Poedit
+\family default
+ (for all platforms) or
+\family typewriter
+KBabel
+\family default
+ (for KDE).
+
+\family typewriter
+Emacs
+\family default
+ contains a `mode' for editing
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-HTML
-\begin_inset space ~
+po
+\end_layout
+
\end_inset
-(MS Word)
+ files, as well.
\end_layout
\end_inset
- formats.
- When these formats are exported, the copier sees that not just the main
- HTML file but various associated files (style files, images, etc.) are also
- copied.
- All these files are written to a subdirectory of the directory in which
- the original LyX file was found.
-\begin_inset Foot
+ For some menu- and widget-labels, there are also shortcut keys that should
+ be translated.
+ Those keys are marked after a `|', and should be translated according to
+ the words and phrases of the language.
+ You should also fill also out the information at the beginning of the new
+
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-This copier can be customized.
- The optional
-\begin_inset Quotes eld
-\end_inset
-
--e
-\begin_inset Quotes erd
-\end_inset
-
- argument takes a comma-separated list of extensions to be copied; if it
- is omitted, all files will be copied.
- The
-\begin_inset Quotes eld
-\end_inset
+po
+\end_layout
--t
-\begin_inset Quotes erd
\end_inset
- argument determines the extension added to the generated directory.
- By default, it is
-\begin_inset Quotes eld
-\end_inset
+-file with your email-address, etc., so people know where to reach you with
+ suggestions and entertaining flames.
+\end_layout
+\begin_layout Standard
+If you are just doing this on your own, then:
+\end_layout
-\begin_inset Flex CharStyle:MenuItem
+\begin_layout Itemize
+Generate
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-LyXconv
+xx.mo
\end_layout
\end_inset
+.
+ This can be done with
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+msgfmt -o xx.mo < xx.po
+\end_layout
-\begin_inset Quotes erd
\end_inset
-, so HTML generated from
-\begin_inset Flex CharStyle:MenuItem
+.
+\end_layout
+
+\begin_layout Itemize
+Copy the
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-/path/to/filename.lyx
+mo
\end_layout
\end_inset
- will end up in
-\begin_inset Flex CharStyle:MenuItem
+-file to your locale-tree, at the correct directory for application messages
+ for the language
+\series bold
+
+\series default
+xx, and under the name
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-/path/to/filename.html.LyXconv
+lyx.mo
\end_layout
\end_inset
-.
-
-\end_layout
+ (e.
+\begin_inset space \thinspace{}
+\end_inset
+g.
+\begin_inset space \space{}
\end_inset
-\end_layout
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout Subsection
-\begin_inset CommandInset label
-LatexCommand label
-name "sub:Converters"
+\begin_layout Plain Layout
+/usr/local/share/locale/xx/LC_MESSAGES/lyx.mo
+\end_layout
\end_inset
-Converters
+
+\series bold
+.
\end_layout
\begin_layout Standard
-You can define your own Converters to, uhh, convert files between different
- formats.
- This is done in the
-\begin_inset Flex CharStyle:MenuItem
+As said, however, it would be best if the new
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Tools\SpecialChar \menuseparator
-Preferences\SpecialChar \menuseparator
-File Handling\SpecialChar \menuseparator
-Converters
+po
\end_layout
\end_inset
- dialog.
+-file could be added to the LyX distribution, so others can use it.
+ Adding it involves making additional changes to LyX.
+ So send an email to the developers' mailing list if you're interested in
+ doing that.
+\end_layout
+
+\begin_layout Subsubsection
+Ambiguous messages
\end_layout
\begin_layout Standard
-To define a new converter, select the
-\begin_inset Flex CharStyle:MenuItem
+Sometimes it turns out that one English message needs to be translated into
+ different messages in the target language.
+ One example is the message
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-From
-\begin_inset space ~
-\end_inset
-
-format
+To
\end_layout
\end_inset
- and
-\begin_inset space \thinspace{}
+ which has the German translation
+\lang german
+Nach
+\lang english
+ or
+\lang german
+Bis
+\lang english
+, depending upon exactly what the English
+\begin_inset Quotes eld
\end_inset
-
-\begin_inset Flex CharStyle:MenuItem
+to
+\begin_inset Quotes erd
+\end_inset
+
+ means.
+ GNU
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-To
-\begin_inset space ~
-\end_inset
-
-format
+gettext
\end_layout
\end_inset
- from the drop-down lists, enter the command needed for the conversion,
- and then press the
-\begin_inset Flex CharStyle:MenuItem
+ does not handle such ambiguous translations.
+ Therefore you have to add some context information to the message: Instead
+ of
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Add
+To
\end_layout
\end_inset
- button.
- Several variables can be used in the definition of converters:
-\end_layout
-
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
+ it becomes
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$s
+To[[as in 'From format x to format y']]
\end_layout
\end_inset
- The LyX system directory
-\end_layout
-
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
+ and
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$i
+To[[as in 'From page x to page y']].
\end_layout
\end_inset
- The input file
-\end_layout
-
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
+ Now the two occurrences of
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$o
+To
\end_layout
\end_inset
- The output file
-\end_layout
-
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
+ are different for
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$b
+gettext
\end_layout
\end_inset
- The base filename of the input file (i.e., without the extension)
+ and can be translated correctly to
+\lang german
+Nach
+\lang english
+ and
+\lang german
+Bis
+\lang english
+, respectively.
\end_layout
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-$$p
+\begin_layout Standard
+Of course the context information needs to be stripped off the original
+ message when no translation is used.
+ Therefore you have to put it in double square brackets at the end of the
+ message (see the example above).
+ The translation mechanism of LyX ensures that everything in double square
+ brackets at the end of messages is removed before displaying the message.
\end_layout
-\end_inset
-
- The path to the input file
+\begin_layout Subsection
+Translating the documentation.
\end_layout
\begin_layout Standard
-In the
+The online documentation (in the
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Extra
-\begin_inset space ~
-\end_inset
-
-Flag
+Help
\end_layout
\end_inset
- field you can enter the following flags, separated by commas:
-\end_layout
-
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
-\begin_inset Flex CharStyle:Code
+-menu) can (and should!) be translated.
+ If there are translated versions of the documentation available
+\begin_inset Foot
status collapsed
\begin_layout Plain Layout
-latex
+As of March 2008, at least some of the documents have been translated into
+ fourteen languages, with the Tutorial available in a few more.
\end_layout
\end_inset
- This converter runs some form of LaTeX.
- This will make LyX's LaTeX error logs available.
-\end_layout
-
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
+ and the locale is set accordingly, these will be used automagically by
+ LyX.
+ LyX looks for translated versions as
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-needaux
+LyXDir/doc/xx/DocName.lyx
\end_layout
\end_inset
- Needs the LaTeX
-\begin_inset Flex CharStyle:MenuItem
+, where
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-.aux
+xx
\end_layout
\end_inset
- file for the conversion.
-\end_layout
-
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
+ is the code for the language currently in use.
+ If there are no translated documents, the default English versions will
+ be displayed.
+ Note that the translated versions must have the same filenames (
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-xml
+DocName
\end_layout
\end_inset
- Output is XML.
+ above) as the original.
+ If you feel up to translating the documentation (an excellent way to proof-read
+ the original documentation by the way!), there are a few things you should
+ do right away:
\end_layout
-\begin_layout Standard
-The following three flags are not really flags at all because they take
- an argument in the
-\begin_inset Flex CharStyle:MenuItem
+\begin_layout Itemize
+Read
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-key
-\begin_inset space ~
-\end_inset
+DocStyle.lyx
+\end_layout
-=
-\begin_inset space ~
\end_inset
-value
+, the guide to writing LyX documentation.
+ Pay special attention to the translator's section.
\end_layout
+\begin_layout Itemize
+Check out the documentation translation web page at
+\begin_inset CommandInset href
+LatexCommand href
+name "http://www.lyx.org/Translation"
+target "http://www.lyx.org/Translation"
+
\end_inset
- format:
+.
+ That way, you can find out which (if any) documents have already been translate
+d into your language.
+ You can also find out who (if anyone) is organizing the effort to translate
+ the documentation into your language.
+ If no one is organizing the effort, please let us know that you're interested.
\end_layout
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-parselog
+\begin_layout Standard
+Once you get to actually translating, here's a few hints for you that may
+ save you trouble:
\end_layout
-\end_inset
-
- If set, the converter's standard error will be redirected to a file
+\begin_layout Itemize
+Join the documentation team! There is information on how to do that in
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-infile.out
+Intro.lyx
\end_layout
\end_inset
-, and the script given as argument will be run as:
-\begin_inset Flex CharStyle:Code
+ (
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-script <infile.out >infile.log
+Help\SpecialChar \menuseparator
+
+\bar under
+I
+\bar default
+ntroduction
\end_layout
\end_inset
-.
- The argument may contain
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-$$s
+), which by the way is the first document you should translate.
\end_layout
-\end_inset
-
-.
+\begin_layout Itemize
+Learn the typographic conventions for the language you are translating to.
+ Typography is an ancient art and over the centuries, a great variety of
+ conventions have developed throughout different parts of the world.
+ Also study the professional terminology amongst typographers in your country.
+ Inventing your own terminology will only confuse the users.
+
+\emph on
+(Warning! Typography is addictive!)
\end_layout
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
+\begin_layout Itemize
+Make a copy of the document.
+ This will be your working copy.
+ You can use this as your personal translated help-file by placing it in
+ your
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-resultdir
+UserDir/doc/xx/
\end_layout
\end_inset
- The name of the directory in which the converter will dump the generated
- files.
- LyX will not create this directory, and it does not copy anything into
- it, though it will copy this directory to the destination.
- The argument may contain
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-$$b
+ directory.
\end_layout
-\end_inset
+\begin_layout Itemize
+Sometimes the original document (from the LyX-team) will be updated.
+ Use the source viewer at
+\begin_inset CommandInset href
+LatexCommand href
+name "http://www.lyx.org/trac/timeline"
+target "http://www.lyx.org/trac/timeline"
-, which will be replaced by the basename of the input and output files,
- respectively, when the directory is copied.
-\begin_inset Newline newline
\end_inset
-Note that resultdir and usetempdir make no sense together.
- The latter will be ignored if the former is given.
+ to see what has been changed.
+ That way you can easily see which parts of the translated document need
+ to be updated.
\end_layout
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-resultfile
+\begin_layout Standard
+If you ever find an error in the original document, fix it and notify the
+ rest of the documentation team of the changes! (You didn't forget to join
+ the documentation team, did you?)
\end_layout
-\end_inset
-
- Determines the output filename and may, contain
-\begin_inset Flex CharStyle:Code
+\begin_layout Standard
+\begin_inset Branch OutDated
status collapsed
-\begin_layout Plain Layout
-$$b
+\begin_layout Section
+International Keyboard Support
\end_layout
-\end_inset
+\begin_layout Standard
+\emph on
+[Editor's Note: The following section is by
+\emph default
+
+\shape smallcaps
+\emph on
+Ivan Schreter
+\shape default
.
- Sensible only with resultdir and optional even then; if not given, it defaults
- to `index'.
+ It needs to be fixed to conform to the new Documentation Style sheet and
+ to make use of the new v1.0 features.
+ The whole thing also needs to be merged with the section following it.-jw
+ It may also be badly out of date.-rh (2008)]
\end_layout
-\begin_layout Standard
-None of these last three are presently used in any of the converters that
- are installed with LyX.
-
+\begin_layout Subsection
+Defining Own Keymaps: Keymap File Format
\end_layout
\begin_layout Standard
-You do not have to define converters between all the formats between which
- you want to convert.
- For example, you will note that there is no `LyX to PostScript®' converter,
- but LyX will export PostScript®.
- It does so by first creating a LaTeX file (no converter needs to be defined
- for this) which is then converted to DVI using the `LaTeX to DVI' converter,
- and finally converting the resulting DVI file to PostScript®.
- LyX finds such `chains' of converters automatically, and it will always
- choose the shortest possible chain.
- You can, though, still define multiple conversion methods between file
- formats.
- For example, the standard LyX configuration provides three ways to convert
- LaTeX to PDF: Directly, using
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
-
-\begin_layout Plain Layout
-pdflatex
+Let's look at a keyboard definition file a little closer.
+ It is a plain text file defining
\end_layout
-\end_inset
+\begin_layout Itemize
+key-to-key or key-to-string translations
+\end_layout
-; via (DVI and) PostScript®, using
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
+\begin_layout Itemize
+dead keys
+\end_layout
-\begin_layout Plain Layout
-ps2pdf
+\begin_layout Itemize
+dead keys exceptions
\end_layout
-\end_inset
+\begin_layout Standard
+To define key-to-key or key-to-string translation, use this command:
+\end_layout
-; or via DVI, using
-\begin_inset Flex CharStyle:MenuItem
+\begin_layout Quotation
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-dvipdfm
-\end_layout
-
-\end_inset
-.
- To define such alternate chains, you must define multiple target `file
- formats', as described in section
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sub:Formats"
+\backslash
+kmap
+\end_layout
\end_inset
-.
- For example, in the standard configuration, the formats named
-\begin_inset Flex CharStyle:MenuItem
+
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-pdf
+key
\end_layout
\end_inset
-,
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
-
-\begin_layout Plain Layout
-pdf2
+ outstring
\end_layout
-\end_inset
-
-, and
-\begin_inset Flex CharStyle:MenuItem
+\begin_layout Standard
+where
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-pdf3
+key
\end_layout
\end_inset
- are defined, all of which share the extension
-\begin_inset Flex CharStyle:MenuItem
+ is the key to be translated and
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-.pdf
+outstring
\end_layout
\end_inset
-, and which correspond to the conversion methods just mentioned.
+ is the string to be inserted into the document.
+ To define dead keys, use:
\end_layout
-\begin_layout Section
-Output
-\end_layout
+\begin_layout Quotation
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout Standard
-The settings in this section affect the output LyX produces.
-\end_layout
+\begin_layout Plain Layout
-\begin_layout Subsection
-Plain text export options
+\backslash
+kmod
\end_layout
-\begin_layout Standard
-\noindent
-There are a couple of commands that can be used to
-\begin_inset Quotes eld
-\end_inset
-
-clean up
-\begin_inset Quotes erd
\end_inset
- exported plain text files.
- Note that LyX automatically detects and tries to use the best settings
- for your system at installation time, but you can modify them in the
-\begin_inset Flex CharStyle:MenuItem
+
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Output\SpecialChar \menuseparator
-Plain Text
+key
\end_layout
\end_inset
- dialog if you disagree with its interpretation.
+ deadkey
\end_layout
-\begin_layout Description
+\begin_layout Standard
+where
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-roff command
+key
\end_layout
\end_inset
- This option defines the command used to produce better plain text tables
- with the
+ is a keyboard key and
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-groff/troff/nroff
+deadkey
\end_layout
\end_inset
- UNIX-commands (refer to their manpages for more information about them).
- Setting this as empty tells LyX to use the internal (inferior) formatter.
+ is dead key name.
+ The following dead keys are supported (shortcut name is in parentheses):
\end_layout
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout Quotation
-\begin_layout Plain Layout
-Output line length
+\emph on
+Name
+\begin_inset space \hfill{}
+\end_inset
+
+Example
\end_layout
+\begin_layout Quotation
+acute (acu)
+\begin_inset space \hfill{}
\end_inset
- With this command you can set the default line length of the plain text
- output file.
- Setting it to 0 means that no line breaks will be inserted except between
- paragraphs and the like.
+áéíóú
\end_layout
-\begin_layout Section
-The rest
-\end_layout
+\begin_layout Quotation
+grave (gra)
+\begin_inset space \hfill{}
+\end_inset
-\begin_layout Standard
-There are many other configuration options that can be used to customize
- LyX behavior.
- Most of them are sufficiently self-explanatory that we have not felt it
- necessary to document them here.
- Please ask on the
-\begin_inset CommandInset href
-LatexCommand href
-name "mailing lists"
-target "http://www.lyx.org/mailing.php"
+àèìòù
+\end_layout
+\begin_layout Quotation
+macron (mac)
+\begin_inset space \hfill{}
\end_inset
- if you need some more information.
+ ō
\end_layout
-\begin_layout Chapter
-Internationalizing LyX
-\begin_inset CommandInset label
-LatexCommand label
-name "chap:i18n"
-
+\begin_layout Quotation
+tilde (til)
+\begin_inset space \hfill{}
\end_inset
-
+ñÑ
\end_layout
-\begin_layout Standard
-LyX supports using a translated interface.
- Last time we checked, LyX provided text in thirty languages.
- The language of choice is called your
-\emph on
-locale
-\emph default
-.
- (For further reading on locale settings, see also the documentation for
- locale that comes with your operating system.
- For Linux, the manual page for
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout Quotation
+underbar (underb)
+\begin_inset space \hfill{}
+\end_inset
+
+
+\begin_inset ERT
+status open
\begin_layout Plain Layout
-locale(5)
+
+
+\backslash
+b o
\end_layout
\end_inset
- could be a good place to start).
+
\end_layout
-\begin_layout Standard
-Notice that these translations will work, but do contain a few flaws.
- In particular, all dialogs have been designed with the English text in
- mind, which means that some of the translated text will be too large to
- fit within the space allocated.
- This is only a display problem and will not cause any harm.
- Also, you will find that some of the translations do not define shortcut
- keys for everything.
- Sometimes, there are simply not enough free letters to do it.
- Other times, the translator just hasn't got around to doing it yet.
- Our localization team, which you may wish to join,
-\begin_inset Foot
-status collapsed
+\begin_layout Quotation
+cedilla (ced)
+\begin_inset space \hfill{}
+\end_inset
-\begin_layout Plain Layout
-If you are a fluent speaker of a language other than English, joining these
- teams is a great way to give back to the LyX community!
+çÇ
\end_layout
+\begin_layout Quotation
+underdot (underd)
+\begin_inset space \hfill{}
\end_inset
- will of course try to fix these shortcomings in future versions of LyX.
-\end_layout
-\begin_layout Section
-Translating LyX
-\end_layout
+\begin_inset ERT
+status open
-\begin_layout Subsection
-Translating the graphical user interface (text messages).
+\begin_layout Plain Layout
+
+
+\backslash
+d o
\end_layout
-\begin_layout Standard
-LyX uses the GNU
-\begin_inset Flex CharStyle:Code
-status collapsed
+\end_inset
+
-\begin_layout Plain Layout
-gettext
\end_layout
+\begin_layout Quotation
+circumflex (circu)
+\begin_inset space \hfill{}
\end_inset
- library to handle the internationalization of the interface.
- To have LyX speak your favorite language in all menus and dialogs, you
- need a
-\begin_inset Flex CharStyle:Code
-status collapsed
+âêîôû
+\end_layout
-\begin_layout Plain Layout
-po
+\begin_layout Quotation
+circle (circl)
+\begin_inset space \hfill{}
+\end_inset
+
+ÅůŮ
\end_layout
+\begin_layout Quotation
+tie (tie)
+\begin_inset space \hfill{}
\end_inset
--file for that language.
- When this is available, you'll have to generate a
-\begin_inset Flex CharStyle:Code
+
+\begin_inset ERT
status open
\begin_layout Plain Layout
-mo
+
+
+\backslash
+t o
\end_layout
\end_inset
--file from it and install the
-\begin_inset Flex CharStyle:Code
-status collapsed
-\begin_layout Plain Layout
-mo
\end_layout
+\begin_layout Quotation
+breve (bre)
+\begin_inset space \hfill{}
\end_inset
--file.
- The process of doing all of this is explained in the documentation for
- GNU
-\begin_inset Flex CharStyle:Code
-status collapsed
+ă
+\begin_inset ERT
+status open
\begin_layout Plain Layout
-gettext
+
+
+\backslash
+u o
\end_layout
\end_inset
-.
- It is possible to do this just for yourself, but if you're going to do
- it, you might as well share the results of your labors with the rest of
- the LyX community.
- Send a message to the LyX developers' list for more information about how
- to proceed.
-\end_layout
-\begin_layout Standard
-In short, this is what you should do (xx denotes the language code):
\end_layout
-\begin_layout Itemize
-Check out the LyX source code.
- (See the
-\begin_inset CommandInset href
-LatexCommand href
-name "information on the web"
-target "http://www.lyx.org/devel/cvs.php"
+\begin_layout Quotation
+caron (car)
+\begin_inset space \hfill{}
+\end_inset
+
+čšž
+\end_layout
+\begin_layout Quotation
+hungarian umlaut (hug)
+\begin_inset space \hfill{}
\end_inset
-.)
+őű
\end_layout
-\begin_layout Itemize
-Copy the file
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout Quotation
+umlaut (uml)
+\begin_inset space \hfill{}
+\end_inset
-\begin_layout Plain Layout
-lyx.pot
+äöü
\end_layout
+\begin_layout Quotation
+dot (dot)
+\begin_inset space \hfill{}
\end_inset
- to the folder of the
-\begin_inset Flex CharStyle:Code
-status collapsed
+ż
+\begin_inset ERT
+status open
\begin_layout Plain Layout
-**.po
+
+
+\backslash
+.s
\end_layout
\end_inset
- files.
- Then rename it to
-\begin_inset Flex CharStyle:Code
-status collapsed
-\begin_layout Plain Layout
-xx.po
\end_layout
-\end_inset
+\begin_layout Standard
+Since in many international keyboards there are exceptions to what some
+ dead keys should do, you can define them using
+\end_layout
-.
- (If
+\begin_layout Quotation
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-lyx.pot
+
+\backslash
+kxmod
\end_layout
\end_inset
- doesn't exist anywhere, it can be remade with the console command
+ deadkey key outstring
+\end_layout
+
+\begin_layout Standard
+For example, on Slovak keyboard, if you enter caron-o, it generates circumflex-o
+, so you put in
+\end_layout
+
+\begin_layout Quotation
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-make lyx.pot
+
+\backslash
+kxmod
\end_layout
\end_inset
- in that directory, or you can use an existing po-file for some other language
- as a template).
+ caron o "
+\backslash
+^o"
\end_layout
-\begin_layout Itemize
-Edit
+\begin_layout Standard
+to make it work correctly.
+ Also, you have to define as exceptions dead keys over i and j, to remove
+ the dot from them before inserting an accent mark.
+ I will change this when the time comes, but so far I haven't had time.
+\end_layout
+
+\begin_layout Standard
+Oh, and about characters: backslash is escaped, so to enter it, you'll need
+ double backslash.
+ Also, quotes and
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-xx.po
+#
\end_layout
\end_inset
-.
-\begin_inset Foot
+ have different meaning.
+
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-This is just a text file, so it can be edited in any text editor.
- But there are also specialized programs that support such editing, such
- as
-\family typewriter
-Poedit
-\family default
- (for all platforms) or
-\family typewriter
-KBabel
-\family default
- (for KDE).
-
-\family typewriter
-Emacs
-\family default
- contains a `mode' for editing
+#
+\end_layout
+
+\end_inset
+
+ marks comments, quotes start and end LaTeX-style commands.
+ To enter quote, you'll need to use
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-po
+
+\backslash
+"
\end_layout
\end_inset
- files, as well.
+, to enter
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+#
\end_layout
\end_inset
- For some menu- and widget-labels, there are also shortcut keys that should
- be translated.
- Those keys are marked after a `|', and should be translated according to
- the words and phrases of the language.
- You should also fill also out the information at the beginning of the new
-
+, use
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-po
+
+\backslash
+#
\end_layout
\end_inset
--file with your email-address, etc., so people know where to reach you with
- suggestions and entertaining flames.
+.
\end_layout
\begin_layout Standard
-If you are just doing this on your own, then:
+If you make a keyboard description file that works for your language, please
+ mail it to me, so I can include it in the next keymap distribution.
+\end_layout
+
+\begin_layout Standard
+More keywords will be supported in keymap configuration file in future,
+ like
\end_layout
\begin_layout Itemize
-Generate
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-xx.mo
+
+\backslash
+kinclude filename
\end_layout
\end_inset
-.
- This can be done with
+
+\emph on
+
+\begin_inset space \hfill{}
+\end_inset
+
+
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-msgfmt -o xx.mo < xx.po
+include
\end_layout
\end_inset
-.
+ another file
\end_layout
\begin_layout Itemize
-Copy the
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-mo
+
+\backslash
+kprog program
\end_layout
\end_inset
--file to your locale-tree, at the correct directory for application messages
- for the language
-\series bold
-
-\series default
-xx, and under the name
-\begin_inset Flex CharStyle:Code
-status collapsed
-\begin_layout Plain Layout
-lyx.mo
-\end_layout
+\emph on
+\begin_inset space \hfill{}
\end_inset
- (e.g.
-
+
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-/usr/local/share/locale/xx/LC_MESSAGES/lyx.mo
+define
\end_layout
\end_inset
-
-\series bold
-.
+ an external keymap translation program
\end_layout
\begin_layout Standard
-As said, however, it would be best if the new
+Also, it should look into
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-po
+lyxrc
\end_layout
\end_inset
--file could be added to the LyX distribution, so others can use it.
- Adding it involves making additional changes to LyX.
- So send an email to the developers' mailing list if you're interested in
- doing that.
-\end_layout
-
-\begin_layout Subsubsection
-Ambigous messages
-\end_layout
-
-\begin_layout Standard
-Sometimes it turns out that one English message needs to be translated into
- different messages in the target language.
- One example is the message
+ file for defaults, too (for example, a
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-To
+
+\backslash
+kinclude
\end_layout
\end_inset
- which has the German translation
-\lang german
-Nach
-\lang english
- or
-\lang german
-Bis
-\lang english
-, depending upon exactly what the English
-\begin_inset Quotes eld
-\end_inset
+ option to include default keyboard).
+\end_layout
-to
-\begin_inset Quotes erd
\end_inset
- means.
- GNU
-\begin_inset Flex CharStyle:Code
-status collapsed
-\begin_layout Plain Layout
-gettext
\end_layout
+\begin_layout Section
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:keymap"
+
\end_inset
- does not handle such ambigous translations.
- Therefore you have to add some context information to the message: Instead
- of
-\begin_inset Flex CharStyle:Code
-status collapsed
+International Keymap Stuff
+\end_layout
+
+\begin_layout Standard
+\begin_inset Note Note
+status open
\begin_layout Plain Layout
-To
+In doing the revisions on this document in March 2008, I did not look over
+ this stuff, as I do not understand it.
+ It would be good if someone else could do so.
+ (RH)
\end_layout
\end_inset
- it becomes
+
+\end_layout
+
+\begin_layout Standard
+The next two sections describe the
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-To[[as in 'From format x to format y']]
+
+\shape up
+.kmap
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-To[[as in 'From page x to page y']].
+
+\shape up
+.cdef
\end_layout
\end_inset
- Now the two occurences of
+ file syntax in detail.
+ These sections should help you design your own key map if the ones provided
+ do not meet your needs.
+\end_layout
+
+\begin_layout Subsection
+The .kmap File
+\end_layout
+
+\begin_layout Standard
+A
+\shape up
+.
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-To
+kmap
\end_layout
\end_inset
- are different for
+ file maps keystrokes to characters or strings.
+ As the name suggests, it sets a keyboard mapping.
+ The
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-gettext
+.kmap
\end_layout
\end_inset
- and can be translated correctly to
-\lang german
-Nach
-\lang english
- and
-\lang german
-Bis
-\lang english
-, respectively.
-\end_layout
-
-\begin_layout Standard
-Of course the context information needs to be stripped off the original
- message when no translation is used.
- Therefore you have to put it in double square brackets at the end of the
- message (see the example above).
- The translation mechanism of LyX ensures that everything in double square
- brackets at the end of messages is removed before displaying the message.
-\end_layout
-\begin_layout Subsection
-Translating the documentation.
-\end_layout
+\shape default
+ file keywords
+\shape up
-\begin_layout Standard
-The online documentation (in the
-\begin_inset Flex CharStyle:MenuItem
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-\bar under
-H
-\bar default
-elp
+\shape up
+kmap
\end_layout
\end_inset
--menu) can (and should!) be translated.
- If there are translated versions of the documentation available
-\begin_inset Foot
-status collapsed
-
-\begin_layout Plain Layout
-As of March 2008, at least some of the documents have been translated into
- fourteen languages, with the Tutorial available in a few more.
-\end_layout
-\end_inset
+\shape default
+,
+\shape up
+
+\shape default
- and the locale is set accordingly, these will be used automagically by
- LyX.
- LyX looks for translated versions as
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-LyXDir/doc/xx_DocName.lyx
+
+\shape up
+kmod
\end_layout
\end_inset
-, where
+,
+\shape up
+
+\shape default
+
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-xx
+
+\shape up
+ksmod
\end_layout
\end_inset
- is the code for the language currently in use.
- If there are no translated documents, the default English versions will
- be displayed.
- Note that the translated versions must have the same filenames (
+, and
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-DocName
+
+\shape up
+kcomb
\end_layout
\end_inset
- above) as the original.
- If you feel up to translating the documentation (an excellent way to proof-read
- the original documentation by the way!), there are a few things you should
- do right away:
+ are described in this section.
\end_layout
-\begin_layout Itemize
-Read
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-DocStyle.lyx
+
+\shape up
+kmap
\end_layout
\end_inset
-, the guide to writing LyX documentation.
- Pay special attention to the translator's section.
+ Map a character to a string
\end_layout
-\begin_layout Itemize
-Check out the documentation translation web page at
-\begin_inset CommandInset href
-LatexCommand href
-name "http://www.devel.lyx.org"
-target "http://www.devel.lyx.org"
-
-\end_inset
+\begin_layout LyX-Code
-.
- 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.
+\backslash
+kmap
+\family roman
+\emph on
+char
+\family default
+\emph default
+
+\family roman
+\emph on
+string
\end_layout
\begin_layout Standard
-Once you get to actually translating, here's a few hints for you that may
- save you trouble:
+This will ma
+\family roman
+p
+\family default
+
+\family roman
+\emph on
+char
+\family default
+\emph default
+
+\family roman
+to
+\family default
+
+\family roman
+\emph on
+string
+\emph default
+.
+ Note that in
+\family default
+
+\family roman
+\emph on
+string
+\emph default
+,
+\family default
+
+\family roman
+\shape up
+the double-quote (")
+\family default
+\shape default
+
+\family roman
+and
+\family default
+
+\family roman
+\shape up
+the backslash (
+\backslash
+)
+\family default
+\shape default
+
+\family roman
+must be escaped with a preceding backslash (
+\shape up
+
+\backslash
+
+\shape default
+)
+\family default
+.
\end_layout
-\begin_layout Itemize
-Join the documentation team! There is information on how to do that in
-\begin_inset Flex CharStyle:Code
+\begin_layout Standard
+An example of a
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Intro.lyx
+
+\shape up
+kmap
\end_layout
\end_inset
- (
+ statement to cause the symbol
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-\bar under
-H
-\bar default
-elp\SpecialChar \menuseparator
-
-\bar under
-I
-\bar default
-ntroduction
-\end_layout
-
-\end_inset
-
-), which by the way is the first document you should translate.
-\end_layout
-
-\begin_layout Itemize
-Learn the typographic conventions for the language you are translating to.
- Typography is an ancient art and over the centuries, a great variety of
- conventions have developed throughout different parts of the world.
- Also study the professional terminology amongst typographers in your country.
- Inventing your own terminology will only confuse the users.
-
-\emph on
-(Warning! Typography is addictive!)
-\end_layout
-
-\begin_layout Itemize
-Make a copy of the document.
- This will be your working copy.
- You can use this as your personal translated help-file by placing it in
- your
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-UserDir/doc/
-\end_layout
-
-\end_inset
-
- directory.
-\end_layout
-
-\begin_layout Itemize
-Sometimes the original document (from the LyX-team) will be updated.
- Use the source viewer at
-\begin_inset CommandInset href
-LatexCommand href
-name "http://www.lyx.org/trac/timeline"
-target "http://www.lyx.org/trac/timeline"
-
-\end_inset
-
- to see what has been changed.
- That way you can easily see which parts of the translated document need
- to be updated.
-\end_layout
-
-\begin_layout Standard
-If you ever find an error in the original document, fix it and notify the
- rest of the documentation team of the changes! (You didn't forget to join
- the documentation team, did you?)
-\end_layout
-
-\begin_layout Standard
-\begin_inset Branch OutDated
-status collapsed
-
-\begin_layout Section
-International Keyboard Support
-\end_layout
-
-\begin_layout Standard
-
-\emph on
-[Editor's Note: The following section is by
-\emph default
-
-\shape smallcaps
-\emph on
-Ivan Schreter
-\shape default
-.
- It needs to be fixed to conform to the new Documentation Style sheet and
- to make use of the new v1.0 features.
- The whole thing also needs to be merged with the section following it.-jw
- It may also be badly out of date.-rh (2008)]
-\end_layout
-
-\begin_layout Subsection
-Defining Own Keymaps: Keymap File Format
-\end_layout
-
-\begin_layout Standard
-Let's look at a keyboard definition file a little closer.
- It is a plain text file defining
-\end_layout
-
-\begin_layout Itemize
-key-to-key or key-to-string translations
-\end_layout
-
-\begin_layout Itemize
-dead keys
-\end_layout
-
-\begin_layout Itemize
-dead keys exceptions
-\end_layout
-
-\begin_layout Standard
-To define key-to-key or key-to-string translation, use this command:
-\end_layout
-
-\begin_layout Quotation
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-kmap
-\end_layout
-
-\end_inset
-
-
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-key
-\end_layout
-
-\end_inset
-
- outstring
-\end_layout
-
-\begin_layout Standard
-where
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-key
-\end_layout
-
-\end_inset
-
- is the key to be translated and
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-outstring
-\end_layout
-
-\end_inset
-
- is the string to be inserted into the document.
- To define dead keys, use:
-\end_layout
-
-\begin_layout Quotation
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-kmod
-\end_layout
-
-\end_inset
-
-
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-key
-\end_layout
-
-\end_inset
-
- deadkey
-\end_layout
-
-\begin_layout Standard
-where
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-key
-\end_layout
-
-\end_inset
-
- is a keyboard key and
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-deadkey
-\end_layout
-
-\end_inset
-
- is dead key name.
- The following dead keys are supported (shortcut name is in parentheses):
-\end_layout
-
-\begin_layout Quotation
-
-\emph on
-Name
-\begin_inset space \hfill{}
-\end_inset
-
-Example
-\end_layout
-
-\begin_layout Quotation
-acute (acu)
-\begin_inset space \hfill{}
-\end_inset
-
-áéíóú
-\end_layout
-
-\begin_layout Quotation
-grave (gra)
-\begin_inset space \hfill{}
-\end_inset
-
-àèìòù
-\end_layout
-
-\begin_layout Quotation
-macron (mac)
-\begin_inset space \hfill{}
-\end_inset
-
- ō
-\end_layout
-
-\begin_layout Quotation
-tilde (til)
-\begin_inset space \hfill{}
-\end_inset
-
-ñÑ
-\end_layout
-
-\begin_layout Quotation
-underbar (underb)
-\begin_inset space \hfill{}
-\end_inset
-
-
-\begin_inset ERT
-status open
-
-\begin_layout Plain Layout
-
-
-\backslash
-b o
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Quotation
-cedilla (ced)
-\begin_inset space \hfill{}
-\end_inset
-
-çÇ
-\end_layout
-
-\begin_layout Quotation
-underdot (underd)
-\begin_inset space \hfill{}
-\end_inset
-
-
-\begin_inset ERT
-status open
-
-\begin_layout Plain Layout
-
-
-\backslash
-d o
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Quotation
-circumflex (circu)
-\begin_inset space \hfill{}
-\end_inset
-
-âêîôû
-\end_layout
-
-\begin_layout Quotation
-circle (circl)
-\begin_inset space \hfill{}
-\end_inset
-
-ÅůŮ
-\end_layout
-
-\begin_layout Quotation
-tie (tie)
-\begin_inset space \hfill{}
-\end_inset
-
-
-\begin_inset ERT
-status open
-
-\begin_layout Plain Layout
-
-
-\backslash
-t o
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Quotation
-breve (bre)
-\begin_inset space \hfill{}
-\end_inset
-
-ă
-\begin_inset ERT
-status open
-
-\begin_layout Plain Layout
-
-
-\backslash
-u o
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Quotation
-caron (car)
-\begin_inset space \hfill{}
-\end_inset
-
-čšž
-\end_layout
-
-\begin_layout Quotation
-hungarian umlaut (hug)
-\begin_inset space \hfill{}
-\end_inset
-
-őű
-\end_layout
-
-\begin_layout Quotation
-umlaut (uml)
-\begin_inset space \hfill{}
-\end_inset
-
-äöü
-\end_layout
-
-\begin_layout Quotation
-dot (dot)
-\begin_inset space \hfill{}
-\end_inset
-
-ż
-\begin_inset ERT
-status open
-
-\begin_layout Plain Layout
-
-
-\backslash
-.s
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-Since in many international keyboards there are exceptions to what some
- dead keys should do, you can define them using
-\end_layout
-
-\begin_layout Quotation
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-kxmod
-\end_layout
-
-\end_inset
-
- deadkey key outstring
-\end_layout
-
-\begin_layout Standard
-For example, on Slovak keyboard, if you enter caron-o, it generates circumflex-o
-, so you put in
-\end_layout
-
-\begin_layout Quotation
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-kxmod
-\end_layout
-
-\end_inset
-
- caron o "
-\backslash
-^o"
-\end_layout
-
-\begin_layout Standard
-to make it work correctly.
- Also, you have to define as exceptions dead keys over i and j, to remove
- the dot from them before inserting an accent mark.
- I will change this when the time comes, but so far I haven't had time.
-\end_layout
-
-\begin_layout Standard
-Oh, and about characters: backslash is escaped, so to enter it, you'll need
- double backslash.
- Also, quotes and
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-#
-\end_layout
-
-\end_inset
-
- have different meaning.
-
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-#
-\end_layout
-
-\end_inset
-
- marks comments, quotes start and end LaTeX-style commands.
- To enter quote, you'll need to use
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-"
-\end_layout
-
-\end_inset
-
-, to enter
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-#
-\end_layout
-
-\end_inset
-
-, use
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-#
-\end_layout
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Standard
-If you make a keyboard description file that works for your language, please
- mail it to me, so I can include it in the next keymap distribution.
-\end_layout
-
-\begin_layout Standard
-More keywords will be supported in keymap configuration file in future,
- like
-\end_layout
-
-\begin_layout Itemize
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-kinclude filename
-\end_layout
-
-\end_inset
-
-
-\emph on
-
-\begin_inset space \hfill{}
-\end_inset
-
-
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-include
-\end_layout
-
-\end_inset
-
- another file
-\end_layout
-
-\begin_layout Itemize
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-kprog program
-\end_layout
-
-\end_inset
-
-
-\emph on
-
-\begin_inset space \hfill{}
-\end_inset
-
-
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-define
-\end_layout
-
-\end_inset
-
- an external keymap translation program
-\end_layout
-
-\begin_layout Standard
-Also, it should look into
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-lyxrc
-\end_layout
-
-\end_inset
-
- file for defaults, too (for example, a
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-kinclude
-\end_layout
-
-\end_inset
-
- option to include default keyboard).
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Section
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:keymap"
-
-\end_inset
-
-International Keymap Stuff
-\end_layout
-
-\begin_layout Standard
-\begin_inset Note Note
-status open
-
-\begin_layout Plain Layout
-In doing the revisions on this document in March 2008, I did not look over
- this stuff, as I do not understand it.
- It would be good if someone else could do so.
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-The next two sections describe the
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\shape up
-.kmap
-\end_layout
-
-\end_inset
-
- and
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\shape up
-.cdef
-\end_layout
-
-\end_inset
-
- file syntax in detail.
- These sections should help you design your own key map if the ones provided
- do not meet your needs.
-\end_layout
-
-\begin_layout Subsection
-The .kmap File
-\end_layout
-
-\begin_layout Standard
-A
-\shape up
-.
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-kmap
-\end_layout
-
-\end_inset
-
- file maps keystrokes to characters or strings.
- As the name suggests, it sets a keyboard mapping.
- The
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-.kmap
-\end_layout
-
-\end_inset
-
-
-\shape default
- file keywords
-\shape up
-
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\shape up
-kmap
-\end_layout
-
-\end_inset
-
-
-\shape default
-,
-\shape up
-
-\shape default
-
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\shape up
-kmod
-\end_layout
-
-\end_inset
-
-,
-\shape up
-
-\shape default
-
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\shape up
-ksmod
-\end_layout
-
-\end_inset
-
-, and
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\shape up
-kcomb
-\end_layout
-
-\end_inset
-
- are described in this section.
-\end_layout
-
-\begin_layout Labeling
-\labelwidthstring 00.00.0000
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\shape up
-kmap
-\end_layout
-
-\end_inset
-
- Map a character to a string
-\end_layout
-
-\begin_layout LyX-Code
-
-\backslash
-kmap
-\family roman
-\emph on
-char
-\family default
-\emph default
-
-\family roman
-\emph on
-string
-\end_layout
-
-\begin_layout Standard
-This will ma
-\family roman
-p
-\family default
-
-\family roman
-\emph on
-char
-\family default
-\emph default
-
-\family roman
-to
-\family default
-
-\family roman
-\emph on
-string
-\emph default
-.
- Note that in
-\family default
-
-\family roman
-\emph on
-string
-\emph default
-,
-\family default
-
-\family roman
-\shape up
-the double-quote (")
-\family default
-\shape default
-
-\family roman
-and
-\family default
-
-\family roman
-\shape up
-the backslash (
-\backslash
-)
-\family default
-\shape default
-
-\family roman
-must be escaped with a preceding backslash (
-\shape up
-
-\backslash
-
-\shape default
-)
-\family default
-.
-\end_layout
-
-\begin_layout Standard
-An example of a
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
-
-\begin_layout Plain Layout
-
-\shape up
-kmap
-\end_layout
-
-\end_inset
-
- statement to cause the symbol
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
-
-\begin_layout Plain Layout
-
-\shape up
-/
-\end_layout
+\shape up
+/
+\end_layout
\end_inset
\emph default
\family roman
-followed by the other, unallowed key, as output.
+followed by the other, not allowed key, as output.
\family default
Note that a
\shape up
\emph on
result
-\family default
-\shape default
\emph default
-
-\family roman
-\shape up
is produced.
If such a declaration does not exist in
\family default
\family roman
\emph on
-accent char
+accent char
\emph default
, you get
\family default
\family roman
\emph on
accent_key char
-\family default
\emph default
-
-\family roman
where
\family default
\family roman
\emph on
accent_key
-\family default
\emph default
-
-\family roman
is the first arg
\family default
ument of the
\end_inset
- to set up the special
+ to set up the special
\begin_inset Flex CharStyle:Code
status collapsed
\end_layout
\begin_layout Standard
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:savlang"
-
-\end_inset
-
You can edit your preferences so that your desired language environment
is automatically configured when LyX starts up, via the
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-
-\bar under
-E
-\bar default
-dit\SpecialChar \menuseparator
-
-\bar under
-P
-\bar default
-references
+Edit\SpecialChar \menuseparator
+Preferences
\end_layout
\end_inset
can be used somewhat interchangeably, but it is better to refer to the
file as the layout, and the thing living in LyX's memory as the text class.
A template file is simply a LyX document that contains a set of predefined
- entries for a given document class---entries that are generally required
+ entries for a given document class—entries that are generally required
for that class.
Templates are especially useful for things like journal manuscripts that
are to be submitted electronically.
\begin_layout Standard
Some installations may not include a LaTeX package that you would like to
use within LyX.
- For example, you might need FoilTeX, a common (and very powerful) package
- for preparing slides or viewgraphs for overhead projectors.
- On some systems, you may have a GUI for installing such packages: MikTeX
- on Windows®, for example.
+ For example, you might need FoilTeX, a package for preparing slides or
+ viewgraphs for overhead projectors.
+ Modern LaTeX distributions like TeXLive (2008 or newer) or MiKTeX provide
+ a user interface for that.
+ For example on MiKTeX you start its program
+\begin_inset Quotes eld
+\end_inset
+
+Browse Packages
+\begin_inset Quotes erd
+\end_inset
+
+ to get a list of available packages.
+ To install one, right click on it or use the installing toolbar button.
+ When the package you want to install is not in the list, but you have it
+ in form of a
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+.cls
+\end_layout
+
+\end_inset
+
+ or
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+.sty
+\end_layout
+
+\end_inset
+
+-file, then copy these files to a subfolder of your LaTeX distribution,
+ for example to the folder
+\family sans
+~
+\backslash
+tex
+\backslash
+latex
+\family default
+.
+ Then update the file name database of your LaTeX-distribution.
+ For example on MiKTeX this is done by pressing the button
+\family sans
+Refresh
+\begin_inset space ~
+\end_inset
+
+FNDB
+\family default
+ that you find in MiKTeX's
+\begin_inset Quotes eld
+\end_inset
+
+Settings
+\begin_inset Quotes erd
+\end_inset
+
+ program.
+ In both cases you need afterwards to reconfigure LyX using the menu
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
+
+\begin_layout Plain Layout
+Tools\SpecialChar \menuseparator
+Reconfigure
+\end_layout
+
+\end_inset
+
+ and then to restart LyX.
\end_layout
\begin_layout Standard
-If you don't have such a GUI, then you can follow these steps.
+If your LaTeX distribution doesn't provide a user interface, then you can
+ follow these steps by using a UNIX/Linux console.
\end_layout
\begin_layout Enumerate
\end_inset
- variables; e.g.
-
+ variables; e.
+\begin_inset space \thinspace{}
+\end_inset
+
+g.
\begin_inset Newline newline
\end_inset
status collapsed
\begin_layout Plain Layout
-
-\bar under
-T
-\bar default
-ools\SpecialChar \menuseparator
-
-\bar under
-R
-\bar default
-econfigure
+Tools\SpecialChar \menuseparator
+Reconfigure
\end_layout
\end_inset
) and then restart LyX.
- You should then see your new package---for example
+ You should then see your new package—for example
\begin_inset Flex CharStyle:MenuItem
status collapsed
\end_inset
----under
+—under
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-
-\bar under
-D
-\bar default
-ocument\SpecialChar \menuseparator
-
-\bar under
-S
-\bar default
-ettings
+Document\SpecialChar \menuseparator
+Settings
\end_layout
\end_inset
\end_layout
\begin_layout Section
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:Layouts"
-
-\end_inset
-
Layouts
\end_layout
\end_inset
.
- If the argument has a datatype like
+ If the argument has a data type like
\begin_inset Quotes eld
\end_inset
\emph default
.
Modules are to LaTeX packages much as layouts are to LaTeX classes, and
- some modules---such as the Endnotes module---provide support for just such
+ some modules—such as the endnotes module—provide support for just such
a package.
- In a sense, layout modules are similar to included files---files like
+ In a sense, layout modules are similar to included files—files like
\begin_inset Flex CharStyle:Code
status collapsed
\end_inset
----in that modules are not specific to a given document layout but may be
+—in that modules are not specific to a given document layout but may be
used with many different layouts.
The difference is that using a layout module does not require editing the
layout file.
status collapsed
\begin_layout Plain Layout
-
-\bar under
-D
-\bar default
-ocument\SpecialChar \menuseparator
-
-\bar under
-S
-\bar default
-ettings
+Document\SpecialChar \menuseparator
+Settings
\end_layout
\end_inset
\begin_layout LyX-Code
#You will need to add
\backslash
-theendnotes in ERT where you
+theendnotes in TeX code where you
\end_layout
\begin_layout LyX-Code
\begin_layout Standard
If your new document class is provided as a style file that is used in conjuncti
-on with an existing, supported document class---for the sake of the example,
+on with an existing, supported document class—for the sake of the example,
we'll assume that the style file is called
\begin_inset Flex CharStyle:MenuItem
status collapsed
\end_inset
-, which is a standard class---start by copying the existing class's layout
+, which is a standard class—start by copying the existing class's layout
file into your local directory:
\end_layout
status collapsed
\begin_layout Plain Layout
-
-\bar under
-T
-\bar default
-ools\SpecialChar \menuseparator
-
-\bar under
-R
-\bar default
-econfigure
+Tools\SpecialChar \menuseparator
+Reconfigure
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-
-\bar under
-D
-\bar default
-ocument\SpecialChar \menuseparator
-
-\bar under
-S
-\bar default
-ettings
+Document\SpecialChar \menuseparator
+Settings
\end_layout
\end_inset
dialog.
It is likely that some of the sectioning commands and such in your new
- class will work differently from how they worked in the base class---
+ class will work differently from how they worked in the base class—
\begin_inset Flex CharStyle:Code
status collapsed
\end_inset
- in this example---so you can fiddle around with the settings for the different
+ in this example—so you can fiddle around with the settings for the different
sections if you wish.
\end_layout
status collapsed
\begin_layout Plain Layout
-
-\bar under
-D
-\bar default
-ocument\SpecialChar \menuseparator
-
-\bar under
-S
-\bar default
-ettings
+Document\SpecialChar \menuseparator
+Settings
\end_layout
\end_inset
\begin_layout Standard
The class need only be specified if the name of the LaTeX class file and
- the name of the layout file are different; if the name of the classfile
+ the name of the layout file are different; if the name of the class file
is not specified, then LyX will simply assume that it is the same as the
name of the layout file.
\end_layout
status collapsed
\begin_layout Plain Layout
-
-\bar under
-T
-\bar default
-ools\SpecialChar \menuseparator
-
-\bar under
-R
-\bar default
-econfigure
+Tools\SpecialChar \menuseparator
+Reconfigure
\end_layout
\end_inset
\end_inset
.
- There is no default binding for this function---though, of course, you
- can bind it to a key yourself (see section
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sec:bindings"
-
-\end_inset
-
-).
+ There is no default binding for this function—though, of course, you can
+ bind it to a key yourself.
If you want to use this function, then, you should simply enter it in the
mini-buffer.
] This tag was introduced with LyX 1.4.0 (layout files of LyX 1.3.x and earlier
don't have an explicit file format).
- The file format that is documented here is format 7.
+ The file format that is documented here is format 12.
\end_layout
\begin_layout Subsection
status collapsed
\begin_layout Plain Layout
-
-\bar under
-D
-\bar default
-ocument\SpecialChar \menuseparator
-
-\bar under
-S
-\bar default
-ettings
+Document\SpecialChar \menuseparator
+Settings
\end_layout
\end_inset
\begin_inset Flex CharStyle:Code
status collapsed
+\begin_layout Plain Layout
+DefaultModule
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+string]
+\end_layout
+
+\end_inset
+
+ Specifies a module to be included by default with this document class,
+ which should be specified by filename without the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+.module
+\end_layout
+
+\end_inset
+
+ extension.
+ The user can still remove the module, but it will be active at the outset.
+ (This applies only when new files are created, or when this class is chosen
+ for an existing document.)
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
\begin_layout Plain Layout
DefaultStyle
\end_layout
\begin_inset Flex CharStyle:Code
status collapsed
+\begin_layout Plain Layout
+ExcludesModule
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] Indicates that the module in question—which should be specified by filename
+ without the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+.module
+\end_layout
+
+\end_inset
+
+ extension—cannot be used with this document class.
+ This might be used in a journal-specific layout file to prevent, say, the
+ use of the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+theorems-sec
+\end_layout
+
+\end_inset
+
+ module that numbers theorems by section.
+ This tag may
+\emph on
+not
+\emph default
+ be used in a module.
+ Modules have their own way of excluding other modules (see
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sub:Layout-modules"
+
+\end_inset
+
+).
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
\begin_layout Plain Layout
Float
\end_layout
This section (re-)defines the layout of an inset.
It can be applied to an existing inset of to a new, user-defined inset,
- e.g., a new character style.
+ e.
+\begin_inset space \thinspace{}
+\end_inset
+
+g.
+\begin_inset space \space{}
+\end_inset
+
+a new character style.
See Section
\begin_inset space ~
\end_inset
\end_inset
- [[FIXME]]
+ A string that indicates the width of the left margin on the screen, for
+ example,
+\begin_inset Quotes eld
+\end_inset
+
+MMMMM
+\begin_inset Quotes erd
+\end_inset
+
+.
\end_layout
\begin_layout Description
\end_inset
- [[FIXME]]
+ A string indicating what sort of output documents using this class will
+ produce.
+ At present, the options are: `docbook', `latex', and `literate'.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-
-\bar under
-D
-\bar default
-ocument\SpecialChar \menuseparator
-
-\bar under
-S
-\bar default
-ettings
+Document\SpecialChar \menuseparator
+Settings
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-Premable
+Preamble
\end_layout
\end_inset
\begin_inset Flex CharStyle:Code
status collapsed
-\begin_layout Plain Layout
-Provides
-\end_layout
-
-\end_inset
-
-
-\begin_inset CommandInset label
-LatexCommand label
-name "des:Provides"
+\begin_layout Plain Layout
+Provides
+\end_layout
\end_inset
-[
+ [
\begin_inset Flex CharStyle:Code
status collapsed
,\SpecialChar \ldots{}
); the complete list of supported features is unfortunately not documented
- outside the LyX source code---but see
+ outside the LyX source code—but see
\begin_inset Flex CharStyle:Code
status collapsed
status collapsed
\begin_layout Plain Layout
+Help\SpecialChar \menuseparator
+LaTeX Configuration
+\end_layout
-\bar under
-H
-\bar default
-elp\SpecialChar \menuseparator
+\end_inset
-\bar under
-L
-\bar default
-aTeX Configuration
+ also gives an overview of the supported packages.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+ProvidesModule
\end_layout
\end_inset
- also gives an overview of the supported packages.
+ [
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] Indicates that this layout provides the functionality of the module mentioned,
+ which should be specified by the filename without the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+.module
+\end_layout
+
+\end_inset
+
+ extension.
+ This will typically be used if the layout includes the module directly,
+ rather than using the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+DefaultModule
+\end_layout
+
+\end_inset
+
+ tag to indicate that it ought to be used.
+ It could be used in a module that provided an alternate implementation
+ of the same functionality.
\end_layout
\begin_layout Description
\end_inset
-] Whether the class requires the feature
+] Whether the class requires the feature
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
- string
+string
\end_layout
\end_inset
\end_inset
- [[FIXME]]
+ A string that indicates the width of the right margin on the screen, for
+ example,
+\begin_inset Quotes eld
+\end_inset
+
+MMMMM
+\begin_inset Quotes erd
+\end_inset
+
+.
\end_layout
\begin_layout Description
\end_inset
- [[FIXME]]
+ Sets which divisions get numbered.
+ Corresponds to the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+secnumdepth
+\end_layout
+
+\end_inset
+
+ counter in LaTeX.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-
-\bar under
-D
-\bar default
-ocument\SpecialChar \menuseparator
-
-\bar under
-S
-\bar default
-ettings
+Document\SpecialChar \menuseparator
+Settings
\end_layout
\end_inset
\end_inset
- [[FIXME]]
+ Sets which divisions are included in the table of contents.
+ Corresponds to the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+tocdepth
+\end_layout
+
+\end_inset
+
+ counter in LaTeX.
\end_layout
\begin_layout Subsection
\end_inset
- [[FIXME]]
+ Used to set the DTD line with XML-based output classes.
+ E.
+\begin_inset space \thinspace{}
+\end_inset
+
+g.: PUBLIC
+\begin_inset Quotes eld
+\end_inset
+
+-//OASIS//DTD DocBook V4.2//EN
+\begin_inset Quotes erd
+\end_inset
+
+.
\end_layout
\begin_layout Description
\end_inset
- [[FIXME]]
+ Depth of XML command.
+ Used only with XML-type formats.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-
-\bar under
-E
-\bar default
-dit\SpecialChar \menuseparator
-
-\bar under
-P
-\bar default
-aragraph
+Edit\SpecialChar \menuseparator
+Paragraph
\begin_inset space ~
\end_inset
\end_inset
-.
- Note that defining this font automatically defines the
+.
+ Note that defining this font automatically defines the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+LabelFont
+\end_layout
+
+\end_inset
+
+ to the same value.
+ So you should define this one first if you also want to define
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+LabelFont
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+FreeSpacing
+\end_layout
+
+\end_inset
+
+
+\begin_inset CommandInset label
+LatexCommand label
+name "des:FreeSpacing"
+
+\end_inset
+
+[
+\emph on
+
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\emph on
+0
+\end_layout
+
+\end_inset
+
+
+\emph default
+,
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+
+] Usually LyX doesn't allow you to insert more than one space between words,
+ since a space is considered as the separation between two words, not a
+ character or symbol of its own.
+ This is a very fine thing but sometimes annoying, for example, when typing
+ program code or plain LaTeX code.
+ For this reason,
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+FreeSpacing
+\end_layout
+
+\end_inset
+
+ can be enabled.
+ Note that LyX will create protected blanks for the additional blanks when
+ in another mode than LaTeX-mode.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+I18NPreamble
+\end_layout
+
+\end_inset
+
+ Language dependent information to be included in the LaTeX preamble when
+ this style is used.
+ Note that this will completely override any prior
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+I18NPreamble
+\end_layout
+
+\end_inset
+
+ declarations.
+ Must end with
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+EndI18NPreamble
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+.
+ The contents of this tag will occur once in the LaTeX preamble for each
+ language used by the document.
+ Each time, the following substitutions are made:
+\end_layout
+
+\begin_deeper
+\begin_layout Itemize
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+$$lang
+\end_layout
+
+\end_inset
+
+ is replaced by the language name (as used by the babel package).
+\end_layout
+
+\begin_layout Itemize
+The
+\begin_inset Quotes eld
+\end_inset
+
+Function
+\begin_inset Quotes erd
+\end_inset
+
+
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+_()
+\end_layout
+
+\end_inset
+
+ replaces its argument by the translation of the argument to the current
+ language.
+\end_layout
+
+\begin_layout Standard
+If the style defines text that appears in the typeset document, it may use
+
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-LabelFont
+I18NPreamble
\end_layout
\end_inset
- to the same value.
- So you should define this one first if you also want to define
+ to support non-english and even multilanguage documents correctly.
+ The following excerpt (from the
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-LabelFont
+theorems-ams.inc
\end_layout
\end_inset
-.
+ file) shows how this works:
\end_layout
-\begin_layout Description
+\begin_layout LyX-Code
+Preamble
+\end_layout
+
+\begin_layout LyX-Code
+
+\backslash
+providecommand{
+\backslash
+claimname}{Claim}
+\end_layout
+
+\begin_layout LyX-Code
+
+\backslash
+theoremstyle{remark}
+\end_layout
+
+\begin_layout LyX-Code
+
+\backslash
+newtheorem{claim}[thm]{
+\backslash
+protect
+\backslash
+claimname}
+\end_layout
+
+\begin_layout LyX-Code
+EndPreamble
+\end_layout
+
+\begin_layout LyX-Code
+I18nPreamble
+\end_layout
+
+\begin_layout LyX-Code
+
+\backslash
+AtBeginDocument{
+\backslash
+ifx
+\backslash
+LdfInit
+\backslash
+undefined
+\backslash
+relax
+\backslash
+else%
+\end_layout
+
+\begin_layout LyX-Code
+
+\backslash
+addto
+\backslash
+captions$$lang{
+\backslash
+renewcommand{
+\backslash
+claimname}{_(Claim)}}%
+\end_layout
+
+\begin_layout LyX-Code
+
+\backslash
+fi}
+\end_layout
+
+\begin_layout LyX-Code
+EndI18nPreamble
+\end_layout
+
+\begin_layout Standard
+The key to correct translation of the user visible text is the definition
+ of the command
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-FreeSpacing
+
+\backslash
+claimname
\end_layout
\end_inset
-
-\begin_inset CommandInset label
-LatexCommand label
-name "des:FreeSpacing"
+ in the standard preamble.
+ This command holds the name of the theorem that will appear in the output.
+ The
+\begin_inset Flex CharStyle:Code
+status collapsed
-\end_inset
+\begin_layout Plain Layout
+I18NPreamble
+\end_layout
-[
-\emph on
+\end_inset
+ then uses the commands offered by the babel package to redefine
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-\emph on
-0
+\backslash
+claimname
\end_layout
\end_inset
-
-\emph default
-,
+ for each used language.
+ The
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-1
+
+\backslash
+ifx
+\backslash
+LdfInit
\end_layout
\end_inset
-] Usually LyX doesn't allow you to insert more than one space between words,
- since a space is considered as the separation between two words, not a
- character or symbol of its own.
- This is a very fine thing but sometimes annoying, for example, when typing
- program code or plain LaTeX code.
- For this reason,
+ test ensures that no LaTeX error occurs in documents that do not use babel.
+ Since LyX loads babel after the style-specific preamble, the whole command
+ is deferred to the actual start of the document with
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-FreeSpacing
+
+\backslash
+AtBeginDocument
\end_layout
\end_inset
- can be enabled.
- Note that LyX will create protected blanks for the additional blanks when
- in another mode than LaTeX-mode.
+.
\end_layout
+\end_deeper
\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\end_inset
- [[FIXME]]
+ [[FIXME]] (Used only with XML-type formats.)
\end_layout
\begin_layout Description
\end_inset
- [[FIXME]]
+ [[FIXME]] (Used only with XML-type formats.)
\end_layout
\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
+\begin_layout Plain Layout
+LabelIndent
+\end_layout
+
+\end_inset
+
+ Text that indicates how far a label should be indented.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
\begin_layout Plain Layout
Labelsep
\end_layout
\begin_inset Flex CharStyle:Code
status collapsed
+\begin_layout Plain Layout
+LabelTag
+\end_layout
+
+\end_inset
+
+ [FIXME] (Used only with XML-type formats.)
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
\begin_layout Plain Layout
Labeltype
\end_layout
\begin_inset Flex CharStyle:Code
status collapsed
-\begin_layout Plain Layout
-LatexFooter
-\end_layout
-
-\end_inset
-
- [[FIXME]]
-\end_layout
-
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-LatexHeader
-\end_layout
-
-\end_inset
-
- [[FIXME]]
-\end_layout
-
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
-
\begin_layout Plain Layout
LatexName
\end_layout
\end_inset
-
-\begin_inset CommandInset label
-LatexCommand label
-name "des:LatexName"
-
-\end_inset
-
-The name of the corresponding LaTeX stuff.
+ The name of the corresponding LaTeX stuff.
Either the environment or command name.
\end_layout
\begin_inset Flex CharStyle:Code
status collapsed
-\begin_layout Plain Layout
-LatexParagraph
-\end_layout
-
-\end_inset
-
- [[FIXME]]
-\end_layout
-
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
-
\begin_layout Plain Layout
LatexParam
\end_layout
\end_inset
-
-\begin_inset CommandInset label
-LatexCommand label
-name "des:LatexParam"
-
-\end_inset
-
-An optional parameter for the corresponding
+ An optional parameter for the corresponding
\begin_inset Flex CharStyle:Code
status collapsed
\end_layout
\begin_layout Standard
-depending upon the LaTex type.
+depending upon the LaTeX type.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-
-\bar under
-E
-\bar default
-dit\SpecialChar \menuseparator
-
-\bar under
-P
-\bar default
-aragraph
+Edit\SpecialChar \menuseparator
+Paragraph
\begin_inset space ~
\end_inset
\end_inset
-
-\begin_inset CommandInset label
-LatexCommand label
-name "des:NeedProtect"
-
-\end_inset
-
-[
+ [
\begin_inset Flex CharStyle:Code
status collapsed
\end_inset
'ed.
+ (Note: This is
+\emph on
+not
+\emph default
+ whether this command should itself be protected.)
\end_layout
\begin_layout Description
\end_inset
- [[FIXME]]
+ Name of a layout that has replaced this layout.
+ This is used to rename a layout, while keeping backward compatibility.
\end_layout
\begin_layout Description
\begin_inset CommandInset label
LatexCommand label
-name "des:PassThru"
+name "des:PathThru"
\end_inset
\end_inset
-Information to be included in the LaTeX preamable when this style is used.
+Information to be included in the LaTeX preamble when this style is used.
Used to define macros, load packages, etc., required by this particular
style.
Must end with
\end_inset
specifier is special and, because of implementation details, cannot be
- used in non-builtin float types.
+ used in non-built in float types.
If you do not understand what this means, just use
\begin_inset Quotes eld
\end_inset
\end_layout
\begin_layout Subsection
-Inset layouts and Flex insets
+Flex insets and InsetLayout
\end_layout
\begin_layout Standard
\end_inset
-LyX has supported character styles since version 1.4.0; since version 1.6.0
+LyX has supported character styles since version 1.4.0; as of version 1.6.0,
these are called Flex insets.
\end_layout
-\begin_layout Standard
-Furthermore, it is possible to define the general layout of many different
- types of insets.
- Currently, InsetLayout can be used to customize the layout parameters
- for footnotes, marginal notes, note insets, ERT insets, branches, listings,
- indexes, boxes, tables, algorithms, URLs, and optional arguments, as well
- as Flex insets.
-
-\end_layout
-
\begin_layout Standard
Flex insets come in three different kinds:
\end_layout
\end_inset
-): These can be used to define custom collapsable insets, similar to ERT,
- footnote, and the like.
+): These can be used to define custom collapsible insets, similar to TeX
+ code, footnote, and the like.
+ An obvious example is an endnote inset, which is defined in the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+endnote
+\end_layout
+
+\end_inset
+
+ module.
\end_layout
\begin_layout Itemize
\end_layout
\begin_layout Standard
-The
+Flex insets are defined using the
\begin_inset Flex CharStyle:Code
status collapsed
\end_inset
- definition starting line is of the form
+ tag, which shall be explained in a moment.
\end_layout
-\begin_layout LyX-Code
-InsetLayout <Type> <Name>
+\begin_layout Standard
+The
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+InsetLayout
\end_layout
-\begin_layout Standard
-where
+\end_inset
+
+ tag also serves another function: It can be used to customize the general
+ layout of many different types of insets.
+ Currently,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-<Type>
+InsetLayout
\end_layout
\end_inset
- can be
+ can be used to customize the layout parameters for footnotes, marginal
+ notes, note insets, TeX code (ERT) insets, branches, listings, indexes,
+ boxes, tables, algorithms, URLs, and optional arguments, as well as to
+ define Flex insets.
+\end_layout
+
+\begin_layout Standard
+The
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Algorithm
+InsetLayout
\end_layout
\end_inset
-,
+ definition must begin with a line of the form:
+\end_layout
+
+\begin_layout LyX-Code
+InsetLayout <Type>
+\end_layout
+
+\begin_layout Standard
+Here
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Branch
+<Type>
\end_layout
\end_inset
-,
+ indicates the inset whose layout is being defined, and here there are two
+ cases.
+\end_layout
+
+\begin_layout Enumerate
+The layout for a pre-existing inset is being modified.
+ In this case, can be
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Box
+<Type>
\end_layout
\end_inset
-,
+ any one of the following:
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-ERT
+Algorithm
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-Figure
+Branch
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-Foot
+Box
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-Index
+Box:shaded
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-Listings
+ERT
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-Marginal
+Figure
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-Note:Comment
+Foot
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-Note:Note
+Index
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-Note:GreyedOut
+Info
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-OptArg
+Info:menu
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-Table
+Info:shortcut
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-URL
+Info:shortcuts
\end_layout
\end_inset
-, or
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Flex
+Listings
\end_layout
\end_inset
-.
- If
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-<Type>
+Marginal
\end_layout
\end_inset
- is
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Flex
+Note:Comment
\end_layout
\end_inset
-, then
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-<Name>
+Note:Note
\end_layout
\end_inset
- should have the form
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-SubType:StyleName
+Note:GreyedOut
\end_layout
\end_inset
-, where
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-SubType
+OptArg
\end_layout
\end_inset
- is either
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-CharStyle
+Table
\end_layout
\end_inset
-,
+, or
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Custom
+URL
\end_layout
\end_inset
-, or
+.
+
+\end_layout
+
+\begin_layout Enumerate
+The layout for a Flex inset is being defined.
+ In this case,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Element
+<Type>
\end_layout
\end_inset
-, and
+ can be any valid identifier not used by a pre-existing inset.
+ Note that the definition of a flex inset must
+\emph on
+ als
+\emph default
+o include a
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-StyleName
+LyXType
\end_layout
\end_inset
- is any valid identifier.
-
+ entry.
\end_layout
\begin_layout Standard
-The following
+The
\begin_inset Flex CharStyle:Code
status collapsed
\end_inset
- section can contain the following entries:
+ definition can contain the following entries:
\end_layout
\begin_layout Description
\end_inset
The color for the inset's background.
- These valid colors are defined in
+ The valid colors are defined in
\begin_inset Flex CharStyle:Code
status collapsed
\begin_inset Flex CharStyle:Code
status collapsed
+\begin_layout Plain Layout
+CustomPars
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\emph on
+0
+\end_layout
+
+\end_inset
+
+,
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+
+] Indicates whether the user may employ the Paragraph Settings dialog to
+ customize the paragraph.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
\begin_layout Plain Layout
Decoration
\end_layout
\end_inset
-; ERT insets generally use
+, ERT insets generally
\begin_inset Flex CharStyle:Code
status collapsed
\end_inset
-; and character styles use
+, and character styles
\begin_inset Flex CharStyle:Code
status collapsed
\begin_inset Flex CharStyle:Code
status collapsed
+\begin_layout Plain Layout
+End
+\end_layout
+
+\end_inset
+
+ Required at the end of the InsetLayout declarations.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
\begin_layout Plain Layout
Font
\end_layout
\end_inset
- [[FIXME]]
+ Force the
+\begin_inset Quotes eld
+\end_inset
+
+latex
+\begin_inset Quotes erd
+\end_inset
+
+ language, leading to Left-to-Right (latin) output, e.
+\begin_inset space \thinspace{}
+\end_inset
+
+g.
+\begin_inset space \space{}
+\end_inset
+
+in TeX code or URL.
+ A kludge.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-FreeSpacing
+ForcePlain
\end_layout
\end_inset
- As with paragraph styles (see page
-\begin_inset CommandInset ref
-LatexCommand pageref
-reference "des:FreeSpacing"
+ [
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\emph on
+0
+\end_layout
\end_inset
-).
+,
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+
+] Indicates whether the PlainLayout should be used or, instead, the user
+ can change the paragraph style used in the inset.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-KeepEmpty
+FreeSpacing
\end_layout
\end_inset
As with paragraph styles (see page
\begin_inset CommandInset ref
LatexCommand pageref
-reference "des:KeepEmpty"
+reference "des:FreeSpacing"
\end_inset
status collapsed
\begin_layout Plain Layout
-LabelString
+KeepEmpty
\end_layout
\end_inset
- What will be displayed on the button or elsewhere as the inset label.
- Some inset types (ERT and Branch) modify this label on the fly.
+ As with paragraph styles (see page
+\begin_inset CommandInset ref
+LatexCommand pageref
+reference "des:KeepEmpty"
+
+\end_inset
+
+).
\end_layout
\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
+\begin_layout Plain Layout
+LabelString
+\end_layout
+
+\end_inset
+
+ What will be displayed on the button or elsewhere as the inset label.
+ Some inset types (TeX code and Branch) modify this label on the fly.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
\begin_layout Plain Layout
LatexName
\end_layout
\end_inset
-).
+).
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+LyxType
+\end_layout
+
+\end_inset
+
+ Can be
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+charstyle
+\end_layout
+
+\end_inset
+
+,
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+custom
+\end_layout
+
+\end_inset
+
+,
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+element
+\end_layout
+
+\end_inset
+
+, or
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+end
+\end_layout
+
+\end_inset
+
+ (indicating a dummy definition ending definitions of charstyles, etc).
+ This entry is required in and is only meaningful for Flex insets.
+ Among other things, it determines on which menu this inset will appear.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+MultiPar
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\emph on
+0
+\end_layout
+
+\end_inset
+
+,
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+
+] Whether multiple paragraphs are permitted in this inset.
+ This will also set CustomPars to the same value and ForcePlain to the opposite
+ value.
+ These can be reset to other values, if they are used
+\emph on
+after
+\emph default
+ MultiPar.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+NeedProtect
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\emph on
+0
\end_layout
-\begin_layout Description
+\end_inset
+
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-LyxType
+1
\end_layout
\end_inset
- Can be
+] Whether fragile commands in this layout should be
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-charstyle
+
+\backslash
+protect
\end_layout
\end_inset
-,
+'ed.
+ (Note: This is
+\emph on
+not
+\emph default
+ whether the command should itself be protected.)
+\end_layout
+
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-custom
+PassThru
\end_layout
\end_inset
-,
+ [
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-element
+
+\emph on
+0
\end_layout
\end_inset
-,
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-end
+1
\end_layout
\end_inset
- (indicating a dummy definition ending definitions of charstyles etc.).
- This entry is only meaningful for Flex (user definable) insets.
+] As with paragraph styles (see page
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "des:PathThru"
+
+\end_inset
+
+).
\end_layout
\begin_layout Description
\begin_layout Standard
to your layout file to get them to work.
- But if you want to define custom counters, then you can do so, using the
- following parameters:
+ But if you want to define custom counters, then you can do so.
+ The counter declaration must begin with:
+\end_layout
+
+\begin_layout LyX-Code
+Counter name
+\end_layout
+
+\begin_layout Standard
+where of course `name' is replaced by the name of the counter.
+ And it must end with
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+End
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+.
+ The following parameters can also be used:
\end_layout
\begin_layout Description
\emph off
\bar no
\noun off
- other than those descibed below will produce arabic numerals.
+ other than those described below will produce arabic numerals.
It would not be surprising to see this change in the future.
\end_layout
\end_inset
-.
-\end_layout
-
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-Name
-\end_layout
-
-\end_inset
-
- [
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-string
-\end_layout
-
-\end_inset
-
-=
-\begin_inset Quotes erd
-\end_inset
-
-
-\begin_inset Quotes erd
-\end_inset
-
-] The name of the counter.
+, but for use in the Appendix.
\end_layout
\begin_layout Description
\end_inset
] If this is set to the name of another counter, the present counter will
- be reset everytime the other one is increased.
+ be reset every time the other one is increased.
For example,
\begin_inset Flex CharStyle:Code
status collapsed
status collapsed
\begin_layout Plain Layout
-Color
-\end_layout
-
-\end_inset
-
- [
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\emph on
-none
-\end_layout
-
-\end_inset
-
-,
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-black
-\end_layout
-
-\end_inset
-
-,
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-white
-\end_layout
-
-\end_inset
-
-,
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-red
-\end_layout
-
-\end_inset
-
-,
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-green
-\end_layout
-
-\end_inset
-
-,
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-blue
-\end_layout
-
-\end_inset
-
-,
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-cyan
-\end_layout
-
-\end_inset
-
-,
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-magenta
-\end_layout
-
-\end_inset
-
-,
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-yellow
-\end_layout
-
-\end_inset
-
-]
-\end_layout
-
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-Family
-\end_layout
-
-\end_inset
-
- [
-\emph on
-
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\emph on
-Roman
-\end_layout
-
-\end_inset
-
-
-\emph default
-,
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-Sans
-\end_layout
-
-\end_inset
-
-,
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-Typewriter
-\end_layout
-
-\end_inset
-
-]
-\end_layout
-
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-Misc
+Color
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-string
-\end_layout
-
-\end_inset
-
-] Valid argument sare:
-\begin_inset Flex CharStyle:Code
-status collapsed
-\begin_layout Plain Layout
-emph
+\emph on
+none
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-noun
+black
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-underbar
+white
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-no_emph
+red
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-no_noun
+green
\end_layout
\end_inset
- and
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-no_bar
+blue
\end_layout
\end_inset
-.
- Each of these turns on or off the corresponding attribute.
-\end_layout
-
-\begin_layout Description
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Series
+cyan
\end_layout
\end_inset
- [
-\emph on
-
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-
-\emph on
-Medium
+magenta
\end_layout
\end_inset
-
-\emph default
,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Bold
+yellow
\end_layout
\end_inset
-]
+]
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-Shape
+Family
\end_layout
\end_inset
\begin_layout Plain Layout
\emph on
-Up
+Roman
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-Italic
-\end_layout
-
-\end_inset
-
-,
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-SmallCaps
+Sans
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-Slanted
+Typewriter
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-Size
+Misc
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-tiny
-\end_layout
-
-\end_inset
-
-,
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-small
+string
\end_layout
\end_inset
-,
+] Valid argument are:
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-
-\emph on
-normal
+emph
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-large
+noun
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-larger
+underbar
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-largest
+no_emph
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-huge
+no_noun
\end_layout
\end_inset
-,
+ and
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-giant
+no_bar
\end_layout
\end_inset
-]
-\end_layout
-
-\begin_layout Subsection
-Upgrading old layout files
+.
+ Each of these turns on or off the corresponding attribute.
\end_layout
-\begin_layout Standard
-The file format of layout files changes from time to time, so old layout
- files need to be converted.
- This process has been automated since LyX 1.4.0: If LyX reads an old format
- layout file it will call the conversion tool
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-LyXDir/scripts/layout2layout.py
+Series
\end_layout
\end_inset
- and convert it to a temporary file in current format.
- The original file is left untouched.
- If you want to convert the layout file permanently, just call the converter
- by hand:
-\end_layout
-
-\begin_layout LyX-Code
-python $LyXDir/scripts/layout2layout.py myclass.layout myclassnew.layout
-\end_layout
+ [
+\emph on
-\begin_layout Standard
-(You need to replace
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$LyXDir
-\end_layout
-
-\end_inset
- with the name of your LyX system directory, unless you happen to have defined
- such an environment variable.) Then copy
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-myclassnew.layout
+\emph on
+Medium
\end_layout
\end_inset
- to
+
+\emph default
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-UserDir/layouts/
-\end_layout
-
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Standard
-The automatic conversion only handles syntax changes.
- It cannot handle the case where the contents of included files was changed,
- so these will have to be converted separately.
+Bold
\end_layout
-\begin_layout Section
-Creating Templates
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:templates"
-
\end_inset
-
+]
\end_layout
-\begin_layout Standard
-Templates are created just like usual documents.
- The only difference is that usual documents contain all possible settings,
- including the font scheme and the paper size.
- Usually a user doesn't want a template to overwrite his defaults in these
- cases.
- For that reason, the designer of a template should remove the corresponding
- commands like
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-
-\backslash
-fontscheme
+Shape
\end_layout
\end_inset
- or
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-papersize
-\end_layout
-
-\end_inset
+ [
+\emph on
- from the template LyX file.
- This can be done with any simple text-editor, for example
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-vi
-\end_layout
-\end_inset
-
- or
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-xedit
+\emph on
+Up
\end_layout
\end_inset
-.
-
-\end_layout
-\begin_layout Standard
-Put the edited template files you create in
+\emph default
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-UserDir/templates/
+Italic
\end_layout
\end_inset
-, copy the ones you use from the global template directory in
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-LyXDir/templates/
-\end_layout
-
-\end_inset
-
- to the same place, and redefine the template path in the
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
-
-\begin_layout Plain Layout
-
-\bar under
-T
-\family sans
-\bar default
-ools
-\family default
-\SpecialChar \menuseparator
-
-\bar under
-P
-\bar default
-references\SpecialChar \menuseparator
-Paths
+SmallCaps
\end_layout
\end_inset
- dialog.
-\end_layout
-
-\begin_layout Standard
-Note that there is a template which has a particular meaning:
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-defaults.lyx
+Slanted
\end_layout
\end_inset
-.
- This template is loaded everytime you create a new document with
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
-
-\begin_layout Plain Layout
-
-\bar under
-F
-\bar default
-ile
+]
\end_layout
-\end_inset
-
-\SpecialChar \menuseparator
-
-\begin_inset Flex CharStyle:MenuItem
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-
-\bar under
-N
-\bar default
-ew
+Size
\end_layout
\end_inset
- in order to provide useful defaults.
- To create this template from inside LyX, all you have to do is to open
- a document with the correct settings, and use the
-\begin_inset Flex CharStyle:MenuItem
+ [
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Sa
-\bar under
-v
-\bar default
-e as Document Defaults
+tiny
\end_layout
\end_inset
- button.
-\end_layout
-
-\begin_layout Chapter
-Including External Material
-\end_layout
+,
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout Standard
-The use of material from sources external to LyX is covered in detail in
- the
-\emph on
-Embedded Objects
-\emph default
- manual.
- This part of the manual covers what needs to happen behind the scenes for
- new sorts of material to be included.
+\begin_layout Plain Layout
+small
\end_layout
-\begin_layout Section
-How does it work?
-\end_layout
+\end_inset
-\begin_layout Standard
-The external material feature is based on the concept of a
-\emph on
-template
-\emph default
-.
- A template is a specification of how LyX should interface with a certain
- kind of material.
- As bundled, LyX comes with predefined templates for Xfig figures, various
- raster format images, chess diagrams, and LilyPond music notation.
- You can check the actual list by using the menu
-\begin_inset Flex CharStyle:MenuItem
+,
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Insert\SpecialChar \menuseparator
-File\SpecialChar \menuseparator
-External Material
+
+\emph on
+normal
\end_layout
\end_inset
-.
- Furthermore, it is possible to roll your own template to support a specific
- kind of material.
- Later we'll describe in more detail what is involved, and hopefully you
- will submit all the templates you create so we can include them in a later
- LyX version.
-\end_layout
-
-\begin_layout Standard
-Another basic idea of the external material feature is to distinguish between
- the original file that serves as a base for final material and the produced
- file that is included in your exported or printed document.
- For example, consider the case of a figure produced with
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Xfig
+large
\end_layout
\end_inset
-.
- The Xfig application itself works on an original file with the
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-.fig
+larger
\end_layout
\end_inset
- extension.
- Within XFig, you create and change your figure, and when you are done,
- you save the
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-fig
+largest
\end_layout
\end_inset
--file.
- When you want to include the figure in your document, you invoke
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-transfig
+huge
\end_layout
\end_inset
- in order to create a PostScript file that can readily be included in your
- LaTeX file.
- In this case, the
+,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-.fig
+giant
\end_layout
\end_inset
- file is the original file, and the PostScript file is the produced file.
+]
\end_layout
-\begin_layout Standard
-This distinction is important in order to allow updating of the material
- while you are in the process of writing the document.
- Furthermore, it provides us with the flexibility that is needed to support
- multiple export formats.
- For instance, in the case of a plain text file, it is not exactly an award-winn
-ing idea to include the figure as raw PostScript®.
- Instead, you'd either prefer to just include a reference to the figure
- or try to invoke some graphics to Ascii converter to make the final result
- look similar to the real graphics.
- The external material management allows you to do this, because it is parameter
-ized on the different export formats that LyX supports.
+\begin_layout Subsection
+Upgrading old layout files
\end_layout
\begin_layout Standard
-Besides supporting the production of different products according to the
- exported format, it supports tight integration with editing and viewing
- applications.
- In the case of an XFig figure, you are able to invoke Xfig on the original
- file with a single click from within the external material dialog in LyX,
- and also preview the produced PostScript file with ghostview with another
- click.
- No more fiddling around with the command line and/or file browsers to locate
- and manipulate the original or produced files.
- In this way, you are finally able to take full advantage of the many different
- applications that are relevant to use when you write your documents, and
- ultimately be more productive.
-\end_layout
+The file format of layout files changes from time to time, so old layout
+ files need to be converted.
+ This process has been automated since LyX 1.4.0: If LyX reads an old format
+ layout file it will call the conversion tool
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout Section
-The external template configuration file
+\begin_layout Plain Layout
+LyXDir/scripts/layout2layout.py
\end_layout
-\begin_layout Standard
-It is relatively easy to add custom external template definitions to LyX.
- However, be aware that doing this in an careless manner most probably
-\emph on
-will
-\emph default
- introduce an easily exploitable security hole.
- So before you do this, please read the discussion about security in section
-
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sec:Security-discussion"
-
\end_inset
-.
+ and convert it to a temporary file in current format.
+ The original file is left untouched.
+ If you want to convert the layout file permanently, just call the converter
+ by hand:
\end_layout
-\begin_layout Standard
-Having said that, we encourage you to submit any interesting templates that
- you create.
-
+\begin_layout LyX-Code
+python $LyXDir/scripts/layout2layout.py myclass.layout myclassnew.layout
\end_layout
\begin_layout Standard
-The external templates are defined in the
+(You need to replace
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-LyXDir/lib/external_templates
+$LyXDir
\end_layout
\end_inset
- file.
- You can place your own version in
+ with the name of your LyX system directory, unless you happen to have defined
+ such an environment variable.) Then copy
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-UserDir/external_templates
+myclassnew.layout
\end_layout
\end_inset
-.
-\end_layout
-
-\begin_layout Standard
-A typical template looks like this:
-\end_layout
-
-\begin_layout LyX-Code
-Template XFig
-\end_layout
+ to
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout LyX-Code
-GuiName "XFig: $$AbsOrRelPathParent$$Basename"
+\begin_layout Plain Layout
+UserDir/layouts/
\end_layout
-\begin_layout LyX-Code
-HelpText
-\end_layout
+\end_inset
-\begin_layout LyX-Code
-An XFig figure.
+.
\end_layout
-\begin_layout LyX-Code
-HelpTextEnd
+\begin_layout Standard
+The automatic conversion only handles syntax changes.
+ It cannot handle the case where the contents of included files was changed,
+ so these will have to be converted separately.
\end_layout
-\begin_layout LyX-Code
-InputFormat fig
-\end_layout
+\begin_layout Section
+Creating Templates
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:templates"
-\begin_layout LyX-Code
-FileFilter "*.fig"
-\end_layout
+\end_inset
-\begin_layout LyX-Code
-AutomaticProduction true
-\end_layout
-\begin_layout LyX-Code
-Transform Rotate
\end_layout
-\begin_layout LyX-Code
-Transform Resize
-\end_layout
+\begin_layout Standard
+Templates are created just like usual documents.
+ The only difference is that usual documents contain all possible settings,
+ including the font scheme and the paper size.
+ Usually a user doesn't want a template to overwrite his defaults in these
+ cases.
+ For that reason, the designer of a template should remove the corresponding
+ commands like
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout LyX-Code
-Format LaTeX
-\end_layout
+\begin_layout Plain Layout
-\begin_layout LyX-Code
-TransformCommand Rotate RotationLatexCommand
+\backslash
+fontscheme
\end_layout
-\begin_layout LyX-Code
-TransformCommand Resize ResizeLatexCommand
-\end_layout
+\end_inset
-\begin_layout LyX-Code
-Product "$$RotateFront$$ResizeFront
-\end_layout
+ or
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout LyX-Code
-
-\backslash
+\begin_layout Plain Layout
\backslash
-input{$$AbsOrRelPathMaster$$Basename.pstex_t}
+papersize
\end_layout
-\begin_layout LyX-Code
- $$ResizeBack$$RotateBack"
-\end_layout
+\end_inset
+
+ from the template LyX file.
+ This can be done with any simple text-editor, for example
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout LyX-Code
-UpdateFormat pstex
+\begin_layout Plain Layout
+vi
\end_layout
-\begin_layout LyX-Code
-UpdateResult "$$AbsPath$$Basename.pstex_t"
-\end_layout
+\end_inset
-\begin_layout LyX-Code
-Requirement "graphicx"
-\end_layout
+ or
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout LyX-Code
-ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pstex_t"
+\begin_layout Plain Layout
+xedit
\end_layout
-\begin_layout LyX-Code
-ReferencedFile latex "$$AbsPath$$Basename.eps"
-\end_layout
+\end_inset
-\begin_layout LyX-Code
-ReferencedFile dvi "$$AbsPath$$Basename.eps"
+.
+
\end_layout
-\begin_layout LyX-Code
-FormatEnd
-\end_layout
+\begin_layout Standard
+Put the edited template files you create in
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout LyX-Code
-Format PDFLaTeX
+\begin_layout Plain Layout
+UserDir/templates/
\end_layout
-\begin_layout LyX-Code
-TransformCommand Rotate RotationLatexCommand
-\end_layout
+\end_inset
-\begin_layout LyX-Code
-TransformCommand Resize ResizeLatexCommand
-\end_layout
+, copy the ones you use from the global template directory in
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout LyX-Code
-Product "$$RotateFront$$ResizeFront
+\begin_layout Plain Layout
+LyXDir/templates/
\end_layout
-\begin_layout LyX-Code
-
-\backslash
+\end_inset
-\backslash
-input{$$AbsOrRelPathMaster$$Basename.pdftex_t}
-\end_layout
+ to the same place, and redefine the template path in the
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
-\begin_layout LyX-Code
- $$ResizeBack$$RotateBack"
+\begin_layout Plain Layout
+Tools\SpecialChar \menuseparator
+Preferences\SpecialChar \menuseparator
+Paths
\end_layout
-\begin_layout LyX-Code
-UpdateFormat pdftex
-\end_layout
+\end_inset
-\begin_layout LyX-Code
-UpdateResult "$$AbsPath$$Basename.pdftex_t"
+ dialog.
\end_layout
-\begin_layout LyX-Code
-Requirement "graphicx"
-\end_layout
+\begin_layout Standard
+Note that there is a template which has a particular meaning:
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout LyX-Code
-ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pdftex_t"
+\begin_layout Plain Layout
+defaults.lyx
\end_layout
-\begin_layout LyX-Code
-ReferencedFile latex "$$AbsPath$$Basename.pdf"
-\end_layout
+\end_inset
-\begin_layout LyX-Code
-FormatEnd
-\end_layout
+.
+ This template is loaded every time you create a new document with
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
-\begin_layout LyX-Code
-Format Ascii
+\begin_layout Plain Layout
+File\SpecialChar \menuseparator
+New
\end_layout
-\begin_layout LyX-Code
-Product "$$Contents(
-\backslash
-"$$AbsPath$$Basename.asc
-\backslash
-")"
-\end_layout
+\end_inset
-\begin_layout LyX-Code
-UpdateFormat asciixfig
-\end_layout
+ in order to provide useful defaults.
+ To create this template from inside LyX, all you have to do is to open
+ a document with the correct settings, and use the
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
-\begin_layout LyX-Code
-UpdateResult "$$AbsPath$$Basename.asc"
+\begin_layout Plain Layout
+Save as Document Defaults
\end_layout
-\begin_layout LyX-Code
-FormatEnd
-\end_layout
+\end_inset
-\begin_layout LyX-Code
-Format DocBook
+ button.
\end_layout
-\begin_layout LyX-Code
-Product "<graphic fileref=
-\backslash
-"$$AbsOrRelPathMaster$$Basename.eps
-\backslash
-">
+\begin_layout Chapter
+Including External Material
\end_layout
-\begin_layout LyX-Code
- </graphic>"
-\end_layout
+\begin_layout Standard
+\begin_inset Box Shadowbox
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
-\begin_layout LyX-Code
-UpdateFormat eps
+\begin_layout Plain Layout
+WARNING: This portion of the documentation has not been updated for some
+ time.
+ We certainly hope that it is still accurate, but there are no guarantees.
\end_layout
-\begin_layout LyX-Code
-UpdateResult "$$AbsPath$$Basename.eps"
-\end_layout
+\end_inset
-\begin_layout LyX-Code
-ReferencedFile docbook "$$AbsPath$$Basename.eps"
-\end_layout
-\begin_layout LyX-Code
-ReferencedFile docbook-xml "$$AbsPath$$Basename.eps"
\end_layout
-\begin_layout LyX-Code
-FormatEnd
+\begin_layout Standard
+The use of material from sources external to LyX is covered in detail in
+ the
+\emph on
+Embedded Objects
+\emph default
+ manual.
+ This part of the manual covers what needs to happen behind the scenes for
+ new sorts of material to be included.
\end_layout
-\begin_layout LyX-Code
-Product "[XFig: $$FName]"
+\begin_layout Section
+How does it work?
\end_layout
-\begin_layout LyX-Code
-FormatEnd
+\begin_layout Standard
+The external material feature is based on the concept of a
+\emph on
+template
+\emph default
+.
+ A template is a specification of how LyX should interface with a certain
+ kind of material.
+ As bundled, LyX comes with predefined templates for Xfig figures, various
+ raster format images, chess diagrams, and LilyPond music notation.
+ You can check the actual list by using the menu
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
+
+\begin_layout Plain Layout
+Insert\SpecialChar \menuseparator
+File\SpecialChar \menuseparator
+External Material
\end_layout
-\begin_layout LyX-Code
-TemplateEnd
+\end_inset
+
+.
+ Furthermore, it is possible to roll your own template to support a specific
+ kind of material.
+ Later we'll describe in more detail what is involved, and hopefully you
+ will submit all the templates you create so we can include them in a later
+ LyX version.
\end_layout
\begin_layout Standard
-As you can see, the template is enclosed in
+Another basic idea of the external material feature is to distinguish between
+ the original file that serves as a base for final material and the produced
+ file that is included in your exported or printed document.
+ For example, consider the case of a figure produced with
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Template
+Xfig
\end_layout
\end_inset
- \SpecialChar \ldots{}
-
+.
+ The Xfig application itself works on an original file with the
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-TemplateEnd
+.fig
\end_layout
\end_inset
-.
- It contains a header specifying some general settings and, for each supported
- primary document file format, a section
+ extension.
+ Within Xfig, you create and change your figure, and when you are done,
+ you save the
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Format
+fig
\end_layout
\end_inset
- \SpecialChar \ldots{}
-
+-file.
+ When you want to include the figure in your document, you invoke
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-FormatEnd
+transfig
\end_layout
\end_inset
-.
-\end_layout
-
-\begin_layout Subsection
-The template header
-\end_layout
-
-\begin_layout Description
+ in order to create a PostScript file that can readily be included in your
+ LaTeX file.
+ In this case, the
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-AutomaticProduction
-\begin_inset space ~
+.fig
+\end_layout
+
\end_inset
-true|false
+ file is the original file, and the PostScript file is the produced file.
+\end_layout
+
+\begin_layout Standard
+This distinction is important in order to allow updating of the material
+ while you are in the process of writing the document.
+ Furthermore, it provides us with the flexibility that is needed to support
+ multiple export formats.
+ For instance, in the case of a plain text file, it is not exactly an award-winn
+ing idea to include the figure as raw PostScript.
+ Instead, you'd either prefer to just include a reference to the figure
+ or try to invoke some graphics to ASCII converter to make the final result
+ look similar to the real graphics.
+ The external material management allows you to do this, because it is parametri
+zed on the different export formats that LyX supports.
+\end_layout
+
+\begin_layout Standard
+Besides supporting the production of different products according to the
+ exported format, it supports tight integration with editing and viewing
+ applications.
+ In the case of an Xfig figure, you are able to invoke Xfig on the original
+ file with a single click from within the external material dialog in LyX,
+ and also preview the produced PostScript file with Ghostview with another
+ click.
+ No more fiddling around with the command line and/or file browsers to locate
+ and manipulate the original or produced files.
+ In this way, you are finally able to take full advantage of the many different
+ applications that are relevant to use when you write your documents, and
+ ultimately be more productive.
\end_layout
-\end_inset
-
- Whether the file represented by the template must be generated by LyX.
- This command must occur exactly once.
+\begin_layout Section
+The external template configuration file
\end_layout
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout Standard
+It is relatively easy to add custom external template definitions to LyX.
+ However, be aware that doing this in an careless manner most probably
+\emph on
+will
+\emph default
+ introduce an easily exploitable security hole.
+ So before you do this, please read the discussion about security in section
+
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:Security-discussion"
-\begin_layout Plain Layout
-FileFilter
-\begin_inset space ~
\end_inset
-<pattern>
+.
\end_layout
-\end_inset
-
- A glob pattern that is used in the file dialog to filter out the desired
- files.
- If there is more than one possible file extension (e.g.
-\begin_inset space ~
-\end_inset
-
-tgif has
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-.obj
+\begin_layout Standard
+Having said that, we encourage you to submit any interesting templates that
+ you create.
+
\end_layout
-\end_inset
-
- and
+\begin_layout Standard
+The external templates are defined in the
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-.tgo
+LyXDir/lib/external_templates
\end_layout
\end_inset
-), use something like
+ file.
+ You can place your own version in
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-"*.{obj,tgo}"
+UserDir/external_templates
\end_layout
\end_inset
.
- This command must occur exactly once.
\end_layout
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-GuiName
-\begin_inset space ~
-\end_inset
-
-<guiname>
+\begin_layout Standard
+A typical template looks like this:
\end_layout
-\end_inset
-
- The text that is displayed on the button.
- This command must occur exactly once.
+\begin_layout LyX-Code
+Template XFig
\end_layout
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout LyX-Code
+GuiName "XFig: $$AbsOrRelPathParent$$Basename"
+\end_layout
-\begin_layout Plain Layout
+\begin_layout LyX-Code
HelpText
-\begin_inset space ~
-\end_inset
+\end_layout
-<text>
-\begin_inset space ~
-\end_inset
+\begin_layout LyX-Code
+An XFig figure.
+\end_layout
+\begin_layout LyX-Code
HelpTextEnd
\end_layout
-\end_inset
-
- The help text that is used in the External dialog.
- Provide enough information to explain to the user just what the template
- can provide him with.
- This command must occur exactly once.
+\begin_layout LyX-Code
+InputFormat fig
\end_layout
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout LyX-Code
+FileFilter "*.fig"
+\end_layout
-\begin_layout Plain Layout
-InputFormat
-\begin_inset space ~
-\end_inset
+\begin_layout LyX-Code
+AutomaticProduction true
+\end_layout
-<format>
+\begin_layout LyX-Code
+Transform Rotate
\end_layout
-\end_inset
+\begin_layout LyX-Code
+Transform Resize
+\end_layout
- The file format of the original file.
- This must be the name of a format that is known to LyX (see section
-\begin_inset CommandInset ref
-LatexCommand ref
-reference "sub:Formats"
+\begin_layout LyX-Code
+Format LaTeX
+\end_layout
-\end_inset
+\begin_layout LyX-Code
+TransformCommand Rotate RotationLatexCommand
+\end_layout
-).
- Use
-\begin_inset Quotes eld
-\end_inset
+\begin_layout LyX-Code
+TransformCommand Resize ResizeLatexCommand
+\end_layout
+\begin_layout LyX-Code
+Product "$$RotateFront$$ResizeFront
+\end_layout
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout LyX-Code
+
+\backslash
-\begin_layout Plain Layout
-*
+\backslash
+input{$$AbsOrRelPathMaster$$Basename.pstex_t}
\end_layout
-\end_inset
-
+\begin_layout LyX-Code
+ $$ResizeBack$$RotateBack"
+\end_layout
-\begin_inset Quotes erd
-\end_inset
+\begin_layout LyX-Code
+UpdateFormat pstex
+\end_layout
- if the template can handle original files of more than one format.
- LyX will attempt to interrogate the file itself in order to deduce its
- format in this case.
- This command must occur exactly once.
+\begin_layout LyX-Code
+UpdateResult "$$AbsPath$$Basename.pstex_t"
\end_layout
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout LyX-Code
+Requirement "graphicx"
+\end_layout
-\begin_layout Plain Layout
-Template
-\begin_inset space ~
-\end_inset
+\begin_layout LyX-Code
+ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pstex_t"
+\end_layout
-<id>
+\begin_layout LyX-Code
+ReferencedFile latex "$$AbsPath$$Basename.eps"
\end_layout
-\end_inset
+\begin_layout LyX-Code
+ReferencedFile dvi "$$AbsPath$$Basename.eps"
+\end_layout
- A unique name for the template.
- It must not contain substitution macros (see below).
+\begin_layout LyX-Code
+FormatEnd
\end_layout
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout LyX-Code
+Format PDFLaTeX
+\end_layout
-\begin_layout Plain Layout
-Transform
-\begin_inset space ~
-\end_inset
+\begin_layout LyX-Code
+TransformCommand Rotate RotationLatexCommand
+\end_layout
-Rotate|Resize|Clip|Extra
+\begin_layout LyX-Code
+TransformCommand Resize ResizeLatexCommand
\end_layout
-\end_inset
+\begin_layout LyX-Code
+Product "$$RotateFront$$ResizeFront
+\end_layout
- This command specifies which transformations are supported by this template.
- It may occur zero or more times.
- This command enables the corresponding tabs in the external dialog.
- Each
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout LyX-Code
+
+\backslash
-\begin_layout Plain Layout
-Transform
+\backslash
+input{$$AbsOrRelPathMaster$$Basename.pdftex_t}
\end_layout
-\end_inset
-
- command must have either a corresponding
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout LyX-Code
+ $$ResizeBack$$RotateBack"
+\end_layout
-\begin_layout Plain Layout
-TransformCommand
+\begin_layout LyX-Code
+UpdateFormat pdftex
\end_layout
-\end_inset
+\begin_layout LyX-Code
+UpdateResult "$$AbsPath$$Basename.pdftex_t"
+\end_layout
- or a
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout LyX-Code
+Requirement "graphicx"
+\end_layout
-\begin_layout Plain Layout
-TransformOption
+\begin_layout LyX-Code
+ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pdftex_t"
\end_layout
-\end_inset
-
- command in the
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout LyX-Code
+ReferencedFile latex "$$AbsPath$$Basename.pdf"
+\end_layout
-\begin_layout Plain Layout
-Format
+\begin_layout LyX-Code
+FormatEnd
\end_layout
-\end_inset
+\begin_layout LyX-Code
+Format Ascii
+\end_layout
- section.
- Otherwise the transformation will not be supported by that format.
+\begin_layout LyX-Code
+Product "$$Contents(
+\backslash
+"$$AbsPath$$Basename.asc
+\backslash
+")"
\end_layout
-\begin_layout Subsection
-The Format section
+\begin_layout LyX-Code
+UpdateFormat asciixfig
\end_layout
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout LyX-Code
+UpdateResult "$$AbsPath$$Basename.asc"
+\end_layout
-\begin_layout Plain Layout
-Format
-\begin_inset space ~
-\end_inset
+\begin_layout LyX-Code
+FormatEnd
+\end_layout
-LaTeX|PDFLaTeX|PlainText|DocBook
+\begin_layout LyX-Code
+Format DocBook
\end_layout
-\end_inset
+\begin_layout LyX-Code
+Product "<graphic fileref=
+\backslash
+"$$AbsOrRelPathMaster$$Basename.eps
+\backslash
+">
+\end_layout
- The primary document file format that this format definition is for.
- Not every template has a sensible representation in all document file formats.
- Please define nevertheless a
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout LyX-Code
+ </graphic>"
+\end_layout
-\begin_layout Plain Layout
-Format
+\begin_layout LyX-Code
+UpdateFormat eps
\end_layout
-\end_inset
+\begin_layout LyX-Code
+UpdateResult "$$AbsPath$$Basename.eps"
+\end_layout
- section for all formats.
- Use a dummy text when no representation is available.
- Then you can at least see a reference to the external material in the exported
- document.
+\begin_layout LyX-Code
+ReferencedFile docbook "$$AbsPath$$Basename.eps"
\end_layout
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout LyX-Code
+ReferencedFile docbook-xml "$$AbsPath$$Basename.eps"
+\end_layout
-\begin_layout Plain Layout
-Option
-\begin_inset space ~
-\end_inset
+\begin_layout LyX-Code
+FormatEnd
+\end_layout
-<name>
-\begin_inset space ~
-\end_inset
+\begin_layout LyX-Code
+Product "[XFig: $$FName]"
+\end_layout
-<value>
+\begin_layout LyX-Code
+FormatEnd
\end_layout
-\end_inset
+\begin_layout LyX-Code
+TemplateEnd
+\end_layout
- This command defines an additional macro
+\begin_layout Standard
+As you can see, the template is enclosed in
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$<name>
+Template
\end_layout
\end_inset
- for substitution in
+ \SpecialChar \ldots{}
+
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Product
+TemplateEnd
\end_layout
\end_inset
.
-
+ It contains a header specifying some general settings and, for each supported
+ primary document file format, a section
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-<value>
+Format
\end_layout
\end_inset
- itself may contain substitution macros.
- The advantage over using
+ \SpecialChar \ldots{}
+
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-<value>
+FormatEnd
\end_layout
\end_inset
- directly in
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-Product
+.
\end_layout
-\end_inset
+\begin_layout Subsection
+The template header
+\end_layout
- is that the substituted value of
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$<name>
+AutomaticProduction
+\begin_inset space ~
+\end_inset
+
+true|false
\end_layout
\end_inset
- is sanitized so that it is a valid optional argument in the document format.
- This command may occur zero or more times.
+ Whether the file represented by the template must be generated by LyX.
+ This command must occur exactly once.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-Product
+FileFilter
\begin_inset space ~
\end_inset
-<text>
+<pattern>
\end_layout
\end_inset
- The text that is inserted in the exported document.
- This is actually the most important command and can be quite complex.
- This command must occur exactly once.
-\end_layout
+ A glob pattern that is used in the file dialog to filter out the desired
+ files.
+ If there is more than one possible file extension (e.
+\begin_inset space \thinspace{}
+\end_inset
-\begin_layout Description
+g.
+\begin_inset space \space{}
+\end_inset
+
+tgif has
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Preamble
-\begin_inset space ~
-\end_inset
-
-<name>
+.obj
\end_layout
\end_inset
- This command specifies a preamble snippet that will be included in the
- LaTeX preamble.
- It has to be defined using
+ and
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-PreambleDef
+.tgo
\end_layout
\end_inset
- \SpecialChar \ldots{}
-
+), use something like
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-PreambleDefEnd
+"*.{obj,tgo}"
\end_layout
\end_inset
.
- This command may occur zero or more times.
+ This command must occur exactly once.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-ReferencedFile
-\begin_inset space ~
-\end_inset
-
-<format>
+GuiName
\begin_inset space ~
\end_inset
-<filename>
+<guiname>
\end_layout
\end_inset
- This command denotes files that are created by the conversion process and
- are needed for a particular export format.
- If the filename is relative, it is interpreted relative to the master document.
- This command may be given zero or more times.
+ The text that is displayed on the button.
+ This command must occur exactly once.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-Requirement
+HelpText
\begin_inset space ~
\end_inset
-<package>
-\end_layout
-
+<text>
+\begin_inset space ~
\end_inset
- The name of a required LaTeX package.
- The package is included via
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-usepackage{}
+HelpTextEnd
\end_layout
\end_inset
- in the LaTeX preamble.
- This command may occur zero or more times.
+ The help text that is used in the External dialog.
+ Provide enough information to explain to the user just what the template
+ can provide him with.
+ This command must occur exactly once.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-TransformCommand
+InputFormat
\begin_inset space ~
\end_inset
-Rotate
-\begin_inset space ~
+<format>
+\end_layout
+
\end_inset
-RotationLatexCommand
-\end_layout
+ The file format of the original file.
+ This must be the name of a format that is known to LyX (see section
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sub:Formats"
\end_inset
- This command specifies that the built in LaTeX command should be used for
- rotation.
- This command may occur once or not at all.
-\end_layout
+).
+ Use
+\begin_inset Quotes eld
+\end_inset
+
-\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-TransformCommand
-\begin_inset space ~
-\end_inset
+*
+\end_layout
-Resize
-\begin_inset space ~
\end_inset
-ResizeLatexCommand
-\end_layout
+\begin_inset Quotes erd
\end_inset
- This command specifies that the built in LaTeX command should be used for
- resizing.
- This command may occur once or not at all.
+ if the template can handle original files of more than one format.
+ LyX will attempt to interrogate the file itself in order to deduce its
+ format in this case.
+ This command must occur exactly once.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-TransformOption
-\begin_inset space ~
-\end_inset
-
-Rotate
+Template
\begin_inset space ~
\end_inset
-RotationLatexOption
+<id>
\end_layout
\end_inset
- This command specifies that rotation is done via an optional argument.
- This command may occur once or not at all.
+ A unique name for the template.
+ It must not contain substitution macros (see below).
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-TransformOption
-\begin_inset space ~
-\end_inset
-
-Resize
+Transform
\begin_inset space ~
\end_inset
-ResizeLatexOption
+Rotate|Resize|Clip|Extra
\end_layout
\end_inset
- This command specifies that resizing is done via an optional argument.
- This command may occur once or not at all.
-\end_layout
-
-\begin_layout Description
+ This command specifies which transformations are supported by this template.
+ It may occur zero or more times.
+ This command enables the corresponding tabs in the external dialog.
+ Each
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-TransformOption
-\begin_inset space ~
-\end_inset
+Transform
+\end_layout
-Clip
-\begin_inset space ~
\end_inset
-ClipLatexOption
+ command must have either a corresponding
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+TransformCommand
\end_layout
\end_inset
- This command specifies that clipping is done via an optional argument.
- This command may occur once or not at all.
-\end_layout
-
-\begin_layout Description
+ or a
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
TransformOption
-\begin_inset space ~
-\end_inset
+\end_layout
-Extra
-\begin_inset space ~
\end_inset
-ExtraLatexOption
+ command in the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+Format
\end_layout
\end_inset
- This command specifies that an extra optional argument is used.
- This command may occur once or not at all.
+ section.
+ Otherwise the transformation will not be supported by that format.
+\end_layout
+
+\begin_layout Subsection
+The Format section
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-UpdateFormat
+Format
\begin_inset space ~
\end_inset
-<format>
+LaTeX|PDFLaTeX|PlainText|DocBook
\end_layout
\end_inset
- The file format of the converted file.
- This must be the name of a format that is known to LyX (see the
-\begin_inset Flex CharStyle:MenuItem
+ The primary document file format that this format definition is for.
+ Not every template has a sensible representation in all document file formats.
+ Please define nevertheless a
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-
-\bar under
-T
-\bar default
-ools\SpecialChar \menuseparator
-
-\bar under
-P
-\bar default
-references:Conversion
+Format
\end_layout
\end_inset
- dialog).
- This command must occur exactly once.
+ section for all formats.
+ Use a dummy text when no representation is available.
+ Then you can at least see a reference to the external material in the exported
+ document.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-UpdateResult
+Option
\begin_inset space ~
\end_inset
-<filename>
+<name>
+\begin_inset space ~
+\end_inset
+
+<value>
\end_layout
\end_inset
- The file name of the converted file.
- The file name must be absolute.
- This command must occur exactly once.
-\end_layout
+ This command defines an additional macro
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout Subsection
-Preamble definitions
+\begin_layout Plain Layout
+$$<name>
\end_layout
-\begin_layout Standard
-The external template configuration file may contain additional preamble
- definitions enclosed by
+\end_inset
+
+ for substitution in
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-PreambleDef
+Product
\end_layout
\end_inset
- \SpecialChar \ldots{}
+.
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-PreambleDefEnd
+<value>
\end_layout
\end_inset
-.
- They can be used by the templates in the
+ itself may contain substitution macros.
+ The advantage over using
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Format
+<value>
\end_layout
\end_inset
- section.
-\end_layout
+ directly in
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout Section
-The substitution mechanism
+\begin_layout Plain Layout
+Product
\end_layout
-\begin_layout Standard
-When the external material facility invokes an external program, it is done
- on the basis of a command defined in the template configuration file.
- These commands can contain various macros that are expanded before execution.
- Execution always take place in the directory of the containing document.
-\end_layout
+\end_inset
-\begin_layout Standard
-Also, whenever external material is to be displayed, the name will be produced
- by the substitution mechanism, and most other commands in the template
- definition support substitution as well.
+ is that the substituted value of
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+$$<name>
\end_layout
-\begin_layout Standard
-The available macros are the following:
+\end_inset
+
+ is sanitized so that it is a valid optional argument in the document format.
+ This command may occur zero or more times.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$AbsOrRelPathMaster
+Product
+\begin_inset space ~
+\end_inset
+
+<text>
\end_layout
\end_inset
- The file path, absolute or relative to the master LyX document.
+ The text that is inserted in the exported document.
+ This is actually the most important command and can be quite complex.
+ This command must occur exactly once.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$AbsOrRelPathParent
+Preamble
+\begin_inset space ~
+\end_inset
+
+<name>
\end_layout
\end_inset
- The file path, absolute or relative to the LyX document.
+ This command specifies a preamble snippet that will be included in the
+ LaTeX preamble.
+ It has to be defined using
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+PreambleDef
\end_layout
-\begin_layout Description
+\end_inset
+
+ \SpecialChar \ldots{}
+
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$AbsPath
+PreambleDefEnd
\end_layout
\end_inset
- The absolute file path.
+.
+ This command may occur zero or more times.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$Basename
+ReferencedFile
+\begin_inset space ~
+\end_inset
+
+<format>
+\begin_inset space ~
+\end_inset
+
+<filename>
\end_layout
\end_inset
- The filename without path and without the extension.
+ This command denotes files that are created by the conversion process and
+ are needed for a particular export format.
+ If the filename is relative, it is interpreted relative to the master document.
+ This command may be given zero or more times.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$Contents(
-\begin_inset Quotes eld
+Requirement
+\begin_inset space ~
\end_inset
-filename.ext
-\begin_inset Quotes erd
+<package>
+\end_layout
+
\end_inset
-)
+ The name of a required LaTeX package.
+ The package is included via
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\backslash
+usepackage{}
\end_layout
\end_inset
- This macro will expand to the contents of the file with the name
+ in the LaTeX preamble.
+ This command may occur zero or more times.
+\end_layout
+
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-filename.ext
+TransformCommand
+\begin_inset space ~
+\end_inset
+
+Rotate
+\begin_inset space ~
+\end_inset
+
+RotationLatexCommand
\end_layout
\end_inset
-.
+ This command specifies that the built in LaTeX command should be used for
+ rotation.
+ This command may occur once or not at all.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$Extension
+TransformCommand
+\begin_inset space ~
+\end_inset
+
+Resize
+\begin_inset space ~
+\end_inset
+
+ResizeLatexCommand
\end_layout
\end_inset
- The file extension (including the dot).
+ This command specifies that the built in LaTeX command should be used for
+ resizing.
+ This command may occur once or not at all.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$FName
+TransformOption
+\begin_inset space ~
+\end_inset
+
+Rotate
+\begin_inset space ~
+\end_inset
+
+RotationLatexOption
\end_layout
\end_inset
- The filename of the file specified in the external material dialog.
- This is either an absolute name, or it is relative to the LyX document.
+ This command specifies that rotation is done via an optional argument.
+ This command may occur once or not at all.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$FPath
-\end_layout
-
+TransformOption
+\begin_inset space ~
\end_inset
- The path part of
-\begin_inset Flex CharStyle:Code
-status collapsed
+Resize
+\begin_inset space ~
+\end_inset
-\begin_layout Plain Layout
-$$FName
+ResizeLatexOption
\end_layout
\end_inset
- (absolute name or relative to the LyX document).
+ This command specifies that resizing is done via an optional argument.
+ This command may occur once or not at all.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$RelPathMaster
+TransformOption
+\begin_inset space ~
+\end_inset
+
+Clip
+\begin_inset space ~
+\end_inset
+
+ClipLatexOption
\end_layout
\end_inset
- The file path, relative to the master LyX document.
+ This command specifies that clipping is done via an optional argument.
+ This command may occur once or not at all.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$RelPathParent
+TransformOption
+\begin_inset space ~
+\end_inset
+
+Extra
+\begin_inset space ~
+\end_inset
+
+ExtraLatexOption
\end_layout
\end_inset
- The file path, relative to the LyX document.
+ This command specifies that an extra optional argument is used.
+ This command may occur once or not at all.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$Sysdir
-\end_layout
-
+UpdateFormat
+\begin_inset space ~
\end_inset
- This macro will expand to the absolute path of the system directory.
- This is typically used to point to the various helper scripts that are
- bundled with LyX.
+<format>
\end_layout
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
+\end_inset
+
+ The file format of the converted file.
+ This must be the name of a format that is known to LyX (see the
+\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-$$Tempname
+
+\bar under
+T
+\bar default
+ools\SpecialChar \menuseparator
+
+\bar under
+P
+\bar default
+references:Conversion
\end_layout
\end_inset
- A name and full path to a temporary file which will be automatically deleted
- whenever the containing document is closed, or the external material insertion
- deleted.
+ dialog).
+ This command must occur exactly once.
\end_layout
-\begin_layout Standard
-All path macros contain a trailing directory separator, so you can construct
- e.g.
- the absolute filename with
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$AbsPath$$Basename$$Extension
+UpdateResult
+\begin_inset space ~
+\end_inset
+
+<filename>
\end_layout
\end_inset
-.
+ The file name of the converted file.
+ The file name must be absolute.
+ This command must occur exactly once.
+\end_layout
+
+\begin_layout Subsection
+Preamble definitions
\end_layout
\begin_layout Standard
-The macros above are substituted in all commands unless otherwise noted.
- The command
+The external template configuration file may contain additional preamble
+ definitions enclosed by
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Product
+PreambleDef
\end_layout
\end_inset
- supports additionally the following substitutions if they are enabled by
- the
+ \SpecialChar \ldots{}
+
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Transform
+PreambleDefEnd
\end_layout
\end_inset
- and
+.
+ They can be used by the templates in the
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-TransformCommand
+Format
\end_layout
\end_inset
- commands:
+ section.
\end_layout
-\begin_layout Description
-\begin_inset Flex CharStyle:Code
-status collapsed
+\begin_layout Section
+The substitution mechanism
+\end_layout
-\begin_layout Plain Layout
-$$ResizeFront
+\begin_layout Standard
+When the external material facility invokes an external program, it is done
+ on the basis of a command defined in the template configuration file.
+ These commands can contain various macros that are expanded before execution.
+ Execution always take place in the directory of the containing document.
\end_layout
-\end_inset
+\begin_layout Standard
+Also, whenever external material is to be displayed, the name will be produced
+ by the substitution mechanism, and most other commands in the template
+ definition support substitution as well.
+\end_layout
- The front part of the resize command.
+\begin_layout Standard
+The available macros are the following:
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$ResizeBack
+$$AbsOrRelPathMaster
\end_layout
\end_inset
- The back part of the resize command.
+ The file path, absolute or relative to the master LyX document.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$RotateFront
+$$AbsOrRelPathParent
\end_layout
\end_inset
- The front part of the rotation command.
+ The file path, absolute or relative to the LyX document.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$RotateBack
+$$AbsPath
\end_layout
\end_inset
- The back part of the rotation command.
+ The absolute file path.
\end_layout
-\begin_layout Standard
-The value string of the
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Option
+$$Basename
\end_layout
\end_inset
- command supports additionally the following substitutions if they are enabled
- by the
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-Transform
+ The filename without path and without the extension.
\end_layout
-\end_inset
-
- and
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-TransformOption
-\end_layout
+$$Contents(
+\begin_inset Quotes eld
+\end_inset
+filename.ext
+\begin_inset Quotes erd
\end_inset
- commands:
+)
\end_layout
-\begin_layout Description
+\end_inset
+
+ This macro will expand to the contents of the file with the name
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$Clip
+filename.ext
\end_layout
\end_inset
- The clip option.
+.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$Extra
+$$Extension
\end_layout
\end_inset
- The extra option.
+ The file extension (including the dot).
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$Resize
+$$FName
\end_layout
\end_inset
- The resize option.
+ The filename of the file specified in the external material dialog.
+ This is either an absolute name, or it is relative to the LyX document.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-$$Rotate
-\end_layout
-
-\end_inset
-
- The rotation option.
-\end_layout
-
-\begin_layout Standard
-You may ask why there are so many path macros.
- There are mainly two reasons:
-\end_layout
-
-\begin_layout Enumerate
-Relative and absolute file names should remain relative or absolute, respectivel
-y.
- Users may have reasons to prefer either form.
- Relative names are useful for portable documents that should work on different
- machines, for example.
- Absolute names may be required by some programs.
-\end_layout
-
-\begin_layout Enumerate
-LaTeX treats relative file names differently than LyX and other programs
- in nested included files.
- For LyX, a relative file name is always relative to the document that contains
- the file name.
- For LaTeX, it is always relative to the master document.
- These two definitions are identical if you have only one document, but
- differ if you have a master document that includes part documents.
- That means that relative filenames must be transformed when presented to
- LaTeX.
- Fortunately LyX does this automatically for you if you choose the right
- macros.
+$$FPath
\end_layout
-\begin_layout Standard
-So which path macro should be used in new template definitions? The rule
- is not difficult:
-\end_layout
+\end_inset
-\begin_layout Itemize
-Use
+ The path part of
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$AbsPath
+$$FName
\end_layout
\end_inset
- if an absolute path is required.
+ (absolute name or relative to the LyX document).
\end_layout
-\begin_layout Itemize
-Use
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$AbsOrRelPathMaster
+$$RelPathMaster
\end_layout
\end_inset
- if the substituted string is some kind of LaTeX input.
+ The file path, relative to the master LyX document.
\end_layout
-\begin_layout Itemize
-Else use
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$$AbsOrRelPathParent
+$$RelPathParent
\end_layout
\end_inset
- in order to preserve the user's choice.
+ The file path, relative to the LyX document.
\end_layout
-\begin_layout Standard
-There are special cases where this rule does not work and e.g.
-\begin_inset space ~
-\end_inset
-
-relative names are needed, but normally it will work just fine.
- One example for such a case is the command
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pstex_t"
+$$Sysdir
\end_layout
\end_inset
- in the XFig template above: We can't use the absolute name because the
- copier for
+ This macro will expand to the absolute path of the system directory.
+ This is typically used to point to the various helper scripts that are
+ bundled with LyX.
+\end_layout
+
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-.pstex_t
+$$Tempname
\end_layout
\end_inset
- files needs the relative name in order to rewrite the file content.
+ A name and full path to a temporary file which will be automatically deleted
+ whenever the containing document is closed, or the external material insertion
+ deleted.
\end_layout
-\begin_layout Section
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:Security-discussion"
-
+\begin_layout Standard
+All path macros contain a trailing directory separator, so you can construct
+ e.
+\begin_inset space \thinspace{}
\end_inset
-Security discussion
-\end_layout
+g.
+\begin_inset space \space{}
+\end_inset
-\begin_layout Standard
-\begin_inset Note Note
+the absolute filename with
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-This section is outdated
+$$AbsPath$$Basename$$Extension
\end_layout
\end_inset
-The external material feature interfaces with a lot of external programs
- and does so automatically, so we have to consider the security implications
- of this.
- In particular, since you have the option of including your own filenames
- and/or parameter strings and those are expanded into a command, it seems
- that it would be possible to create a malicious document which executes
- arbitrary commands when a user views or prints the document.
- This is something we definately want to avoid.
+.
\end_layout
\begin_layout Standard
-However, since the external program commands are specified in the template
- configuration file only, there are no security issues if LyX is properly
- configured with safe templates only.
- This is so because the external programs are invoked with the
+The macros above are substituted in all commands unless otherwise noted.
+ The command
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-execvp
+Product
\end_layout
\end_inset
--system call rather than the
+ supports additionally the following substitutions if they are enabled by
+ the
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-system
+Transform
\end_layout
\end_inset
- system-call, so it's not possible to execute arbitrary commands from the
- filename or parameter section via the shell.
-\end_layout
-
-\begin_layout Standard
-This also implies that you are restricted in what command strings you can
- use in the external material templates.
- In particular, pipes and redirection are not readily available.
- This has to be so if LyX should remain safe.
- If you want to use some of the shell features, you should write a safe
- script to do this in a controlled manner, and then invoke the script from
- the command string.
- In the
+ and
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-lib/scripts
+TransformCommand
\end_layout
\end_inset
- directory of the LyX installation, you can find a safe wrapper script
+ commands:
+\end_layout
+
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-general_command_wrapper.py
+$$ResizeFront
\end_layout
\end_inset
- that supports redirection of input and output.
- That can serve as an example for how to write safe template scripts.
- For a more advanced example that uses
+ The front part of the resize command.
+\end_layout
+
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-fork
+$$ResizeBack
\end_layout
\end_inset
- and friends, take a look at the
+ The back part of the resize command.
+\end_layout
+
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-pic2ascii.py
+$$RotateFront
\end_layout
\end_inset
- converter script.
+ The front part of the rotation command.
\end_layout
-\begin_layout Standard
-It is possible to design a template that interacts directly with the shell,
- but since this would allow a malicious user to execute arbitrary commands
- by writing clever filenames and/or parameters, we generally recommend that
- you only use safe scripts that work with the
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-execvp
+$$RotateBack
\end_layout
\end_inset
- system call in a controlled manner.
- Of course, for use in a controlled environment, it can be tempting to just
- fall back to use ordinary shell scripts.
- If you do so, be aware that you
-\emph on
-will
-\emph default
- provide an easily exploitable security hole in your system.
- Of course it stands to reason that such unsafe templates will never be
- included in the standard LyX distribution, although we do encourage people
- to submit new templates in the open source tradition.
- But LyX as shipped from the official distribution channels will never have
- unsafe templates.
-\end_layout
-
-\begin_layout Standard
-Including external material provides a lot of power, and you have to be
- careful not to introduce security hazards with this power.
- A subtle error in a single line in an innocent looking script can open
- the door to huge security problems.
- So if you do not fully understand the issues, we recommend that you consult
- a knowledgable security professional or the LyX development team if you
- have any questions about whether a given template is safe or not.
- And do this before you use it in an uncontrolled environment.
-\end_layout
-
-\begin_layout Chapter
-The LyX Server
-\end_layout
-
-\begin_layout Section
-Introduction
+ The back part of the rotation command.
\end_layout
\begin_layout Standard
-The LyX server is a method implemented in LyX that will enable other programs
- to talk to LyX, invoke LyX commands, and retrieve information about the
- LyX internal state.
- This is only intended for advanced users, but they should find it useful.
- Please note that, at present,
-\emph on
-the server does not work on Windows
-\emph default
-.
-\begin_inset Foot
+The value string of the
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-There is no principled reason it cannot do so.
- But none of the developers on Windows® have yet implemented this functionality
- there.
+Option
\end_layout
\end_inset
+ command supports additionally the following substitutions if they are enabled
+ by the
+\begin_inset Flex CharStyle:Code
+status collapsed
+\begin_layout Plain Layout
+Transform
\end_layout
-\begin_layout Section
-Starting the LyX Server
-\end_layout
+\end_inset
-\begin_layout Standard
-The LyX server works through the use of a pair of named pipes.
- These are usually located in
+ and
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-UserDir
+TransformOption
\end_layout
\end_inset
- and have the names
-\begin_inset Quotes eld
-\end_inset
-
+ commands:
+\end_layout
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-.lyxpipe.in
+$$Clip
\end_layout
\end_inset
+ The clip option.
+\end_layout
-\begin_inset Quotes erd
-\end_inset
-
- and
-\begin_inset Quotes eld
-\end_inset
-
-
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-.lyxpipe.out
+$$Extra
\end_layout
\end_inset
+ The extra option.
+\end_layout
-\begin_inset Quotes erd
-\end_inset
-
-.
- External programs write into
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-.lyxpipe.in
+$$Resize
\end_layout
\end_inset
- and read back data from
+ The resize option.
+\end_layout
+
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-.lyxpipe.out
+$$Rotate
\end_layout
\end_inset
-.
- The stem of the pipe names can be defined in the
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
+ The rotation option.
+\end_layout
-\begin_layout Plain Layout
+\begin_layout Standard
+You may ask why there are so many path macros.
+ There are mainly two reasons:
+\end_layout
-\bar under
-T
-\bar default
-ools\SpecialChar \menuseparator
+\begin_layout Enumerate
+Relative and absolute file names should remain relative or absolute, respectivel
+y.
+ Users may have reasons to prefer either form.
+ Relative names are useful for portable documents that should work on different
+ machines, for example.
+ Absolute names may be required by some programs.
+\end_layout
-\bar under
-P
-\bar default
-references
+\begin_layout Enumerate
+LaTeX treats relative file names differently than LyX and other programs
+ in nested included files.
+ For LyX, a relative file name is always relative to the document that contains
+ the file name.
+ For LaTeX, it is always relative to the master document.
+ These two definitions are identical if you have only one document, but
+ differ if you have a master document that includes part documents.
+ That means that relative filenames must be transformed when presented to
+ LaTeX.
+ Fortunately LyX does this automatically for you if you choose the right
+ macros.
+\end_layout
+
+\begin_layout Standard
+So which path macro should be used in new template definitions? The rule
+ is not difficult:
\end_layout
-\end_inset
-
- dialog, for example
+\begin_layout Itemize
+Use
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-"/home/myhome/.lyxpipe"
+$$AbsPath
\end_layout
\end_inset
-.
+ if an absolute path is required.
\end_layout
-\begin_layout Standard
-LyX will add the '
+\begin_layout Itemize
+Use
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-.in
+$$AbsOrRelPathMaster
\end_layout
\end_inset
-' and '
+ if the substituted string is some kind of LaTeX input.
+\end_layout
+
+\begin_layout Itemize
+Else use
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-.out
+$$AbsOrRelPathParent
\end_layout
\end_inset
-' to create the pipes.
- The above setting also has the effect of activating the LyX server.
- If one of the pipes already exists, LyX will assume that another LyX process
- is already running and will not start the server.
- To have several LyX processes with servers at the same time, you have to
- change the configuration between the start of the programs.
-\end_layout
-
-\begin_layout Standard
-If you are developing a client program, you might find it useful to enable
- debugging information from the LyX server.
- Do this by starting LyX as lyx -dbg lyxserver.
-\end_layout
-
-\begin_layout Standard
-Warning: if LyX crashes, it may not manage to remove the pipes; in this
- case you must remove them manually.
- If LyX starts and the pipes exist already, it will not start any server.
+ in order to preserve the user's choice.
\end_layout
\begin_layout Standard
-Other than this, there are a few points to consider:
-\end_layout
-
-\begin_layout Itemize
-Both server and clients must run on UNIX or OS/2 machines.
- Communications between LyX on UNIX and clients on OS/2 or vice versa is
- not possible right now.
-\end_layout
+There are special cases where this rule does not work and e.
+\begin_inset space \thinspace{}
+\end_inset
-\begin_layout Itemize
-On OS/2, only one client can connect to LyXServer at a time.
-\end_layout
+g.
+\begin_inset space \space{}
+\end_inset
-\begin_layout Itemize
-On OS/2, clients must open inpipe with
+relative names are needed, but normally it will work just fine.
+ One example for such a case is the command
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-O_WRONLY
+ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pstex_t"
\end_layout
\end_inset
-
-\end_layout
-
-\begin_layout Standard
-mode.
-\end_layout
-
-\begin_layout Standard
-You can find a complete example client written in C in the source distribution
- as
+ in the XFig template above: We can't use the absolute name because the
+ copier for
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-development/lyxserver/server_monitor.c
+.pstex_t
\end_layout
\end_inset
-.
+ files needs the relative name in order to rewrite the file content.
\end_layout
\begin_layout Section
-Normal communication
-\end_layout
-
-\begin_layout Standard
-To issue a LyX call, the client writes a line of ASCII text into the input
- pipe.
- This line has the following format:
-\end_layout
-
-\begin_layout Quote
-LYXCMD:
-\emph on
-clientname
-\emph default
-:
-\emph on
-function
-\emph default
-:
-\emph on
-argument
-\end_layout
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:Security-discussion"
-\begin_layout Description
+\end_inset
-\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.
+Security discussion
\end_layout
-\begin_layout Description
+\begin_layout Standard
+\begin_inset Box Shadowbox
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+status open
-\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.
+\begin_layout Plain Layout
+WARNING: This section is definitely outdated.
\end_layout
-\begin_layout Description
-
-\emph on
-argument
-\emph default
- is an optional argument which is meaningful only to some functions (for
- instance
-\begin_inset Quotes eld
\end_inset
-self-insert
-\begin_inset Quotes erd
-\end_inset
- which will insert the argument as text at the cursor position.)
\end_layout
\begin_layout Standard
-The answer from LyX will arrive in the output pipe and be of the form
-\end_layout
-
-\begin_layout Quote
-INFO:
-\emph on
-clientname
-\emph default
-:
-\emph on
-function
-\emph default
-:
-\emph on
-data
+The external material feature interfaces with a lot of external programs
+ and does so automatically, so we have to consider the security implications
+ of this.
+ In particular, since you have the option of including your own filenames
+ and/or parameter strings and those are expanded into a command, it seems
+ that it would be possible to create a malicious document which executes
+ arbitrary commands when a user views or prints the document.
+ This is something we definitely want to avoid.
\end_layout
\begin_layout Standard
-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
+However, since the external program commands are specified in the template
+ configuration file only, there are no security issues if LyX is properly
+ configured with safe templates only.
+ This is so because the external programs are invoked with the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+execvp
+\end_layout
-font-state
-\begin_inset Quotes erd
\end_inset
-, while other will return an empty data-response.
- This means that the command execution went fine.
-\end_layout
+-system call rather than the
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout Standard
-In case of errors, the response from LyX will have this form
+\begin_layout Plain Layout
+system
\end_layout
-\begin_layout Quote
-ERROR:
-\emph on
-clientname
-\emph default
-:
-\emph on
-function
-\emph default
-:
-\emph on
-error message
-\end_layout
+\end_inset
-\begin_layout Standard
-where the
-\emph on
-error message
-\emph default
- should contain an explanation of why the command failed.
+ system-call, so it's not possible to execute arbitrary commands from the
+ filename or parameter section via the shell.
\end_layout
\begin_layout Standard
-Examples:
-\end_layout
+This also implies that you are restricted in what command strings you can
+ use in the external material templates.
+ In particular, pipes and redirection are not readily available.
+ This has to be so if LyX should remain safe.
+ If you want to use some of the shell features, you should write a safe
+ script to do this in a controlled manner, and then invoke the script from
+ the command string.
+ In the
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout LyX-Code
-echo "LYXCMD:test:beginning-of-buffer:" >~/.lyxpipe.in
+\begin_layout Plain Layout
+lib/scripts
\end_layout
-\begin_layout LyX-Code
-echo "LYXCMD:test:get-xy:" >~/.lyxpipe.in
-\begin_inset Newline newline
-\end_inset
-
-read a <~/.lyxpipe.out
-\begin_inset Newline newline
\end_inset
-echo $a
-\end_layout
+ directory of the LyX installation, you can find a safe wrapper script
+\begin_inset Flex CharStyle:Code
+status collapsed
-\begin_layout Section
-Notification
+\begin_layout Plain Layout
+general_command_wrapper.py
\end_layout
-\begin_layout Standard
-LyX can notify clients of events going on asynchronously.
- Currently it will only do this if the user binds a key sequence with the
- function
-\begin_inset Quotes eld
-\end_inset
-
-notify
-\begin_inset Quotes erd
\end_inset
-.
- The format of the string LyX sends is as follows:
-\end_layout
-
-\begin_layout Quote
+ that supports redirection of input and output.
+ That can serve as an example for how to write safe template scripts.
+ For a more advanced example that uses
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-NOTIFY:
+fork
\end_layout
\end_inset
+ and friends, take a look at the
+\begin_inset Flex CharStyle:Code
+status collapsed
-\emph on
-key-sequence
-\end_layout
-
-\begin_layout Standard
-where
-\emph on
-key-sequence
-\emph default
- is the printed representation of the key sequence that was actually typed
- by the user.
+\begin_layout Plain Layout
+pic2ascii.py
\end_layout
-\begin_layout Standard
-This mechanism can be used to extend LyX's command set and implement macros:
- bind some key sequence to
-\begin_inset Quotes eld
-\end_inset
-
-notify
-\begin_inset Quotes erd
\end_inset
-, start a client that listens on the out pipe, dispatches the command according
- to the sequence and starts a function that may use LyX calls and LyX requests
- to issue a command or a series of commands to LyX.
-\end_layout
-
-\begin_layout Section
-The simple LyX Server Protocol
+ converter script.
\end_layout
\begin_layout Standard
-LyX implements a simple protocol that can be used for session management.
- All messages are of the form
+It is possible to design a template that interacts directly with the shell,
+ but since this would allow a malicious user to execute arbitrary commands
+ by writing clever filenames and/or parameters, we generally recommend that
+ you only use safe scripts that work with the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+execvp
\end_layout
-\begin_layout Quote
-LYXSRV:
+\end_inset
+
+ system call in a controlled manner.
+ Of course, for use in a controlled environment, it can be tempting to just
+ fall back to use ordinary shell scripts.
+ If you do so, be aware that you
\emph on
-clientname
+will
\emph default
-:
-\emph on
-protocol message
+ provide an easily exploitable security hole in your system.
+ Of course it stands to reason that such unsafe templates will never be
+ included in the standard LyX distribution, although we do encourage people
+ to submit new templates in the open source tradition.
+ But LyX as shipped from the official distribution channels will never have
+ unsafe templates.
\end_layout
\begin_layout Standard
-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.
+Including external material provides a lot of power, and you have to be
+ careful not to introduce security hazards with this power.
+ A subtle error in a single line in an innocent looking script can open
+ the door to huge security problems.
+ So if you do not fully understand the issues, we recommend that you consult
+ a knowledgeable security professional or the LyX development team if you
+ have any questions about whether a given template is safe or not.
+ And do this before you use it in an uncontrolled environment.
\end_layout
\end_body