#LyX 2.0.0svn created this file. For more info see http://www.lyx.org/
-\lyxformat 369
+\lyxformat 374
\begin_document
\begin_header
\textclass scrbook
\end_local_layout
\language english
\inputencoding auto
+\fontencoding global
\font_roman default
\font_sans default
\font_typewriter default
\use_geometry false
\use_amsmath 0
\use_esint 0
+\use_mhchem 1
\cite_engine basic
\use_bibtopic false
\use_indices false
\paperorientation portrait
+\suppress_date false
\branch OutDated
\selected 0
\filename_suffix 0
\color #f5fae7
\end_branch
+\index Index
+\shortcut idx
+\color #008000
+\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paperpagestyle headings
\tracking_changes false
\output_changes false
+\html_use_mathml true
+\html_be_strict true
\end_header
\begin_body
In this chapter, we describe the procedures for creating and installing
new LyX layout and template files, as well as offer a refresher on correctly
installing new LaTeX document classes.
- Some definitions: a document class is a LaTeX file (usually ending in
+
+\end_layout
+
+\begin_layout Standard
+First, let us a say a few words about how one ought to think about the relation
+ between LyX and LaTeX.
+ The thing to understand is that, in a certain sense, LyX doesn't know anything
+ about LaTeX.
+ Indeed, from LyX's point of view, LaTeX is just one of several
+\begin_inset Quotes eld
+\end_inset
+
+backend formats
+\begin_inset Quotes erd
+\end_inset
+
+ in which it is capable of producing output.
+ Other such formats are DocBook, plaintext, and XHTML.
+ LaTeX is, of course, a particularly important format, but very little of
+ the information LyX has about LaTeX is actually contained in the program
+ itself.
+\begin_inset Foot
+status collapsed
+
+\begin_layout Plain Layout
+Some commands are sufficiently complex that they are
+\begin_inset Quotes eld
+\end_inset
+
+hardcoded
+\begin_inset Quotes erd
+\end_inset
+
+ into LyX.
+ But the developers generally regard this as a Bad Thing.
+\end_layout
+
+\end_inset
+
+ Rather, that information, even for the standard classes like
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+article.cls
+\end_layout
+
+\end_inset
+
+, is contained in layout files.
+ Similarly, LyX itself does not know much about DocBook or XHTML.
+\end_layout
+
+\begin_layout Standard
+You can think of the layout file for a given document class as a translation
+ manual between LyX constructs---paragraphs with their corresponding styles,
+ certain sorts of insets, etc---and the corresponding LaTeX, or DocBook,
+ or XHTML constructs.
+ Almost everything LyX knows about
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+article.cls
+\end_layout
+
+\end_inset
+
+, for example, is contained in the file
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+article.layout
+\end_layout
+
+\end_inset
+
+.
+ For this reason, anyone intending to write layout files should plan to
+ study the existing files.
+ A good place to start is with
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+stdsections.inc
+\end_layout
+
+\end_inset
+
+, which just gets `included' in
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+article.layout
+\end_layout
+
+\end_inset
+
+,
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+book.layout
+\end_layout
+
+\end_inset
+
+, and many of the other layout files for document classes.
+ This file is where sections and the like are defined:
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+stdsections.inc
+\end_layout
+
+\end_inset
+
+ tells LyX how paragraphs that are marked with the Section, Subsection,
+ etc, styles can be translated into corresponding LaTeX commands.
+ The
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+article.layout
+\end_layout
+
+\end_inset
+
+ file basically just includes several of these
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+std*.inc
+\end_layout
+
+\end_inset
+
+ files.
+\end_layout
+
+\begin_layout Standard
+Defining the LyX--LaTeX correspondence is not, however, the only thing layout
+ files do.
+ Their other job is to define how the LyX constructs themselves will appear
+ on-screen.
+ The fact that layout files have these two jobs is often a source of confusion,
+ because they are completely separate.
+ Telling LyX how to translate a certain paragraph style into LaTeX does
+ not tell LyX how to display it; conversely, telling LyX how to display
+ a certain paragraph style does not tell LyX how to translate it into LaTeX,
+ let alone tell LaTeX how to display it.
+ So, in general, when you define a new LyX construct, you must always do
+ two quite separate things: (i)
+\begin_inset space ~
+\end_inset
+
+tell LyX how to translate it into LaTeX, and (ii)
+\begin_inset space ~
+\end_inset
+
+tell LyX how to display it.
+\end_layout
+
+\begin_layout Standard
+Much the same is true, of course, as regards LyX's other backend formats,
+ though XHTML is in some ways different, because in that case LyX
+\emph on
+is
+\emph default
+ able, to some extent, to use information about how it should display a
+ paragraph on the screen to output information (in the form of CSS) about
+ how the paragrpah should be displayed in a browser.
+ Even in this case, however, the distinction between what LyX does internally
+ and how things are rendered externally remains in force, and the two can
+ be controlled separately.
+ See
+\begin_inset CommandInset ref
+LatexCommand prettyref
+reference "sub:Paragraph-Style-XHTML"
+
+\end_inset
+
+ for the details.
+\end_layout
+
+\begin_layout Standard
+Some definitions: a document class is a LaTeX file (usually ending in
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Standard
Some installations may not include a LaTeX package that you would like to
use within LyX.
- For example, you might need FoilTeX, a package for preparing slides or
- viewgraphs for overhead projectors.
+ For example, you might need FoilTeX, a package for preparing slides 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
+ a user interface for installing such packages.
+ For example, with MiKTeX, you start the program
\begin_inset Quotes eld
\end_inset
\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.
+ To install one, right click on it or use the toolbar button to install
+ it.
+
\end_layout
\begin_layout Standard
-If your LaTeX distribution doesn't provide a user interface, then you can
- follow these steps by using a UNIX/Linux console.
+If your LaTeX distribution doesn't provide such a user interface, or if
+ the file is not available through the package browser, then you can follow
+ these steps.
\end_layout
\begin_layout Enumerate
\end_layout
\begin_layout Enumerate
-You can install this package in several different places.
+You can install the package in several different places.
If you want it to be available for all users on your system, then you should
install it in your `local' TeX tree; if you want (or need) it to be available
just for you, then you can install it in your own `user' TeX tree.
Where these should be created, if they do not already exist, depends upon
the details of your system.
- To find out, look in the file
+ To find out where they are, look in the file
\begin_inset Flex CharStyle:Code
status collapsed
\end_inset
- The location of the `local' TeX tree is defined by
+ The location of the `local' TeX tree is defined by the
\begin_inset Flex CharStyle:Code
status collapsed
\end_inset
-; this is usually somewhere like
+ variable; this is usually somewhere like
\begin_inset Flex CharStyle:Code
status collapsed
\end_layout
\begin_layout Enumerate
-Create your local
-\begin_inset Foot
+Your local and user trees must have the same sort of directory structure
+ as your main existing
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-We'll assume henceforth that you're defining `local' TeX tree.
- If you're defining a user tree, just adjust as necessary.
+texmf
\end_layout
\end_inset
- TeX tree.
- You must follow the directory structure of your existing
+ directory, which will be found at
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-texmf
+TEXMFMAIN
\end_layout
\end_inset
- directory, which will be found at
+ (commonly,
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-TEXMFMAIN
+/usr/share/texmf/
\end_layout
\end_inset
-.
- For example, latex packages should go under
+.) For example, latex packages should go under
\begin_inset Flex CharStyle:Code
status collapsed
$TEXMFLOCAL/tex/latex/
\end_layout
+\end_inset
+
+ or
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+$TEXMFHOME/tex/latex/
+\end_layout
+
\end_inset
.
\end_layout
\begin_layout Enumerate
-Install the package.
- For example, you would unpack the FoilTeX tarball and copy it to
+Once your tree is properly set up, you can install the package into an appropria
+te location.
+ For example, you might install the FoilTeX files into
\begin_inset Flex CharStyle:Code
status collapsed
\end_layout
\begin_layout Enumerate
-Run:
+Finally, you must update the database TeX uses to find files.
+ 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.
+
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-texhash
+$TEXMFLOCAL/tex/latex/
\end_layout
\end_inset
.
- This should create
+ Under TeXLive and the like, you should run
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-$TEXMFLOCAL/ls-R
+texhash
\end_layout
\end_inset
- amongst others.
+ from a terminal, with root permissions if necessary.
+
\end_layout
\begin_layout Standard
Your package is now installed and available to LaTeX.
- To make it available to LyX, you need to create a Layout file, if one is
- not already available.
- (See the next section.) Once you have a layout file, you need only reconfigure
- (
-\begin_inset Flex CharStyle:MenuItem
+ You can verify this from a terminal by typing `
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-Tools\SpecialChar \menuseparator
-Reconfigure
+kpsewhich yourfile.ext
\end_layout
\end_inset
-) and then restart LyX.
- You should then see your new package—for example
+'.
+ To make LyX aware of it, however, you will need to reconfigure (
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-slides (FoilTeX)
+Tools\SpecialChar \menuseparator
+Reconfigure
\end_layout
\end_inset
-—under
+) and then restart LyX.
+ If the new package was a document class, such as FoilTeX again, you will
+ now see it—
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-Document\SpecialChar \menuseparator
-Settings
+slides (FoilTeX)
\end_layout
\end_inset
- in the
+—available under
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
+Document\SpecialChar \menuseparator
+Settings\SpecialChar \menuseparator
Document Class
\end_layout
\end_inset
- drop box.
+.
\end_layout
+\begin_layout Standard
+Unless, of course, no layout file is available for your new document class.
+ That is the topic of the next section.
+\end_layout
+
\begin_layout Section
Layouts
\end_layout
\end_inset
- text class format as an example.
+ text class as an example.
The
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-.layout
+*.layout
\end_layout
\end_inset
files describe what paragraph and character styles are available for a
- given document class and how LyX should display them.
- We try to provide a thorough description of the process here; however,
- there are so many different types of documents supported by LaTeX classes
- that we can't hope to cover every different possibility or problem you
- might encounter.
- (The LyX users' list is frequented by people with lots of experience with
- layout design who are willing to share what they've learned.)
+ given document class, how LyX should display them, and how they should
+ be translated into LaTeX, DocBook, XHTML, or whatever output format is
+ being used.
+
+\end_layout
+
+\begin_layout Standard
+We shall try to provide a thorough description of the process of writing
+ layout files here.
+ However, there are so many different types of documents supported by even
+ just LaTeX that we can't hope to cover every different possibility or problem
+ you might encounter.
+ The LyX users' list is frequented by people with lots of experience with
+ layout design who are willing to share what they've learned, so please
+ feel free to ask questions there.
\end_layout
\begin_layout Standard
As you prepare to write a new layout, it is extremely helpful to look at
- the example layouts distributed with LyX.
- If you use a nice LaTeX document class that might be of interest for others,
- too, and have a nice corresponding LyX layout, feel free to contribute
- the stuff to us, so we may put it into the distribution.
- There is also a
+ the layouts distributed with LyX.
+ If you use a nice LaTeX document class that might also be of interest for
+ others and so write a corresponding LyX layout, you should consider posting
+ your layout to the
\begin_inset CommandInset href
LatexCommand href
-name "section on the LyX wiki"
+name "layout section on the LyX wiki"
target "http://wiki.lyx.org/Layouts/Layouts"
\end_inset
- for this kind of material.
+ or even to the LyX developers' list, so that it might be included in LyX
+ itself.
+\begin_inset Foot
+status collapsed
+
+\begin_layout Plain Layout
+Note that LyX is licensed under the General Public License, so any material
+ that is contribued to LyX must be similarly licensed.
+\end_layout
+
+\end_inset
+
+
\end_layout
\begin_layout Standard
-All the tags described in this chapter are case-insensitive; this means
- that
+All the tags described here are case-insensitive; this means that
\begin_inset Flex CharStyle:Code
status collapsed
\end_inset
- are really the same command.
+ are really the same tag.
The possible values are printed in brackets after the feature's name.
The default value if a feature isn't specified inside a text class-description
is typeset
\end_layout
\begin_layout Standard
-Similar to layout files, and new with LyX 1.6, are layout
+We have spoken to this point about `layout files'.
+ But there are different sorts of files that contain layout information.
+ Layout files, strictly so called, have the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+.layout
+\end_layout
+
+\end_inset
+
+ extension and provide LyX with information about document classes.
+ As of LyX 1.6, however, layout information can also be contained in layout
+
\emph on
modules
\emph default
-.
+, which have the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+.module
+\end_layout
+
+\end_inset
+
+ extension.
Modules are to LaTeX packages much as layouts are to LaTeX classes, and
- some modules—such as the endnotes module—provide support for just such
- a package.
- In a sense, layout modules are similar to included files—files like
+ some modules—such as the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+endnotes
+\end_layout
+
+\end_inset
+
+ module—specifcally provide support for one such package.
+ In a sense, layout modules are similar to included
+\begin_inset Foot
+status collapsed
+
+\begin_layout Plain Layout
+These can have any extension, but by convention have the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+.inc
+\end_layout
+
+\end_inset
+
+ extension.
+\end_layout
+
+\end_inset
+
+ 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
- used with many different layouts.
- The difference is that using a layout module does not require editing the
- layout file.
- Rather, modules are selected in the
+—in that modules are not specific to a given document class but may be used
+ with many different classes.
+ The difference is that using an included file with
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+article.cls
+\end_layout
+
+\end_inset
+
+ requires editing that file.
+ Modules, by contrast, are selected in the
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Standard
Building modules is the easiest way to get started with layout editing,
- since it can be as simple as adding a single new paragraph or flex inset.
+ since it can be as simple as adding a single new paragraph style or flex
+ inset.
But modules may, in principle, contain anything a layout file can contain.
\end_layout
\end_inset
, which declares that the module can only be used when there exists a conversion
- chain between formats `from' and `to'.
+ chain between the formats `
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+from
+\end_layout
+
+\end_inset
+
+' and `
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+to
+\end_layout
+
+\end_inset
+
+'.
\end_layout
\begin_layout Standard
\emph on
filenames
\emph default
- without the .module extension.
+ without the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+.module
+\end_layout
+
+\end_inset
+
+ extension.
So
\begin_inset Flex CharStyle:Code
status collapsed
In fact,
\emph on
it is strongly recommended that you not attempt to edit modules while simultaneo
-usly working on documents
+usly working on actual documents
\emph default
.
Though of course the developers strive to keep LyX stable in such situations,
\end_layout
\begin_layout Subsection
-Supporting new document classes
+A layout for a
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
+
+\begin_layout Plain Layout
+sty
+\end_layout
+
+\end_inset
+
+ file
\end_layout
\begin_layout Standard
) files.
Supporting a style file is usually fairly easy.
Supporting a new document class is a bit harder.
+ We'll discuss the former in this section and the latter in the next.
+ Similar remarks apply, of course, if you want to support a new DocBook
+ DTD.
\end_layout
-\begin_layout Subsection
-A layout for a
+\begin_layout Standard
+The easier case is the one in which your new document class is provided
+ as a style file that is to be used in conjunction with an already supported
+ document class.
+ For the sake of the example, we'll assume that the style file is called
+
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-sty
+myclass.sty
\end_layout
\end_inset
- file
-\end_layout
-
-\begin_layout Standard
-If your new document class is provided as a style file that is used in conjuncti
-on with an existing, supported document class—for the sake of the example,
- we'll assume that the style file is called
+ and that it is meant to be used with
\begin_inset Flex CharStyle:MenuItem
status collapsed
\begin_layout Plain Layout
-myclass.sty
+report.cls
\end_layout
\end_inset
- and it is meant to be used with
-\begin_inset Flex CharStyle:MenuItem
+, which is a standard class.
+
+\end_layout
+
+\begin_layout Standard
+Start by copying the existing class's layout file into your local directory:
+\begin_inset Foot
+status collapsed
+
+\begin_layout Plain Layout
+Of course, which directory is your local directory will vary by platform,
+ and LyX allows you to specify your local directory on startup, too, using
+ the
+\begin_inset Flex CharStyle:Code
status collapsed
-\begin_layout Plain Layout
-report.cls
+\begin_layout Plain Layout
+-userdir
+\end_layout
+
+\end_inset
+
+ option.
\end_layout
\end_inset
-, which is a standard class—start by copying the existing class's layout
- file into your local directory:
+
\end_layout
\begin_layout LyX-Code
in this example—so you can fiddle around with the settings for the different
sections if you wish.
+ The layout information for sections is contained in
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+stdsections.inc
+\end_layout
+
+\end_inset
+
+, but you do not need to copy and change this file.
+ Instead, you can simply add your changes to your layout file, after the
+ line
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+Input stdclass.inc
+\end_layout
+
+\end_inset
+
+, which itself includes
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+stdsections.inc
+\end_layout
+
+\end_inset
+
+.
+ For example, you might add these lines:
+\end_layout
+
+\begin_layout LyX-Code
+Style Chapter
+\end_layout
+
+\begin_layout LyX-Code
+ Font
+\end_layout
+
+\begin_layout LyX-Code
+ Family Sans
+\end_layout
+
+\begin_layout LyX-Code
+ EndFont
+\end_layout
+
+\begin_layout LyX-Code
+End
+\end_layout
+
+\begin_layout Standard
+to change the font for chapter headings to sans-serif.
+ This will override (or, in this case, add to) the existing declaration
+ for the Chapter style.
+
+\end_layout
+
+\begin_layout Standard
+Your new package may also provide commands or environments not present in
+ the base class.
+ In this case, you will want to add these to the layout file.
+ See
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:TextClass"
+
+\end_inset
+
+ for information on how to do so.
+\end_layout
+
+\begin_layout Standard
+If
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
+
+\begin_layout Plain Layout
+myclass.sty
+\end_layout
+
+\end_inset
+
+ can be used with several different document classes, and even if it cannot,
+ you might find it easiest just to write a module that you can load with
+ the base class.
+ The simplest possible such module would be:
+\end_layout
+
+\begin_layout LyX-Code
+#
+\backslash
+DeclareLyXModule{My Class}
+\end_layout
+
+\begin_layout LyX-Code
+#DescriptionBegin
+\end_layout
+
+\begin_layout LyX-Code
+#Support for myclass.sty.
+\end_layout
+
+\begin_layout LyX-Code
+#DescriptionEnd
+\begin_inset Newline newline
+\end_inset
+
+
+\end_layout
+
+\begin_layout LyX-Code
+Format 11
+\begin_inset Newline newline
+\end_inset
+
+
+\end_layout
+
+\begin_layout LyX-Code
+Preamble
+\begin_inset Newline newline
+\end_inset
+
+
+\backslash
+usepackage{myclass}
+\begin_inset Newline newline
+\end_inset
+
+EndPreamble
+\end_layout
+
+\begin_layout Standard
+A more complex module might modify the behavior of some existing constructs
+ or define some new ones.
+ Again, see
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sec:TextClass"
+
+\end_inset
+
+ for discussion.
\end_layout
\begin_layout Subsection
\begin_layout Standard
in the file.
If so, then you may proceed largely as in the previous section, though
- the DeclareLaTeXClass line will be different.
- If your new class is thesis, and it is based upon book, then the line should
- read:
+ the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+DeclareLaTeXClass
+\end_layout
+
+\end_inset
+
+ line will be different.
+ If your new class is
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+thesis
+\end_layout
+
+\end_inset
+
+ and it is based upon
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+book
+\end_layout
+
+\end_inset
+
+, then the line should read:
\begin_inset Foot
status collapsed
\end_layout
\begin_layout Section
+\begin_inset CommandInset label
+LatexCommand label
+name "sec:TextClass"
+
+\end_inset
+
Declaring a new text class
\end_layout
and enjoy one or two of your favorite adult beverages; more if you are
getting particularly stuck.
It's really not that hard, except that the multitude of options can become
- overwhelming if you try to do to much in one sitting.
+ overwhelming if you try to do too much in one sitting.
Go have another adult beverage, just for good measure.
\end_layout
\end_layout
\begin_layout Standard
-Lines in a layout file which begin with a
+Lines in a layout file which begin with
\begin_inset Flex CharStyle:Code
status collapsed
\end_inset
are comments.
- There is one exception to this rule: all layouts should begin with lines
- like:
+ There is one exception to this rule.
+ All
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+*.layout
+\end_layout
+
+\end_inset
+
+ files should begin with a line like:
\end_layout
\begin_layout LyX-Code
\end_layout
\begin_layout Standard
-This indicates that your text class uses the foo.sty package.
+This indicates that your text class uses the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+foo.sty
+\end_layout
+
+\end_inset
+
+ package.
Finally, it is also possible to declare classes for DocBook code.
- Typical declarations will look like
+ Typical declarations will look like:
\end_layout
\begin_layout LyX-Code
\end_inset
-, exit LyX and restart it.
- Then your new text class should be available along with the others.
+, exit LyX and restart.
+ Then your new text class should be available along with the others.
+\end_layout
+
+\begin_layout Standard
+Once the layout file is installed, you can edit it and see your changes
+ without having to reconfigure or to restart LyX.
+ In versions of LyX prior to 1.6, this was not true.
+ As a result, editing layout files was very time consuming.
+ Beginning with 1.6, however, you can force a reload of the current layout
+ by using the LyX function
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
+
+\begin_layout Plain Layout
+layout-reload
+\end_layout
+
+\end_inset
+
+.
+ There is no default binding for this function—though, of course, you can
+ bind it to a key yourself.
+ But you will normally use this function simply by entering it in the mini-buffe
+r.
+
+\end_layout
+
+\begin_layout Standard
+
+\emph on
+Warning
+\emph default
+:
+\begin_inset Flex CharStyle:MenuItem
+status collapsed
+
+\begin_layout Plain Layout
+layout-reload
+\end_layout
+
+\end_inset
+
+ is very much an `advanced feature'.
+ It is
+\emph on
+strongly
+\emph default
+ recommended that you save your work before using this function.
+ In fact, it is
+\emph on
+strongly
+\emph default
+ recommended that you not attempt to edit layout information while simultaneousl
+y working on a document that you care about.
+ Use a test document.
+ Syntax errors and the like in your layout file could cause peculiar behavior.
+ In particular, such errors could cause LyX to regard the current layout
+ as invalid and to attempt to switch to some other layout.
+ The LyX team strives to keep LyX stable in such situations, but safe is
+ better than sorry.
+\begin_inset Foot
+status collapsed
+
+\begin_layout Plain Layout
+While we're giving advice: make regular backups.
+ And be nice to your mother.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Subsection
+File format
+\end_layout
+
+\begin_layout Standard
+The first non-comment line of any layout file, included file, or module
+
+\emph on
+must
+\emph default
+ contain the file format number:
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+Format
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+int
+\end_layout
+
+\end_inset
+
+] The format of the layout file.
\end_layout
\begin_layout Standard
-In versions of LyX prior to 1.6, you had to restart LyX to see any changes
- you made to your layout files.
- As a result, editing layout files could be very time consuming.
- Beginning with 1.6, however, you can force a reload of the layout currently
- in use by using the LyX function
-\begin_inset Flex CharStyle:MenuItem
+This tag was introduced with LyX 1.4.0.
+ Layout files from LyX 1.3.x and earlier don't have an explicit file format
+ and are considered to be of format 1.
+ The format for the present version of LyX is format
+\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-layout-reload
+20
\end_layout
\end_inset
.
- There is no default binding for this function—though, of course, you can
- bind it to a key yourself.
- If you want to use this function, then, you should simply enter it in the
- mini-buffer.
-
-\emph on
-Warning
-\emph default
-: This is very much an `advanced feature'.
- It is
-\emph on
-strongly
-\emph default
- recommended that you save your work before using this function.
- In fact, it is
-\emph on
-strongly
-\emph default
- recommended that you not attempt to edit your layout while simultaneously
- working on a document that you care about.
- Use a test document.
- Syntax errors and the like in your layout file could cause peculiar behavior.
- In particular, such errors could cause LyX to regard the current layout
- as invalid and to attempt to switch to some other layout.
- The LyX team strives to keep LyX stable in such situations, but safe is
- better than sorry.
+ But LyX is capable of reading earlier formats, too, just as it is capable
+ of reading files produced by earlier versions of LyX.
+ There is, however, no provision for converting to earlier formats.
+ So LyX 1.6.x will not read layout files in format 20 but only files in format
+ 11 or earlier.
\end_layout
\begin_layout Subsection
-File format
+General text class parameters
\end_layout
\begin_layout Standard
-The first non-comment line must contain the file format number:
+These are the general parameters which describe the form of the entire document:
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-Format
+AddToHTMLPreamble
\end_layout
\end_inset
- [
+ Adds information that will be output in the
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-int
+<head>
\end_layout
\end_inset
-] This tag was introduced with LyX 1.4.0 (layout files of LyX 1.3.x and earlier
- don't have an explicit file format).
- The file format that is documented here is format 14.
+ block when this document class is output to XHTML.
+ Typically, this would be used to output CSS style information, but it can
+ be used for anything that can appear in
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+<head>
\end_layout
-\begin_layout Subsection
-General text class parameters
+\end_inset
+
+.
+ Must end with
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+EndPreamble
\end_layout
-\begin_layout Standard
-These are the general parameters which describe the form of the entire document:
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+.
\end_layout
\begin_layout Description
\end_inset
-] Whether the class should default to having one or two columns.
+] Whether the class should
+\emph on
+default
+\emph default
+ to having one or two columns.
Can be changed in the
\begin_inset Flex CharStyle:MenuItem
status collapsed
\end_inset
- Specifies a module to be included by default with this document class,
- which should be specified by filename without the
+ Specifies a module to be included by default with this document class.
+ The module should be specified by filename without the
\begin_inset Flex CharStyle:Code
status collapsed
.
This will default to the first defined style if not given, but you are
- highly encouraged to use this directive.
+ encouraged to use this directive.
\end_layout
\begin_layout Description
\end_inset
-] Indicates that the module in question—which should be specified by filename
- without the
+] This tag indicates that the module in question—which should be specified
+ by filename without the
\begin_inset Flex CharStyle:Code
status collapsed
\end_inset
+\begin_inset Quotes erd
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLPreamble
+\end_layout
+
+\end_inset
+
+ Sets the information that will be output in the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+<head>
+\end_layout
+
+\end_inset
+
+ block when this document class is output to XHTML.
+ Note that this will completely override any prior
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLPreamble
+\end_layout
+
+\end_inset
+
+ or
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+AddToHTMLPreamble
+\end_layout
+
+\end_inset
+
+ declarations.
+ (Use
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+AddToHTMLPreamble
+\end_layout
+
+\end_inset
+
+ if you just want to add material to the preamble.) Must end with
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+EndPreamble
+\end_layout
+
+\end_inset
+
+
\begin_inset Quotes erd
\end_inset
\end_inset
.
+\begin_inset Newline newline
+\end_inset
+
+See Section
+\begin_inset space ~
+\end_inset
+
+
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "sub:Counters"
+
+\end_inset
+
+ for details on counters.
\end_layout
\begin_layout Description
\end_inset
This section (re-)defines the layout of an inset.
- It can be applied to an existing inset of to a new, user-defined inset,
- e.
-\begin_inset space \thinspace{}
+ It can be applied to an existing inset or to a new, user-defined inset,
+ e.g., a new character style.
+ Must end with
+\begin_inset Quotes eld
\end_inset
-g.
-\begin_inset space \space{}
+
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+End
+\end_layout
+
\end_inset
-a new character style.
- See Section
+
+\begin_inset Quotes erd
+\end_inset
+
+.
+\begin_inset Newline newline
+\end_inset
+
+See Section
\begin_inset space ~
\end_inset
\end_inset
for more information.
- Must end with
-\begin_inset Quotes eld
-\end_inset
-
+
+\end_layout
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-End
+LeftMargin
\end_layout
\end_inset
-
-\begin_inset Quotes erd
-\end_inset
-
-.
-\end_layout
-
-\begin_layout Description
+ [
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-LeftMargin
+string
\end_layout
\end_inset
- A string that indicates the width of the left margin on the screen, for
+] A string that indicates the width of the left margin on the screen, for
example,
\begin_inset Quotes eld
\end_inset
\end_inset
.
+ (Note that this is not a `length', like
+\begin_inset Quotes eld
+\end_inset
+
+2ex
+\begin_inset Quotes erd
+\end_inset
+
+.)
\end_layout
\begin_layout Description
This command deletes an existing float.
This is particularly useful when you want to suppress a float that has
- be defined in an input file.
+ been defined in an input file.
\end_layout
\begin_layout Description
status collapsed
\begin_layout Plain Layout
-
-\series medium
PageStyle
\end_layout
\end_inset
-] The class default pagestyle.
+] The default pagestyle.
Can be changed in the
\begin_inset Flex CharStyle:MenuItem
status collapsed
\end_inset
declarations.
- Must end with
+ (Use
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+AddToPreamble
+\end_layout
+
+\end_inset
+
+ if you just want to add material to the preamble.) Must end with
\begin_inset Quotes eld
\end_inset
\end_inset
tag to indicate that it ought to be used.
- It could be used in a module that provided an alternate implementation
+ It could also be used in a module that provided an alternate implementation
of the same functionality.
\end_layout
.
Multiple features must be separated by commas.
Note that you can only request supported features.
+ (Again, see
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+LaTeXFeatures.cpp
+\end_layout
+
+\end_inset
+
+ for a list of these.)
\end_layout
\begin_layout Description
This sequence defines a paragraph style.
If the style does not yet exist, it is created; if it does exist, its parameter
-s are redefined Must end with
+s are modified.
+ Must end with
\begin_inset Quotes eld
\end_inset
\end_inset
-\emph default
-,
+\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
+HTML*
+\end_layout
+
+\end_inset
+
+ These tags are used with XHTML output.
+\end_layout
+
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-1
+InnerTag
\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,
+ [[FIXME]] (Used only with XML-type formats.)
+\end_layout
+
+\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-FreeSpacing
+InPreamble
\end_layout
\end_inset
- can be enabled.
- Note that LyX will create protected blanks for the additional blanks when
- in another mode than LaTeX-mode.
-\end_layout
-
-\begin_layout Description
+
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-InnerTag
+[1, 0]
\end_layout
\end_inset
- [[FIXME]] (Used only with XML-type formats.)
+ If 1, marks the layout as to be included in the document preamble rather
+ than in the document body.
+ This is useful for document classes that want such information as the title
+ and author to appear in the preamble.
\end_layout
\begin_layout Description
\begin_inset Flex CharStyle:Code
status collapsed
+\begin_layout Plain Layout
+TocLevel
+\end_layout
+
+\end_inset
+
+
+\series medium
+
+\begin_inset Flex CharStyle:Code
+status collapsed
+
\begin_layout Plain Layout
\series medium
-TocLevel [int]
+[int]
\end_layout
\end_inset
+
+\series default
The level of the style in the table of contents.
This is used for automatic numbering of section headings.
\end_layout
added, but the maximum is taken.
\end_layout
+\begin_layout Subsection
+\begin_inset CommandInset label
+LatexCommand label
+name "sub:Paragraph-Style-XHTML"
+
+\end_inset
+
+Paragraph Style XHTML
+\end_layout
+
+\begin_layout Standard
+XHTML output is also controlled by layout information.
+ In general, LyX provides sensible defaults for all of these tags and, as
+ mentioned earlier, it can even construct default CSS information from the
+ other layout tags.
+ For example, LyX will attempt to use the information provided in the
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+Font
+\end_layout
+
+\end_inset
+
+ declaration for the Chapter style to construct CSS describing how Chapters
+ should be displayed in the browser.
+\end_layout
+
+\begin_layout Standard
+The XHTML LyX outputs depends upon whether we are dealing with a normal
+ paragraph, a command, or an environment.
+ For a command or normal paragraph, it 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
+
+>Paragraph Label</labeltag>
+\end_layout
+
+\begin_layout LyX-Code
+Here lies the 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 one.
+ For an environment that is not a list, it 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>Here lies the contents of the first paragraph.</item
+tag>
+\end_layout
+
+\begin_layout LyX-Code
+<itemtag>Second paragraph.</itemtag>
+\end_layout
+
+\begin_layout LyX-Code
+</tag>
+\end_layout
+
+\begin_layout Standard
+For a list, we have this form:
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+HTMLAttr
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+string
+\end_layout
+
+\end_inset
+
+] Specifies one or more attribute--value pairs to be output with the main
+ tag.
+\end_layout
+
\begin_layout Subsection
Floats
\begin_inset CommandInset label
\begin_inset Flex CharStyle:Code
status collapsed
+\begin_layout Plain Layout
+ContentAsLabel
+\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 to use the content of the inset as the label, when the inset is
+ closed.
+ Default is false.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
\begin_layout Plain Layout
CopyStyle
\end_layout
] Indicates whether the PlainLayout should be used or, instead, the user
can change the paragraph style used in the inset.
+ Default is false.
\end_layout
\begin_layout Description
\end_inset
).
+ Default is false.
\end_layout
\begin_layout Description
\end_inset
).
+ Default is false.
\end_layout
\begin_layout Description
\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.
+ This will also set
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+CustomPars
+\end_layout
+
+\end_inset
+
+ to the same value and
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+ForcePlain
+\end_layout
+
+\end_inset
+
+ to the opposite value.
These can be reset to other values, if they are used
\emph on
after
\emph default
- MultiPar.
+
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+MultiPar
+\end_layout
+
+\end_inset
+
+.
+ Default is true.
\end_layout
\begin_layout Description
\emph on
not
\emph default
- whether the command should itself be protected.)
+ whether the command should itself be protected.) Default is false.
\end_layout
\begin_layout Description
] As with paragraph styles (see page
\begin_inset CommandInset ref
-LatexCommand ref
+LatexCommand pageref
reference "des:PathThru"
\end_inset
).
+ Default is false.
\end_layout
\begin_layout Description
\end_layout
\begin_layout LyX-Code
-Counter name
+Counter CounterName
\end_layout
\begin_layout Standard
-where of course `name' is replaced by the name of the counter.
+where of course `
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+CounterName
+\end_layout
+
+\end_inset
+
+' is replaced by the name of the counter.
And it must end with
\begin_inset Quotes eld
\end_inset
\end_inset
-] Valid argument are:
+] Valid arguments are:
\begin_inset Flex CharStyle:Code
status collapsed
.
Each of these turns on or off the corresponding attribute.
+ For example,
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+emph
+\end_layout
+
+\end_inset
+
+ turns on emphasis, and
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+no_emph
+\end_layout
+
+\end_inset
+
+ turns it off.
+
+\begin_inset Newline newline
+\end_inset
+
+If the latter seems puzzling, remember that the font settings for the present
+ context are generally inherited from the surrounding context.
+ So
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+no_emph
+\end_layout
+
+\end_inset
+
+ would turn off the emphasis that was anyway in effect, say, in a theorem
+ environment.
\end_layout
\begin_layout Description