The attached documentation update has been lying half finished on my disk
for a long time. I documented editors and copiers very briefly. The main
changes are to the external material section. It is hopelessly out of
date. I added some notes stating just that, because I don't know what to
write instead of the old stuff.
Last, but not least I started to document the external template definition
file. This is just a start and may even contain errors, but IMHO better
than no documentation at all.
This goes in if nobody complains.
Georg
diff -p -r -U 3 -X excl.tmp lyx-1.4-clean/lib/doc/ChangeLog lyx-1.4-cvs/lib/doc/ChangeLog
--- lyx-1.4-clean/lib/doc/ChangeLog 2004-12-19 11:36:07.000000000 +0100
+++ lyx-1.4-cvs/lib/doc/ChangeLog 2005-01-30 13:41:29.000000000 +0100
@@ -1,3 +1,8 @@
+2005-01-30 Georg Baum <[EMAIL PROTECTED]>
+
+ * Customization.lyx: document the external template definition file
+ * Customization.lyx: document editors and copiers
+
2004-12-16 Jean-Marc Lasgouttes <[EMAIL PROTECTED]>
* LaTeXConfig.lyx.in: change a bit the description of language
diff -p -r -U 3 -X excl.tmp lyx-1.4-clean/lib/doc/Customization.lyx lyx-1.4-cvs/lib/doc/Customization.lyx
--- lyx-1.4-clean/lib/doc/Customization.lyx 2004-11-23 09:16:45.000000000 +0100
+++ lyx-1.4-cvs/lib/doc/Customization.lyx 2005-01-30 15:08:02.000000000 +0100
@@ -1605,11 +1605,11 @@ Submenu
s.
\layout Section
-Converters, Formats and Viewers
+Converters, Formats, Viewers, Editors and Copiers
\layout Standard
-LyX has a new and powerful mechanism to convert to and from any file format
- using external programs.
+LyX has a powerful mechanism to convert to and from any file format using
+ external programs.
Define a pair of formats, e.g.
\family typewriter
@@ -1666,7 +1666,7 @@ ools\SpecialChar \menuseparator
\bar under
P
\bar default
-references:Converters
+references:Conversion
\family default
dialog.
For example, to change the
@@ -1689,6 +1689,55 @@ M
odify
\family default
.
+\layout Standard
+
+Editors are like viewers: Each Format can have an Editor associated to it,
+ and they can be altered via the
+\family sans
+\bar under
+T
+\bar default
+ools\SpecialChar \menuseparator
+
+\bar under
+P
+\bar default
+references:Conversion
+\family default
+ dialog.
+ LyX uses them whenever an included file
+\begin_inset Foot
+collapsed true
+
+\layout Standard
+
+This can be an included
+\family typewriter
+.tex
+\family default
+ file, a verbatim included text file, external material or an included graphics
+ file.
+\end_inset
+
+ needs to be edited.
+\layout Standard
+
+Finally, each Format can have a Copier associated to it.
+ Since all conversions from one Format to another take place in a temporary
+ directory, it is sometimes necessary to modify a file before copying it
+ to the temporary directory
+\begin_inset Foot
+collapsed true
+
+\layout Standard
+
+For example, the file may reference other files with relative filenames,
+ which will become invalid in the temporary directory
+\end_inset
+
+.
+ This is done by the Copier: It copies a file to (or from) the temporary
+ directory and may modify it in the process.
\layout Section
BibTeX and makeindex
@@ -4693,7 +4742,7 @@ There are two situations you are likely
) files.
\layout Subsection
-A layout for an
+A layout for a
\family sans
sty
\family default
@@ -7470,6 +7519,15 @@ Including External Material
Background
\layout Standard
+
+\begin_inset Note
+collapsed true
+
+\layout Standard
+
+This section is completely outdated.
+\end_inset
+
One often requested feature from LyX users is to be able to interface LyX
with XFig, Dia, or other similar applications that specialize in producing
a certain kind of diagram, figure, schematic or whatever material might
@@ -7610,6 +7668,15 @@ ghostview
ultimately be more productive.
\layout Standard
+
+\begin_inset Note
+collapsed true
+
+\layout Standard
+
+This paragraph is outdated
+\end_inset
+
So, all in all, LyX has information about a number of different programs
to use behind the scenes in order to realize all of this machinery.
This information, in fact, is exactly what is contained in the templates.
@@ -7670,6 +7737,15 @@ nsert
view, edit or produce the material that is used in the resulting file.
\layout Standard
+
+\begin_inset Note
+collapsed true
+
+\layout Standard
+
+This paragraph is outdated
+\end_inset
+
At the top of this dialog, there is a drop-down list where you can chose
which template should be used.
Just below the template drop-down, there's a text area with a short blurb
@@ -7691,6 +7767,15 @@ Browse
no need to give access to it in the user interface.
\layout Standard
+
+\begin_inset Note
+collapsed true
+
+\layout Standard
+
+This paragraph is outdated
+\end_inset
+
At the bottom of the dialog, you'll find a general input box called
\family sans
Parameters
@@ -7702,6 +7787,15 @@ Parameters
file should be generated.
\layout Standard
+
+\begin_inset Note
+collapsed true
+
+\layout Standard
+
+This paragraph is outdated
+\end_inset
+
At the right side of the dialog, you'll find three buttons:
\family sans
Edit
@@ -7845,8 +7939,599 @@ lib/external_templates
.lyx/external_templates
\family default
.
- At some point in time, hopefully somebody will document the template contents,
- and the syntax used to define your templates.
+\layout Standard
+
+A typical template looks like this:
+\layout LyX-Code
+
+Template XFig
+\layout LyX-Code
+
+GuiName "XFig: $$AbsOrRelPathParent$$Basename"
+\layout LyX-Code
+
+HelpText
+\layout LyX-Code
+
+An XFig figure.
+\layout LyX-Code
+
+HelpTextEnd
+\layout LyX-Code
+
+InputFormat fig
+\layout LyX-Code
+
+FileFilter "*.fig"
+\layout LyX-Code
+
+AutomaticProduction true
+\layout LyX-Code
+
+Transform Rotate
+\layout LyX-Code
+
+Transform Resize
+\layout LyX-Code
+
+Format LaTeX
+\layout LyX-Code
+
+TransformCommand Rotate RotationLatexCommand
+\layout LyX-Code
+
+TransformCommand Resize ResizeLatexCommand
+\layout LyX-Code
+
+Product "$$RotateFront$$ResizeFront
+\layout LyX-Code
+
+
+\backslash
+
+\backslash
+input{$$AbsOrRelPathMaster$$Basename.pstex_t}
+\layout LyX-Code
+
+ $$ResizeBack$$RotateBack"
+\layout LyX-Code
+
+UpdateFormat pstex
+\layout LyX-Code
+
+UpdateResult "$$AbsPath$$Basename.pstex_t"
+\layout LyX-Code
+
+Requirement "graphicx"
+\layout LyX-Code
+
+ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pstex_t"
+\layout LyX-Code
+
+ReferencedFile latex "$$AbsPath$$Basename.eps"
+\layout LyX-Code
+
+ReferencedFile dvi "$$AbsPath$$Basename.eps"
+\layout LyX-Code
+
+FormatEnd
+\layout LyX-Code
+
+Format PDFLaTeX
+\layout LyX-Code
+
+TransformCommand Rotate RotationLatexCommand
+\layout LyX-Code
+
+TransformCommand Resize ResizeLatexCommand
+\layout LyX-Code
+
+Product "$$RotateFront$$ResizeFront
+\layout LyX-Code
+
+
+\backslash
+
+\backslash
+input{$$AbsOrRelPathMaster$$Basename.pdftex_t}
+\layout LyX-Code
+
+ $$ResizeBack$$RotateBack"
+\layout LyX-Code
+
+UpdateFormat pdftex
+\layout LyX-Code
+
+UpdateResult "$$AbsPath$$Basename.pdftex_t"
+\layout LyX-Code
+
+Requirement "graphicx"
+\layout LyX-Code
+
+ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pdftex_t"
+\layout LyX-Code
+
+ReferencedFile latex "$$AbsPath$$Basename.pdf"
+\layout LyX-Code
+
+FormatEnd
+\layout LyX-Code
+
+Format Ascii
+\layout LyX-Code
+
+Product "$$Contents(
+\backslash
+"$$AbsPath$$Basename.asc
+\backslash
+")"
+\layout LyX-Code
+
+UpdateFormat asciixfig
+\layout LyX-Code
+
+UpdateResult "$$AbsPath$$Basename.asc"
+\layout LyX-Code
+
+FormatEnd
+\layout LyX-Code
+
+Format DocBook
+\layout LyX-Code
+
+Product "<graphic fileref=
+\backslash
+"$$AbsOrRelPathMaster$$Basename.eps
+\backslash
+">
+\layout LyX-Code
+
+ </graphic>"
+\layout LyX-Code
+
+UpdateFormat eps
+\layout LyX-Code
+
+UpdateResult "$$AbsPath$$Basename.eps"
+\layout LyX-Code
+
+ReferencedFile docbook "$$AbsPath$$Basename.eps"
+\layout LyX-Code
+
+ReferencedFile docbook-xml "$$AbsPath$$Basename.eps"
+\layout LyX-Code
+
+FormatEnd
+\layout LyX-Code
+
+Format LinuxDoc
+\layout LyX-Code
+
+Product "[XFig: $$FName]"
+\layout LyX-Code
+
+FormatEnd
+\layout LyX-Code
+
+TemplateEnd
+\layout Standard
+
+As you can see, the template is enclosed in
+\family typewriter
+Template
+\family default
+ \SpecialChar \ldots{}
+
+\family typewriter
+TemplateEnd
+\family default
+.
+ It contains a header specifying some general settings, and for each supported
+ primary document file format a section
+\family typewriter
+Format
+\family default
+ \SpecialChar \ldots{}
+
+\family typewriter
+FormatEnd
+\family default
+.
+\layout Subsection
+
+The template header
+\layout Description
+
+
+\family typewriter
+\series medium
+Template\SpecialChar ~
+<id>
+\family default
+\series default
+ A unique name for the template.
+ It must not contain substitution macros (see below).
+\layout Description
+
+
+\family typewriter
+\series medium
+GuiName\SpecialChar ~
+<guiname>
+\family default
+\series default
+ The text that is displayed on the button.
+ This command must occur exactly once.
+\layout Description
+
+
+\family typewriter
+\series medium
+HelpText\SpecialChar ~
+<text>\SpecialChar ~
+HelpTextEnd
+\family default
+\series default
+ 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.
+\layout Description
+
+
+\family typewriter
+\series medium
+InputFormat\SpecialChar ~
+<format>
+\family default
+\series default
+ The file format of the original file.
+ This must be the name of a format that is known to LyX (see the
+\family sans
+\bar under
+T
+\bar default
+ools\SpecialChar \menuseparator
+
+\bar under
+P
+\bar default
+references:Conversion
+\family default
+ dialog).
+ Use
+\family typewriter
+"*"
+\family default
+ 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.
+\layout Description
+
+
+\family typewriter
+\series medium
+FileFilter\SpecialChar ~
+<pattern>
+\family default
+\series default
+ 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.\SpecialChar ~
+tgif has
+\family typewriter
+.obj
+\family default
+ and
+\family typewriter
+.tgo
+\family default
+), use something like
+\family typewriter
+"*.{obj,tgo}"
+\family default
+.
+ This command must occur exactly once.
+\layout Description
+
+
+\family typewriter
+\series medium
+AutomaticProduction\SpecialChar ~
+true|false
+\family default
+\series default
+ Wether the file represented by the template must be generated by LyX.
+ This command must occur exactly once.
+\layout Description
+
+
+\family typewriter
+\series medium
+Transform\SpecialChar ~
+Rotate|Resize|Clip|Extra
+\family default
+\series default
+ 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
+\family typewriter
+Transform
+\family default
+ command must have either a corresponding
+\family typewriter
+TransformCommand
+\family default
+ or a
+\family typewriter
+TransformOption
+\family default
+ command in the
+\family typewriter
+Format
+\family default
+ section.
+ Otherwise the transformation will not be supported by that format.
+\layout Subsection
+
+The Format section
+\layout Description
+
+
+\family typewriter
+\series medium
+Format\SpecialChar ~
+LaTeX|PDFLaTeX|Ascii|DocBook|LinuxDoc
+\family default
+\series default
+ 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
+\family typewriter
+Format
+\family default
+ section for all formats.
+ Use a dummy text when no representation is available (see the LinuxDoc
+ format in the example above).
+ Then you can at least see a reference to the external material in the exported
+ document.
+\layout Description
+
+
+\family typewriter
+\series medium
+TransformCommand\SpecialChar ~
+Rotate\SpecialChar ~
+RotationLatexCommand
+\family default
+\series default
+ This command specifies that the built in LaTeX command should be used for
+ rotation.
+ This command may occur once or not at all.
+\layout Description
+
+
+\family typewriter
+\series medium
+TransformCommand\SpecialChar ~
+Resize\SpecialChar ~
+ResizeLatexCommand
+\family default
+\series default
+ This command specifies that the built in LaTeX command should be used for
+ resizing.
+ This command may occur once or not at all.
+\layout Description
+
+
+\family typewriter
+\series medium
+TransformOption\SpecialChar ~
+Rotate\SpecialChar ~
+RotationLatexOption
+\family default
+\series default
+ This command specifies that rotation is done via an optional argument.
+ This command may occur once or not at all.
+\layout Description
+
+
+\family typewriter
+\series medium
+TransformOption\SpecialChar ~
+Resize\SpecialChar ~
+ResizeLatexOption
+\family default
+\series default
+ This command specifies that resizing is done via an optional argument.
+ This command may occur once or not at all.
+\layout Description
+
+
+\family typewriter
+\series medium
+TransformOption\SpecialChar ~
+Clip\SpecialChar ~
+ClipLatexOption
+\family default
+\series default
+ This command specifies that clipping is done via an optional argument.
+ This command may occur once or not at all.
+\layout Description
+
+
+\family typewriter
+\series medium
+TransformOption\SpecialChar ~
+Extra\SpecialChar ~
+ExtraLatexOption
+\family default
+\series default
+ This command specifies that an extra optional argument is used.
+ This command may occur once or not at all.
+\layout Description
+
+
+\family typewriter
+\series medium
+Product\SpecialChar ~
+<text>
+\family default
+\series default
+ 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.
+\layout Description
+
+
+\family typewriter
+\series medium
+UpdateFormat\SpecialChar ~
+<format>
+\family default
+\series default
+ The file format of the converted file.
+ This must be the name of a format that is known to LyX (see the
+\family sans
+\bar under
+T
+\bar default
+ools\SpecialChar \menuseparator
+
+\bar under
+P
+\bar default
+references:Conversion
+\family default
+ dialog).
+ This command must occur exactly once.
+\layout Description
+
+
+\family typewriter
+\series medium
+UpdateResult\SpecialChar ~
+<filename>
+\family default
+\series default
+ The file name of the converted file.
+ The file name must be absolute.
+ This command must occur exactly once.
+\layout Description
+
+
+\family typewriter
+\series medium
+ReferencedFile\SpecialChar ~
+<format>\SpecialChar ~
+<filename>
+\family default
+\series default
+ 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.
+\layout Description
+
+
+\family typewriter
+\series medium
+Requirement\SpecialChar ~
+<package>
+\family default
+\series default
+ The name of a required LaTeX package.
+ The package is included via
+\family typewriter
+
+\backslash
+usepackage{}
+\family default
+ in the LaTeX preamble.
+ This command may occur zero or more times.
+\layout Description
+
+
+\family typewriter
+\series medium
+Preamble\SpecialChar ~
+<name>
+\family default
+\series default
+ This command specifies a preamble snippet that will be included in the
+ LaTeX preamble.
+ It has to be defined using
+\family typewriter
+ PreambleDef
+\family default
+ \SpecialChar \ldots{}
+
+\family typewriter
+PreambleDefEnd
+\family default
+.
+ This command may occur zero or more times.
+\layout Description
+
+
+\family typewriter
+\series medium
+Option\SpecialChar ~
+<name>\SpecialChar ~
+<value>
+\family default
+\series default
+ This command defines an additional macro
+\family typewriter
+$$<name>
+\family default
+ for substitution in
+\family typewriter
+Product
+\family default
+.
+
+\family typewriter
+<value>
+\family default
+ itself may contain substitution macros.
+ The advantage over using
+\family typewriter
+<value>
+\family default
+ directly in
+\family typewriter
+Product
+\family default
+ is that the substituted value of
+\family typewriter
+$$<name>
+\family default
+ is sanitized so that it is a valid optional argument in the document format.
+ This command may occur zero or more times.
+\layout Subsection
+
+Preamble definitions
+\layout Standard
+
+The external template configuration file may contain additional preamble
+ definitions enclosed by
+\family typewriter
+PreambleDef
+\family default
+ \SpecialChar \ldots{}
+
+\family typewriter
+PreambleDefEnd
+\family default
+.
+ They can be used by the templates in the
+\family typewriter
+Format
+\family default
+ section.
\layout Section
The substitution mechanism
@@ -7859,16 +8544,44 @@ When the external material facility invo
\layout Standard
Also, whenever external material is to be displayed, the name will be produced
- by the substitution mechanism.
+ by the substitution mechanism, and most other commands in the template
+ definition support substitution as well.
\layout Standard
The available macros are the following:
\layout Description
$$FName 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.
+\layout Description
+
+$$Basename The filename without path and without the extension.
+\layout Description
+
+$$Extension The file extension (including the dot).
+\layout Description
+
+$$FPath The path part of
+\family typewriter
+$$FName
+\family default
+ (absolute name or relative to the LyX document).
+\layout Description
+
+$$AbsPath The absolute file path.
+\layout Description
+
+$$RelPathMaster The file path, relative to the master LyX document.
+\layout Description
+
+$$RelPathParent The file path, relative to the LyX document.
+\layout Description
+
+$$AbsOrRelPathMaster The file path, absolute or relative to the master LyX
+ document.
\layout Description
-$$Basename The filename without the extension.
+$$AbsOrRelPathParent The file path, absolute or relative to the LyX document.
\layout Description
$$Tempname A name and full path to a temporary file which will be automatically
@@ -7896,17 +8609,149 @@ $$Sysdir This macro will expand to the a
bundled with LyX.
\layout Standard
-In addition to these, the facility will expand general environment variables
- with a syntax like
+All path macros contain a trailing directory separator, so you can construct
+ e.g.
+ the absolute filename with
\family typewriter
-${PATH}
+$$AbsPath$$Basename$$Extension
\family default
.
+\layout Standard
+
+The macros above are substituted in all commands unless otherwise noted.
+ The command
+\family typewriter
+Product
+\family default
+ supports additionally the following substitutions if they are enabled by
+ the
+\family typewriter
+Transform
+\family default
+ and
+\family typewriter
+TransformCommand
+\family default
+ commands:
+\layout Description
+
+$$ResizeFront The front part of the resize command.
+\layout Description
+
+$$ResizeBack The back part of the resize command.
+\layout Description
+
+$$RotateFront The front part of the rotation command.
+\layout Description
+
+$$RotateBack The back part of the rotation command.
+\layout Standard
+
+The value string of the
+\family typewriter
+Option
+\family default
+ command supports additionally the following substitutions if they are enabled
+ by the
+\family typewriter
+Transform
+\family default
+ and
+\family typewriter
+TransformOption
+\family default
+ commands:
+\layout Description
+
+$$Clip The clip option.
+\layout Description
+
+$$Extra The extra option.
+\layout Description
+
+$$Resize The resize option.
+\layout Description
+
+$$Rotate The rotation option.
+\layout Standard
+
+You may ask why there are so many path macros.
+ There are mainly two reasons:
+\layout Standard
+
+First, relative and absolute file names should remain relative or absolute,
+ respectively.
+ 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.
+\layout Standard
+
+Second, 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.
+\layout Standard
+
+So which path macro should be used in new template definitions? The rule
+ is not difficult:
+\layout Itemize
+
+Use
+\family typewriter
+$$AbsPath
+\family default
+ if an absolute path is required.
+\layout Itemize
+
+Use
+\family typewriter
+$$AbsOrRelPathMaster
+\family default
+ if the substituted string is some kind of LaTeX input.
+\layout Itemize
+
+Else use
+\family typewriter
+$$AbsOrRelPathParent
+\family default
+ in order to preserve the user's choice.
+\layout Standard
+
+There are special cases where this rule does not work and e.g.\SpecialChar ~
+relative names
+ are needed, but normally it will work just fine.
+ One example for such a case is the command
+\family typewriter
+ReferencedFile latex "$$AbsOrRelPathMaster$$Basename.pstex_t"
+\family default
+ in the XFig template above: We can't use the absolute name because the
+ copier for
+\family typewriter
+.pstex_t
+\family default
+ files needs the relative name in order to rewrite the file content.
\layout Section
Security discussion
\layout Standard
+
+\begin_inset Note
+collapsed true
+
+\layout Standard
+
+This section is outdated
+\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.