\fontscheme default \graphics none \paperfontsize default \spacing single \papersize Default \paperpackage a4 \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle headings \layout Title Customizing LyX: Features for the Advanced User \layout Author by the LyX Team \layout Standard \begin_inset LatexCommand \tableofcontents{ \end_inset \layout Chapter Introduction \layout Standard This manual covers the customization features present in LyX. While it is not yet 100% complete, most of the basics and a few advanced features are covered. \layout Chapter LyX configuration files \layout Standard \begin_inset LatexCommand \label{chap:config \end_inset This chapter aims at helping you to find your way through LyX configuration files. Before continuing to read this chapter, you should find out where your LyX library directory is by using \family sans \bar under \bar default elp\SpecialChar \menuseparator \bar under \bar default ersion \family default This directory is the place where LyX places its system-wide configuration files, and we will simply name it \family typewriter LyXDir \family default in the remainder of this document. \layout Section What’s in \family typewriter LyXDir \family default \layout Standard Among the files and directories that you will find in a typical LyX installation , the most interesting one is \family typewriter \series medium lyxrc \family default \series default , which is the main configuration file, as described in Chapter \protected_separator \begin_inset LatexCommand \ref{chap:lyxrc \end_inset \layout Standard Most customization that you might want to do to LyX are available through this file. However, many other inner aspects of LyX can be customized by modifying the other files in \family typewriter LyXDir \family default They fall in different categories, described in the following subsections. \layout Subsection Automatically generated files \layout Standard These files are generated when you configure LyX. They contain various default values that are guessed by inspection. In general, it is not a good idea to modify them, since they might be overwritt en at any time. \layout List \labelwidthstring 00.00.0000 \family typewriter \series medium lyxrc.defaults \family default \series default is read just before \family typewriter lyxrc \family default It contains defaults for various commands. If you don’t like some values given there, you can override them in \family typewriter lyxrc \family default \layout List \labelwidthstring 00.00.0000 \family typewriter \series medium packages.lst \family default \series default contains the list of packages that have been recognized by LyX. It is currently unused by the LyX program itself, but the information extracted , and more, is made available with \family sans \bar under \bar default elp\SpecialChar \menuseparator \bar under \bar default \protected_separator Configuration \family default \layout List \labelwidthstring 00.00.0000 \family typewriter \series medium textclass.lst \family default \series default is the list of textclasses that have been found in your \family typewriter layout/ \family default directory, along with the associated LaTeX document class and their description. \layout List \labelwidthstring 00.00.0000 \family typewriter doc/LaTeXConfig.lyx \family default is automatically generated during configuration from the file \family typewriter LaTeXConfig.lyx.in \family default Each string of the form \begin_inset Quotes eld \end_inset @chk_foo \begin_inset Quotes erd \end_inset will be replaced by \begin_inset Quotes eld \end_inset \begin_inset Quotes erd \end_inset \begin_inset Quotes eld \end_inset \begin_inset Quotes erd \end_inset depending on whether the package \family typewriter \family default has been found. \layout Subsection Directories \layout List \labelwidthstring 00.00.0000 \family typewriter \series medium bind/ \family default \series default this directory contains files with the extension .bind that define the keybindin gs used in LyX (see section \protected_separator \begin_inset LatexCommand \ref{sec:bindings \end_inset If there exists an internationalized version of the bindfile named \family typewriter $LANG_xxx.bind \family default , that will be used first. See Chapter \protected_separator \begin_inset LatexCommand \ref{chap:i18n \end_inset , and section \begin_inset LatexCommand \ref{sec:bindings \end_inset for details. \layout List \labelwidthstring 00.00.0000 \family typewriter \series medium clipart/ \family default \series default contains Postscript pictures that can be included in documents. \layout List \labelwidthstring 00.00.0000 \family typewriter \series medium \family default \series default contains LyX documentation files (including the one you are currently reading). The file \family typewriter LaTeXConfig.lyx \family default deserves special attention, as noted above. If there exists an internationalized version of the help-document with \family typewriter $LANG_ \family default prepended to the name, that will be used first. See Chapter \protected_separator \begin_inset LatexCommand \ref{chap:i18n \end_inset for details. \layout List \labelwidthstring 00.00.0000 \family typewriter \series medium examples/ \family default \series default contains example files that explain how to use some features. In the file browser, press the \family sans Examples \family default button to get there. \layout List \labelwidthstring 00.00.0000 \family typewriter images/ \family default contains image files that are used by the \family sans Itemize \protected_separator Bullet \protected_separator Selection \family default popup. It is planned that this directory will be used in future releases to support custom icons and banners. \layout List \labelwidthstring 00.00.0000 \family typewriter \series medium \family default \series default contains keyboard keymapping files. See Chapter \protected_separator \begin_inset LatexCommand \ref{sec:keymap \end_inset for details. \layout List \labelwidthstring 00.00.0000 \family typewriter \series medium layouts/ \family default \series default contains the textclass files described in Chapter \protected_separator \begin_inset LatexCommand \ref{chap:textclass \end_inset \layout Subsection Files you don’t want to modify \layout Standard These files are used internally by LyX and you generally do not need to modify them unless you are a developer. \layout List \labelwidthstring 00.00.0000 \family typewriter \series medium CREDITS \family default \series default this file contains the list of LyX developers. The contents are displayed with the menu entry \family sans \bar under \bar default elp\SpecialChar \menuseparator \bar under \bar default \family default \layout List \labelwidthstring 00.00.0000 \family typewriter \series medium chkconfig.ltx \family default \series default this is a LaTeX script used during the configuration process. Do not run directly. \layout List \labelwidthstring 00.00.0000 \family typewriter \series medium configure \family default \series default this is the script that is used to re-configure LyX. It creates configuration files in the directory it was run from. \layout Section Your local configuration directory \layout Standard Even if you are using LyX as an unprivileged user, you might want to change LyX configuration for your own use. One new feature of LyX 0.12 was the introduction of a \family typewriter UserDir \family default directory that contains all your personal configuration files. This is the directory described as \begin_inset Quotes eld \end_inset user directory \begin_inset Quotes erd \end_inset \family sans \bar under \bar default elp\SpecialChar \menuseparator \bar under \bar default ersion \family default This directory is used as a mirror of \family typewriter LyXDir \family default , which means that every file in \family typewriter UserDir \family default is a replacement for the corresponding file in \family typewriter LyXDir \family default Any configuration file described in the above sections can be placed either in the system-wide directory, in which case it will affect all users, or in your local directory for your own use. \layout Standard To make things clearer, let’s provide a few examples: \layout Itemize when you reconfigure using \family sans \bar under \bar default ptions\SpecialChar \menuseparator \bar under \bar default econfigure \family default , LyX runs \family typewriter configure \family default and the resulting files are written in your local configuration directory (see section \protected_separator \begin_inset LatexCommand \ref{sec:autodetected \end_inset to have a list of the \family typewriter lyxrc \family default settings affected by this section). This means that any additional textclass file that you might have added \family typewriter UserDir/layouts \family default will be added to the list of classes in the \family sans \bar under \bar default ayout\SpecialChar \menuseparator \bar under \bar default ocument \family default popup. \layout Itemize Similarly, if you have installed some LaTeX document classes in your home directory, that LaTeX can find with your \family typewriter TEXINPUTS \family default path, they will show up in your list of text classes. \begin_float footnote \layout Standard as long as LyX or yourself have a \family typewriter .layout \family default file for it, of course. \end_float \layout Itemize If you get some updated documentation from LyX ftp site and cannot install it because you do not have sysadmin rights on your system, you can just copy the files in \family typewriter UserDir/doc/ \family default and the items in the \family sans \bar under \bar default \family default menu will open them! \layout Chapter \family typewriter lyxrc \family default File \begin_inset LatexCommand \label{chap:lyxrc \end_inset \layout Section Customization with the \family typewriter lyxrc \family default -file \layout Standard LyX will read the file \family typewriter lyxrc \family default , when it is invoked. This file include various settings that are described below. Note that lines beginning with a \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset are just comments and not interpreted. \layout Standard According to the file loading scheme described on page \protected_separator \begin_inset LatexCommand \pageref{chap:config \end_inset \family typewriter UserDir/lyxrc \family default doesn’t exist, LyX loads the system default file \family typewriter LyXDir/lyxrc \family default instead. Only system administrators should edit the global \family typewriter lyxrc \family default file. To design your own, copy \family typewriter lyxrc \family default \family typewriter UserDir/ \family default and use it as a template. \layout Section Bindings \begin_inset LatexCommand \label{sec:bindings \end_inset \layout Standard command: \family typewriter \backslash \family default \newline format: \family typewriter \backslash bind <key combination> <lyx-function> \layout Standard \family typewriter \backslash \family default is used to, well, bind a function to a key. Both key combination and lyx-function (including any arguments) must be enclosed in "double quotes". Look in the bind files in \family typewriter (LyXDir/bind/) \family default for examples on how to use this command. All the LyX functions are listed in the \emph on Reference Guide \emph default \layout Standard LyX supports internationalization of the user interface (see Chapter \protected_separator \begin_inset LatexCommand \ref{chap:i18n \end_inset If your \emph on locale \emph default is set, with the environment variable \family typewriter $LANG \family default , LyX will try to use bindfiles by prepending \family typewriter $LANG_ \family default to their name. For example, you can put in your personal \family typewriter bind/ \family default directory a translated copy of some bind file. \layout Section Toolbar \layout Standard The toolbar is also configurable from \family typewriter lyxrc \family default This is done inside a \emph on toolbar section \emph default surrounded by \family typewriter \backslash begin_toolbar \family default and \family typewriter \backslash end_toolbar \family default commands. The only legal commands inside this section are \family typewriter \backslash \family default \family typewriter \backslash layouts \family default , and \family typewriter \backslash separator \family default \layout Standard \family typewriter \backslash \family default has this format: \family typewriter \backslash add <lyx-function> [<parameters>] \family default (the parameters are optional) and adds a button for the specified function. LyX has icons for a small subset of the functions, but you can bind any function. If you draw some nice icons, you can submit them to the LyX team, and we’ll provide support for them in a future release. \layout Standard \family typewriter \backslash layouts \family default command adds the paragraph environment drop-down list. The \family typewriter \backslash separator \family default command is used to add a little space between entries, and should be used to organize the toolbar in a logical way. Have a look in your \family typewriter lyxrc \family default file to see how the standard toolbar could be declared. \layout Section On-screen Previewing \layout Standard In addition to viewing documents within LyX, you can also preview your document in the form in which it will appear on the paper output. By default, LyX uses \family typewriter \family default for on-screen previewing of . \family typewriter \family default files (the output from LaTeX). \layout Standard LyX can also use \family typewriter dvips \family default to convert \family typewriter \family default files to . \family typewriter \family default files and \family typewriter ghostview \family default for previewing. A number of options in the \family typewriter lyxrc \family default file can be used to customize these settings. \layout Description \family typewriter \series medium \backslash view_dvi_command \family default \series default Allows you to replace \family typewriter \family default by some other \family typewriter \family default previewer, or to supply arguments to \family typewriter \family default \layout Description \family typewriter \series medium \backslash view_ps_command \family default \series default Allows you to replace \family typewriter ghostview \family default with your preferred Post \latex latex \backslash \latex default Script previewer, or to provide arguments to \family typewriter ghostview \family default \layout Description \family typewriter \series medium \backslash view_pspic_command \family default \series default Defines the program used to do full-screen previews of PostScript figures. You can not use this setting to include any options. \layout Description \family typewriter \series medium \backslash ps_command \family default \series default Defines the program to use to embed PostScript figures within a LyX document. You can not include any options. If you define this to the empty string (""), LyX will not render any figures. This can be useful if you have a slow machine and work with lots of figures. \layout Description \family typewriter \series medium \backslash default_papersize \family default \series default Sets the paper size used by LyX when previewing documents. The default value is USletter paper. If LaTeX is configured to use a different default size at your site, you may wish to change this setting. \layout Section Printer \layout Standard There are a bunch of commands that help you setup the printer command from LyX. Normally, you only need to use a few of them, but all are provided for completeness. \layout Description \family typewriter \series medium \backslash printer \family default \series default This setting defines the default name of your printer. \layout Description \family typewriter \series medium \backslash print_command \family default \series default This setting defines which command, LyX should use to print your document. \layout Description \family typewriter \series medium \backslash print_evenpage_flag \family default \series default This setting defines which flag to your printer command will trigger printing of only the even pages. \layout Description \family typewriter \series medium \backslash print_oddpage_flag \family default \series default This setting defines which flag to give your printer command to print only the odd pages. \layout Description \family typewriter \series medium \backslash print_reverse_flag \family default \series default With this command, you can define what flag that will cause your printing command to print the pages in reverse order. \layout Description \family typewriter \series medium \backslash print_landscape_flag \family default \series default This command defines what flag is set when you’ve requested printing of your document in landscape. No option is passed, if the document is printed in portrait. \layout Description \family typewriter \series medium \backslash print_to_printer \family default \series default If you specify an explicit name of a printer, you’ll typically have to prepend this name with a flag on the printing command line. This command defines what flag should appear before the printer name. \layout Description \family typewriter \series medium \backslash print_to_file \family default \series default If you want to print to a file, you have to provide a flag before the filename. This command allows you to define how this flag looks. \layout Description \family typewriter \series medium \backslash print_file_extension \family default \series default When you print to a file, you can define what extension the printed file will have with this command. \layout Description \family typewriter \series medium \backslash print_extra_options \family default \series default With this command, you can define a series of flags that will be put on the printing command after the other flags. \layout Description \family typewriter \series medium \backslash print_spool_cmd \family default \series default If you specify something in this command, LyX will print in two steps: First, the program specified with the \family typewriter \backslash print_command \family default setting will be executed with the directive to print to a file. Then, the command specified with \family typewriter \backslash print_spool_cmd \family default will be executed with the output file from the previous command on the command line, and if specified, the directive ( \family typewriter \backslash print_to_printer \family default ) to send the output to a named printer before the filename. \layout Standard All in all, we hope that this will allow you to be able to print your documents without fuss. \layout Section Screen & Fonts \layout Standard The font used to display your documents on the LyX screen is very important, since you’ll be reading all your documents with this font. Therefor it is important that the font is as readable and good-looking as possible. The LyX team tried to provide the best possible default font for you, but since practically all X11 systems are different, it’s very likely that the default fonts will be sub-optimal on your system. Fortunately, you can do something about this. Before we explain how to do this, you should learn a bit more about fonts so that you are better prepared for choosing your fonts, because it is a trade-off that is individual to your preferences and the capabilities of your system. \layout Standard Notice that this section only deals with the fonts on the \emph on screen \emph default inside the LyX window. The fonts that appear on the \emph on paper \emph default \emph on output \emph default are independent from these fonts, and are determined by the document class. Read the \emph on User’s Guide \emph default to learn how to change the font of the printed version of your document. \layout Standard Basically, screen fonts come in two different kinds: Scalable outline fonts and non-scalable bitmap fonts. This distinction seems a bit arbitrary, since non-scalable fonts are actually scalable in most modern font renderers. The difference lies the \emph on quality \emph default of the scaling, and the \emph on speed \emph default of display. The most important decision is thus whether you should use non-scalable bitmap fonts or scalable outline fonts. \layout Standard The scalable fonts are build from \emph on outlines \emph default of the single glyphs (i.e. characters) in the font. This means that each glyph is defined using mathematical curves that are well suited for scaling to any requested size. This mathematical definition is interpreted by the font renderer and turned into a small picture composed of pixels according to which size and glyph, the programmer requests. This means that scalable fonts will look pretty good in all sizes. Well, almost all sizes. Since scalable fonts are defined in an abstract way, it can be hard to provide a good rendering at small sizes, where each pixel has to be very carefully put to provide a good image. Technically it is possible to do this from the mathematical definition, but in order to keep the rendering reasonably fast, round-offs have to be made, and the result is that scalable fonts can be difficult to read at small sizes. \layout Standard Bitmap fonts on the other hand, are defined by bitmap graphics from the start, so they will look good at all the sizes they are meant for. However, they don’t scale well, because in order to scale a glyph, each pixel is enlarged into several pixels. It is the same effect that happens if you try to enlarge a picture in xv or any other picture manipulation program. In order to relieve this effect, bitmap fonts are typically provided in several fixed sizes typically from around 8 pixels high up to 34 pixels or so high in steps according to what is believed to be useful. The advantage of bitmap fonts is that no complicated computations are necessary to display each glyph, so bitmap fonts are thus faster displayed than scalable fonts. The disadvantage is that sizes that don’t exists as fixed versions have to be scaled by doubling pixels, and thus look bad. \layout Standard The net result of all this, is that bitmap fonts are generally best for the small sizes, where they are available, while scalable fonts are generally best for large sizes. The logical conclusion would thus be to use bitmap fonts for the small sizes, and scalable fonts for the large sizes. Unfortunately, this is not a good idea, since bitmap fonts and scalable fonts are not designed to be used together, so the overall look of such a scheme would be bad. The best you can do is thus to try both schemes and decide for yourself what suits you. \layout Standard By default, LyX uses non-scalable bitmap fonts. For serif fonts, \emph on times \emph default is used, for sans serif fonts, \emph on helvetica \emph default is used, while \emph on courier \emph default is used as the monospaced/typewriter font. \layout Standard In the following, we will describe what to do if the text does not look good in LyX. We’ll start with the most important parameters: DPI and font zoom. \layout Subsection DPI setting and Font Zoom \layout Standard LyX automatically tries to scale the fonts to look as close as the paper output size as possible, except for the so-called font zoom factor. \layout Standard In order for this to work on all systems, it relies on the screen DPI (dots per inch) setting to be correct. The DPI setting for your system is autodetected by LyX using the information the X server can provide. You can check what LyX autodetects the DPI setting to, by running LyX as \family typewriter lyx -dbg 1 \family default \layout Standard On many systems, X is not set up correctly, so you should check that it is correct by hand. Run \begin_inset Quotes eld \end_inset \family typewriter xdpyinfo | less \family default \begin_inset Quotes erd \end_inset and write down what the DPI is for the resolution, you use (this will be close to the value LyX detects). It is the number mentioned as \begin_inset Quotes eld \end_inset resolution \begin_inset Quotes erd \end_inset Also write down the number of pixels you have in the width (the first number under \begin_inset Quotes eld \end_inset dimensions \begin_inset Quotes erd \end_inset \layout Standard Then get the good old ruler out of the closet, and measure the width of the visible screen-image on your monitor. Convert this measurement to inches if you used a centimeter ruler by multiplyin g with 2.54. Now you can determine the correct DPI setting for your screen by dividing the number of pixels in the width by the width of the screen-image on the monitor. If this number is more than, say, 5 DPI from the detected value, you should either fix the X setup, or at least tell LyX that the DPI is different than the detected value. \layout Standard If you can’t fix the X setup (which of course is best since other programs than LyX will benefit from this as well), you can tell LyX the correct DPI setting with the \family typewriter \backslash screen_dpi \family default command by providing an integer argument, like this: \layout Standard \family typewriter \backslash screen_dpi 90 \layout Standard When you’ve got the correct DPI setting, restart LyX and see if the text looks good. (Notice that the DPI value mentioned when you run LyX as \family typewriter lyx -dbg 1 \family default is the autodetected value, so don’t be worried when the figure does not change even though you use the \family typewriter \backslash screen_dpi \family default command. LyX will use it even if it is silent about it.) \layout Standard If the text is too small or too big for your taste, you should fiddle with the font zoom setting. This setting is used to scale the point size of the text. If your DPI setting is correct, and the font zoom setting is set to 100, this means that LyX will try to display the text exactly the same size as it will appear on the paper-output. If you set the zoom factor to 200, the text will try to be 2 times as big as on paper. Of course, this will only happen if LyX can find a font that has the appropriat e size, which you can’t count on. But since LyX is a WYSIWYM system anyways, this limitation isn’t much of an issue. \layout Standard The default font zoom setting is 150 since a monitor is typically wider than a piece of paper, but you should try to fiddle with it through the \family sans \protected_separator \bar under \bar default \family default setting in the \family sans Options\SpecialChar \menuseparator Screen \protected_separator Options \family default pop-up to find a size that you like. When you’ve found a setting that seems to work nicely for you (tip: use the \family sans \bar under \bar default \family default button to keep the pop-up open while you experiment), you can make this setting the default by using the \family typewriter \backslash screen_zoom \family default command in your \family typewriter lyxrc \family default file. \layout Standard While it is often possible to find a suitable size for the text on the screen, this doesn’t necessarily mean that the fonts are the best ones available on your system. In order to help you get the most out of your system, you can use the font definition commands to fine-tune the look of the text in greater detail than merely size. \layout Subsection Font definition commands \layout Standard As mentioned, LyX uses non-scalable bitmap fonts by default. For serif fonts, \emph on times \emph default is used, for sans serif fonts, \emph on helvetica \emph default is used, while \emph on courier \emph default is used as the monospaced/typewriter font. \layout Standard You can change this with the following \family typewriter lyxrc \family default commands: \layout Description \family typewriter \series medium \backslash screen_font_roman \family default \series default defines the font to use for serif text, like this. \layout Description \family typewriter \series medium \backslash screen_font_sans \family default \series default defines the font to use for sans serif text, \family sans like this \family default \layout Description \family typewriter \series medium \backslash screen_font_typewriter \family default \series default defines the font to use for typewriter/monospaced text, \family typewriter like this \family default \layout Standard The number of fonts that are available on different systems vary, but the program \family typewriter xfontsel \family default should be available everywhere. Use that program to find candidate fonts. When you’ve found a font that you like, try to insert the first two elements of the name (called \begin_inset Quotes eld \end_inset fndry \begin_inset Quotes erd \end_inset and \begin_inset Quotes eld \end_inset \begin_inset Quotes erd \end_inset \family typewriter xfontsel \family default ) in the appropriate field in the \family sans Options\SpecialChar \menuseparator Screen \protected_separator Options \family default pop-up and press \family sans \bar under \bar default \family default LyX will then reformat your document using the new font, and if you like the font, you should put it in your \family typewriter lyxrc \family default file. One place to start for a new font is to see if the scalable font \begin_inset Quotes eld \end_inset utopia \begin_inset Quotes erd \end_inset is available. Tip: You can see whether a font is a bitmap font or a scalable font by checking the \begin_inset Quotes eld \end_inset \begin_inset Quotes erd \end_inset \begin_inset Quotes eld \end_inset \begin_inset Quotes erd \end_inset fields in \family typewriter xfontsel \family default If the value 0 is available, the font is scalable. If the value 0 isn’t available, the font is a bitmap font. \layout Standard Before you go about scrapping a bitmap font because the larger sizes look \begin_inset Quotes eld \end_inset blocky \begin_inset Quotes erd \end_inset , you should try to use the following command to make it better: \layout Description \family typewriter \series medium \backslash screen_font_scalable \family default \series default is a boolean that defines whether LyX should scale bitmap fonts or not. \layout Standard This is only useful if you use bitmap fonts, because only these don’t scale well. If you define this flag, LyX will only use the fixed font sizes that are available, and this guarantees that all bitmap fonts look well. (You can see which individual font sizes are available with the \family typewriter xlsfonts \family default command. Try \family typewriter man xlsfonts \family default .) However, the prize is that the difference between the size of the fonts on screen and the size of fonts on paper will be larger because LyX will have to be satisfied with the closest available size, and not try to scale a size to fit. Also, you can risk that some logically different sizes, such as \family sans Large \family default and \family sans Larger \family default , will be mapped to the same screen font, making it hard for you to see the difference on screen. We’ve decided to let this flag be \family typewriter false \family default by default because of these artifacts, but since LyX is a WYSIWYM system, many people like to use the flag anyways, well-knowing that the font size on the screen can’t be trusted. But remember that this flag only makes a difference when you use bitmap fonts. Scalable fonts won’t be affected for reasons you should understand by now. \layout Standard One final note regarding this flag: you should know that there is nothing wrong with using bitmap and scalable fonts at the same time for different purposes. For instance, it’s common to use the scalable \begin_inset Quotes eld \end_inset Utopia \begin_inset Quotes erd \end_inset for the serif text together with a bitmap version of \begin_inset Quotes eld \end_inset Helvetica \begin_inset Quotes erd \end_inset And you can safely set the \family typewriter \series medium \backslash screen_font_scalable \family default \series default setting to \family typewriter \family default without worries: It will only apply to the Helvetica font. \layout Standard Sometimes the artifacts introduced by use the flag can be relieved by using the fine-detail \family typewriter lyxrc \family default command \family typewriter \backslash screen_font_sizes \family default which defines which point sizes the different logical font sizes correspond Run LyX as \family typewriter lyx -dbg 513 \family default to see exactly what concrete fonts the logical sizes map to, and try adjusting the corresponding entry in \family typewriter \backslash screen_font_sizes \family default in your \family typewriter lyxrc \family default file until you’ve managed to hit the nail and get the fonts you want. This can be hard to do, because LyX uses the DPI setting and the font zoom settings to calculate which exact screen font size to ask the X server for, thus obfuscating the mapping. If you can’t make it by trial-and-error, you can make the process more transparent if you set both the DPI setting and font zoom settings to 100—eve n when this is known to be wrong. This will of course make your scalable fonts look weird, so use with care. \layout Subsection Font encoding \layout Standard By default, LyX will use fonts meant to write Western European text, including all kinds of English. This is defined through the so-called \emph on \emph default \emph on encoding \emph default If you want to use LyX to write for instance Eastern European text, Cyrillic or any other language not covered by the ISO-8859-1 font encoding, you can define a different one with the \family typewriter \backslash screen_font_encoding \family default setting. This requires you to have special fonts installed. You can use \family typewriter xfontsel \family default to see whether this is the case: check the \begin_inset Quotes eld \end_inset rgstry \begin_inset Quotes erd \end_inset and \begin_inset Quotes eld \end_inset encdng \begin_inset Quotes erd \end_inset fields for ISO-8859-X values different from ISO-8859-1, and search for one that contains the national characters of your language. If you find any, define this value in your \family typewriter lyxrc \family default file. If not, go searching the Web for appropriate fonts. \layout Standard When you’ve set LyX up to use a different font encoding, you should also consider to change the font used by pop-up windows in LyX. For instance, the \family sans Table \protected_separator \protected_separator Contents \family default pop-up will not be understandable unless you tell LyX to use a different font for this. By default the menu font is set to \family typewriter -*-helvetica-medium-r \family default , but often Helvetica is not available in the font encoding you need. Therefor you can change this font with the \family typewriter \backslash screen_font_menu \family default command. \layout Standard As you can see, there are quite a few options that can be used to fine tune the look of your fonts. This should not scare you from fiddling with the settings, because after all, you will hopefully be using LyX for many hours in the future. And contrary to real WYSIWYG word processors where you are tied to use fonts that have to look good both on paper and on screen, LyX gives you the possibility to use fonts that are designed to look on the screen. If you are lucky enough to have that. \layout Standard In LyX version 1.1, we will try to support the \family typewriter T1Lib \family default font renderer, which provides \emph on anti-aliased \emph default text. This means that each glyph is built from several color shades rather than just two colors, in effect giving what appears to be higher resolution. This will not only make the text more readable on screen, but will also allow LyX to get really close to the font sizes as they appear on paper, since it will be possible for LyX to ask for, say, a point 14.4 font instance, contrary to now, where this has to be rounded to point 14. \layout Section \layout Standard Some sites \begin_float footnote \layout Standard \emph on like my office machine –Dave Johnson \end_float still have the default LaTeX version as 2.09. Though I can’t imagine why this should be the default any longer, it will be necessary to deal with LyX in such an environment. Don’t even \emph on think \emph default about \begin_inset Quotes eld \end_inset fixing \begin_inset Quotes erd \end_inset LyX to run under LaTeX 2.09. Upgrading your LaTeX will be easier, and is the right way to go, anyway. Most large systems should, even if they default to 2.09, have a version of LaTeX2e available, but perhaps using a different executable name. You can change the name of the appropriate LaTeX command, say to the name \begin_inset Quotes eld \end_inset \family typewriter latex2e \family default \begin_inset Quotes erd \end_inset \begin_float footnote \layout Standard \emph on as it is at my office –Dave Johnson \end_float by placing the line \layout LyX-Code \backslash latex_command latex2e \layout Standard in your \family typewriter lyxrc \family default file. At installation time, LyX will try to autodetect whether this setting is needed, so normally, you don’t need to worry about it. \layout Section The autodetected settings \layout Standard \begin_inset LatexCommand \label{sec:autodetected \end_inset There are several items that are detected for you when you run \latex latex \family sans \bar under \latex default \bar default ptions \bar under \SpecialChar \menuseparator \bar default econfigure \family default In this section, we list those which pertain to \family typewriter lyxrc \family default In what follows, all the \family typewriter *_command \family default entries are set to none if no suitable command is found. In this case, the corresponding functions are not available. \layout Description \family typewriter \series medium \backslash latex_command \family default \series default is set to a valid LaTeX2e processor (programs tested are \family typewriter latex \family default and \family typewriter latex2e \family default \layout Description \family typewriter \series medium \backslash ps_command \family default \series default is set to \family typewriter \family default if you have Ghostscript installed; \layout Description \family typewriter \series medium \backslash view_ps_command \family default \series default is set to \family typewriter \family default \family typewriter ghostview \family default if they are found ( \family typewriter \backslash view_pspic_command \family default is set to use the same program). \layout Description \family typewriter \series medium \backslash ascii_roff_command \family default \series default uses either \family typewriter groff \family default \family typewriter nroff \family default \family typewriter \family default , depending on what is available. \layout Description \family typewriter \series medium \backslash chktex_command \family default \series default is set to \family typewriter chktex \family default plus a bunch of options; \layout Description \family typewriter \series medium \backslash fax_command \family default \series default is set to \family typewriter \protected_separator \family default \family typewriter sendfax \family default , depending on what fax package is found. The needed command line options are also added; \layout Description \family typewriter \series medium \backslash print_spool_command \family default \series default is set to \family typewriter \family default on systems (so-called System V) who have this command, and \family typewriter \family default otherwise (BSD systems); \layout Description \family typewriter \series medium \backslash print_spool_printerprefix \family default \series default is set to \family typewriter \family default \family typewriter \family default , depending on whether \family typewriter \family default \family typewriter \family default was found; \layout Description \family typewriter \series medium \backslash font_encoding \family default \series default is set to \family typewriter \family default if the \family typewriter \family default fonts are found and LaTeX has support for these fonts built-in. You can set it manually if you only have the so-called \family typewriter \family default fonts. \layout Section The rest \layout Standard There are a bunch of other \family typewriter lyxrc \family default commands that can be used to customize LyX behavior. We still need to document that here, but for now, the \family typewriter lyxrc \family default file is richly commented so walk through that to get an idea of what you can customize. You can also try your luck in the \emph on Reference guide, \emph default but no guarantees. \layout Chapter The LyX Server \layout Section Introduction \layout Standard The LyX server is a method implemented into LyX that will enable other programs to talk to LyX, invoke LyX commands and retrieve information about the LyX internal state. This is only intended for advanced users, but those will find it useful. \layout Section Starting the LyX Server \layout Standard The LyX server works through the use of a pair of named pipes. These are usually located in your home directory and have the names \begin_inset Quotes eld \end_inset \family typewriter .lyxpipe.in \family default \begin_inset Quotes erd \end_inset and \begin_inset Quotes eld \end_inset \family typewriter .lyxpipe.out \family default \begin_inset Quotes erd \end_inset External programs write into \family typewriter .lyxpipe.in \family default and read back data from \family typewriter .lyxpipe.out \family default The stem of the pipe names can be defined in the \family typewriter lyxrc \family default file by adding a line like: \layout LyX-Code \backslash serverpipe "/home/myhome/.lyxpipe" \layout Standard LyX will add the ’ \family typewriter \family default ’ and ’ \family typewriter \family default ’ to create the pipes. The above line also has the effect of activating the LyX server. If one of the pipes already exists, LyX will assume that another LyX process is already running and will not start the server. To have several LyX processes with servers at the same time, you have to change the \family typewriter lyxrc \family default between the start of the programs. \layout Standard If you are developing a client program, you might find it useful to enable debugging information from the LyX server. Do this by starting LyX as \family typewriter lyx -dbg 8192. \layout Standard \emph on Note: if LyX crashes, it may not manage to remove the pipes; in this case you should remove them manually. If LyX starts and the pipes exist already, it will not start any server. \layout Standard Other than this, there are a few points to consider: \layout Itemize Both server and clients must run on UNIX or OS/2 machines. Communications between LyX on UNIX and clients on OS/2 or vice versa is not possible right now. \layout Itemize On OS/2, only one client can connect to LyXServer at a time. \layout Itemize On OS/2, clients must open inpipe with \family typewriter O_WRONLY \family default mode. \layout Standard You can find a complete example client written in C in the source distribution \family typewriter development/server_monitor.c \family default \layout Section Normal communication \layout Standard To issue a LyX call, the client writes a line of ASCII text into the input pipe. This line has the following format: \layout Quote LYXCMD: \emph on clientname \emph default \emph on function \emph default \emph on argument \layout Standard Here \emph on clientname \emph default is a name that the client can choose arbitrarily. Its only use is that LyX will echo it if it sends an answer - so a client can dispatch results from different requesters. \layout Standard \emph on function \emph default is the function you want LyX to perform. It is the same as the commands you’d use in the minibuffer. \layout Standard \emph on argument \emph default is an optional argument which is meaningful only to some functions (for instance \begin_inset Quotes eld \end_inset self-insert \begin_inset Quotes erd \end_inset which will insert the argument as text at the cursor position.) \layout Standard The answer from LyX will arrive in the output pipe and be of the form \layout Quote INFO: \emph on clientname \emph default \emph on function \emph default \emph on \layout Standard where \emph on clientname \emph default and \emph on function \emph default are just echoed from the command request, while \emph on \emph default is more or less useful information filled according to how the command execution worked out. Some commands will return information about the internal state of LyX, such as \begin_inset Quotes eld \end_inset font-state \begin_inset Quotes erd \end_inset , while other will return an empty data-response. This means that the command execution went fine. \layout Standard In case of errors, the response from LyX will have this form \layout Quote ERROR: \emph on clientname \emph default \emph on function \emph default \emph on error message \layout Standard where the \emph on error message \emph default should contain an explanation of why the command failed. \layout Standard Examples: \layout LyX-Code echo "LYXCMD:test:beginning-of-buffer:" >~/.lyxpipe.in \layout LyX-Code echo "LYXCMD:test:get-xy:" >~/.lyxpipe.in \newline read a <~/.lyxpipe.out \newline echo $a \layout Section Notification \layout Standard LyX can notify clients of events going on asynchronously. Currently it will only do this if the user binds a key sequence with the function \begin_inset Quotes eld \end_inset notify \begin_inset Quotes erd \end_inset The format of the string LyX sends is as follows: \layout Quote \family typewriter NOTIFY: \family default \emph on key-sequence \layout Standard where \emph on key-sequence \emph default is the printed representation of the key sequence that was actually typed by the user. \layout Standard This mechanism can be used to extend LyX’s command set and implement macros: bind some key sequence to \begin_inset Quotes eld \end_inset notify \begin_inset Quotes erd \end_inset , start a client that listens on the out pipe, dispatches the command according to the sequence and starts a function that may use LyX calls and LyX requests to issue a command or a series of commands to LyX. \layout Section The simple LyX Server Protocol \layout Standard LyX implements a simple protocol that can be used for session management. All messages are of the form \layout Quote LYXSRV: \emph on clientname \emph default \emph on protocol message \layout Standard where \emph on protocol message \emph default can be \begin_inset Quotes eld \end_inset hello \begin_inset Quotes erd \end_inset \begin_inset Quotes eld \end_inset \begin_inset Quotes erd \end_inset \begin_inset Quotes eld \end_inset hello \begin_inset Quotes erd \end_inset is received from a client, LyX will report back to inform the client that it’s listening to it’s messages, while \begin_inset Quotes eld \end_inset \begin_inset Quotes erd \end_inset sent from LyX will inform clients that LyX is closing. \layout Chapter Internationalizing LyX \begin_inset LatexCommand \label{chap:i18n \end_inset \layout Standard LyX supports using a translated interface. Last time we checked, LyX provided text in 14 languages together with the default English text. The language of choice is called your \emph on locale \emph default (For further reading on locale settings, see also the documentation for locale that comes with your operating system. For Linux, the manual page for locale(5) could be a good place to start). \layout Standard Notice that these translations do work not without a few flaws. In particular, all pop-ups have been designed with the English text in mind, which means that some of the translated text will be too large to fit within the space allocated. This is only a display problem and will not cause any harm. Also, you will find that some of the translations do not define short-cut keys for everything. Sometimes, there are simply not enough free letters to do it. Other times, the translator just hasn’t got around to doing it yet. \layout Standard We’ll try to fix these shortcomings in LyX version 1.1. \layout Section Selecting an alternative language for the user interface \layout Standard This feature is disabled by default, meaning that the text will be English. To enable an alternative language, you have to set an appropriate environment variable. Use \family typewriter "setenv LANG xx" \family default \family roman for csh class shells \family default \family typewriter "export LANG=xx" \family default \family roman for sh class shells \family default Substitute the \family typewriter \family default with the two letter code for the language you want. For instance, \family typewriter \family default is Norwegian. \layout Standard Normally, you’ll want to put the appropriate line in \family typewriter ~/.Xsession \family default \family typewriter ~/.xinitrc \family default such that the translation is on per default. Remember that if LyX is configured and compiled with \begin_inset Quotes eld \end_inset \family typewriter –disable-nls \family default \begin_inset Quotes erd \end_inset , this will not work. \layout Section Adapting shortcuts for alternative languages \layout Standard \latex latex \backslash begin{sloppypar \layout Standard One main cause for inconsistencies in the translated versions of LyX is the fact that all the keyboard shortcuts for the menu functions are based on the English version of the text. This is, regardless of the entry in the menu, \family sans M-f t \family default will open the new-file-from-template popup. It is, however, easy to change this, as all the shortcuts for menu operations are defined in one file, \family typewriter LyXDir/bind/menus.bind \family default Every user can have his own copy of that file in his private directory, \family typewriter ~/.lyx/bind \family default , which will then take precedence over the systemwide file. In this private copy, one can easily change the definitions, e.g. for the German version change \family sans M-f t \family default \family sans M-d v \family default (for \family sans Datei\SpecialChar \menuseparator Vorlage \family default For some languages, examples for adapted \family typewriter menus.bind \family default files can be found in \family typewriter LyXDir/bind/ \series bold \series default _menus.bind \family default \series bold \series default denotes the language code). These will be used automatically by LyX if they exist (and if your locale is set with \family typewriter $LANG= \series bold \family default \series default \layout Standard \latex latex \backslash end{sloppypar \layout Standard You will have to take care that the new definitions for shortcuts do not collide with other, previous definitions. For example the abovementioned binding \family sans M-d v \family default would generate an error for those who use \family typewriter (x)emacs.bind \family default , where \family sans \family default is bound to \family typewriter word-delete-forward \family default \layout Standard As of LyX version 1.0, the translated names for the top level menus (translated in the po-files) are used by the keybinding mechanism, therefore the \emph on translated \emph default menu name must be used in the translated \family typewriter menus.bind \family default \layout Section Translating LyX \layout Subsection Translating the graphical user interface (text messages). \layout Standard LyX uses the GNU gettext-library to handle the internationalization of the interface. To have LyX speak your favorite language in all menus and dialog boxes, you need a po-file for that language. When this is available, you’ll have to generate a mo-file from it and install the mo-file. The process of doing all of this is explained in the documentation for GNU gettext, but in short, this is what you do ( \series bold \series default denotes the language code): \layout Standard \latex latex \backslash begin{sloppypar \layout Itemize Copy \family typewriter LYX-SOURCE-DIR/po/lyx.pot \family default \series bold \family typewriter \series default \family default (if \family typewriter lyx.pot \family default doesn’t exist, it can be remade with \family typewriter make lyx.pot \family default in that directory, or you can use an existing po-file for some other language as a template). \layout Itemize Edit \family typewriter xx.po \begin_float footnote \layout Standard We recommend that you use Emacs to do this, since the gettext distribution includes a nice mode that supports you in doing this. \end_float For some menu- and widget-labels, there are also shortcut keys that should be translated. Those keys are marked after a ‘ \family typewriter \family default ’, and should be translated according to the words and phrases of the \series bold \series default -language. There is a tool named \family typewriter scgen.pl \family default written in Prolog in \family typewriter LYX-SOURCE-DIR/development/tools/ \family default that may be useful to help determine short-cut keys. Note that XForms (version 0.86 at least) can’t handle anything but 7-bit characters as shortcut keys. You should also fill also out the information at the beginning of the new po-file with your email-address, etc., so people know where to reach you with suggestions and entertaining flames. \layout Itemize Generate \series bold \family typewriter \series default \family default This can be done with \newline \family typewriter msgfmt -o \family default \series bold \family typewriter \series default .mo < \family default \series bold \family typewriter \series default \layout Itemize Copy the mo-file to your locale-tree, at the correct directory for application messages for the language \series bold \series default , and under the name \family typewriter lyx.mo \family default \newline (e.g. \family typewriter /usr/local/share/locale/ \family default \series bold \family typewriter \series default /LC_MESSAGES/lyx.mo \family default \layout Standard \latex latex \backslash end{sloppypar \layout Standard Adding a new po-file to the \emph on distribution \emph default of LyX involves altering the configure scripts and more, but the way gettext works, you don’t actually need the source-code of LyX to translate it—having \family typewriter lyx.pot \family default (or an existing po-file) and the gettext tools suffices. \layout Standard If you’ve written a translation file for a language that LyX does not currently support, feel free to submit it for inclusion by sending a patch. In this case, we recommend that you read the README provided in the \family typewriter LYX-SOURCE-DIR/po/ \family default directory for more instructions. \layout Subsection Translating the documentation. \layout Standard The online documentation (in the \family sans \family default -menu) can (and should!) be translated. If there are translated versions of the documentation available \begin_float footnote \layout Standard As of April, 1999, almost all of the docs have been translated into German. The Tutorial has been translated into French, Polish, Portugese, and Swedish, with other translations in progress. The library of translated documents is growing rapidly. \end_float , and the locale is set accordingly, these will be used automagically by LyX. LyX looks for translated versions as \family typewriter LyXDir/doc/ \series bold \series default _DocName.lyx \family default , where \family typewriter \series bold \family default \series default denotes the language as set by the environmental variable \family typewriter $LANG \family default If there are none, the default English versions will be displayed. Note that the translated versions must have the same filenames ( \family typewriter DocName \family default above) as the original. If you feel up to translating the documentation (an excellent way to proof-read the original documentation btw!), there are a few things you should do right away: \layout Itemize Read \family typewriter DocStyle.lyx \family default , the guide to writing LyX documentation. Pay special attention to the translator’s section. \layout Itemize Check out the documentation translation web page at \begin_inset LatexCommand \url[The LyX Developer’s Web Site]{http://www.devel.lyx.org \end_inset That way, you can find out which (if any) documents have already been translate d into your language. You can also find out who (if anyone) is organizing the effort to translate the documentation into your language. If noone is organizing the effort, please let us know that you’re interested. \layout Standard Once you get to actually translating, here’s a few hints for you that may save you trouble: \layout Itemize Join the documentation team! There is information on how to do that in \family typewriter Intro.lyx \family default \family sans Help\SpecialChar \menuseparator Introduction \family default ), which by the way is the first document you should translate. \layout Itemize Learn the typographic conventions for the language you are translating to. Typography is an ancient art and over the centuries, a great variety of conventions have developed throughout different parts of the world. Also study the professional terminology amongst typographers in your country. Inventing your own terminology will only confuse the users. \emph on (Warning! Typography is addictive!) \layout Itemize Make a copy of the document. This will be your working copy. You can use this as your personal translated help-file by placing it in your \family typewriter ~/.lyx/doc/ \family default -directory. \layout Itemize Sometimes the original document (from the LyX-team) will be updated. Use the CVSweb tool available at the developer’s web site to see what has been changed \begin_float footnote \layout Standard Alternatively, you can keep a copy of the latest version of the English document which you’ve translated. \end_float That way you can easily see which parts of the translated document need to be updated. \layout Itemize If you ever find an error in the original document, fix it and notify the rest of the documentation team of the changes! (You didn’t forget to join the documentation team did you?) \layout Section International Keyboard Support \layout Standard \emph on Editor’s Note: The following section is by Ivan Schreter. It needs to be fixed to conform to the new Documentation Style sheet and to make use of the new v1.0 features. The whole thing also needs to be merged with the section following it.-jw \layout Subsection Defining Own Keymaps: Keymap File Format \layout Standard Let’s look at a keyboard definition file a little closer. It is a plain ASCII file defining \layout Itemize key-to-key or key-to-string translations \layout Itemize dead keys \layout Itemize dead keys exceptions \layout Standard To define key-to-key or key-to-string translation, use this command: \layout Quotation \family typewriter \backslash \family default \emph on \emph default \emph on outstring \layout Standard where \emph on \emph default is the key to be translated and \emph on outstring \emph default is the string to be inserted into the document. To define dead keys, use: \layout Quotation \family typewriter \backslash \family default \family typewriter \family default \family typewriter deadkey \layout Standard where \emph on \emph default is keyboard key and \emph on deadkey \emph default is dead key name. The following dead keys are supported (shortcut name is in parentheses): \layout Quotation \emph on \hfill Example \layout Quotation acute (acu) \hfill \layout Quotation grave (gra) \hfill \layout Quotation macron (mac) \hfill \i \={o \layout Quotation tilde (til) \hfill \layout Quotation underbar (underb) \hfill \latex latex \backslash \layout Quotation cedilla (ced) \hfill \layout Quotation underdot (underd) \hfill \latex latex \backslash \layout Quotation circumflex (circu) \hfill \layout Quotation circle (circl) \hfill \i \r{u \i \r{U \layout Quotation tie (tie) \hfill \latex latex \backslash \layout Quotation breve (bre) \hfill \i \u{a \latex latex \backslash \layout Quotation caron (car) \hfill \i \v{c \i \v{s \i \v{z \layout Quotation hungarian umlaut (hug) \hfill \i \H{o \i \H{u \layout Quotation umlaut (uml) \hfill \layout Quotation dot (dot) \hfill \i \.{z \latex latex \backslash \layout Standard Since in many international keyboards there are exceptions to what some dead keys should do, you can define them using \layout Quotation \family typewriter \backslash kxmod \family default \emph on deadkey key outstring \layout Standard For example, on Slovak keyboard, if you enter caron-o, it generates circumflex-o , so you put in \layout Quotation \family typewriter \backslash kxmod \family default \family typewriter caron o " \backslash \layout Standard to make it work correctly. Also, you have to define as exceptions dead keys over i and j, to remove the dot from them before inserting an accent mark. I will change this when the time comes, but so far I didn’t have time. \layout Standard Oh, and about keys: Backslash is escaped, so to enter it, you’ll need double backslash. Also, quotes and \family typewriter \family default have different meaning. \family typewriter \family default marks comment, quotes start and end LaTeX-style commands. To enter quote, you’ll need to use \family typewriter \backslash \family default , to enter \family typewriter \family default , use \family typewriter \backslash \family default \layout Standard If you make a keyboard description file that works fort your language, please mail it to me, so I can include it in the next keymaps distribution. \layout Standard More keywords will be supported in keymap configuration file in future, like \layout Itemize \family typewriter \backslash kinclude \family default \emph on filename \hfill include \emph default another file \layout Itemize \family typewriter \backslash kprog \family default \emph on program \hfill define \emph default an external keymap translation program \layout Standard Also, it should look into \family typewriter lyxrc \family default file for defaults, too (for example, a \family typewriter \backslash kinclude \family default option to include default keyboard). \layout Section International Keymap Stuff \begin_inset LatexCommand \label{sec:keymap \end_inset \layout Standard The next two sections describe the \family typewriter \shape up .kmap \family default \shape default and \family typewriter \shape up .cdef \family default \shape default file syntax in detail. These sections should help you design your own key map if the ones provided do not meet your needs. \layout Subsection The .kmap File \layout Standard \family sans \shape up \family typewriter \family default \shape default file maps keystrokes to characters or strings. As the name suggests it sets a keyboard mapping. The \family typewriter .kmap \family default file keywords \family typewriter \shape up \shape default \shape up \shape default \shape up ksmod \family default \shape default , and \family typewriter \shape up kcomb \family default \shape default are described in this section. \layout List \labelwidthstring 00.00.0000 \family typewriter \shape up \family default \shape default Map a character to a string \layout LyX-Code \backslash \protected_separator \family roman \emph on \emph default \protected_separator \emph on string \layout Standard This will ma \family roman \emph on char \emph default \emph on string \emph default Note that in \emph on string \emph default \shape up the double-quote (") \shape default and \shape up the backslash ( \backslash \shape default must be escaped with a preceding backslash ( \shape up \backslash \shape default \family default \layout Standard An example of a \family sans \shape up \family default \shape default statement to cause the symbol \family sans \shape up \family default \shape default to be output for the keystroke \family sans \shape up \family default \shape default \layout LyX-Code \backslash kmap & / \layout List \labelwidthstring 00.00.0000 \family typewriter \shape up \family default \shape default Specify an accent character \layout LyX-Code \backslash \family roman \emph on char accent allowed \layout Standard This will make the cha \family roman racter \emph on \shape up be an accent \emph default on the \emph on allowed \emph default \family default racter(s). This is the dead key \begin_float footnote \layout Standard The term \family roman \emph on dead key \family default \emph default refers to a key that does not produce a character by itself, but when followed with another key, produces the desired accent character. For example, a German characte \family roman r with an umlaut like \emph on \emph default can be produced in this manner. \end_float mechanism. \layout Standard If you \family roman \emph on char \emph default and then another key not in \emph on allowed \emph default , you will get a \emph on char \emph default followed by the other, unallowed key, as output. \family default Note that a \family sans \shape up Backspace \family default \shape default cancels a dead key, so if \family roman you hit \emph on \family sans \shape up Backspace \family default \emph default , the cursor will not go one position backwards but will instead cancel the effect t \family roman \emph on \emph default might have had on the next keystroke. \layout Standard The following example specifies that the character ’ is to be an acute accent, allowed on the characters a, e, i, o, u, A, E, I, O, and U: \layout LyX-Code \backslash kmod ’ acute aeiouAEIOU \layout List \labelwidthstring 00.00.0000 ksmod Specify an exception to the accent character \layout LyX-Code \backslash kxmod \family sans \emph on \protected_separator \family roman accent char result \layout Standard This defines an exce \family roman ption for \emph on accent \emph default \emph on \emph default \shape up \emph on accent \emph default must \family default have been assigned a keystroke with a previous \family typewriter \backslash \shape default \family default declar \family roman ation and \emph on char \emph default must not belong in the \emph on allowed \emph default set of \emph on accent \emph default When \shape up you enter the \emph on accent char \emph default sequence, \emph on result \emph default is produced. If such a declaration does not exist in \family default \family sans \family typewriter .kmap \family default \shape default file and yo \family roman u enter \emph on accent char \emph default , you get \emph on accent_key char \emph default where \emph on accent_key \emph default is the first arg \family default ument of the \family typewriter \shape up \backslash \family default \shape default declaration. \layout Standard The following command produces causes i to be produced when you enter acute-i (’i): \layout LyX-Code \backslash kxmod acute i " \backslash \backslash \backslash \backslash \layout List \labelwidthstring 00.00.0000 \family sans \shape up kcomb \family default \shape default Combine two accent characters \layout LyX-Code \backslash kcomb \family roman \emph on accent1 accent2 allowed \layout Standard This one is getting pretty esoteric. It allows you to combine the effect \family roman \emph on accent1 \emph default and \emph on accent2 \emph default (in that order!) on \emph on allowed \emph default chars. The keystrokes for \emph on accent1 \emph default and \emph on accent2 \emph default must have be \family default en set with a \family typewriter \shape up \backslash \family default \shape default command at \family roman \emph on previous \emph default point in the \family default file. \layout Standard Consider this example from the \family typewriter \shape up greek.kmap \family default \shape default file: \layout LyX-Code \backslash kmod ; acute aeioyvhAEIOYVH \backslash kmod : umlaut iyIY \backslash kcomb acute umlaut iyIY \layout Standard This allows you to press \family sans \shape up \family default \shape default and get the effect of \family typewriter \shape up \backslash \backslash "{i \family default \shape default \family roman \shape up A backspace \family default \shape default in this case cancels the last dead key, so if you press \family sans \shape up ;: Backspace i \family default \shape default you get \family typewriter \shape up \backslash \family default \shape default \layout Subsection The .cdef File \layout Standard After the \family typewriter \shape up .kmap \family sans \family default \shape default mapping is performed, a \family typewriter \shape up \shape default \family default file maps the strings that the symbols generate to characters in the current font. The LyX distribution currently includes at least the \family typewriter \shape up iso8859-1.cdef \family default \shape default and \family typewriter \shape up iso8859-2.cdef \family default \shape default files. \layout Standard In general the \family typewriter \shape up .cdef \family sans \family default \shape default file is a sequence of declarations of the form \layout LyX-Code \family roman \emph on char_index_in_set \emph default \emph on \protected_separator string \layout Standard For example, in order to map \family sans \shape up \backslash \family default \shape default to the corresponding character in the iso-8859-1 set (233), the following declaration is used \layout LyX-Code 233 " \backslash \backslash ’{e" \layout Standard with \family typewriter \backslash \family default and \family typewriter \family default being escap \family roman ed in \emph on string \emph default Note that \family default the same character can apply to more than one string. In the \family typewriter \shape up so-8859-7.cdef \family sans \family default \shape default file you have \layout LyX-Code 192 " \backslash \backslash \backslash \backslash \backslash "{i" \newline 192 " \backslash \backslash \backslash \backslash \backslash ’{i" \layout Standard If LyX cannot find a mapping for the string produced by the keystroke or a deadkey sequence, it will check if it looks like an accented char and try to draw an accent over the character on screen. \layout Subsection Dead Keys \layout Standard There is a second way to add support for international characters through so-called dead-keys. A dead-key works in combination with a letter to produce an accented character. Here, we’ll explain how to create a really simple dead-key to illustrate how they work. \layout Standard Suppose you happen to need the circumflex character, \begin_inset Quotes eld \end_inset \i \^{ \begin_inset Quotes erd \end_inset You could bind the \family sans \family default -key [a.k.a. \protected_separator \family sans Shift-6 \family default ] to the LyX command \family typewriter accent-circumflex \family default in your \family typewriter lyxrc \family default file. Now, whenever you type the \family sans \family default -key followed by a letter, that letter will have a circumflex accent on For example, the sequence \begin_inset Quotes eld \end_inset \family sans \family default \begin_inset Quotes erd \end_inset produces the letter: \begin_inset Quotes eld \end_inset \begin_inset Quotes erd \end_inset If you tried to type \begin_inset Quotes eld \end_inset \family sans \family default \begin_inset Quotes erd \end_inset , however, LyX will complain with a beep, since a \begin_inset Quotes eld \end_inset \family sans \family default \begin_inset Quotes erd \end_inset never takes a circumflex accent. Hitting \family sans Space \family default after a dead-key produces the bare-accent. Please note this last point! If you bind a key to a dead-key, you’ll need to rebind the character on that key to yet another key. Binding the \family sans ,-key \family default to a cedilla is a bad idea, since you’ll only get cedillas instead of commas. \layout Standard One common way to bind dead-keys is to use \family sans Meta- \family default \family sans Ctrl- \family default , and \family sans Shift- \family default in combination with an accent, like \begin_inset Quotes eld \end_inset \family sans \family default \begin_inset Quotes erd \end_inset \begin_inset Quotes eld \end_inset \family sans \family default \begin_inset Quotes erd \end_inset \begin_inset Quotes eld \end_inset \family sans \family default \begin_inset Quotes erd \end_inset Another way involves using \family typewriter xmodmap \family default and \family typewriter xkeycaps \family default [remember them from section?] to set up the special \family typewriter Mode_Switch \family default key. The \family typewriter Mode_Switch \family default acts in some ways just like \family sans Shift \family default and permits you to bind keys to accented characters. You can also turn keys into dead-keys by binding them to something like \family typewriter usldead_cedilla \family default and then binding this symbolic key to the corresponding LyX command. \begin_float footnote \layout Standard Note from \noun on John Weiss \noun default : This is exactly what I do in my \family typewriter ~/.lyx/lyxrc \family default and my \family typewriter ~/.xmodmap \family default files. I have my \family sans Scroll \protected_separator \family default key set up as \family typewriter Mode_Shift \family default and a bunch of these \begin_inset Quotes eld \end_inset \family typewriter usldead_* \family default \begin_inset Quotes erd \end_inset symbolic keys bound such things as \family sans Scroll \protected_separator Lock-^ \family default and \family sans Scroll \protected_separator Lock-~ \family default This is how I produce my accented characters. \end_float You can make just about anything into the \family typewriter Mode_Switch \family default key: One of the \family sans Ctrl- \family default keys, a spare function key, etc. As for the LyX commands that produce accents, check the entry for \family typewriter accent-acute \family default in the \emph on Reference Manual \emph default You’ll find the complete list there. \layout Subsection Saving your Language Configuration \layout Standard \begin_inset LatexCommand \label{sec:savlang \end_inset You can edit your \family typewriter lyxrc \family default file so that your desired language environment is automatically configured when LyX starts up. This section describes \family typewriter \shape up lyxrc \family default \shape default commands to specify: \layout Itemize default, primary, and secondary keymaps \layout Itemize character set \layout Standard Look at your \family typewriter \shape up lyxrc \family default \shape default file for the various examples of how to configure it. In particular, you can set a keymap like this: \layout LyX-Code \backslash bind "american" "keymap-primary" \layout Standard a dead-key like this: \layout LyX-Code \backslash bind "M-," "accent-cedilla" \layout Standard and a font-mapping ( \family typewriter \shape up .cdef \family default \shape default file) like this: \layout LyX-Code # The norm for the screen fonts. \layout LyX-Code # The default is iso8859-1. \layout LyX-Code \backslash font_norm iso8859-2 \layout Chapter The LyX-textclass format \begin_inset LatexCommand \label{chap:textclass \end_inset \layout Standard This section describes the LyX textclass format for LyX 1.0. Later versions of LyX will possibly support an enhanced format. \layout Standard This is not a tutorial, but a short reference. When you plan to realize a new textclass, it might be very helpful to look at the example textclasses contributed with LyX. If you use a nice LaTeX textclass that might be of interest for others, too, and have a nice corresponding LyX textclass, feel free to contribute the stuff to us, so we may put it into the distribution. \layout Standard All the tags described in this chapter are case-insensitive; this means that \family typewriter Style \family default \family typewriter style \family default and \family typewriter StYlE \family default are really the same command. The possible values are printed in brackets after the feature’s name. The default value if a feature isn’t specified inside a textclass-description is typeset \family typewriter \emph on emphasized \family default \emph default If the argument has a datatype like \begin_inset Quotes eld \end_inset string \begin_inset Quotes erd \end_inset \begin_inset Quotes eld \end_inset float \begin_inset Quotes erd \end_inset , the default is shown like this: \family typewriter float= \emph on default \family default \emph default \layout Section Declaring a textclass \layout Standard Lines beginning with a \family typewriter \family default are comments. There is one exception to this rule: all textclass files should begin with lines like: \layout LyX-Code \size small #% Do not delete the line below; configure depends on this \newline \protected_separator \backslash DeclareLaTeXClass{article \layout Standard As stated the second line is used when you configure LyX. The textclass file is read by the LaTeX script \family typewriter chkconfig.ltx \family default , in a special mode where \family typewriter \family default is ignored. The first line is just a LaTeX comment, and the second one contains the declaration of the textclass. If these lines appear in a file named \family typewriter article.layout \family default , then they define a textclass of name \family typewriter article \family default (the name of the textclass file) which uses the LaTeX documentclass \family typewriter article.cls \family default (the default is to use the same name as the textclass). The string \begin_inset Quotes eld \end_inset article \begin_inset Quotes erd \end_inset that appears above is used as a description of the textclass in the \family sans \bar under \bar default ayout\SpecialChar \menuseparator \bar under \bar default ocument \family default popup. \layout Standard Let’s assume that you wrote your own textclass that uses the \family typewriter article.cls \family default documentclass, but where you changed the appearance of the section headings. If you put it in a file \family typewriter myarticle.layout \family default , the header of this file should be: \layout LyX-Code \size small #% Do not delete the line below; configure depends on this \newline \protected_separator \backslash DeclareLaTeXClass[article]{article (with my own headings) \layout Standard This declares a textclass \family typewriter myarticle \family default , associated with the LaTeX documentclass \family typewriter article.cls \family default and described as \begin_inset Quotes eld \end_inset article (with my own headings) \begin_inset Quotes erd \end_inset If your textclass depends on several packages, you can declare it as: \layout LyX-Code \size small #% Do not delete the line below; configure depends on this \newline \protected_separator \backslash DeclareLaTeXClass[article,foo.sty]{article (with my own headings) \layout Standard This indicates that your textclass uses the foo.sty package. Finally, it is also possible to declare classes for SGML code. A typical declaration will be like \layout LyX-Code \size small #% Do not delete the line below; configure depends on this \newline \backslash DeclareSGMLClass{SGML (LinuxDoc) \layout Standard Note \family typewriter \backslash DeclareSGMLClass \family default can also be given an optional parameter declaring the name of the document class (but not a list). \layout Standard When the textclass has been modified to your taste, all you have to do is to copy it either in \family typewriter LyXDir/layouts/ \family default or in \family typewriter UserDir/layouts \family default and run \family sans \bar under \bar default ptions\SpecialChar \menuseparator \bar under \bar default econfigure \family default Then your new textclass should be available along with the others. \layout Section General textclass parameters \layout Description \family typewriter \series medium Columns \family default \series default \family typewriter \emph on \emph default \family default ] Whether the class-default should have or two columns. Can be changed in the \family sans \bar under \bar default ayout\SpecialChar \menuseparator \bar under \bar default ocument \family default \emph on \emph default popup. \layout Description \family typewriter \series medium Sides \family default \series default \family typewriter \emph on \emph default \family default ] Whether the class-default should be printing on one or both sides of the paper. Can be changed in the \family sans \bar under \bar default ayout\SpecialChar \menuseparator \bar under \bar default ocument \family default \emph on \emph default popup. \layout Description \family typewriter \series medium PageStyle \series default \family default \family typewriter \emph on plain \emph default , empty, headings \family default ] The class default pagestyle. Can be changed in the \family sans \bar under \bar default ayout\SpecialChar \menuseparator \bar under \bar default ocument \family default \emph on \emph default popup. \layout Description \family typewriter \series medium MaxCounter \family default \series default \family typewriter \emph on Counter_Chapter \emph default , Counter_Section, Counter_Subsection, \newline Counter_Subsubsection, Counter_Paragraph, Counter_Subparagraph, Counter_EnumI, Counter_EnumII, Counter_EnumIII, Counter_EnumIV \family default ] The highest level of automatic enumeration. Useful values are \family typewriter Counter_Chapter \family default for a book or report and \family typewriter Counter_Section \family default for an article. If there is no enumeration needed at all, for example inside a letter class, \family typewriter MaxCounter \family default should be set to \family typewriter Counter_EnumI \family default \layout Description \family typewriter \series medium ClassOptions\SpecialChar \ldots{ \family default \series default This section describes various global options supported by the document class. See Section \protected_separator \begin_inset LatexCommand \ref{sec:classoptions \end_inset for a description. \layout Description \family typewriter \series medium ProvidesAmsmath \family default \series default \family typewriter \emph on \emph default \family default ] Whether the class already loads the \family typewriter amsmath \family default package. This is the case of the \family typewriter amsart \family default and \family typewriter amsbook \family default document classes. \layout Description \family typewriter \series medium ProvidesMakeidx \family default \series default \family typewriter \emph on \emph default \family default ] Whether the class already provides the functionality of the \family typewriter makeidx \family default package. This is the case of the \family typewriter amsart \family default and \family typewriter amsbook \family default document classes. \layout Description \family typewriter \series medium ProvidesUrl \family default \series default \family typewriter \emph on \emph default \family default ] Whether the class already provides the functionality of the \family typewriter \family default package. This is the case of the \family typewriter AASTeX \family default document class. \layout Description \family typewriter \series medium DefaultFont \family default \series default This is used to describe the default font of the document. See Section \protected_separator \begin_inset LatexCommand \ref{sec:fonts \end_inset for a description. \layout Description \family typewriter \series medium Preamble\SpecialChar \ldots{ EndPreamble \family default \series default A set of macro definitions that will be output at the beginning of the LaTeX files. Use this for global definitions. \layout Description \family typewriter \series medium Input \family default \series default As its name implies, this command allows one to input another textclass definition file to avoid duplicating commands. Most standard textclass files, for example, input \family typewriter stdclass.inc \family default , which contains most of the basic layouts. \layout Description \family typewriter \series medium NoStyle \family default \series default This command deletes an existing style. This is particularly useful when you want to suppress a layout that has be defined in an input file. \layout Section \family typewriter ClassOptions \family default section \layout Standard \begin_inset LatexCommand \label{sec:classoptions \end_inset \family typewriter ClassOption \family default section can contain the following entries: \layout Description \family typewriter \series medium FontSize \family default \series default \family typewriter string="10|11|12" \family default ] The list of available font sizes for the document’s main font, separated \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset \layout Description \family typewriter \series medium PageStyle \family default \series default \family typewriter string="empty|plain|headings|fancy" \family default ] The list of available page styles, separated by \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset \layout Description \family typewriter \series medium Other \family default \series default \family typewriter string="" \family default ] Some document class options, separated by a comma, that will be added to the optional part of the \family typewriter \backslash documentclass \family default command. \layout Section Specific Layouts \layout Standard A layout description looks like this \begin_float footnote \layout Standard Note that this will either define a new layout or modify an existing one. \end_float \layout LyX-Code Style \family roman \emph on \layout LyX-Code \protected_separator \SpecialChar \ldots{ \layout LyX-Code \layout Standard where the following commands are allowed: \layout Standard \latex latex \backslash begin{sloppypar \layout Description \family typewriter \series medium CopyStyle \family default \series default This is used to copy all the features of an existing layout into the current one. \layout Description \family typewriter \series medium Margin \family default \series default \family typewriter \emph on Static \emph default , Manual, Dynamic, First_Dynamic, Right_Address_Box \family default \newline The kind of margin that the layout has on the left side. \family typewriter Static \family default means just a static margin. \family typewriter Manual \family default means that the left margin depends on the string entered in the \family sans \bar under \bar default ayout\SpecialChar \menuseparator \bar under \bar default aragraph \family default popup. This is used to typeset nice lists without tabulators. \family typewriter Dynamic \family default means that the margin depends on the size of the label. This is used for automatic enumerated headlines. It is obvious that the headline \begin_inset Quotes eld \end_inset 5.4.3.2.1 Very long headline \begin_inset Quotes erd \end_inset must have a wider left margin (as wide as \begin_inset Quotes eld \end_inset 5.4.3.2.1 \begin_inset Quotes erd \end_inset ) than \begin_inset Quotes eld \end_inset 3.2 Very long headline \begin_inset Quotes erd \end_inset , even if other word processors are not able to do this. \family typewriter First_Dynamic \family default is similar, but only the very first row of the paragraph is dynamic, while the others are static. Used for example for descriptions. \family typewriter Right_Address_Box \family default means the margin is chosen in a way that the longest row of this paragraph fits to the right margin. Used to typeset an address on the right edge of the page. \layout Description \family typewriter \series medium LatexType \family default \series default \family typewriter \emph on Paragraph \emph default , Command, Environment, Item_Environment, \family default \family typewriter List_Environment \family default ] How the layout should be translated into LaTeX. \family typewriter Paragraph \family default means nothing special. \family typewriter Command \family default means \family typewriter \backslash \emph on LatexName \emph default {\SpecialChar \ldots{ \family default and \family typewriter Environment \family default means \family typewriter \backslash begin{ \emph on LatexName \emph default \SpecialChar \ldots{ \backslash \emph on LatexName \emph default \family default \family typewriter Item_Environment \family default is the same as \family typewriter Environment \family default , except that a \family typewriter \backslash \family default is generated for each paragraph of this environment. \family typewriter List_Environment \family default is the same as \family typewriter Item_Environment \family default , except that \family typewriter LabelWidthString \family default is passed as an argument to the environment. \family typewriter LabelWidthString \family default can be defined in the \family sans \bar under \bar default ayout\SpecialChar \menuseparator \bar under \bar default aragraph \family default popup. \layout Description \family typewriter \series medium InTitle \series default [1, 0] \family default If 1, marks the layout as needing a \family typewriter \backslash maketitle \family default afterwards. \layout Description \family typewriter \series medium LatexName \family default \series default The name of the corresponding LaTeX stuff. Either the environment or command name. \layout Description \family typewriter \series medium LatexParam \family default \series default The optional parameter for the corresponding \family typewriter \series medium LatexName \family default \series default stuff. This parameter cannot be changed from within LyX. \layout Description \family typewriter \series medium NextNoIndent \family default \series default \family typewriter \emph on \family default \emph default ] Whether the following Paragraph is allowed to indent its very first row. \family typewriter \family default means that it is not allowed to do so, \family typewriter \family default means it could do so if it wants to. \layout Description \family typewriter \series medium ParIndent \family default \series default \family typewriter string="" \family default ] The indent of the very first line of a paragraph. The argument is passed as a string. For example \family typewriter \family default means that the paragraph is indented with the width of \family typewriter \family default \family typewriter \family default normal font. This way was chosen so that the look is the same with each used screen font. The \family typewriter Parindent \family default will be fixed for a certain layout. The exception is Standard layout, since the indentation of a Standard layout paragraph can be prohibited with \family typewriter NextNoIndent \family default Also, Standard layout paragraphs inside environments use the \family typewriter Parindent \family default of the environment, not their native one. For example, Standard paragraphs inside an enumeration are not indented. \layout Description \family typewriter \series medium Parskip \family default \series default \family typewriter float=0 \family default ] LyX allows to choose either \begin_inset Quotes eld \end_inset indent \begin_inset Quotes erd \end_inset \begin_inset Quotes eld \end_inset \begin_inset Quotes erd \end_inset to typeset a document. When \begin_inset Quotes eld \end_inset indent \begin_inset Quotes erd \end_inset is chosen, this value is completely ignored. When \begin_inset Quotes eld \end_inset \begin_inset Quotes erd \end_inset is chosen, the parindent of a LaTeXtype \begin_inset Quotes eld \end_inset Paragraph \begin_inset Quotes erd \end_inset layout is ignored and all paragraphs are additionally separated by this parskip argument. The vertical space is calculated with \family typewriter value*DefaultHeight() \family default where \family typewriter DefaultHeight() \family default is the height of a row with the normal font. This way, the look stays the same with different screen fonts. \layout Description \family typewriter \series medium TopSep \family default \series default \family typewriter float=0 \family default ] The vertical space with which the very first of a chain of paragraphs with this layout is separated from the previous paragraph. If the previous paragraph has another layout, the separations are not simply added, but the maximum is taken. \layout Description \family typewriter \series medium BottomSep \family default \series default \family typewriter float=0 \family default ] The same as \family typewriter TopSep \family default for the very last paragraph. \layout Description \family typewriter \series medium Parsep \family default \series default \family typewriter float=0 \family default ] The vertical space between two paragraphs of this layout. \layout Description \family typewriter \series medium Itemsep \family default \series default \family typewriter float=0 \family default ] This is an extra space between the paragraphs of an environment layout. If you put other layouts into an environment, each is separated with the environment’s \family typewriter Parsep \family default But the whole items of the environment are additionally separated with this \family typewriter Itemsep \family default \layout Description \family typewriter \series medium LeftMargin \family default \series default \family typewriter string="" \family default ] If you put layouts into environments, the leftmargins are not simply added, but added with a factor \begin_inset Formula \( \frac{4{depth+4 \) \end_inset Note that this parameter is also used when the border is defined as \family typewriter Manual \family default \family typewriter Dynamic \family default Then it is added to the manual or dynamic border. \layout Description \family typewriter \series medium RightMargin \family default \series default \family typewriter string="" \family default ] Similar to \family typewriter \family default Margin. \layout Description \family typewriter \series medium Labeltype \family default \series default \family typewriter \emph on No_Label \emph default , Manual, Static, Top_Environment, Centered_Top_Environment, Sensitive, Counter_Chapter, Counter_Section, Counter_Subsection, Counter_Subsubsection, Counter_Paragraph, Counter_Subparagraph, Counter_EnumI, Counter_EnumII, Counter_EnumIII, Counter_EnumIV \family default \family typewriter Manual \family default means the label is the very first word (up to the first real blank). \family typewriter Static \family default means it is defined in the layout (see \family typewriter LabelString \family default \family typewriter Top_Environment \family default and \family typewriter Centered_Top_Environment \family default are special cases of \family typewriter Static \family default The label will be printed above the paragraph, but only at the top of an environment or the top of a chain of paragraphs with this layout. Usage is for example the \family sans Abstract \family default layout or the \family sans Bibliography \family default layout. This is also the case for \family typewriter Manual \family default labels with latex type \family typewriter Environment \family default , in order to make layouts for theorems work correctly. \family typewriter Sensitive \family default is a special case for the caption-labels \begin_inset Quotes eld \end_inset Figure \begin_inset Quotes erd \end_inset and \begin_inset Quotes eld \end_inset Table \begin_inset Quotes erd \end_inset \family typewriter Sensitive \family default means the (hardcoded) label string depends on the kind of float. The \family typewriter Counter_xxx \family default label types should be self explanatory. \layout Description \family typewriter \series medium Labelsep \family default \series default \family typewriter string="" \family default ] The horizontal space between the label and the text body. Only used for labels that are not above the text body. \layout Description \family typewriter \series medium LabelBottomsep \family default \series default [float=0] The vertical space between the label and the text body. Only used for labels that are above the text body ( \family typewriter Top_Environment \family default \family typewriter Centered_Top_Environment \family default \layout Description \family typewriter \series medium LabelString \family default \series default \family typewriter string="" \family default ] The string used for a label with a \family typewriter Static \family default labeltype. When the border is \family typewriter Manual \family default this string is also used as a suggestion for the \family typewriter LabelWidthString \family default that can be set in the \family sans \bar under \bar default ayout\SpecialChar \menuseparator \bar under \bar default aragraph \family default popup. When the labeltype is \family typewriter Counter_ \emph on \family default \emph default , this string is prepended to the counter. \layout Description \family typewriter \series medium Align \family default \series default \family typewriter \emph on block \emph default , left, right, center \family default ] Paragraph alignment. \layout Description \family typewriter \series medium AlignPossible \family default \series default \family typewriter \emph on block \emph default , left, right, center \family default ] A comma separated \emph on \emph default of possible aligns. Some LaTeX styles prohibit certain alignments, since those wouldn’t make sense. For example a right-aligned or centered enumeration isn’t possible. \layout Description \family typewriter \series medium Fill_Top \family default \series default \family typewriter \emph on \emph default \family default ] With this parameter the \family sans \family default value of the \begin_inset Quotes eld \end_inset Vertical space above \begin_inset Quotes erd \end_inset list of the \family sans \bar under \bar default ayout\SpecialChar \menuseparator \bar under \bar default aragraph \family default popup can be set when initializing a paragraph with this layout \begin_float footnote \layout Standard \emph on Note from Jean-Marc: \emph default I’m not sure that this setting has much use, and it should probably be removed in later versions. \end_float \layout Description \family typewriter \series medium Fill_Bottom \family default \series default \family typewriter \emph on \emph default \family default ] Similar to \family typewriter Fill_Top \family default \layout Description \family typewriter \series medium NeedProtect \family default \series default \family typewriter \emph on \emph default \family default ] Whether fragile commands in this layout should be \family typewriter \backslash protect \family default \layout Description \family typewriter \series medium Newline \family default \series default \family typewriter \emph on \family default \emph default ] Whether newlines are translated into LaTeX newlines ( \family typewriter \backslash \backslash \family default ) or not. The translation can be switched off to allow more comfortable LaTeX editing inside LyX. \layout Description \family typewriter \series medium FreeSpacing \family default \series default \family typewriter \emph on \emph default \family default ] 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, \family typewriter FreeSpacing \family default can be enabled. Note that LyX will create protected blanks for the additional blanks when in another mode than LaTeX-mode. \layout Description \family typewriter \series medium KeepEmpty \family default \series default \family typewriter \emph on \emph default \family default ] Usually LyX does not allow you to leave a paragraph empty, since it would lead to empty LaTeX output. There are some cases where this could be desirable however: in a letter template, the required fields can be provided as empty fields, so that people do not forget them; in some special classes, a layout can be used as some kind of break, which does not contain actual text. \layout Description \family typewriter \series medium Spacing \family default \series default \family typewriter \emph on single \emph default , onehalf, double, other \family default \emph on value \emph default ] This defines what the default spacing should be in the layout. The arguments \family typewriter single \family default \family typewriter onehalf \family default and \family typewriter double \family default correspond respectively to a multiplier value of 1, 1.25 and 1.667. If you specify the argument \family typewriter other \family default , then you should also provide a numerical argument which will be the actual multiplier value. Note that, contrary to other parameters, \family typewriter Spacing \family default implies the generation of specific LaTeX code, using the package \family typewriter setspace.sty \family roman \layout Description \family typewriter \series medium \family default \series default The font used for both the text body \emph on \emph default the label. See section \protected_separator \begin_inset LatexCommand \ref{sec:fonts \end_inset Note that defining this font automatically defines the \family typewriter LabelFont \family default to the same value. \layout Description \family typewriter \series medium TextFont \family default \series default The font used for the text body . See section \protected_separator \begin_inset LatexCommand \ref{sec:fonts \end_inset \layout Description \family typewriter \series medium LabelFont \family default \series default The font used for the label. See section \protected_separator \begin_inset LatexCommand \ref{sec:fonts \end_inset \layout Description \family typewriter \series medium Preamble\SpecialChar \ldots{ EndPreamble \family default \series default A set of macro definitions that will be output at the beginning of the LaTeX files when the layout is used. Use this to define the macros needed by this particular layout. \layout Standard \latex latex \backslash end{sloppypar \layout Section Font description \layout Standard \begin_inset LatexCommand \label{sec:fonts \end_inset A font description looks like that: \layout LyX-Code \family roman \emph on \family default \emph default LabelFont \layout LyX-Code \protected_separator \emph on \SpecialChar \ldots{ \layout LyX-Code EndFont \layout Standard and the following commands are available: \layout Description \family typewriter \series medium Family \family default \series default \family typewriter \emph on Roman \emph default , Sans, Typewriter \family default \layout Description \family typewriter \series medium Series \family default \series default \family typewriter \emph on Medium \emph default , Bold \family default \layout Description \family typewriter \series medium Shape \family default \series default \family typewriter \emph on \emph default , Italic, SmallCaps \family default \layout Description \family typewriter \series medium \family default \series default \family typewriter tiny, small, \emph on normal \emph default , large, larger, largest, huge, giant \family default \layout Description \family typewriter \series medium Color \series default \series bold \series default \emph on \emph default , black, white, red, green, blue, cyan, magenta, yellow \series bold \layout Description \family typewriter \series medium Latex \family default \series default \family typewriter \emph on no_latex \emph default , latex \family default \family typewriter no_latex \family default means LyX will translate everything into LaTeX. \family typewriter Latex \family default means a red screenprint and no translation at all. \layout Section Creating Templates \begin_inset LatexCommand \label{sec:templates \end_inset \layout Standard Templates are created just like usual documents. The only difference is that usual documents contain all possible settings, including the fontscheme and the papersize. Usually a user doesn’t want a template to overwrite his defaults in these cases. For that reason, the designer of a template should remove the corresponding commands like \family typewriter \backslash fontscheme \family default \family typewriter \backslash papersize \family default from the template LyX file. This can be done with any simple text-editor, for example \family typewriter \family default \family typewriter xedit \family default \layout Standard Put the edited template files you create in \family typewriter UserDir/templates/ \family default , copy the ones you use from the global template directory in \family typewriter LyXDir/templates/ \family default to the same place, and redefine the template-directory in \family typewriter lyxrc \family default using the \family typewriter \backslash template_path \family default command. \layout Chapter A Printer Tutorial \begin_inset LatexCommand \label{chap:printer \end_inset \layout Section Introduction \layout Standard This chapter describes how it is possible to setup a printer under a Unix system, so that it can be used with LyX. \size normal If you have a Linux system, and need to set up your printer, \size default you might also want to read \size normal the file \family typewriter Printing-HOWTO \family default [often in the directory \family typewriter /usr/doc/FAQ/HOWTO/ \family default \family typewriter /usr/doc/HOWTO/ \family default depending on your system]. Also, you will need to install the Ghostscript package from your Linux CD-ROM, if you never did so. \layout Standard \size normal Some Linux distributions now come with so-called \begin_inset Quotes eld \end_inset magic filters \begin_inset Quotes erd \end_inset and automatically set up your system to use them. You can use magic filters in place of or in addition to what we describe below, but it may be more difficult to take advantage of all of your printer’s features. If your Linux distribution comes with some insta-setup tool for the printer, you might just want to use that, then look at the \family typewriter \size default Printing-HOWTO \family default \size normal when you’re ready to customize things. \layout Standard \size normal So if you’re feeling adventurous, or have no other choice, read on! \layout Section \family typewriter /etc/printcap \family default File \layout Subsection Overview \layout Standard \size normal \family typewriter /etc/printcap \family default file is how you tell Linux about your printer. Each entry defines a printer, giving it a name that you and other users call it by, and telling Linux how to handle output to it. You can actually have multiple \begin_inset Quotes eld \end_inset printers \begin_inset Quotes erd \end_inset on your system that all access the same physical printer, but use different features to do so. \begin_float footnote \layout Standard Note from \noun on John Weiss \noun default : I do this with my Epson Stylus Color IIs. Since you need to change print heads to use color on the Stylus IIs, I set up a separate printer, \family typewriter color \family default , for printing color documents. I also created a \family typewriter draft \family default printer that uses lower print resolution and less-accurate printing features. So you see, there are lots of things you can do with the printcaps. \end_float \size normal Of course, you will need a printcap entry for each physical printer you have. \layout Standard \size normal Here’s a sample \family typewriter /etc/printcap \family default file: \layout LyX-Code \size normal lp|Text on an Epson: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lp=/dev/lp1: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :sd=/var/spool/lpd/lp: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lf=/var/spool/lpd/lp/errs: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :mx#0: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \newline \layout LyX-Code \size normal draft|Postscript on an Epson Stylus Color IIs, 180dpi: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lp=/dev/lp1: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :sd=/var/spool/lpd/draft: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lf=/var/spool/lpd/draft/errs: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :if=/var/spool/lpd/draft/draft.filter: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :mx#0: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \newline \layout LyX-Code \size normal ps|Postscript on an Epson Stylus Color IIs, 360dpi: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lp=/dev/lp1: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :sd=/var/spool/lpd/ps: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lf=/var/spool/lpd/ps/errs: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :if=/var/spool/lpd/ps/ps.filter: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :mx#0: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \layout Standard \size normal Before we start explaining these heiroglyphs, we have an important message: \layout Standard \added_space_top 0.51cm \align center \size normal WARNING! WARNING! WARNING! \layout Standard \align center \size normal Use only one line between entries!!! \layout Standard \added_space_bottom 0.51cm \align center \size normal Make sure the line between entries is COMPLETELY BLANK!!! \layout Standard \size normal Even if you leave a space on the blank line between entries, weird things can happen, and the system will not parse your \family typewriter /etc/printcap \family default correctly. \layout Standard \size normal Take a look at one of the entries in the above example. Each part of the entry is followed by a \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes eld \end_inset character. The \begin_inset Quotes eld \end_inset \family typewriter \backslash \family default \begin_inset Quotes erd \end_inset character at the end of each line tells Linux that the entry continues on the next line. Don’t put anything after the \begin_inset Quotes eld \end_inset \family typewriter \backslash \family default \begin_inset Quotes erd \end_inset , not even a space. The \begin_inset Quotes eld \end_inset \family typewriter \backslash \family default \begin_inset Quotes erd \end_inset should come right after the \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes eld \end_inset of the last part of the entry on the line you’re breaking. \layout Standard \size normal If you do choose to break up the \family typewriter printcap \family default entry into multiple lines, be sure to put a \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes eld \end_inset at the beginning of the \emph on \emph default of the new line, after any space. For example, we could have written the first entry in the previous example \layout LyX-Code \size normal lp|Text:lp=/dev/lp1:sd=/var/spool/lpd/lp:lf=/var/spool/lpd/lp/errs: \layout Standard \size normal Notice that there is only one \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes eld \end_inset between each part of the entry. If we wanted to break this entry into two lines: \layout LyX-Code \size normal lp|Text:lp=/dev/lp1:sd=/var/spool/lpd/lp: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lf=/var/spool/lpd/lp/errs: \layout Standard \size normal We break the line at a \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes eld \end_inset by adding a \begin_inset Quotes eld \end_inset \family typewriter \backslash \family default \begin_inset Quotes erd \end_inset , starting a new line, adding some space, then adding a \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes eld \end_inset before continuing. It’s customary to indent the next line a bit if you break up a \family typewriter printcap \family default entry into multiple lines. \layout Standard \size normal Now we’ll explain each part of the \family typewriter /etc/printcap \family default entry. Note that there are other options you can add to an entry. We’ll only cover the four basic ones here. See the man page for the \family typewriter printcap \family default file for additional information. \layout Subsection The Printer Name \layout Standard \size normal The first line of a \family typewriter printcap \family default entry is the printer name. It contains the printer name, followed by a \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset character, followed by a text description of the printer, and ending, of course, with a \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes eld \end_inset character. For example: \layout LyX-Code \size normal draft|OurPrinter in Draft Mode: \backslash \layout Standard \size normal is a printer called \begin_inset Quotes eld \end_inset \family typewriter draft \family default \begin_inset Quotes erd \end_inset with the description \begin_inset Quotes eld \end_inset OurPrinter in Draft Mode \begin_inset Quotes erd \end_inset [Notice the \begin_inset Quotes eld \end_inset \family typewriter \backslash \family default \begin_inset Quotes erd \end_inset at the end of the line, indicating that we’ll continue the entry on a new line.] The name \family typewriter draft \family default is what you pass to many printing commands using the \family typewriter \family default option. [The \family typewriter \family default program is such a command.] \layout Standard \size normal It’s traditional to name your main PostScript printer \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset and to call your text printer \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset \layout Subsection The Printer Device \layout Standard \size normal The next part of our sample \family typewriter printcap \family default entries identifies the device to print to. In all of the example entries, there is a line: \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lp=/dev/lp1: \backslash \layout Standard \size normal [Again, notice the \begin_inset Quotes eld \end_inset \family typewriter \backslash \family default \begin_inset Quotes erd \end_inset at the end of the line, as well as the beginning \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes eld \end_inset after the space we used to indent the text proper.] \layout Standard \size normal The tag \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset takes the name of the printing device. In this case, it is \family typewriter /dev/lp1 \family default , the parallel port. There are printers that connect to the serial port. If you have one, you’d use \family typewriter /dev/ttyS0 \family default for the first serial port, \family typewriter /dev/ttyS1 \family default for the second, and so on. You’ll also want to add other commands the the \family typewriter printcap \family default entry, such as the printer’s baud rate. See the \family typewriter printcap \family default man page for more information. \layout Standard \size normal Most printers, however, use the parallel port. In addition, the printer port on \emph on \emph default PC-compatible computers will be \family typewriter /dev/lp1 \family default If you want to know why, look in this footnote. \begin_float footnote \layout Standard Why is \family typewriter /dev/lp1 \family default and \emph on \family typewriter /dev/lp0 \family default \emph default the first printer port? It turns out that the I/O address of each parallel port is hard-coded into the Linux kernel. Address \family typewriter 0x3BC \family default \family typewriter /dev/lp0 \family default ; address \family typewriter 0x378 \family default \family typewriter /dev/lp1 \family default ; and address \family typewriter 0x278 \family default \family typewriter /dev/lp2 \family default Since most PC-compatible computers assign the first parallel port to the I/O address \family typewriter 0x378 \family default by default, \family typewriter /dev/lp1 \family default will be the parallel port on most systems. \layout Standard If you have more than one parallel port, the situation changes. Also, if you altered the I/O address of the parallel port for some reason, then one of the other \family typewriter \family default devices will point to your parallel port. Other systems may just simply be weird. In any case, you can go into DOS and check out which I/O address your parallel port has. Then you can use that address to figure out whether your parallel port \family typewriter /dev/lp0 \family default \family typewriter /dev/lp1 \family default , or \family typewriter /dev/lp2 \family default \end_float \size normal Your system may be different, however, so check to be sure which device is the parallel port. \layout Subsection The Spool Directory and Log File \layout Standard \size normal In addition to naming your printer and telling Linux which device it is, you’ll also need a directory for print spooling. The tag \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset identifies the spool directory for the printer. It’s also a good idea to have a log file for errors. The tag \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset points to that. \layout Standard \size normal Most systems put all of the print spools into the directory \family typewriter /var/spool/lpd \family default ; some use only \family typewriter /var/spool \family default In any case, each printcap entry traditionally has its own spool directory named after the printer. You’ll need to log on a \begin_inset Quotes eld \end_inset \begin_inset Quotes erd \end_inset and make these directories yourself. You’ll also need to change to ownership on these directories, so that their group is the \family typewriter daemon \family default group. You can do this with the command, \begin_inset Quotes eld \end_inset \family typewriter chgrp daemon \family default \emph on dirname \emph default \begin_inset Quotes erd \end_inset , where \emph on dirname \emph default is the name of the spool directory. \layout Standard \size normal For example, look at the entry for the printer \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset in the example. It contains the lines: \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :sd=/var/spool/lpd/ps: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lf=/var/spool/lpd/ps/errs: \backslash \layout Standard \size normal This indicates that the spool directory is \family typewriter /var/spool/lpd/ps \family default and that the log file is the file \family typewriter /var/spool/lpd/ps/errs \family default You should \begin_inset Quotes eld \end_inset create \begin_inset Quotes erd \end_inset this file using the command \begin_inset Quotes eld \end_inset \family typewriter touch errs \family default \begin_inset Quotes erd \end_inset in the spool directory. \layout Standard \size normal Similarly, the entry for the printer \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset contains: \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :sd=/var/spool/lpd/lp: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lf=/var/spool/lpd/lp/errs: \backslash \layout Standard \size normal Again, the spool directory is \family typewriter /var/spool/lpd/lp \family default and the log file is \family typewriter /var/spool/lpd/lp/errs \family default \layout Subsection The Filter File \layout Standard \size normal Unlike \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset , which simply passes text to the printer unformatted, the \begin_inset Quotes eld \end_inset \family typewriter draft \family default \begin_inset Quotes erd \end_inset and \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset printers need a filter [that’s why they have an additional tag in them]. The \family typewriter printcap \family default tag for the filter program is \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset [stands for \family typewriter \family default nput \family typewriter \family default ilter, meaning input to the spool]. \layout Standard \size normal There are actually several tags for filter programs, allowing you to specify a different filter for different purposes. You can also select different filters via options to \family typewriter \family default , but let’s not get into that here. \layout Standard \size normal Let’s look at the entry for the \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset printer: \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :if=/var/spool/lpd/ps/ps.filter: \backslash \layout Standard \size normal The file \begin_inset Quotes eld \end_inset \family typewriter ps.filter \family default \begin_inset Quotes erd \end_inset is actually a shell script that resides in the spool directory for the \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset printer. You could also specify the path and filename of a program; however, calling a program via a shell script allows you to specify command line options. \layout Standard \size normal All filters, whether an actual program or a shell script, should take their input from \family typewriter stdin \family default [the standard input stream] and send their output to \family typewriter stdout \family default [the standard output stream]. \layout Subsection Additional Tags \layout Standard \size normal There are three additional things you should put in your \family typewriter printcap \family default entries. You can see them at the end of all three examples. They are: \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :mx#0: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \layout Standard \size normal \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset means \begin_inset Quotes eld \end_inset don’t limit the size of the file we can print. \begin_inset Quotes erd \end_inset The \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset prevents a form-feed from being sent after the document ends. Lastly, the \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset prevents a header page from being sent at the beginning of each job. You’ll probably always want to add these to your \family typewriter printcap \family default entries. \layout Section Creating a Print Filter \layout Subsection Printing PostScript Files Using Ghostscript \layout Standard \size normal The easiest way to make your printer understand PostScript is by using the Ghostscript program as a print filter. There are probably other ways, but this is the most common. If, for some reason, you don’t want to or can’t use Ghostscript, you’re on your own [see the \family typewriter Printing-HOWTO \family default for a start]. \layout Standard \size normal The first thing you should do is install Ghostscript. There should be a version in your Linux distribution at the very least. If not, you can certainly get one from the Linux FTP archive \family typewriter sunsite.unc.edu \family default Once you’ve installed it, execute it using \layout LyX-Code \size normal gs -h | more \layout Standard \size normal from the command line. This lists the available output devices and formats. Here’s a list to help decipher what Ghostscript device name corresponds to which printer: \layout Itemize \size normal Apple Printers: \begin_deeper \layout Description \size normal appledmp Apple dot matrix printers \layout Description \size normal iwhi Imagewriter in high-res mode \layout Description \size normal iwlo Imagewriter in low-res mode \layout Description \size normal iwlq Imagewriter LQ in \size default \begin_inset Formula \( 320\times 216 \) \end_inset \size normal dpi mode \end_deeper \layout Itemize \size normal Canon Printers: \begin_deeper \layout Description \size normal bj10e BubbleJet BJ-10e \layout Description \size normal bj200 BubbleJet BJ-200 \layout Description \size normal bjc600 Color BubbleJet BJC-600, BJC-4000 and BJC-70. \begin_float footnote \end_deeper \layout Standard Also good for Apple printers like the StyleWriter 2x00 \end_float \begin_deeper \layout Description \size normal bjc800 Color BubbleJet BJC-800 \layout Description \size normal lbp8 LBP-II8 laser printer \layout Description \size normal lips3 LIPS-III laser printer in CaPSL mode \end_deeper \layout Itemize \size normal DEC Printers: \begin_deeper \layout Description \size normal la50 LA50 \layout Description \size normal la70 LA70 \layout Description \size normal la70t LA70 with low-res text enhancement \layout Description \size normal la75 LA75 \layout Description \size normal la75plus LA75 Plus \layout Description \size normal ln03 LN03 \layout Description \size normal lj250 LJ250 color printer \layout Description \size normal declj250 Alternate LJ250 driver0 \end_deeper \layout Itemize \size normal Epson Printers: \begin_deeper \layout Description \size normal ap3250 ActionPrinter AP3250 [and any printer using the ESC/P2 printer language] \layout Description \size normal escp2 All Epson printers using the ESC/P2 command set [thsi driver is possibly defunct. Use \series bold ap3250 \series medium instead.] \layout Description \size normal epson All 9- and 24-pin dot matrix printers [and compatibles] \layout Description \size normal eps9mid All 9-pin dot matrix printers [and compatibles] in intermediate resolution \layout Description \size normal eps9hi All 9-pin dot matrix printers [and compatibles] in triple resolution \layout Description \size normal epsonc LQ-2550 color printer [also works for the Fujitsu 1200, 2400, and 3400 printers \size default \layout Description \size normal st800 Stylus 800 inkjet \layout Description \size normal stcolor the Stylus Color, Stylus Color Pro, Stylus Color II and IIs color inkjet printers \end_deeper \layout Itemize \size normal Hewlet Packard [HP] Printers: \begin_deeper \layout Description \size normal lp2563 2563B line printer \layout Description \size normal cdeskjet DeskJet 500C with 1 bpp color \layout Description \size normal cdjcolor DeskJet 500C [and 540C] with 24 bpp color and Floyd-Steinberg dithering \layout Description \size normal cdjmono DeskJet 500C [and 510C, 520C, 540C], monochrome only. \layout Description \size normal cdj500 same as \series bold cdjcolor \layout Description \size normal cdj550 DeskJet 550C and 560C \layout Description \size normal deskjet DeskJet and DeskJet Plus \layout Description \size normal djet500 DeskJet 500 \layout Description \size normal djet500c Alternate DeskJet 500C driver [does not work with the 550C or the 560C] \layout Description \size normal dnj650c DesignJet 650C \layout Description \size normal ljet2p LaserJet IId, LaserJet IIp, and LaserJet III* with TIFF compression \layout Description \size normal ljet3 LaserJet III* with Delta Row compression \layout Description \size normal ljet3d LaserJet IIID with duplex capability \layout Description \size normal ljet4 LaserJet 4 [default res=600dpi] \layout Description \size normal lj4dith LaserJet 4 with Floyd-Steinberg dithering \layout Description \size normal ljetplus LaserJet Plus \layout Description \size normal pj PaintJet XL \layout Description \size normal pjetxl Alternate PaintJet XL driver \layout Description \size normal pjxl PaintJet XL color \layout Description \size normal pjxl300 PaintJet XL300 color [and 1200C] \layout Description \size normal paintjet Alternate PaintJet color driver \end_deeper \layout Itemize \size normal Tektronix Printers: \begin_deeper \layout Description \size normal t4693d2 4693d color printer with 2 bits/RGB component [=6 bpp] \layout Description \size normal t4693d4 4693d color printer with 4 bits/RGB component [=12 bpp] \layout Description \size normal t4693d8 4693d color printer with 8 bits/RGB component [=24 bpp] \layout Description \size normal tek4696 4695 and 4696 inkjet plotters \end_deeper \layout Itemize \size normal Miscellaneous Printers: \begin_deeper \layout Description \size normal cp50 Mitsubishi CP50 color printer \layout Description \size normal ibmpro IBM 9-pin Proprinter \layout Description \size normal imagen Imagen ImPress printers \layout Description \size normal jetp3852 IBM Jetprinter ink-jet color printer (Model #3852) \layout Description \size normal m8510 C.Itoh M8510 printer \layout Description \size normal necp6 NEC P6/P6+/P60 printers at 360 dpi \layout Description \size normal nwp533 Sony Microsystems NWP533 laser printer [Sony only] \layout Description \size normal oce9050 OCE 9050 printer \layout Description \size normal oki182 Okidata MicroLine 182 \layout Description \size normal okiibm Okidata MicroLine IBM-compatible printers \layout Description \size normal r4081 Ricoh 4081 laser printer \layout Description \size normal sj48 StarJet 48 inkjet printer \layout Description \size normal sparc SPARCprinter \layout Description \size normal xes Xerox XES printers (2700, 3700, 4045, etc.) \end_deeper \layout Standard \size normal If the Ghostscript package that came with your distribution doesn’t include your printer, you can always hunt down the source code and compile it yourself. If your printer isn’t \emph on directly \emph default supported by Ghostscript at all, try choosing the a printer that’s compatible. \layout Standard \size normal Note that some printers require special command line arguments. For example, the \family typewriter stcolor \family default driver requires that the file \family typewriter stcolor.ps \family default be read before the input file. You should read the Ghostscript documentation for more details. \layout Standard \size normal Next, create the filter. We suggest giving it the name \begin_inset Quotes eld \end_inset \emph on pname \family typewriter \emph default .filter \family default \begin_inset Quotes erd \end_inset , where \begin_inset Quotes eld \end_inset \emph on pname \emph default \begin_inset Quotes erd \end_inset is the name you gave the printer in its \family typewriter printcap \family default entry. We also suggest putting the filter script in the printer’s spool directory. The filter script should contain the following: \layout LyX-Code \size normal #!/bin/sh \layout LyX-Code \size normal /usr/bin/gs -q -dSAFER \protected_separator -dNOPAUSE -sDEVICE= \family roman \emph on devname \family default \emph default \protected_separator \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \family roman \emph on ResNum \family default \emph default \family roman \emph on ExtraOptions \family default \emph default \protected_separator -sOutputFile=- [ \family roman \emph on precmd \family default \emph default .ps] - \layout Standard \size normal where \emph on devname \emph default is the name of the Ghostscript device; \emph on ResNum \emph default is the resolution you want to use; \emph on ExtraOptions \emph default indicates any additional options to pass to Ghostscript; and \begin_inset Quotes eld \end_inset \emph on precmd \emph default \family typewriter \family default \begin_inset Quotes erd \end_inset is the name of a file to be read before the input [like the file \family typewriter stcolor.ps \family default for the \family typewriter stcolor \family default driver]. The \begin_inset Quotes eld \end_inset \family typewriter \backslash \family default \begin_inset Quotes erd \end_inset at the end of the first line is how you break up a command into multiple lines in a shell script. \layout Standard \size normal Note that the above example assumes that \family typewriter \family default is in the directory \family typewriter /usr/bin \family default Your system may be different. \layout Standard \size normal Different Ghostscript drivers treat the \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset argument differently. Some are looking for a single number, for example, \begin_inset Quotes eld \end_inset \family typewriter -r600 \family default \begin_inset Quotes erd \end_inset Others want separate DPI resolutions for the x and y directions, e.g. \begin_inset Quotes eld \end_inset \family typewriter -r360x360 \family default \begin_inset Quotes erd \end_inset The printer driver may take other options, as well. You’ll need to consult the Ghostscript documentation for more information. \layout Standard \size normal After you’ve created the printer filter, use \begin_inset Quotes eld \end_inset \family typewriter chmod a+x \family default \begin_inset Quotes erd \end_inset on the script file to make it executable. [You need to be logged in as root to do this]. \layout Standard \size normal Here’s an example of a Ghostscript print filter, used by \noun on John Weiss \noun default for his Epson Stylus Color IIs: \layout LyX-Code \size normal #!/bin/sh \layout LyX-Code \size normal /usr/bin/gs -q -dSAFER -sDEVICE=stcolor \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator -r360x360 -sDithering=fsmono \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator -dNOPAUSE -dnoWeave \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator -sOutputFile=- stcolor.ps - \layout Standard \size normal This filter generates 360dpi monochrome output on an Epson Stylus Color IIs. \begin_float footnote \layout Standard Note from \noun on John Weiss \noun default : This is my \family typewriter \family default printer. I also use a similar filter for my \family typewriter draft \family default printer, which has the option \family typewriter -r180x180 \family default instead of what you see above. And for my \family typewriter color \family default printer, I use a different value for the \family typewriter -sDithering \family default option. \end_float \layout Subsection If You Already Have a PostScript Printer\SpecialChar \ldots{ \layout Standard \size normal Many modern laser printers now come with PostScript built-in. On some laser printers, PostScript is actually the native printer language. If you have such a printer, you won’t need a filter and can pass a PostScript file directly to the printer. In contrast, if you want to print a text file, you’ll need to format it in PostScript somehow. \layout Standard \size normal We know of three programs that translate plain ASCII text to PostScript \family typewriter nenscript \family default \family typewriter \family default , and \family typewriter mpage \family default \family typewriter mpage \family default can also print multiple pages on a single sheet of paper. You should create a filter script using one of these programs for the \family typewriter \family default printer. [The \family typewriter \family default printer is traditionally the name of the printer that prints ASCII text files.] Read the \family typewriter Printing-HOWTO \family default for more information. \layout Section The Print Spool Daemon, \family typewriter \layout Standard \size normal The program that actually does the spooling and printing of files is \family typewriter \family default It’s also the program that reads the \family typewriter /etc/printcap \family default file. Somewhere in your bootup scripts, \begin_float footnote \layout Standard Some machines keep their bootup scripts in the \family typewriter /etc/rc.d \family default directory. Others use \family typewriter /etc/init.d \family default You’ll need to figure this out on your own. \end_float \size normal you’ll need to execute \family typewriter \family default to begin print spooling every time you boot your machine. You can also execute \family typewriter \family default as a background job from the command line if you’re logged on as root. \layout Standard \size normal Once \family typewriter \family default is running on your system, you can control its behavior and that of the print spool using the \family typewriter \family default command. Again, you’ll need to log in as root to do this. \layout Section Putting It All Together \layout Standard \size normal We’ll conclude this mini-HOWTO with the steps you need to follow to get a minimal setup. When finished, you’ll have two printers, one named \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset for printing ASCII text, and a second called \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset for printing PostScript files. The filter file for the \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset printer [included below] works for any Epson-compatible printer [which includes almost all dot-matrix printers these days], using the default printing resolution. \layout Enumerate \size normal Log in as \begin_inset Quotes eld \end_inset \begin_inset Quotes erd \end_inset or use \begin_inset Quotes eld \end_inset \family typewriter su root \family default \begin_inset Quotes erd \end_inset \layout Enumerate \size normal Execute the following commands: \begin_deeper \layout Enumerate \family typewriter \size normal cd /var/spool \layout Enumerate \family typewriter \size normal mkdir lpd \family default \begin_deeper \layout Standard \size normal [if it doesn’t already exist] \end_deeper \layout Enumerate \family typewriter \size normal chgrp lp lpd \begin_deeper \layout Standard \size normal [You may need to use \begin_inset Quotes eld \end_inset \family typewriter daemon \family default \begin_inset Quotes erd \end_inset instead of \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset \end_deeper \layout Enumerate \family typewriter \size normal cd lpd \layout Enumerate \family typewriter \size normal mkdir lp ps \begin_deeper \layout Standard \size normal [only do this if these directories don’t exist yet] \end_deeper \layout Enumerate \family typewriter \size normal touch lp/errs ps/errs \layout Enumerate \family typewriter \size normal chgrp daemon lp ps lp/errs ps/errs \end_deeper \layout Enumerate \size normal Now edit the file \family typewriter /etc/printcap \begin_deeper \layout Enumerate \size normal If this file exists, either \size default \SpecialChar \ldots{ \begin_deeper \layout Enumerate \SpecialChar \ldots{ \size normal rename the old version to something like \begin_inset Quotes eld \end_inset \family typewriter /etc/printcap.orig \family default \begin_inset Quotes erd \end_inset \layout Enumerate \SpecialChar \ldots{ \size normal or, comment out everything in the file by putting a \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset character at the beginning of each line. \end_deeper \layout Enumerate \size normal Put the following into \family typewriter /etc/printcap \family default \begin_deeper \layout LyX-Code \size normal lp|Text printer: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lp=/dev/lp1: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :sd=/var/spool/lpd/lp: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lf=/var/spool/lpd/lp/errs: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :mx#0:sh:sf: \newline \layout LyX-Code \size normal ps|Postscript printer: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lp=/dev/lp1: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :sd=/var/spool/lpd/ps: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :lf=/var/spool/lpd/ps/errs: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :if=/var/spool/lpd/ps/ps.filter: \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator :mx#0:sh:sf: \end_deeper \layout Enumerate \size normal MAKE SURE THAT: \begin_deeper \layout Enumerate \size normal the blank line between the two entries has nothing in it, not even whitespace characters. \layout Enumerate \size normal nothing follows the \begin_inset Quotes eld \end_inset \family typewriter \backslash \family default \begin_inset Quotes erd \end_inset character at the end of each line. \end_deeper \end_deeper \layout Enumerate \size normal Next, create the filter script for the \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset printer. \begin_deeper \layout Enumerate \size normal Put the following into the file \family typewriter /var/spool/lpd/ps/ps.filter \family default \begin_deeper \layout LyX-Code \size normal #!/bin/sh \layout LyX-Code \size normal /usr/bin/gs -q -dSAFER -dNOPAUSE \backslash \layout LyX-Code \size normal \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator \protected_separator -sDEVICE=epson -sOutputFile=- - \layout Standard \size normal [If you don’t have an Epson-compatible dot-matrix printer, replace the \begin_inset Quotes eld \end_inset \family typewriter epson \family default \begin_inset Quotes erd \end_inset with the appropriate Ghostscript device name. Also, if the program \family typewriter \family default isn’t in \family typewriter /usr/bin \family default , put in the correct path.] \end_deeper \layout Enumerate \size normal Execute these commands: \begin_deeper \layout Enumerate \family typewriter \size normal chmod a+x /var/spool/lpd/ps/ps.filter \layout Enumerate \family typewriter \size normal chgrp daemon /var/spool/lpd/ps/ps.filter \end_deeper \end_deeper \layout Enumerate \size normal Lastly, start up the printer daemon, \family typewriter \family default \begin_deeper \layout Enumerate \size normal If it’s not running already, use \begin_inset Quotes eld \end_inset \family typewriter lpd & \family default \begin_inset Quotes erd \end_inset to start it. \layout Enumerate \size normal If it is running already, execute \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset Then, from within \family typewriter \family default , do a \begin_inset Quotes eld \end_inset \family typewriter restart all \family default \begin_inset Quotes erd \end_inset and a \begin_inset Quotes eld \end_inset \family typewriter up all \family default \begin_inset Quotes erd \end_inset to activate the new print spools. [The command \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset leaves \family typewriter \family default \layout Enumerate \size normal Be sure to add the appropriate command to your bootup scripts so that \family typewriter \family default is executed every time you boot your system. \end_deeper \layout Enumerate \size normal You may now log out as root and test your new printers to make sure they work. Issue the command \begin_inset Quotes eld \end_inset \family typewriter lpr -Plp \family default \begin_inset Quotes erd \end_inset followed by the name of a short ASCII text file to verify that the \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset printer works. Then use \begin_inset Quotes eld \end_inset \family typewriter lpr -Pps \family default \begin_inset Quotes erd \end_inset followed by the name of a short PostScript file to test the \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset printer. \layout Standard \size normal A word of caution: when testing \begin_inset Quotes eld \end_inset \family typewriter \family default \begin_inset Quotes erd \end_inset , if anything goes wrong, the system may end up passing garbage to your printer. If that happens, shut off your printer and use the \family typewriter \family default and \family typewriter \family default commands to kill the print job. After you kill the print job, you can turn your printer back on. \layout Standard \size normal If either of these printers doesn’t work, check everything again, consult the \family typewriter \family default pages for \family typewriter printcap \family default and \family typewriter \family default , and read the \family typewriter Printing-HOWTO \family default for help. \layout Standard \size normal If everything does work, congratulations! \the_end
This document was generated on February 15, 2023 using texi2html 5.0.