+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+.
+ There must be no space between any of these.
+\end_layout
+
+\begin_layout Standard
+There is one other piece of syntax available in definitions, which looks
+ like this:
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+{!<i>!}
+\end_layout
+
+\end_inset
+
+.
+ This defines a piece of formatting information that is to be used when
+ creating
+\begin_inset Quotes eld
+\end_inset
+
+rich text
+\begin_inset Quotes erd
+\end_inset
+
+.
+ Obviously, we do not want to output HTML tags when writing plain text,
+ so they should be wrapped in
+\begin_inset Quotes eld
+\end_inset
+
+{!
+\begin_inset Quotes erd
+\end_inset
+
+ and
+\begin_inset Quotes eld
+\end_inset
+
+!}
+\begin_inset Quotes erd
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+Two special sorts of definitions are also possible in a
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+CiteFormat
+\end_layout
+
+\end_inset
+
+ block.
+ An example of the first would be:
+\end_layout
+
+\begin_layout LyX-Code
+!quotetitle
+\begin_inset Quotes eld
+\end_inset
+
+%title%
+\begin_inset Quotes erd
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+This is an abbreviation, or macro, and it can be used by treating it as
+ if it were a key:
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+%!quotetitle%
+\end_layout
+
+\end_inset
+
+.
+ \SpecialChar LyX
+ will treat
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+%!quotetitle%
+\end_layout
+
+\end_inset
+
+ exactly as it would treat its definition.
+ So, let us issue the obvious
+\emph on
+warning
+\emph default
+.
+ Do not do this:
+\end_layout
+
+\begin_layout LyX-Code
+!funfun %funfun%
+\end_layout
+
+\begin_layout Standard
+or anything like it.
+ \SpecialChar LyX
+ shouldn't go into an infinite loop, but it may go into a long one before
+ it gives up.
+\end_layout
+
+\begin_layout Standard
+The second sort of special definition might look like this:
+\end_layout
+
+\begin_layout LyX-Code
+_pptext pp.
+\end_layout
+
+\begin_layout Standard
+This defines a translatable piece of text, which allows relevant parts of
+ the bibliography to be translated.
+ It can be included in a definition by treating it as a key:
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+%_pptext%
+\end_layout
+
+\end_inset
+
+.
+ Several of these are predefined in
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+stdciteformats.inc
+\end_layout
+
+\end_inset
+
+.
+ Note that these are not macros, in the sense just defined.
+ They will not be expanded.
+\end_layout
+
+\begin_layout Standard
+So here then is an example that use all these features:
+\begin_inset VSpace defskip
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\noindent
+
+\family typewriter
+!authoredit {%author%[[%author%, ]][[{%editor%[[%editor%, %_edtext%, ]]}]]}
+\end_layout
+
+\begin_layout Standard
+\begin_inset VSpace defskip
+\end_inset
+
+This defines a macro that prints the author, followed by a comma, if the
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+author
+\end_layout
+
+\end_inset
+
+ key is defined, or else prints the name of the editor, followed by the
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+_edtext
+\end_layout
+
+\end_inset
+
+ or its translation (it is by default
+\begin_inset Quotes eld
+\end_inset
+
+ed.
+\begin_inset Quotes erd
+\end_inset
+
+), if the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+editor
+\end_layout
+
+\end_inset
+
+ key is defined.
+ Note that this is in fact defined in
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+stdciteformats.inc
+\end_layout
+
+\end_inset
+
+, so you can use it in your own definitions, or re-definitions, if you load
+ that file first.
+\end_layout
+
+\begin_layout Section
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:Tags-for-XHTML"
+
+\end_inset
+
+Tags for XHTML output
+\end_layout
+
+\begin_layout Standard
+As with \SpecialChar LaTeX
+ or DocBook, the format of \SpecialChar LyX
+'s XHTML output is also controlled by
+ layout information.
+ In general, \SpecialChar LyX
+ provides sensible defaults and, as mentioned earlier, it will
+ even construct default CSS style rules from the other layout tags.
+ For example, \SpecialChar LyX
+ will attempt to use the information provided in the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Font
+\end_layout
+
+\end_inset
+
+ declaration for the Chapter style to write CSS that will appropriately
+ format chapter headings.
+\end_layout
+
+\begin_layout Standard
+In many cases, then, you may not have to do anything at all to get acceptable
+ XHTML output for your own environments, custom insets, and so forth.
+ But in some cases you will, and so \SpecialChar LyX
+ provides a number of layout tags that
+ can be used to customize the XHTML and CSS that are generated.
+\end_layout
+
+\begin_layout Standard
+Note that there are two tags,
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLPreamble
+\end_layout
+
+\end_inset
+
+ and
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+AddToHTMLPreamble
+\end_layout
+
+\end_inset
+
+ that may appear outside style and inset declarations.
+ See
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "subsec:General-text-class"
+
+\end_inset
+
+ for details on these.
+\end_layout
+
+\begin_layout Subsection
+\begin_inset CommandInset label
+LatexCommand label
+name "subsec:Paragraph-Style-XHTML"
+
+\end_inset
+
+Paragraph styles
+\end_layout
+
+\begin_layout Standard
+The sort of XHTML \SpecialChar LyX
+ outputs for a paragraph depends upon whether we are dealing
+ with a normal paragraph, a command, or an environment, where this is itself
+ determined by the contents of the corresponding
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+\SpecialChar LaTeX
+Type
+\end_layout
+
+\end_inset
+
+ tag.
+
+\end_layout
+
+\begin_layout Standard
+For a command or normal paragraph, the output XHTML has the following form:
+\end_layout
+
+\begin_layout LyX-Code
+<tag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>
+\end_layout
+
+\begin_layout LyX-Code
+<labeltag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>Label</labeltag>
+\end_layout
+
+\begin_layout LyX-Code
+Contents of the paragraph.
+\end_layout
+
+\begin_layout LyX-Code
+</tag>
+\end_layout
+
+\begin_layout Standard
+The label tags are of course omitted if the paragraph does not have a label.
+\end_layout
+
+\begin_layout Standard
+For an environment that is not some sort of list, the XHTML takes this form:
+\end_layout
+
+\begin_layout LyX-Code
+<tag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>
+\end_layout
+
+\begin_layout LyX-Code
+<itemtag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+><labeltag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>Environment Label</labeltag>First paragraph.</itemtag>
+\end_layout
+
+\begin_layout LyX-Code
+<itemtag>Second paragraph.</itemtag>
+\end_layout
+
+\begin_layout LyX-Code
+</tag>
+\end_layout
+
+\begin_layout Standard
+Note that the label is output only for the first paragraph, as it should
+ be for a theorem, for example.
+
+\end_layout
+
+\begin_layout Standard
+For a list, we have one of these forms:
+\end_layout
+
+\begin_layout LyX-Code
+<tag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>
+\end_layout
+
+\begin_layout LyX-Code
+<itemtag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+><labeltag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>List Label</labeltag>First item.</itemtag>
+\end_layout
+
+\begin_layout LyX-Code
+<itemtag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+><labeltag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>List Label</labeltag>Second item.</itemtag>
+\end_layout
+
+\begin_layout LyX-Code
+</tag>
+\end_layout
+
+\begin_layout LyX-Code
+
+\end_layout
+
+\begin_layout LyX-Code
+<tag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>
+\end_layout
+
+\begin_layout LyX-Code
+<labeltag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>List Label</labeltag><itemtag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>First item.</itemtag>
+\end_layout
+
+\begin_layout LyX-Code
+<labeltag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>List Label</labeltag><itemtag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>Second item.</itemtag>
+\end_layout
+
+\begin_layout LyX-Code
+</tag>
+\end_layout
+
+\begin_layout Standard
+Note the different orders of
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+labeltag
+\end_layout
+
+\end_inset
+
+ and
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+itemtag
+\end_layout
+
+\end_inset
+
+.
+ Which order we get depends upon the setting of
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLLabelFirst
+\end_layout
+
+\end_inset
+
+: If
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLLabelFirst
+\end_layout
+
+\end_inset
+
+ is false (the default), you get the first of these, with the label within
+ the item; if true, you get the second, with the label outside the item.
+\end_layout
+
+\begin_layout Standard
+The specific tags and attributes output for each paragraph type can be controlle
+d by means of the layout tags we are about to describe.
+ As mentioned earlier, however, \SpecialChar LyX
+ uses sensible defaults for many of these,
+ so you often may not need to do very much to get good XHTML output.
+ Think of the available tags as there so you can tweak things to your liking.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLAttr
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] Specifies attribute information to be output with the main tag.
+ For example,
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+class=`mydiv'
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+.
+ By default, \SpecialChar LyX
+ will output
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+class=`layoutname'
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+, where
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+layoutname
+\end_layout
+
+\end_inset
+
+ is the \SpecialChar LyX
+ name of the layout, made lowercase, for example: chapter.
+ This should
+\emph on
+not
+\emph default
+ contain any style information.
+ Use
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLStyle
+\end_layout
+
+\end_inset
+
+ for that purpose.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLForceCSS
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\emph on
+0
+\emph default
+,1
+\end_layout
+
+\end_inset
+
+] Whether to output the default CSS information \SpecialChar LyX
+ generates for this layout,
+ even if additional information is explicitly provided via
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLStyle
+\end_layout
+
+\end_inset
+
+.
+ Setting this to
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+
+ allows you to alter or augment the generated CSS, rather than to override
+ it completely.
+ Default is
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLItem
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] The tag to be used for individual paragraphs of environments, replacing
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+itemtag
+\end_layout
+
+\end_inset
+
+ in the examples above.
+ Defaults to
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+div
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLItemAttr
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] Attributes for the item tag.
+ Defaults to
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+class=`layoutname_item'
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+.
+ This should
+\emph on
+not
+\emph default
+ contain any style information.
+ Use
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLStyle
+\end_layout
+
+\end_inset
+
+ for that purpose.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLLabel
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] The tag to be used for paragraph and item labels, replacing
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+labeltag
+\end_layout
+
+\end_inset
+
+ in the examples above.
+ Defaults to
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+span
+\end_layout
+
+\end_inset
+
+, unless
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+LabelType
+\end_layout
+
+\end_inset
+
+ is either
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Top_Environment
+\end_layout
+
+\end_inset
+
+ or
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Centered_Top_Environment
+\end_layout
+
+\end_inset
+
+, in which case it defaults to
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+div
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLLabelAttr
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] Attributes for the label tag.
+ Defaults to
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+class=`layoutname_label'
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+.
+ This should
+\emph on
+not
+\emph default
+ contain any style information.
+ Use
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLStyle
+\end_layout
+
+\end_inset
+
+ for that purpose.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLLabelFirst
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\emph on
+0
+\emph default
+,1
+\end_layout
+
+\end_inset
+
+] Meaningful only for list-like environments, this tag controls whether
+ the label tag is output before or inside the item tag.
+ This is used, for example, in the description environment, where we want
+ `
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+<dt>\SpecialChar ldots
+</dt><dd>\SpecialChar ldots
+</dd>
+\end_layout
+
+\end_inset
+
+.
+ Default is
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+
+: The label tag is output inside the item tag.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLPreamble
+\end_layout
+
+\end_inset
+
+ Information to be output in the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+<head>
+\end_layout
+
+\end_inset
+
+ section when this style is used.
+ This might, for example, be used to include a
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+<script>
+\end_layout
+
+\end_inset
+
+ block defining an
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+onclick
+\end_layout
+
+\end_inset
+
+ handler.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLStyle
+\end_layout
+
+\end_inset
+
+ CSS style information to be included when this style is used.
+ Note that this will automatically be wrapped in a layout-generated
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+<style>
+\end_layout
+
+\end_inset
+
+ block, so only the CSS itself need be included.
+ Must end with
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+EndHTMLStyle
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLTag
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] The tag to be used for the main label, replacing
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+tag
+\end_layout
+
+\end_inset
+
+ in the examples above.
+ Defaults to
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+div
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLTitle
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\emph on
+0
+\emph default
+,1
+\end_layout
+
+\end_inset
+
+] Marks this style as the one to be used to generate the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+<title>
+\end_layout
+
+\end_inset
+
+ tag for the XHTML file.
+ By default, it is false.
+ The
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+stdtitle.inc
+\end_layout
+
+\end_inset
+
+ file sets it to true for the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+title
+\end_layout
+
+\end_inset
+
+ environment.
+
+\end_layout
+
+\begin_layout Subsection
+InsetLayout XHTML
+\end_layout
+
+\begin_layout Standard
+The XHTML output of insets can also be controlled by information in layout
+ files.
+\begin_inset Foot
+status collapsed
+
+\begin_layout Plain Layout
+At present, this is true only for
+\begin_inset Quotes eld
+\end_inset
+
+text
+\begin_inset Quotes erd
+\end_inset
+
+ insets (insets you can type into) and is not true for
+\begin_inset Quotes eld
+\end_inset
+
+command
+\begin_inset Quotes erd
+\end_inset
+
+ insets (insets that are associated with dialog boxes).
+\end_layout
+
+\end_inset
+
+ Here, too, \SpecialChar LyX
+ tries to provide sensible defaults, and it constructs default
+ CSS style rules.
+ But everything can be customized.
+\end_layout
+
+\begin_layout Standard
+The XHTML \SpecialChar LyX
+ outputs for an inset has the following form:
+\end_layout
+
+\begin_layout LyX-Code
+<tag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>
+\end_layout
+
+\begin_layout LyX-Code
+<labeltag>Label</labeltag>
+\end_layout
+
+\begin_layout LyX-Code
+<innertag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>Contents of the inset.</innertag>
+\end_layout
+
+\begin_layout LyX-Code
+</tag>
+\end_layout
+
+\begin_layout Standard
+If the inset permits multiple paragraphs—that is, if
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+MultiPar
+\end_layout
+
+\end_inset
+
+ is true—then the contents of the inset will itself be output as paragraphs
+ formatted according to the styles used for those paragraphs (standard,
+ quote, and the like).
+ The label tag is of course omitted if the paragraph does not have a label
+ and, at present, is always
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+span
+\end_layout
+
+\end_inset
+
+.
+ The inner tag is optional and, by default, does not appear.
+\end_layout
+
+\begin_layout Standard
+The specific tags and attributes output for each inset can be controlled
+ by means of the following layout tags.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLAttr
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] Specifies attribute information to be output with the main tag.
+ For example,
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+class=`myinset' onclick=`\SpecialChar ldots
+'
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+.
+ By default, \SpecialChar LyX
+ will output
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+class=`insetname'
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+, where
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+insetname
+\end_layout
+
+\end_inset
+
+ is the \SpecialChar LyX
+ name of the inset, made lowercase and with non-alphanumeric characters
+ converted to underscores, for example: footnote.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLForceCSS
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\emph on
+0
+\emph default
+,1
+\end_layout
+
+\end_inset
+
+] Whether to output the default CSS information \SpecialChar LyX
+ generates for this layout,
+ even if additional information is explicitly provided via
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLStyle
+\end_layout
+
+\end_inset
+
+.
+ Setting this to
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+
+ allows you to alter or augment the generated CSS, rather than to override
+ it completely.
+ Default is 0.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLInnerAttr
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] Attributes for the inner tag.
+ Defaults to
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+class=`insetname_inner'
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLInnerTag
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] The inner tag, replacing
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+innertag
+\end_layout
+
+\end_inset
+
+ in the examples above.
+ By default, there is none.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLIsBlock
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+0,
+\emph on
+1
+\end_layout
+
+\end_inset
+
+] Whether this inset represents a standalone block of text (such as a footnote)
+ or instead represents material that is included in the surrounding text
+ (such as a branch).
+ Defaults to 1.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLLabel
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] A label for this inset, possibly including a reference to a counter.
+ For example, for footnote, it might be:
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\backslash
+arabic{footnote}
+\end_layout
+
+\end_inset
+
+.
+ This is optional, and there is no default.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLPreamble
+\end_layout
+
+\end_inset
+
+ Information to be output in the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+<head>
+\end_layout
+
+\end_inset
+
+ section when this style is used.
+ This might, for example, be used to include a
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+<script>
+\end_layout
+
+\end_inset
+
+ block defining an
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+onclick
+\end_layout
+
+\end_inset
+
+ handler.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLStyle
+\end_layout
+
+\end_inset
+
+ CSS style information to be included when this style is used.
+ Note that this will automatically be wrapped in a layout-generated
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+<style>
+\end_layout
+
+\end_inset
+
+ block, so only the CSS itself need be included.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLTag
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] The tag to be used for the main label, replacing
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+tag
+\end_layout
+
+\end_inset
+
+ in the examples above.
+ The default depends upon the setting of
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+MultiPar
+\end_layout
+
+\end_inset
+
+: If
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+MultiPar
+\end_layout
+
+\end_inset
+
+ is true, the default is
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+div
+\end_layout
+
+\end_inset
+
+; if it is false, the default is
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+span
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Subsection
+Float XHTML
+\end_layout
+
+\begin_layout Standard
+The XHTML output for floats too can be controlled by layout information.
+ The output has the following form:
+\end_layout
+
+\begin_layout LyX-Code
+<tag attr=
+\begin_inset Quotes erd
+\end_inset
+
+value
+\begin_inset Quotes erd
+\end_inset
+
+>
+\end_layout
+
+\begin_layout LyX-Code
+Contents of the float.
+\end_layout
+
+\begin_layout LyX-Code
+</tag>
+\end_layout
+
+\begin_layout Standard
+The caption, if there is one, is a separate inset and will be output as
+ such.
+ Its appearance can be controlled via the InsetLayout for caption insets.
+
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLAttr
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] Specifies attribute information to be output with the main tag.
+ For example,
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+class=`myfloat' onclick=`\SpecialChar ldots
+'
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+.
+ By default, \SpecialChar LyX
+ will output
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+class=`float float-floattype'
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+, where
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+floattype
+\end_layout
+
+\end_inset
+
+ is \SpecialChar LyX
+'s name for this type of float, as determined by the float declaration
+ (see
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "subsec:Floats"
+
+\end_inset
+
+), though made lowercase and with non-alphanumeric characters converted
+ to underscores, for example: float-table.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLStyle
+\end_layout
+
+\end_inset
+
+ CSS style information to be included when this float is used.
+ Note that this will automatically be wrapped in a layout-generated
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+<style>
+\end_layout
+
+\end_inset
+
+ block, so only the CSS itself need be included.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLTag
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] The tag to be used for this float, replacing
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+tag
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+ in the example above.
+ The default is
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+div
+\end_layout
+
+\end_inset
+
+ and will rarely need changing.
+\end_layout
+
+\begin_layout Subsection
+Bibliography formatting
+\end_layout
+
+\begin_layout Standard
+The bibliography can be formatted using
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+CiteFormat
+\end_layout
+
+\end_inset
+
+ blocks.
+ See
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "subsec:Citation-format-description"
+
+\end_inset
+
+ for the details.
+\end_layout
+
+\begin_layout Subsection
+\SpecialChar LyX
+-generated CSS
+\end_layout
+
+\begin_layout Standard
+We have several times mentioned that \SpecialChar LyX
+ will generate default CSS style rules
+ for both insets and paragraph styles, based upon the other layout information
+ that is provided.
+ In this section, we shall say a word about which layout information \SpecialChar LyX
+ uses
+ and how.
+\end_layout
+
+\begin_layout Standard
+At present, \SpecialChar LyX
+ auto-generates CSS only for font information, making use of
+ the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Family
+\end_layout
+
+\end_inset
+
+,
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Series
+\end_layout
+
+\end_inset
+
+,
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Shape
+\end_layout
+
+\end_inset
+
+, and
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Size
+\end_layout
+
+\end_inset
+
+ specified in the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Font
+\end_layout
+
+\end_inset
+
+ declaration (see
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "subsec:Font-description"
+
+\end_inset
+
+).
+ The translation is mostly straightforward and obvious.
+ For example,
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Family Sans
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+ becomes
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+font-family: sans-serif;
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+.
+ The correspondence of \SpecialChar LyX
+ sizes and CSS sizes is a little less obvious but
+ nonetheless intuitive.
+ See the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+getSizeCSS()
+\end_layout
+
+\end_inset
+
+ function in
+\begin_inset Flex URL
+status collapsed
+
+\begin_layout Plain Layout
+
+src/FontInfo.cpp
+\end_layout
+
+\end_inset
+
+ for the details.
+\end_layout
+
+\begin_layout Chapter
+Including External Material
+\begin_inset CommandInset label
+LatexCommand label
+name "chap:Including-External-Material"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\begin_inset Box Shadowbox
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+WARNING: This portion of the documentation has not been updated for some
+ time.
+ We certainly hope that it is still accurate, but there are no guarantees.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The use of material from sources external to \SpecialChar LyX
+ is covered in detail in the
+
+\emph on
+Embedded Objects
+\emph default
+ manual.
+ This part of the manual covers what needs to happen behind the scenes for
+ new sorts of material to be included.
+\end_layout
+
+\begin_layout Section
+How does it work?
+\end_layout
+
+\begin_layout Standard
+The external material feature is based on the concept of a
+\emph on
+template
+\emph default
+.
+ A template is a specification of how \SpecialChar LyX
+ should interface with a certain kind
+ of material.
+ As bundled, \SpecialChar 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 MenuItem
+status collapsed
+
+\begin_layout Plain Layout
+Insert\SpecialChar menuseparator
+File\SpecialChar menuseparator
+External Material
+\end_layout
+
+\end_inset
+
+.
+ Furthermore, it is possible to roll your own template to support a specific
+ kind of material.
+ Later we'll describe in more detail what is involved, and hopefully you
+ will submit all the templates you create so we can include them in a later
+ \SpecialChar 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 Code
+status collapsed
+
+\begin_layout Plain Layout
+Xfig
+\end_layout
+
+\end_inset
+
+.
+ The Xfig application itself works on an original file with the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+.fig
+\end_layout
+
+\end_inset
+
+ extension.
+ Within Xfig, you create and change your figure, and when you are done,
+ you save the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+fig
+\end_layout
+
+\end_inset
+
+-file.
+ When you want to include the figure in your document, you invoke
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+transfig
+\end_layout
+
+\end_inset
+
+ in order to create a PostScript file that can readily be included in your
+ \SpecialChar LaTeX
+ file.
+ In this case, the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+.fig
+\end_layout
+
+\end_inset
+
+ file is the original file, and the PostScript file is the produced file.
+\end_layout
+
+\begin_layout Standard
+This distinction is important in order to allow updating of the material
+ while you are in the process of writing the document.
+ Furthermore, it provides us with the flexibility that is needed to support
+ multiple export formats.
+ For instance, in the case of a plain text file, it is not exactly an award-winn
+ing idea to include the figure as raw PostScript.
+ Instead, you would 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 \SpecialChar 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 \SpecialChar LyX
+,
+ and also preview the produced PostScript file with Ghostview with another
+ click.
+ No more fiddling around with the command line and/or file browsers to locate
+ and manipulate the original or produced files.
+ In this way, you are finally able to take full advantage of the many different
+ applications that are relevant to use when you write your documents, and
+ ultimately be more productive.
+\end_layout
+
+\begin_layout Section
+The external template configuration file
+\end_layout
+
+\begin_layout Standard
+It is relatively easy to add custom external template definitions to \SpecialChar 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
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:Security-discussion"
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+Having said that, we encourage you to submit any interesting templates that
+ you create.
+
+\end_layout
+
+\begin_layout Standard
+The external templates are defined in the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_deleted -712698321 1437634905
+\SpecialChar LyX
+
+\change_inserted -712698321 1437634906
+LyX
+\change_unchanged
+Dir/lib/external_templates
+\end_layout
+
+\end_inset
+
+ file.
+ You can place your own version in
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+UserDir/external_templates
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Standard
+A typical template looks like this:
+\end_layout
+
+\begin_layout LyX-Code
+Template XFig
+\end_layout
+
+\begin_layout LyX-Code
+GuiName "XFig: $$AbsOrRelPathParent$$Basename"
+\end_layout
+
+\begin_layout LyX-Code
+HelpText
+\end_layout
+
+\begin_layout LyX-Code
+An XFig figure.
+\end_layout
+
+\begin_layout LyX-Code
+HelpTextEnd
+\end_layout
+
+\begin_layout LyX-Code
+InputFormat fig
+\end_layout
+
+\begin_layout LyX-Code
+FileFilter "*.fig"
+\end_layout
+
+\begin_layout LyX-Code
+AutomaticProduction true
+\end_layout
+
+\begin_layout LyX-Code
+Transform Rotate
+\end_layout
+
+\begin_layout LyX-Code
+Transform Resize
+\end_layout
+
+\begin_layout LyX-Code
+Format \SpecialChar LaTeX
+
+\end_layout
+
+\begin_layout LyX-Code
+TransformCommand Rotate RotationLatexCommand
+\end_layout
+
+\begin_layout LyX-Code
+TransformCommand Resize ResizeLatexCommand
+\end_layout
+
+\begin_layout LyX-Code
+Product "$$RotateFront$$ResizeFront
+\end_layout
+
+\begin_layout LyX-Code
+
+\backslash
+
+\backslash
+input{$$AbsOrRelPathMaster$$Basename.pstex_t}
+\end_layout
+
+\begin_layout LyX-Code
+ $$ResizeBack$$RotateBack"
+\end_layout
+
+\begin_layout LyX-Code
+UpdateFormat pstex
+\end_layout
+
+\begin_layout LyX-Code
+UpdateResult "$$AbsPath$$Basename.pstex_t"
+\end_layout
+
+\begin_layout LyX-Code
+Requirement "graphicx"
+\end_layout
+
+\begin_layout LyX-Code
+ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pstex_t"
+\end_layout
+
+\begin_layout LyX-Code
+ReferencedFile latex "$$AbsPath$$Basename.eps"
+\end_layout
+
+\begin_layout LyX-Code
+ReferencedFile dvi "$$AbsPath$$Basename.eps"
+\end_layout
+
+\begin_layout LyX-Code
+FormatEnd
+\end_layout
+
+\begin_layout LyX-Code
+Format PDF\SpecialChar LaTeX
+
+\end_layout
+
+\begin_layout LyX-Code
+TransformCommand Rotate RotationLatexCommand
+\end_layout
+
+\begin_layout LyX-Code
+TransformCommand Resize ResizeLatexCommand
+\end_layout
+
+\begin_layout LyX-Code
+Product "$$RotateFront$$ResizeFront
+\end_layout
+
+\begin_layout LyX-Code
+
+\backslash
+
+\backslash
+input{$$AbsOrRelPathMaster$$Basename.pdftex_t}
+\end_layout
+
+\begin_layout LyX-Code
+ $$ResizeBack$$RotateBack"
+\end_layout
+
+\begin_layout LyX-Code
+UpdateFormat pdftex
+\end_layout
+
+\begin_layout LyX-Code
+UpdateResult "$$AbsPath$$Basename.pdftex_t"
+\end_layout
+
+\begin_layout LyX-Code
+Requirement "graphicx"
+\end_layout
+
+\begin_layout LyX-Code
+ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pdftex_t"
+\end_layout
+
+\begin_layout LyX-Code
+ReferencedFile latex "$$AbsPath$$Basename.pdf"
+\end_layout
+
+\begin_layout LyX-Code
+FormatEnd
+\end_layout
+
+\begin_layout LyX-Code
+Format Ascii
+\end_layout
+
+\begin_layout LyX-Code
+Product "$$Contents(
+\backslash
+"$$AbsPath$$Basename.asc
+\backslash
+")"
+\end_layout
+
+\begin_layout LyX-Code
+UpdateFormat asciixfig
+\end_layout
+
+\begin_layout LyX-Code
+UpdateResult "$$AbsPath$$Basename.asc"
+\end_layout
+
+\begin_layout LyX-Code
+FormatEnd
+\end_layout
+
+\begin_layout LyX-Code
+Format DocBook
+\end_layout
+
+\begin_layout LyX-Code
+Product "<graphic fileref=
+\backslash
+"$$AbsOrRelPathMaster$$Basename.eps
+\backslash
+">
+\end_layout
+
+\begin_layout LyX-Code
+ </graphic>"
+\end_layout
+
+\begin_layout LyX-Code
+UpdateFormat eps
+\end_layout
+
+\begin_layout LyX-Code
+UpdateResult "$$AbsPath$$Basename.eps"
+\end_layout
+
+\begin_layout LyX-Code
+ReferencedFile docbook "$$AbsPath$$Basename.eps"
+\end_layout
+
+\begin_layout LyX-Code
+ReferencedFile docbook-xml "$$AbsPath$$Basename.eps"
+\end_layout
+
+\begin_layout LyX-Code
+FormatEnd
+\end_layout
+
+\begin_layout LyX-Code
+Product "[XFig: $$FName]"
+\end_layout
+
+\begin_layout LyX-Code
+FormatEnd
+\end_layout
+
+\begin_layout LyX-Code
+TemplateEnd
+\end_layout
+
+\begin_layout Standard
+As you can see, the template is enclosed in
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Template
+\end_layout
+
+\end_inset
+
+ \SpecialChar ldots
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+TemplateEnd
+\end_layout
+
+\end_inset
+
+.
+ It contains a header specifying some general settings and, for each supported
+ primary document file format, a section
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Format
+\end_layout
+
+\end_inset
+
+ \SpecialChar ldots
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+FormatEnd
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Subsection
+The template header
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+AutomaticProduction
+\begin_inset space ~
+\end_inset
+
+true|false
+\end_layout
+
+\end_inset
+
+ Whether the file represented by the template must be generated by \SpecialChar LyX
+.
+ This command must occur exactly once.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+FileFilter
+\begin_inset space ~
+\end_inset
+
+<pattern>
+\end_layout
+
+\end_inset
+
+ A glob pattern that is used in the file dialog to filter out the desired
+ files.
+ If there is more than one possible file extension (e.
+\begin_inset space \thinspace{}
+\end_inset
+
+g.
+\begin_inset space \space{}
+\end_inset
+
+tgif has
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+.obj
+\end_layout
+
+\end_inset
+
+ and
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+.tgo
+\end_layout
+
+\end_inset
+
+), use something like
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+"*.{obj,tgo}"
+\end_layout
+
+\end_inset
+
+.
+ This command must occur exactly once.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+GuiName
+\begin_inset space ~
+\end_inset
+
+<guiname>
+\end_layout
+
+\end_inset
+
+ The text that is displayed on the button.
+ This command must occur exactly once.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+HelpText
+\begin_inset space ~
+\end_inset
+
+<text>
+\begin_inset space ~
+\end_inset
+
+HelpTextEnd
+\end_layout
+
+\end_inset
+
+ The help text that is used in the External dialog.
+ Provide enough information to explain to the user just what the template
+ can provide him with.
+ This command must occur exactly once.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+InputFormat
+\begin_inset space ~
+\end_inset
+
+<format>
+\end_layout
+
+\end_inset
+
+ The file format of the original file.
+ This must be the name of a format that is known to \SpecialChar LyX
+ (see
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:Formats"
+
+\end_inset
+
+).
+ Use
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+*
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+ if the template can handle original files of more than one format.
+ \SpecialChar LyX
+ will attempt to interrogate the file itself in order to deduce its format
+ in this case.
+ This command must occur exactly once.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Template
+\begin_inset space ~
+\end_inset
+
+<id>
+\end_layout
+
+\end_inset
+
+ A unique name for the template.
+ It must not contain substitution macros (see below).
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Transform
+\begin_inset space ~
+\end_inset
+
+Rotate|Resize|Clip|Extra
+\end_layout
+
+\end_inset
+
+ This command specifies which transformations are supported by this template.
+ It may occur zero or more times.
+ This command enables the corresponding tabs in the external dialog.
+ Each
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Transform
+\end_layout
+
+\end_inset
+
+ command must have either a corresponding
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+TransformCommand
+\end_layout
+
+\end_inset
+
+ or a
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+TransformOption
+\end_layout
+
+\end_inset
+
+ command in the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Format
+\end_layout
+
+\end_inset
+
+ section.
+ Otherwise the transformation will not be supported by that format.
+\end_layout
+
+\begin_layout Subsection
+The Format section
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Format
+\begin_inset space ~
+\end_inset
+
+
+\change_inserted -195340706 1437418821
+L
+\change_inserted -712698321 1437634430
+a
+\change_deleted -712698321 1437634429
+A
+\change_inserted -195340706 1437418821
+TeX
+\change_deleted -195340706 1437418827
+\SpecialChar LaTeX
+
+\change_unchanged
+|PDF
+\change_inserted -195340706 1437418856
+L
+\change_inserted -712698321 1437634432
+a
+\change_deleted -712698321 1437634432
+A
+\change_inserted -195340706 1437418856
+TeX
+\change_deleted -195340706 1437418857
+\SpecialChar LaTeX
+
+\change_unchanged
+|PlainText|DocBook
+\end_layout
+
+\end_inset
+
+ The primary document file format that this format definition is for.
+ Not every template has a sensible representation in all document file formats.
+ Please define nevertheless a
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Format
+\end_layout
+
+\end_inset
+
+ section for all templates.
+ Use a dummy text when no representation is available.
+ Then you can at least see a reference to the external material in the exported
+ document.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Option
+\begin_inset space ~
+\end_inset
+
+<name>
+\begin_inset space ~
+\end_inset
+
+<value>
+\end_layout
+
+\end_inset
+
+ This command defines an additional macro
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+$$<name>
+\end_layout
+
+\end_inset
+
+ for substitution in
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Product
+\end_layout
+
+\end_inset
+
+.
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+<value>
+\end_layout
+
+\end_inset
+
+ itself may contain substitution macros.
+ The advantage over using
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+<value>
+\end_layout
+
+\end_inset
+
+ directly in
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Product
+\end_layout
+
+\end_inset
+
+ is that the substituted value of
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+$$<name>
+\end_layout
+
+\end_inset
+
+ is sanitized so that it is a valid optional argument in the document format.
+ This command may occur zero or more times.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Product
+\begin_inset space ~
+\end_inset
+
+<text>
+\end_layout
+
+\end_inset
+
+ The text that is inserted in the exported document.
+ This is actually the most important command and can be quite complex.
+ This command must occur exactly once.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Preamble
+\begin_inset space ~
+\end_inset
+
+<name>
+\end_layout
+
+\end_inset
+
+ This command specifies a preamble snippet that will be included in the
+ \SpecialChar LaTeX
+ preamble.
+ It has to be defined using
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+PreambleDef
+\end_layout
+
+\end_inset
+
+ \SpecialChar ldots
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+PreambleDefEnd
+\end_layout
+
+\end_inset
+
+.
+ This command may occur zero or more times.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+ReferencedFile
+\begin_inset space ~
+\end_inset
+
+<format>
+\begin_inset space ~
+\end_inset
+
+<filename>
+\end_layout
+
+\end_inset
+
+ This command denotes files that are created by the conversion process and
+ are needed for a particular export format.
+ If the filename is relative, it is interpreted relative to the master document.
+ This command may be given zero or more times.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Requirement
+\begin_inset space ~
+\end_inset
+
+<package>
+\end_layout
+
+\end_inset
+
+ The name of a required \SpecialChar LaTeX
+ package.
+ The package is included via
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\backslash
+usepackage{}
+\end_layout
+
+\end_inset
+
+ in the \SpecialChar LaTeX
+ preamble.
+ This command may occur zero or more times.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+TransformCommand
+\begin_inset space ~
+\end_inset
+
+Rotate
+\begin_inset space ~
+\end_inset
+
+RotationLatexCommand
+\end_layout
+
+\end_inset
+
+ This command specifies that the built in \SpecialChar LaTeX
+ command should be used for rotation.
+ This command may occur once or not at all.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+TransformCommand
+\begin_inset space ~
+\end_inset
+
+Resize
+\begin_inset space ~
+\end_inset
+
+ResizeLatexCommand
+\end_layout
+
+\end_inset
+
+ This command specifies that the built in \SpecialChar LaTeX
+ command should be used for resizing.
+ This command may occur once or not at all.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+TransformOption
+\begin_inset space ~
+\end_inset
+
+Rotate
+\begin_inset space ~
+\end_inset
+
+RotationLatexOption
+\end_layout
+
+\end_inset
+
+ This command specifies that rotation is done via an optional argument.
+ This command may occur once or not at all.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+TransformOption
+\begin_inset space ~
+\end_inset
+
+Resize
+\begin_inset space ~
+\end_inset
+
+ResizeLatexOption
+\end_layout
+
+\end_inset
+
+ This command specifies that resizing is done via an optional argument.
+ This command may occur once or not at all.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+TransformOption
+\begin_inset space ~
+\end_inset
+
+Clip
+\begin_inset space ~
+\end_inset
+
+ClipLatexOption
+\end_layout
+
+\end_inset
+
+ This command specifies that clipping is done via an optional argument.
+ This command may occur once or not at all.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+TransformOption
+\begin_inset space ~
+\end_inset
+
+Extra
+\begin_inset space ~
+\end_inset
+
+ExtraLatexOption
+\end_layout
+
+\end_inset
+
+ This command specifies that an extra optional argument is used.
+ This command may occur once or not at all.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+UpdateFormat
+\begin_inset space ~
+\end_inset
+
+<format>
+\end_layout
+
+\end_inset
+
+ The file format of the converted file.
+ This must be the name of a format that is known to \SpecialChar LyX
+ (see the
+\begin_inset Flex MenuItem
+status collapsed
+
+\begin_layout Plain Layout
+Tools\SpecialChar menuseparator
+Preferences\SpecialChar menuseparator
+File Handling\SpecialChar menuseparator
+File Format
+\end_layout
+
+\end_inset
+
+ dialog).
+ This command must occur exactly once.
+ If the resulting file format is PDF, you need to specify the format
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+pdf6
+\end_layout
+
+\end_inset
+
+.
+ This is the PDF format used for including graphics.
+ The other defined PDF formats are for document export.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+UpdateResult
+\begin_inset space ~
+\end_inset
+
+<filename>
+\end_layout
+
+\end_inset
+
+ The file name of the converted file.
+ The file name must be absolute.
+ This command must occur exactly once.
+\end_layout
+
+\begin_layout Subsection
+Preamble definitions
+\end_layout
+
+\begin_layout Standard
+The external template configuration file may contain additional preamble
+ definitions enclosed by
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+PreambleDef
+\end_layout
+
+\end_inset
+
+ \SpecialChar ldots
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+PreambleDefEnd
+\end_layout
+
+\end_inset
+
+.
+ They can be used by the templates in the
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Format
+\end_layout
+
+\end_inset
+
+ section.
+\end_layout
+
+\begin_layout Section
+The substitution mechanism
+\end_layout
+
+\begin_layout Standard
+When the external material facility invokes an external program, it is done
+ on the basis of a command defined in the template configuration file.
+ These commands can contain various macros that are expanded before execution.
+ Execution always take place in the directory of the containing document.
+\end_layout
+
+\begin_layout Standard
+Also, whenever external material is to be displayed, the name will be produced
+ by the substitution mechanism, and most other commands in the template
+ definition support substitution as well.
+\end_layout
+
+\begin_layout Standard
+The available macros are the following:
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+$$AbsOrRelPathMaster
+\end_layout
+
+\end_inset
+
+ The file path, absolute or relative to the master \SpecialChar LyX
+ document.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+$$AbsOrRelPathParent
+\end_layout
+
+\end_inset
+
+ The file path, absolute or relative to the \SpecialChar LyX
+ document.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+$$AbsPath
+\end_layout
+
+\end_inset
+
+ The absolute file path.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+$$Basename
+\end_layout
+
+\end_inset
+
+ The filename without path and without the extension.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+$$Contents(
+\begin_inset Quotes eld
+\end_inset
+
+filename.ext
+\begin_inset Quotes erd
+\end_inset
+
+)
+\end_layout
+
+\end_inset
+
+ This macro will expand to the contents of the file with the name
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+filename.ext
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+$$Extension
+\end_layout
+
+\end_inset
+
+ The file extension (including the dot).
+\change_inserted -195340706 1437418878
+