#LyX 2.0.0svn created this file. For more info see http://www.lyx.org/
-\lyxformat 348
+\lyxformat 353
\begin_document
\begin_header
\textclass scrbook
\font_sans default
\font_typewriter default
\font_default_family default
+\use_xetex false
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
+\default_output_format default
\paperfontsize 12
\spacing single
\use_hyperref true
\use_esint 0
\cite_engine basic
\use_bibtopic false
+\use_indices false
\paperorientation portrait
+\backgroundcolor #ffffff
\branch OutDated
\selected 0
\color #f5fae7
\output_changes false
\author ""
\author ""
+\author ""
+\author ""
+\author ""
\end_header
\begin_body
\begin_inset CommandInset ref
LatexCommand ref
-reference "chap:i18n"
+reference "cha:Internationalizing-LyX"
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
-reference "chap:textclass"
+reference "cha:Installing-New-Document"
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:templates"
+reference "sec:Creating-Templates"
\end_inset
\end_layout
\begin_layout Section
-Using the dialog for the first time
-\end_layout
-
-\begin_layout Standard
-The
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-UserDir/preferences
-\end_layout
-
-\end_inset
-
- file will contain only changes that you have made to the default behavior,
- some of which is hard-coded into LyX and some of which is contained in
- the system file
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-LyXDir/lyxrc.defaults
-\end_layout
-
-\end_inset
-
-.
- Note that in both files lines beginning with a
-\begin_inset Quotes eld
-\end_inset
-
-#
-\begin_inset Quotes erd
-\end_inset
-
- are just comments and are not interpreted.
- However, only system administrators should edit
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-LyXDir/lyxrc.defaults
-\end_layout
-
-\end_inset
-
-.
- Users should use the
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
-
-\begin_layout Plain Layout
-Tools\SpecialChar \menuseparator
-Preferences
-\end_layout
-
-\end_inset
-
- dialog to create and modify their own
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-UserDir/preferences
-\end_layout
-
-\end_inset
-
- file.
-\end_layout
-
-\begin_layout Standard
-We hope that the
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
-
-\begin_layout Plain Layout
-Tools\SpecialChar \menuseparator
-Preferences
-\end_layout
-
-\end_inset
-
- dialog will be largely self-explanatory.
- Most things in the dialog have associated `tool tips': hover your mouse
- pointer over something for more information.
- Before we highlight a few of the more important commands below, however,
- a word of warning: Applying some of your changes (e.
-\begin_inset space \thinspace{}
-\end_inset
-
-g.
-\begin_inset space \space{}
-\end_inset
-
-screen fonts) will have an instant effect.
- Others (e.
-\begin_inset space \thinspace{}
-\end_inset
-
-g.
-\begin_inset space \space{}
-\end_inset
-
-changing the bind file) will not.
- If nothing appears to have changed, just
-\begin_inset Flex CharStyle:MenuItem
-status collapsed
-
-\begin_layout Plain Layout
-Save
-\end_layout
-
-\end_inset
-
- the changes and restart LyX.
-\end_layout
-
-\begin_layout Section
-File Handling
-\end_layout
-
-\begin_layout Standard
-LyX has a powerful mechanism to convert to and from any file format using
- external programs.
-
-\end_layout
-
-\begin_layout Subsection
+Formats
\begin_inset CommandInset label
LatexCommand label
-name "sub:Formats"
+name "sec:Formats"
\end_inset
-Formats
+
\end_layout
\begin_layout Standard
\end_inset
option tells LyX that a format is suitable for document export.
- If this is is set and if a suitable conversion route exists (see
+ If this is is set and if a suitable conversion route exists (see sec.
+\begin_inset space \thinspace{}
+\end_inset
+
+
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:Converters"
+reference "sec:Converters"
\end_inset
.
\end_layout
-\begin_layout Subsection
+\begin_layout Section
Copiers
\end_layout
\end_layout
-\begin_layout Subsection
+\begin_layout Section
+Converters
\begin_inset CommandInset label
LatexCommand label
-name "sub:Converters"
+name "sec:Converters"
\end_inset
-Converters
+
\end_layout
\begin_layout Standard
formats', as described in section
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:Formats"
+reference "sec:Formats"
\end_inset
Internationalizing LyX
\begin_inset CommandInset label
LatexCommand label
-name "chap:i18n"
+name "cha:Internationalizing-LyX"
\end_inset
\end_layout
\begin_layout Chapter
-Installing New Document Classes, Layouts, and Templates
+Installing New Document Classes, Layouts, and Templates
\begin_inset CommandInset label
LatexCommand label
-name "chap:textclass"
+name "cha:Installing-New-Document"
\end_inset
\end_layout
\begin_layout Subsection
+Layout modules
\begin_inset CommandInset label
LatexCommand label
name "sub:Layout-modules"
\end_inset
-Layout modules
+
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Standard
-The argument in square brackets is optional: It declares any LaTeX packages
- on which the module depends.
- The mandatory argument, in curly brackets, is the name of the module, as
+The mandatory argument, in curly brackets, is the name of the module, as
it should appear in
\begin_inset Flex CharStyle:MenuItem
status collapsed
\end_inset
.
-
+ The argument in square brackets is optional: It declares any LaTeX packages
+ on which the module depends.
+ Please note that only packages about which LyX knows should be listed in
+ the square brackets.
+\begin_inset Foot
+status collapsed
+
+\begin_layout Plain Layout
+The list of such packages is documented only in the source code.
+\end_layout
+
+\end_inset
+
+ LyX will not check for arbitrary packages.
\end_layout
\begin_layout Standard
] 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 12.
+ The file format that is documented here is format 14.
\end_layout
\begin_layout Subsection
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:classoptions"
+reference "sub:ClassOptions"
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:counter"
+reference "sub:Counters"
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:fonts"
+reference "sub:Font-description"
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:floats"
+reference "sub:Floats"
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:charstyle"
+reference "sub:Flex-insets-and"
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:style"
+reference "sub:Paragraph-Styles"
\end_inset
\end_inset
section
-\end_layout
-
-\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
-name "sec:classoptions"
+name "sub:ClassOptions"
\end_inset
+
+\end_layout
+
+\begin_layout Standard
The
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Subsection
Paragraph Styles
-\end_layout
-
-\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
-name "sec:style"
+name "sub:Paragraph-Styles"
\end_inset
+
+\end_layout
+
+\begin_layout Standard
A paragraph style description looks like this:
\begin_inset Foot
status collapsed
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:fonts"
+reference "sub:Font-description"
\end_inset
status collapsed
\begin_layout Plain Layout
-I18NPreamble
+BabelPreamble
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-I18NPreamble
+BabelPreamble
\end_layout
\end_inset
status collapsed
\begin_layout Plain Layout
-EndI18NPreamble
+EndBabelPreamble
\end_layout
\end_inset
language.
\end_layout
+\begin_layout Standard
+This preamble snippet will only be used if the document contains more than
+ one language and the babel package is used.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+LangPreamble
+\end_layout
+
+\end_inset
+
+ Like
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+BabelPreamble
+\end_layout
+
+\end_inset
+
+, but this preamble snippet occurs independently from the babel package,
+ and only for the document language.
+ Must end with
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+EndLangPreamble
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+.
+\end_layout
+
+\begin_deeper
\begin_layout Standard
If the style defines text that appears in the typeset document, it may use
status collapsed
\begin_layout Plain Layout
-I18NPreamble
+LangPreamble
+\end_layout
+
+\end_inset
+
+ and
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+BabelPreamble
\end_layout
\end_inset
\begin_layout LyX-Code
-\backslash
-providecommand{
-\backslash
-claimname}{Claim}
-\end_layout
-
-\begin_layout LyX-Code
-
\backslash
theoremstyle{remark}
\end_layout
\end_layout
\begin_layout LyX-Code
-I18nPreamble
+LangPreamble
\end_layout
\begin_layout LyX-Code
\backslash
-AtBeginDocument{
-\backslash
-ifx
-\backslash
-LdfInit
-\backslash
-undefined
-\backslash
-relax
+providecommand{
\backslash
-else%
+claimname}{_(Claim)}
\end_layout
\begin_layout LyX-Code
-
+
+\end_layout
+
+\begin_layout LyX-Code
+EndLangPreamble
+\end_layout
+
+\begin_layout LyX-Code
+BabelPreamble
+\end_layout
+
+\begin_layout LyX-Code
+
\backslash
addto
\backslash
\backslash
renewcommand{
\backslash
-claimname}{_(Claim)}}%
-\end_layout
-
-\begin_layout LyX-Code
-
-\backslash
-fi}
+claimname}{_(Claim)}}
\end_layout
\begin_layout LyX-Code
-EndI18nPreamble
+EndBabelPreamble
\end_layout
\begin_layout Standard
\end_inset
- in the standard preamble.
+ in the language preamble.
This command holds the name of the theorem that will appear in the output.
The
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-I18NPreamble
+BabelPreamble
\end_layout
\end_inset
\end_inset
- for each used language.
- The
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-ifx
-\backslash
-LdfInit
-\end_layout
-
-\end_inset
-
- test ensures that no LaTeX error occurs in documents that do not use babel.
- Since LyX loads babel after the style-specific preamble, the whole command
- is deferred to the actual start of the document with
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-
-\backslash
-AtBeginDocument
-\end_layout
-
-\end_inset
-
-.
+ for each used language in multilanguage documents.
\end_layout
\end_deeper
The name of the counter for automatic numbering (see Section
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:counter"
+reference "sub:Counters"
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:fonts"
+reference "sub:Font-description"
\end_inset
in Section
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:counter"
+reference "sub:Counters"
\end_inset
Section
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:counter"
+reference "sub:Counters"
\end_inset
See Section
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:counter"
+reference "sub:Counters"
\end_inset
See section
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:fonts"
+reference "sub:Font-description"
\end_inset
\begin_layout Subsection
Floats
-\end_layout
-
-\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
-name "sec:floats"
+name "sub:Floats"
\end_inset
+
+\end_layout
+
+\begin_layout Standard
Since version 1.3.0 of LyX, it is has been both possible and necessary to
define the floats (
\begin_inset Flex CharStyle:MenuItem
\begin_layout Subsection
Flex insets and InsetLayout
-\end_layout
-
-\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
-name "sec:charstyle"
+name "sub:Flex-insets-and"
\end_inset
+
+\end_layout
+
+\begin_layout Standard
LyX has supported character styles since version 1.4.0; as of version 1.6.0,
these are called Flex insets.
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:fonts"
+reference "sub:Font-description"
\end_inset
\begin_inset CommandInset ref
LatexCommand ref
-reference "sec:fonts"
+reference "sub:Font-description"
\end_inset
\begin_layout Subsection
Counters
-\end_layout
-
-\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
-name "sec:counter"
+name "sub:Counters"
\end_inset
+
+\end_layout
+
+\begin_layout Standard
Since version 1.3.0 of LyX, it is both possible and necessary to define the
counters (
\begin_inset Flex CharStyle:MenuItem
\begin_layout Subsection
Font description
-\end_layout
-
-\begin_layout Standard
\begin_inset CommandInset label
LatexCommand label
-name "sec:fonts"
+name "sub:Font-description"
\end_inset
+
+\end_layout
+
+\begin_layout Standard
A font description looks like this:
\end_layout
Creating Templates
\begin_inset CommandInset label
LatexCommand label
-name "sec:templates"
+name "sec:Creating-Templates"
\end_inset
This must be the name of a format that is known to LyX (see section
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:Formats"
+reference "sec:Formats"
\end_inset
files needs the relative name in order to rewrite the file content.
\end_layout
-\begin_layout Section
-\begin_inset CommandInset label
-LatexCommand label
-name "sec:Security-discussion"
-
-\end_inset
-
-Security discussion
-\end_layout
-
-\begin_layout Standard
-\begin_inset Box Shadowbox
-position "t"
-hor_pos "c"
-has_inner_box 1
-inner_pos "t"
-use_parbox 0
-width "100col%"
-special "none"
-height "1in"
-height_special "totalheight"
-status open
-
-\begin_layout Plain Layout
-WARNING: This section is definitely outdated.
-\end_layout
-
-\end_inset
-
-
-\end_layout
-
-\begin_layout Standard
-The external material feature interfaces with a lot of external programs
- and does so automatically, so we have to consider the security implications
- of this.
- In particular, since you have the option of including your own filenames
- and/or parameter strings and those are expanded into a command, it seems
- that it would be possible to create a malicious document which executes
- arbitrary commands when a user views or prints the document.
- This is something we definitely want to avoid.
-\end_layout
-
-\begin_layout Standard
-However, since the external program commands are specified in the template
- configuration file only, there are no security issues if LyX is properly
- configured with safe templates only.
- This is so because the external programs are invoked with the
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-execvp
-\end_layout
-
-\end_inset
-
--system call rather than the
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-system
-\end_layout
-
-\end_inset
-
- system-call, so it's not possible to execute arbitrary commands from the
- filename or parameter section via the shell.
-\end_layout
-
-\begin_layout Standard
-This also implies that you are restricted in what command strings you can
- use in the external material templates.
- In particular, pipes and redirection are not readily available.
- This has to be so if LyX should remain safe.
- If you want to use some of the shell features, you should write a safe
- script to do this in a controlled manner, and then invoke the script from
- the command string.
- In the
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-lib/scripts
-\end_layout
-
-\end_inset
-
- directory of the LyX installation, you can find a safe wrapper script
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-general_command_wrapper.py
-\end_layout
-
-\end_inset
-
- that supports redirection of input and output.
- That can serve as an example for how to write safe template scripts.
- For a more advanced example that uses
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-fork
-\end_layout
-
-\end_inset
-
- and friends, take a look at the
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-pic2ascii.py
-\end_layout
-
-\end_inset
-
- converter script.
-\end_layout
-
-\begin_layout Standard
-It is possible to design a template that interacts directly with the shell,
- but since this would allow a malicious user to execute arbitrary commands
- by writing clever filenames and/or parameters, we generally recommend that
- you only use safe scripts that work with the
-\begin_inset Flex CharStyle:Code
-status collapsed
-
-\begin_layout Plain Layout
-execvp
-\end_layout
-
-\end_inset
-
- system call in a controlled manner.
- Of course, for use in a controlled environment, it can be tempting to just
- fall back to use ordinary shell scripts.
- If you do so, be aware that you
-\emph on
-will
-\emph default
- provide an easily exploitable security hole in your system.
- Of course it stands to reason that such unsafe templates will never be
- included in the standard LyX distribution, although we do encourage people
- to submit new templates in the open source tradition.
- But LyX as shipped from the official distribution channels will never have
- unsafe templates.
-\end_layout
-
-\begin_layout Standard
-Including external material provides a lot of power, and you have to be
- careful not to introduce security hazards with this power.
- A subtle error in a single line in an innocent looking script can open
- the door to huge security problems.
- So if you do not fully understand the issues, we recommend that you consult
- a knowledgeable security professional or the LyX development team if you
- have any questions about whether a given template is safe or not.
- And do this before you use it in an uncontrolled environment.
-\end_layout
-
\end_body
\end_document