
yuuji@46: \def\lang{jp} % -*- texinfo -*-
yuuji@20: \input texinfo.tex
yuuji@20: @setfilename yatexe
yuuji@20: @settitle Yet Another tex-mode for Emacs
yuuji@272: @direntry
yuuji@272: * YaTeX-e: (yatexe).    Yet Another tex-mode for Emacs (English).
yuuji@272: @end direntry
yuuji@20: 
yuuji@20: @iftex
yuuji@46: @c @syncodeindex fn cp
yuuji@517: @c Last modified Sat Jan  6 23:42:24 2018 on firestorm
yuuji@20: @syncodeindex vr cp
yuuji@20: @end iftex
yuuji@20: 
yuuji@20: @titlepage
yuuji@20: @sp 10
yuuji@20: @center
yuuji@20: @subtitle Yet Another tex-mode for emacs
yuuji@20: @title Wild Bird
yuuji@20: @subtitle // YaTeX //
yuuji@471: @author @copyright{} 1991-2017 by    HIROSE, Yuuji [yuuji@@yatex.org]
yuuji@20: @end titlepage
yuuji@20: 
yuuji@20: @node Top, What is YaTeX?, (dir), (dir)
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @cindex Demacs
yuuji@20: @cindex Mule
yuuji@20: @cindex LaTeX
yuuji@20: @cindex YaTeX
yuuji@20: 
yuuji@20: @menu
yuuji@471: * What is YaTeX?::
yuuji@51: * Main features::               What YaTeX can do
yuuji@51: * Installation::                Guide to install
yuuji@51: * Typesetting::                 Call typesetting processes
yuuji@79: * %#notation::                  Meta-keyword `%#'
yuuji@51: * Completion::                  Input LaTeX commands with completion
yuuji@51: * Local dictionaries::          Directory dependent completion
yuuji@51: * Commenting out::              Commenting/uncommenting text
yuuji@51: * Cursor jump::                 Jumping to related position
yuuji@51: * Changing and Deleting::       Changing/deleting certain unit of text
yuuji@51: * Filling::                     Filling an item or paragraph
yuuji@53: * Updation of includeonly::     Free from maintaining includeonly
yuuji@59: * What column::                 Check what table-column the cursor belong
yuuji@51: * Intelligent newline::         Guess requisites of new line
yuuji@79: * Usepackage checker::          Selecting correct \usepackage is YaTeX's job
yuuji@51: * Online help::                 On-line documentation of LaTeX
yuuji@53: * Browsing file hierarchy::     Walking through file hierarchy
yuuji@51: * Cooperation with other packages::  Work well with gmhist, min-out
yuuji@51: * Customizations::              How to breed `Wild Bird'
yuuji@51: * Etcetera::                    YaTeX is acquisitive.
yuuji@51: * Copying::                     Redistribution
yuuji@20: 
yuuji@265: @end menu
yuuji@20: 
yuuji@20: @node What is YaTeX?, Main features, Top, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter What is YaTeX?
yuuji@20: 
yuuji@20:   YaTeX automates typesetting and previewing of LaTeX and enables
yuuji@20: completing input of LaTeX mark-up command such as
yuuji@20: @code{\begin@{@}}..@code{\end@{@}}.
yuuji@20: 
yuuji@20:   YaTeX also supports Demacs which runs on MS-DOS(386), Mule (Multi
yuuji@20: Language Enhancement to GNU Emacs), and latex on DOS.
yuuji@20: 
yuuji@20: @node Main features, Installation, What is YaTeX?, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter Main features
yuuji@20: 
yuuji@20: @itemize
yuuji@46: @item Invocation of typesetter,  previewer and related programs(@kbd{C-c t})
yuuji@20: @item Typesetting on static region which is independent from point
yuuji@60: @item Semiautomatic replacing of @code{\includeonly}
yuuji@20: @item Jumping to error line(@kbd{C-c '})
yuuji@20: @item Completing-read of La@TeX{} commands such as @code{\begin@{@}},
yuuji@20:         @code{\section} etc. 
yuuji@20:         (@kbd{C-c b}, @kbd{C-c s}, @kbd{C-c l}, @kbd{C-c m})
yuuji@20: @item Enclosing text into La@TeX{} environments or commands
yuuji@392:       (@var{AboveKeyStrokes} after region setting)
yuuji@59: @item Displaying the structure of text at entering sectioning commands
yuuji@59: @item Lump shifting of sectioning commands (@ref{view-sectioning})
yuuji@20: @item Learning unknown/new La@TeX{} commands for the next completion
yuuji@20: @item Argument reading with a guide for complicated La@TeX{} commands
yuuji@20: @item Generating argument-readers for new/unsupported commands(@file{yatexgen})
yuuji@20: @item Quick changing or deleting of La@TeX{} commands(@kbd{C-c c}, @kbd{C-c k})
yuuji@20: @item Jumping from and to inter-file, begin<->end, ref<->label(@kbd{C-c g})
yuuji@20: @item Blanket commenting out or uncommenting
yuuji@20:         (@kbd{C-c >}, @kbd{C-c <}, @kbd{C-c ,}, @kbd{C-c .})
yuuji@20: @item Easy input of accent mark, math-mode's commands and Greek letters
yuuji@52:         (@kbd{C-c a}, @kbd{;}, @kbd{:})
yuuji@20: @item Online help for the popular La@TeX{} commands
yuuji@58:       (@kbd{C-c ?}, @kbd{C-c /})
yuuji@53: @item Document files hierarchy browser (@kbd{C-c d})
yuuji@80: @item Adding automatically \usepackage corresponding to inputting LaTeX
yuuji@80:       macro with completion
yuuji@265: @item Allow you to forget creating \label@{@}s, \ref@{@} or \cite@{@}
yuuji@265:       completion automatically generate labels.
yuuji@471: @item \includegraphics by Drag&Drop of image file
yuuji@20: @end itemize
yuuji@20: 
yuuji@20: @node Installation, Typesetting, Main features, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter Installation
yuuji@20: @cindex installation
yuuji@20: @cindex .emacs
yuuji@20: @cindex auto-mode-alist
yuuji@20: @cindex autoload
yuuji@20: 
yuuji@20:   Put next two expressions into your @file{~/.emacs}.
yuuji@20: 
yuuji@20: @lisp
yuuji@20:         (setq auto-mode-alist
yuuji@46:               (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist))
yuuji@20:         (autoload 'yatex-mode "yatex" "Yet Another La@TeX{} mode" t)
yuuji@20: @end lisp
yuuji@20: 
yuuji@20: Next, add certain path name where you put files of YaTeX to your
yuuji@20: load-path.  If you want to put them in @file{~/src/emacs}, write
yuuji@20: 
yuuji@20: @lisp
yuuji@20:        (setq load-path
yuuji@20:              (cons (expand-file-name "~/src/emacs") load-path))
yuuji@20: @end lisp
yuuji@20: 
yuuji@20: @noindent
yuuji@20: in your @file{~/.emacs}
yuuji@20: 
yuuji@20:   Then, yatex-mode will be automatically loaded when you visit a
yuuji@20: file which has extension @file{.tex}.  If yatex-mode is successfully
yuuji@20: loaded, mode string on mode line will be turned to "YaTeX".
yuuji@20: 
yuuji@20: 
yuuji@68: @node Typesetting, %#notation, Installation, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter Typesetting
yuuji@20: @cindex typesetting
yuuji@20: @cindex previewer
yuuji@20: @cindex typesetter
yuuji@20: @cindex latex
yuuji@20: @cindex printing out
yuuji@20: 
yuuji@20:   The prefix key stroke of yatex-mode is @kbd{C-c} (Press 'C' with Control
yuuji@20: key) by default.  If you don't intend to change the prefix key stroke,
yuuji@20: assume all @kbd{[prefix]} as @kbd{C-c} in this document.  These key
yuuji@20: strokes execute typeset or preview command.
yuuji@20: 
yuuji@20: @table @kbd
yuuji@58: @item [prefix] t j
yuuji@392:         @dots{} invoke typesetter
yuuji@58: @item [prefix] t r
yuuji@392:         @dots{} invoke typesetter on region
yuuji@130: @item [prefix] t e
yuuji@392:         @dots{} `on-the-fly preview' on current environment or whole
yuuji@392:          portion of current formulas in math-mode
yuuji@242: @item [prefix] t d
yuuji@242: 	@dots{} invoke dvipdfmx after successful typesetting
yuuji@58: @item [prefix] t k
yuuji@46:         @dots{} kill current typesetting process
yuuji@58: @item [prefix] t b
yuuji@46:         @dots{} invoke bibtex
yuuji@126: @item [prefix] t i
yuuji@126:         @dots{} invoke makeindex
yuuji@126: @item [prefix] t d
yuuji@126:         @dots{} invoke latex && dvipdfmx
yuuji@58: @item [prefix] t p
yuuji@46:         @dots{} preview
yuuji@58: @item [prefix] t l
yuuji@46:         @dots{} lpr dvi-file
yuuji@58: @item [prefix] t s
yuuji@58:         @dots{} search current string on xdvi-remote
yuuji@20: @end table
yuuji@20: 
yuuji@58: @menu
yuuji@471: * Calling typesetter::
yuuji@471: * Calling previewer::
yuuji@471: * Printing out::
yuuji@58: @end menu
yuuji@58: 
yuuji@58: @node Calling typesetter, Calling previewer, Typesetting, Typesetting
yuuji@58: @comment  node-name,  next,  previous,  up
yuuji@68: @section Calling typesetter
yuuji@58: 
yuuji@58:   Typing @kbd{[prefix] t j}, the current editing window will be divided
yuuji@58: horizontally when you invoke latex command, and log message of La@TeX{}
yuuji@58: typesetting will be displayed in the other window; called typesetting
yuuji@58: buffer.  The typesetting buffer automatically scrolls up and traces
yuuji@58: La@TeX{} warnings and error messages.  If you see latex stopping by an
yuuji@20: error, you can send string to latex in the typesetting buffer.
yuuji@20: 
yuuji@20:   If an error  stops the La@TeX{}  typesetting, this  key stroke will
yuuji@20: move the cursor to the line where La@TeX{} error is detected.
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] '
yuuji@20: @itemx ([prefix]+single quotation)
yuuji@20: 
yuuji@46:         @dots{} jump to the previous error or warning
yuuji@20: @end table
yuuji@20: 
yuuji@20:   If you find a noticeable error, move to the typesetting buffer and move
yuuji@20: the cursor on the line of error message and type @kbd{SPACE} key.  This
yuuji@20: makes the cursor move to corresponding source line.
yuuji@20: 
yuuji@131:   YaTeX-typeset-region invoked by @kbd{[prefix] tr} call typesetter
yuuji@131: for region.  The region is specified by standard point and mark, or
yuuji@131: by @code{%#BEGIN} and @code{%#END} marks.  Selected region will be
yuuji@131: copied to the temporary file @file{texput.tex} with the same preamble
yuuji@131: as the main file of current editing sources.  Be sure to put
yuuji@265: all local macro settings in preamble, not after @code{\begin@{document@}}.
yuuji@131:   The method of specification of the region is shown in the
yuuji@68: section @xref{%#notation}.
yuuji@20: 
yuuji@73:   The documentclass  for typeset-region is the same as that of editing
yuuji@20: file if you edit one  file,  and is the same as main file's if you
yuuji@20: edit splitting files.
yuuji@20: 
yuuji@130:   The @kbd{[prefix] te} key automatically marks current inner environment
yuuji@392: or inner math mode or paragraph, and then call typeset-region with marked
yuuji@392: region.  This
yuuji@130: is convenient to quick view of current tabular environment or current
yuuji@392: editing formulas.  If running Emacs has the ability of displaying images,
yuuji@392: typeset image will be shown in the next window.  Further more,
yuuji@392: if you modify the content within that environment, YaTeX performs
yuuji@392: `on-the-fly' preview that automatically update preview image as you typed.
yuuji@392: 
yuuji@392: If your Emacs does not supply on-the-fly preview,
yuuji@392: keeping previewer window for @file{texput.dvi} is handy
yuuji@131: for debugging.  Since @kbd{[prefix] te} selects the inner-most environment
yuuji@131: as region, it is not suitable for partial typesetting of doubly or more
yuuji@131: composed environment.  If you want to do partial typesetting for a nested
yuuji@131: environment, use @kbd{[prefix] tr} for static-region, which is described
yuuji@131: in the section @xref{%#notation}.
yuuji@130: 
yuuji@58: @node Calling previewer, Printing out, Calling typesetter, Typesetting
yuuji@58: @comment  node-name,  next,  previous,  up
yuuji@68: @section Calling previewer
yuuji@58: 
yuuji@58:   @kbd{[prefix] t p} invokes the TeX previewer.  And if you are using
yuuji@58: xdvi-remote, which can be controled from other terminals, @kbd{[prefix] t
yuuji@58: s} enables you to search current string at the cursor on the running xdvi
yuuji@72: window.
yuuji@58: 
yuuji@58: @node Printing out,  , Calling previewer, Typesetting
yuuji@58: @comment  node-name,  next,  previous,  up
yuuji@68: @section Printing out
yuuji@58: 
yuuji@58:   When you type @code{[preifx] t l}, YaTeX asks you the range of
yuuji@58: dvi-printing by default.  You can skip this by invoking it with
yuuji@58: universal-argument as follows:
yuuji@20: 
yuuji@20: @example
yuuji@49:         C-u [prefix] tl
yuuji@20: @end example
yuuji@20: 
yuuji@68: @node %#notation, Completion, Typesetting, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter %# notation
yuuji@20: @cindex %# notation
yuuji@20: 
yuuji@20:   You can control the typesetting process by describing @code{%#}
yuuji@20: notations in the source text.
yuuji@20: 
yuuji@20: @menu
yuuji@471: * Changing typesetter::
yuuji@471: * Splitting input files::
yuuji@471: * Static region for typesetting::
yuuji@517: * Special Filtering Region::
yuuji@471: * Lpr format::
yuuji@471: * Controlling which command to invoke::
yuuji@471: * Editing %# notation::
yuuji@20: @end menu
yuuji@20: 
yuuji@70: @node Changing typesetter, Splitting input files, %#notation, %#notation
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section To change the `latex' command or to split a source text.
yuuji@20: @cindex typesetter
yuuji@20: 
yuuji@20:   To change the typesetting command, write
yuuji@20: 
yuuji@20: @example
yuuji@46:         %#!latex-big
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@51: anywhere in the source text.  This is useful for changing
yuuji@51: typesetter.
yuuji@51: 
yuuji@68: @node Splitting input files, Static region for typesetting, Changing typesetter, %#notation
yuuji@51: @comment  node-name,  next,  previous,  up
yuuji@70: @section Splitting input files
yuuji@51: 
yuuji@51:   And if you split the source text and
yuuji@20: edit subfile that should be included from main text.
yuuji@20: 
yuuji@20: @example
yuuji@46:         %#!latex main.tex
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: will be helpful to execute latex on main file from sub text buffer.  Since
yuuji@20: this command line after @kbd{%#!} will be sent to shell literally, next
yuuji@20: description makes it convenient to use ghostview as dvi-previewer.
yuuji@20: 
yuuji@20: @example
yuuji@242:         %#!latex main && dvi2ps main.dvi > main
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: Note that YaTeX  assumes the component  before the  last period of
yuuji@20: the last word in this line as base name of the main La@TeX{} source.
yuuji@80: The @code{%f} notation in this line is replaced by main file name, and
yuuji@80: @code{%r} replaced by root name of main file name.  If you specify
yuuji@80: @code{%f} or @code{%r}, YaTeX always ask you the name of main file at the
yuuji@80: first typesetting.
yuuji@20: 
yuuji@51:   To make best use of the feature of inter-file jumping by
yuuji@51: @kbd{[prefix] g} (see @ref{Cursor jump}), take described below into
yuuji@51: consideration.
yuuji@20: 
yuuji@20: @itemize
yuuji@20: @item You can put split texts in sub directory, but not in
yuuji@20:  sub directory of sub directory.
yuuji@51: @item In the main text, specify the child file name with relative path name
yuuji@70:  such as \include@{chap1/sub@}, when you include the file in
yuuji@20:  a sub-directory.
yuuji@20: @item In a sub-text, write @code{%#!latex main.tex} even if @file{main.tex}
yuuji@20:  is in the parent directory(not %#!latex ../main.tex).
yuuji@20: @end itemize
yuuji@20: 
yuuji@70: @node Static region for typesetting, Lpr format, Splitting input files, %#notation
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section Static region
yuuji@20: @cindex static region
yuuji@20: @cindex Fixed region
yuuji@20: 
yuuji@20:   Typeset-region by @kbd{[prefix] tr} passes the region between point and
yuuji@20: mark to typesetting command by default.  But when you want to typeset
yuuji@20: static region, enclose the region by @code{%#BEGIN} and @code{%#END} as
yuuji@20: follows.
yuuji@20: 
yuuji@20: @example
yuuji@46:         %#BEGIN
yuuji@46:           TheRegionYouWantToTypesetManyTimes
yuuji@46:         %#END
yuuji@20: @end example
yuuji@20: 
yuuji@20: This is the rule of deciding the region.
yuuji@20: 
yuuji@20: @enumerate
yuuji@20: @item
yuuji@20: If there exists %#BEGIN before point,
yuuji@20: 
yuuji@20: @enumerate
yuuji@20: @item
yuuji@20: If there exists %#END after %#BEGIN,
yuuji@20: @itemize
yuuji@20: @item From %#BEGIN to %#END.
yuuji@20: @end itemize
yuuji@20: 
yuuji@20: @item
yuuji@20: If %#END does not exist after %#BEGIN,
yuuji@20: @itemize
yuuji@20: @item From %#BEGIN to the end of buffer.
yuuji@20: @end itemize
yuuji@20: @end enumerate
yuuji@20: 
yuuji@20: @item
yuuji@20: If there does not exist %#BEGIN before point,
yuuji@20: @itemize
yuuji@20: @item Between point and mark(standard method of Emacs).
yuuji@20: @end itemize
yuuji@20: @end enumerate
yuuji@20: 
yuuji@20:   It is useful to write @code{%#BEGIN} in the previous line of \begin and
yuuji@20: @code{%#END} in the next line of \@code{end} when you try complex
yuuji@20: environment such as `tabular' many times.  It is also useful to put only
yuuji@20: @code{%#BEGIN} alone at the middle of very long text.  Do not forget to
yuuji@20: erase @code{%#BEGIN} @code{%#END} pair.
yuuji@20: 
yuuji@517: @node Special Filtering Region, Lpr format, Static region for typesetting, %#notation
yuuji@517: @section Special Filtering Region
yuuji@517:   A region like below will be passed to external filter command.
yuuji@517: @example
yuuji@517: %#BEGIN FILTER{foo.pdf}{dot -T %t -o %o}
yuuji@517: \if0
yuuji@517: ....blah blah blah...
yuuji@517: ....blah blah blah...
yuuji@517: ....blah blah blah...
yuuji@517: \fi
yuuji@517: %#END
yuuji@517: @end example
yuuji@517: 
yuuji@517: In this case, typing @kbd{[prefix] t e} send three `blah' lines
yuuji@517: to "dot -T pdf -o foo.pdf" as standard-input.  It is useful to
yuuji@517: have source of text-origin graphic generated by such tools as
yuuji@517: graphviz or blockdiag, in La@TeX{} source.  This special form of region
yuuji@517: can be inserted via feeding @code{.dot} into environment completion by
yuuji@517: @kbd{[prefix] t b}.
yuuji@517: 
yuuji@517: 
yuuji@517: 
yuuji@471: @node Lpr format, Controlling which command to invoke, Static region for typesetting, %#notation
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section Lpr format
yuuji@20: @cindex lpr format
yuuji@20: 
yuuji@20:   Lpr format is specified by three Lisp variables.  Here are the
yuuji@20: default values of them.
yuuji@20: 
yuuji@20: @table @code
yuuji@20: @item (1)dviprint-command-format
yuuji@46:         @code{"dvi2ps %f %t %s | lpr"}
yuuji@20: @item (2)dviprint-from-format
yuuji@46:         @code{"-f %b"}
yuuji@20: @item (3)dviprint-to-format
yuuji@46:         @code{"-t %e"}
yuuji@20: @end table
yuuji@20: 
yuuji@20:   On YaTeX-lpr, @code{%s} in (1) is replaced by the file name of main
yuuji@20: text, @code{%f} by contents of (2), %t by contents of (3).  At these
yuuji@20: replacements, @code{%b} in (2) is also replaced by the number of beginning
yuuji@20: page, @code{%e} in (3) is replaced by the number of ending page.  But
yuuji@20: @code{%f} and @code{%t} are ignored when you omit the range of print-out
yuuji@20: by @kbd{C-u [prefix] tl}.
yuuji@20: 
yuuji@20:   If you want to change this lpr format temporarily, put a command
yuuji@20: such as follows somewhere in the text:
yuuji@20: 
yuuji@20: @example
yuuji@46:         %#LPR dvi2ps %f %t %s | 4up -page 4 | texfix | lpr -Plp2
yuuji@20: @end example
yuuji@20: 
yuuji@20:   And if you want YaTeX not to ask you the range of printing
yuuji@20: out, the next example may be helpful.
yuuji@20: 
yuuji@20: @example
yuuji@46:         %#LPR dvi2ps %s | lpr
yuuji@20: @end example
yuuji@20: 
yuuji@269: @node Controlling which command to invoke, Editing %# notation, Lpr format, %#notation
yuuji@242: @comment  node-name,  next,  previous,  up
yuuji@242: @section Controlling which command to invoke
yuuji@242: 
yuuji@242: These %# notation below can control which command to invoke for
yuuji@242: La@TeX{} related process.
yuuji@242: 
yuuji@242: @table @code
yuuji@410:  @item %#PREVIEW
yuuji@410: 	@dots{} Command line for DVI viewing ([prefix] t p)
yuuji@410:  @item %#MAKEINDEX
yuuji@410: 	@dots{} Command line for makeindex ([prefix] t i)
yuuji@242:  @item %#BIBTEX
yuuji@242: 	@dots{} Command line for bibtex ([prefix] t b)
yuuji@329:  @item %#DVIPDF
yuuji@329: 	@dots{} Command line for dvipdf(mx) ([prefix] t b)
yuuji@410:  @item %#LPR
yuuji@410: 	@dots{} Command line for printing out([prefix] t l)
yuuji@410:  @item %#PDFVIEW
yuuji@410: 	@dots{} Command line for PDF viewing
yuuji@410:  @item %#IMAGEDPI
yuuji@410: 	@dots{} DPI value for converting to on-the-fly prewview image
yuuji@242: @end table
yuuji@242: 
yuuji@242: If you want to invoke ``makeidx hogehoge'' to update index,
yuuji@242: put the next line some upper place in the source, for example.
yuuji@242: 
yuuji@242: @example
yuuji@242: %#MAKEINDEX makeidx hogehoge
yuuji@242: @end example
yuuji@242: 
yuuji@242: 
yuuji@269: @node Editing %# notation,  , Controlling which command to invoke, %#notation
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section Editing %# notation
yuuji@20: 
yuuji@20:   To edit @code{%#} notation described above, type
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] %
yuuji@46:         @dots{} editing %# notation menu
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: and select one of the entry of the menu as follows.
yuuji@20: 
yuuji@20: @example
yuuji@46:         !)Edit-%#! B)EGIN-END-region L)Edit-%#LPR
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: Type @kbd{!} to edit @code{%#!} entry, @code{b} to enclose the region with
yuuji@20: @code{%#BEGIN} and @code{%#END}, and @code{l} to edit @code{%#LPR} entry.
yuuji@20: When you type @kbd{b}, all @code{%#BEGIN} and @code{%#END} are
yuuji@20: automatically erased.
yuuji@20: 
yuuji@68: @node Completion, Local dictionaries, %#notation, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter Completion
yuuji@20: @cindex completion
yuuji@20: 
yuuji@20:   YaTeX makes it easy to input the La@TeX{} commands.  There are several
yuuji@20: kinds of completion type, begin-type, section-type, large-type, etc...
yuuji@20: 
yuuji@20: @menu
yuuji@392: * Begin-type completion::
yuuji@392: * Section-type completion::
yuuji@471: * Label Generation::
yuuji@392: * Large-type completion::
yuuji@392: * Maketitle-type completion::
yuuji@392: * Arbitrary completion::
yuuji@392: * End completion::
yuuji@392: * Accent completion::
yuuji@392: * Image completion::
yuuji@392: * Greek letters completion::
yuuji@392: * Inserting parentheses::
yuuji@20: @end menu
yuuji@20: 
yuuji@33: @node Begin-type completion, Section-type completion, Completion, Completion
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section Begin-type completion
yuuji@20: @cindex begin-type completion
yuuji@20: @cindex environment
yuuji@20: @cindex prefix b
yuuji@20: 
yuuji@20:   "Begin-type completion" completes commands of @code{\begin@{env@}} ... 
yuuji@20: @code{\end@{env@}}.  All of the begin-type completions begin with this key
yuuji@20: sequence.
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] b
yuuji@46:         @dots{} start begin-type completion
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: An additional key  stroke immediately  completes a frequently used
yuuji@20: La@TeX{} @code{\begin@{@}}...@code{\@code{end}@{@}} environment.
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] b c
yuuji@46:         @dots{}  @code{\begin@{center@}...\end@{center@}}
yuuji@20: @item [prefix] b d
yuuji@46:         @dots{}  @code{\begin@{document@}...\end@{document@}}
yuuji@20: @item [prefix] b D
yuuji@46:         @dots{}  @code{\begin@{description@}...\end@{description@}}
yuuji@20: @item [prefix] b e
yuuji@46:         @dots{}  @code{\begin@{enumerate@}...\end@{enumerate@}}
yuuji@20: @item [prefix] b E
yuuji@46:         @dots{}  @code{\begin@{equation@}...\end@{equation@}}
yuuji@20: @item [prefix] b i
yuuji@46:         @dots{}  @code{\begin@{itemize@}...\end@{itemize@}}
yuuji@20: @item [prefix] b l
yuuji@46:         @dots{}  @code{\begin@{flushleft@}...\end@{flushleft@}}
yuuji@20: @item [prefix] b m
yuuji@46:         @dots{}  @code{\begin@{minipage@}...\end@{minipage@}}
yuuji@20: @item [prefix] b t
yuuji@46:         @dots{}  @code{\begin@{tabbing@}...\end@{tabbing@}}
yuuji@20: @item [prefix] b T
yuuji@46:         @dots{}  @code{\begin@{tabular@}...\end@{tabular@}}
yuuji@20: @item [prefix] b^T
yuuji@46:         @dots{}  @code{\begin@{table@}...\end@{table@}}
yuuji@20: @item [prefix] b p
yuuji@46:         @dots{}  @code{\begin@{picture@}...\end@{picture@}}
yuuji@20: @item [prefix] b q
yuuji@46:         @dots{}  @code{\begin@{quote@}...\end@{quote@}}
yuuji@20: @item [prefix] b Q
yuuji@46:         @dots{}  @code{\begin@{quotation@}...\end@{quotation@}}
yuuji@20: @item [prefix] b r
yuuji@46:         @dots{}  @code{\begin@{flushright@}...\end@{flushright@}}
yuuji@20: @item [prefix] b v
yuuji@46:         @dots{}  @code{\begin@{verbatim@}...\end@{verbatim@}}
yuuji@20: @item [prefix] b V
yuuji@46:         @dots{}  @code{\begin@{verse@}...\end@{verse@}}
yuuji@20: @end table
yuuji@20: 
yuuji@20:   Any other La@TeX{} environments are made by  completing-read of the
yuuji@20: Emacs function.
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] b SPACE
yuuji@46:         @dots{} begin-type completion
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: The next message will show up in the minibuffer
yuuji@20: 
yuuji@20: @example
yuuji@46:         Begin environment(default document): 
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: by typing @kbd{[prefix] b}.  Put the wishing environment with completion
yuuji@20: in the minibuffer, and @code{\begin@{env@}}...\@code{\end@{env@}} will be
yuuji@20: inserted in the La@TeX{} source text.  If the environment you want to put
yuuji@20: does not exist in the YaTeX completion table, it will be registered in the
yuuji@20: user completion table.  YaTeX automatically saves the user completion
yuuji@20: table in the user dictionary file at exiting of emacs.
yuuji@20: 
yuuji@58: At the completion of certain environments, the expected initial entry will 
yuuji@58: automatically inserted such as @code{\item} for @code{itemize}
yuuji@58: environment.  If you don't want the entry, it can be removed by undoing.
yuuji@58: 
yuuji@392:   If you want to enclose some paragraphs which have already been written
yuuji@392: into environment, invoke the begin-type completion right after region marking.
yuuji@20: @cindex enclose region into environment
yuuji@20: 
yuuji@392: If you set @code{transient-mark-mode} to @code{nil} in your
yuuji@392: @file{~/.emacs},  typing @kbd{C-space} (@code{set-mark-command}) twice
yuuji@392: turns @code{transient-mark-mode} on temporarily.  Then, type call
yuuji@392: begin-type completion to enclose text into a environment.
yuuji@392: 
yuuji@20: 
yuuji@517: @node Section-type completion, Label Generation, Begin-type completion, Completion
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section Section-type completion
yuuji@20: @cindex section-type completion
yuuji@20: @cindex prefix s
yuuji@20: 
yuuji@20:   "Section-type completion" completes section-type commands which take an
yuuji@20: argument or more such as @code{\section@{foo@}}.  To invoke section-type
yuuji@20: completion, type
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] s
yuuji@46:         @dots{} section-type completion
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: then the prompt
yuuji@20: 
yuuji@20: @example
yuuji@73:         (C-v for view) \???@{@} (default documentclass):
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: will  show up in the  minibuffer.  Section-type La@TeX{} commands are
yuuji@20: completed by space key, and the default value is selected when you
yuuji@20: type nothing in the minibuffer.
yuuji@20: 
yuuji@20:   Next, 
yuuji@20: 
yuuji@20: @example
yuuji@46:         \section@{???@}:
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: prompts you the argument of section-type La@TeX{} command.  For
yuuji@20: example, the following inputs
yuuji@20: 
yuuji@20: @example
yuuji@73:         \???@{@} (default documentclass): section
yuuji@70:         \section@{???@}: Hello world.
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: will insert the string
yuuji@20: 
yuuji@20: @example
yuuji@46:         \section@{Hello world.@}
yuuji@20: @end example
yuuji@20: 
yuuji@20: in your La@TeX{} source.  When you neglect argument such as
yuuji@20: 
yuuji@20: @example
yuuji@46:         (C-v for view) \???@{@} (default section): vspace*
yuuji@46:         \vspace*@{???@}: 
yuuji@20: @end example
yuuji@20: 
yuuji@20: YaTeX puts
yuuji@20: 
yuuji@20: @example
yuuji@46:         \vspace*@{@}
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: and move the cursor in the braces.
yuuji@20: 
yuuji@20:   In La@TeX{} command, there are commands which take more than one
yuuji@70: arguments such as @code{\addtolength@{\topmargin@}@{8mm@}}.  To complete these
yuuji@20: commands, invoke section-type completion with universal argument as,
yuuji@20: @cindex number of argument
yuuji@20: 
yuuji@20: @example
yuuji@49:         C-u 2 [prefix] s (or ESC 2 [prefix] s)
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: and make answers in minibuffer like this.
yuuji@20: 
yuuji@20: @example
yuuji@46:         (C-v for view) \???@{@} (default vspace*): addtolength
yuuji@46:         \addtolength@{???@}: \topmargin
yuuji@46:         Argument 2: 8mm
yuuji@20: @end example
yuuji@20: 
yuuji@20: @code{\addtolength} and the first argument @code{\topmargin} can be typed
yuuji@20: easily by completing read.  Since YaTeX also learns the number of
yuuji@20: arguments of section-type command and will ask that many arguments in
yuuji@20: future completion, you had better tell the number of arguments to YaTeX at
yuuji@20: the first completion of the new word.  But you can change the number of
yuuji@20: arguments by calling the completion with different universal argument
yuuji@20: again.
yuuji@20: 
yuuji@20: 
yuuji@20:   Invoking section-type completion with @code{[Prefix] S} (Capital `S')
yuuji@20: includes the region as the first argument of section-type command.
yuuji@20: 
yuuji@20:   The  section/large/maketitle type completion  can  work at the
yuuji@20: prompt for   the argument   of  other section-type   completion.
yuuji@20: Nested La@TeX{}  commands are  efficiently read with  the recursive
yuuji@20: completion by typing  YaTeX's   completion key sequence in   the
yuuji@20: minibuffer.
yuuji@20: 
yuuji@20: @menu
yuuji@471: * view-sectioning::
yuuji@20: @end menu
yuuji@20: 
yuuji@33: @node view-sectioning,  , Section-type completion, Section-type completion
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @subsection view-sectioning
yuuji@20: @cindex view sectioning
yuuji@20: @cindex outline
yuuji@20: 
yuuji@20:   In the minibuffer at the prompt of section-type command completion,
yuuji@20: typing @kbd{C-v} shows a list of sectioning commands in source text(The
yuuji@20: line with @code{<<--} mark is the nearest sectioning command).  Then,
yuuji@20: default sectioning command appears in the minibuffer.  You can go up/down
yuuji@20: sectioning command by typing @kbd{C-p}/@kbd{C-n}, can scrolls up/down the
yuuji@20: listing buffer by @kbd{C-v}/@kbd{M-v}, and can hide sectioning commands
yuuji@20: under certain level by 0 through 6.  Type @kbd{?}  in the minibuffer of
yuuji@20: sectioning prompt for more information.
yuuji@20: 
yuuji@58:   You can generate this listing buffer (@code{*Sectioning Lines*} buffer)
yuuji@58: by typing
yuuji@58: @table @kbd
yuuji@58: @item M-x YaTeX-section-overview
yuuji@58:         @dots{} Generate *Sectioning Lines* buffer
yuuji@58: @end table
yuuji@58: @cindex{Generate the listing of sectioning units}
yuuji@58: from the LaTeX source buffer.  In this listing buffer, typing @kbd{u} on
yuuji@58: the sectioning command shifts up the corresponding sectioning command in
yuuji@58: source text and @kbd{d} shifts down.  After marking lines in the listing
yuuji@58: buffer, typing @kbd{U} shifts up all sectioning commands in the region,
yuuji@58: and @kbd{U} shifts down.  Here are all the key bindings of
yuuji@58: @code{*Sectioning Lines*} buffer.
yuuji@58: 
yuuji@58: @table @kbd
yuuji@58: @item SPC
yuuji@58:         @dots{} Jump to corresponding source line
yuuji@58: @item .
yuuji@58:         @dots{} Display corresponding source line
yuuji@58: @item u
yuuji@58:         @dots{} Shift up a sectioning line
yuuji@58: @item d
yuuji@58:         @dots{} Shift down a sectioning line
yuuji@58: @item U
yuuji@58:         @dots{} Shift up sectioning lines in region
yuuji@58: @item D
yuuji@58:         @dots{} Shift down sectioning lines in region
yuuji@68: @item 0@dots{}6
yuuji@58:         @dots{} Hide sectioning commands whose level is lower than n
yuuji@58: @end table
yuuji@58: 
yuuji@471: @node  Label Generation, Large-type completion, Section-type completion, Completion
yuuji@471: @section Label Generation
yuuji@471: @comment label generation
yuuji@471: @cindex label generation
yuuji@471: @cindex ref label cite
yuuji@471: 
yuuji@471: When you want to type-in references of @code{\ref} or @code{\cite},
yuuji@471: all you have to do is type @kbd{[prefix] s ref} without adding labels
yuuji@471: beforehand.  You will see possible La@TeX{}-counters in the next window
yuuji@471: even if some counter does not have @code{\label}.  Selecting the counter
yuuji@471: will automatically set the label to that counter.
yuuji@471: 
yuuji@471: All possible counter list in the buffer tends to be large.
yuuji@471: You can reduce the number of list by filtering type of counters by
yuuji@471: key-commands as follows.
yuuji@471: @table @kbd
yuuji@471:  @item M-a
yuuji@471: 	@dots{} Show all(disable filtering)
yuuji@471:  @item M-c
yuuji@471: 	@dots{} Captions only
yuuji@471:  @item M-e
yuuji@471: 	@dots{} equations (with counters) only
yuuji@471:  @item M-i
yuuji@471: 	@dots{} numbers items only
yuuji@471:  @item M-s
yuuji@471: 	@dots{} sections only
yuuji@471:  @item M-m
yuuji@471: 	@dots{} other counters only
yuuji@471: @end table
yuuji@471: 
yuuji@471: 
yuuji@471: @node Large-type completion, Maketitle-type completion, Label Generation, Completion
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section Large-type completion
yuuji@20: 
yuuji@20:   "Large-type   completion"  inputs  the  font  or  size  changing
yuuji@20: descriptions such as @code{@{\large @}}.  When you type
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] l
yuuji@46:         @dots{} large-type completion
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: the message in the minibuffer
yuuji@20: 
yuuji@20: @example
yuuji@46:         @{\??? @} (default large): 
yuuji@20: @end example
yuuji@20: 
yuuji@20: prompts prompts you large-type command with completing-read.  There are
yuuji@20: TeX commands to change fonts or sizes, @code{it}, @code{huge} and so on,
yuuji@20: in the completion table.
yuuji@20: 
yuuji@392:   Region-based completion is also invoked by calling completion
yuuji@392: after region activated.
yuuji@20: 
yuuji@20: @node Maketitle-type completion, Arbitrary completion, Large-type completion, Completion
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section Maketitle-type completion
yuuji@20: @cindex maketitle-type completion
yuuji@20: 
yuuji@20:   We call it "maketitle-type completion" which completes commands such as
yuuji@20: @code{\maketitle}.  Take notice that maketitle-type commands take no
yuuji@20: arguments.  Then, typing
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] m
yuuji@46:         @dots{} maketitle-type completion
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: begins maketitle-completion.  Above mentioned  method is  true for
yuuji@20: maketitle-completion, and   there  are   La@TeX{} commands    with no
yuuji@20: arguments in completion table.
yuuji@20: 
yuuji@20: @node Arbitrary completion, End completion, Maketitle-type completion, Completion
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section Arbitrary completion
yuuji@20: @cindex arbitrary completion
yuuji@20: 
yuuji@20: @noindent
yuuji@20:   You can complete certain La@TeX{} command anywhere without typical
yuuji@20: completing method as described, by typing
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] SPC
yuuji@46:         @dots{} arbitrary completion
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: after the initial string of La@TeX{} command that is preceded by @code{\}.
yuuji@20: 
yuuji@20: @node End completion, Accent completion, Arbitrary completion, Completion
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section End completion
yuuji@20: @cindex end completion
yuuji@20: 
yuuji@20: @noindent
yuuji@20:   YaTeX automatically detects the opened environment and close it with
yuuji@20: \@code{\end@{environment@}}.  Though proficient YaTeX users never fail to
yuuji@20: make environment with begin-type completion, some may begin an environment
yuuji@20: manually.  In that case, type
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] e
yuuji@46:         @dots{} @code{end} completion
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: at the end of the opened environment.
yuuji@20: 
yuuji@20: @node Accent completion, Image completion, End completion, Completion
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section Accent completion
yuuji@20: @cindex accent completion
yuuji@20: 
yuuji@20:   When you want to write the European accent marks(like @code{\`@{o@}}),
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] a
yuuji@46:         @dots{} accent completion
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: shows the menu
yuuji@20: 
yuuji@20: @example
yuuji@46:         1:` 2:' 3:^ 4:" 5:~ 6:= 7:. u v H t c d b
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: in the minibuffer.  Chose one character or corresponding numeric,
yuuji@20: and you will see
yuuji@20: 
yuuji@20: @example
yuuji@70:         \`@{@}
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: in the editing buffer with the cursor positioned  in braces.  Type
yuuji@20: one more character `o' for example, then
yuuji@20: 
yuuji@20: @example
yuuji@70:         \`@{o@}
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: will be completed, and the cursor gets out from braces.
yuuji@20: 
yuuji@20: @node Image completion, Greek letters completion, Accent completion, Completion
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section Image completion of mathematical sign
yuuji@20: @cindex image completion
yuuji@20: @cindex math-mode
yuuji@20: @cindex sigma
yuuji@20: @cindex leftarrow
yuuji@20: @cindex ;
yuuji@20: 
yuuji@20:   Arrow  marks,  sigma mark and those signs mainly used  in  the
yuuji@20: TeX's  math environment  are completed by  key  sequences  which
yuuji@20: imitate the  corresponding symbols graphically.  This completion
yuuji@20: only works in the math environment.  YaTeX automatically detects
yuuji@20: whether the  cursor  located  in math environment  or  not,  and
yuuji@52: change the behavior of key strokes @kbd{;} and @kbd{:}.
yuuji@20: 
yuuji@20:   By the way, we often express the leftarrow mark by `<-' for example.
yuuji@20: Considering such image, you can write @code{\leftarrow} by typing @kbd{<-}
yuuji@20: after @kbd{;} (semicolon) as a prefix.  In the same way,
yuuji@20: @code{\longleftarrow} (@code{<--}) is completed by typing @kbd{;<--},
yuuji@20: infinity mark which is imitated by @code{oo} is completed by typing
yuuji@20: @kbd{;oo}.
yuuji@20: 
yuuji@20:   Here are the sample operations in YaTeX math-mode.
yuuji@20: 
yuuji@20: @example
yuuji@20: INPUT                   Completed La@TeX{} commands
yuuji@20: ; < -                   @code{\leftarrow}
yuuji@20: ; < - -                 @code{\longleftarrow}
yuuji@20: ; < - - >               @code{\longleftrightarrow}
yuuji@20: ; o                     @code{\circ}
yuuji@20: ; o o                   @code{\infty}
yuuji@20: @end example
yuuji@20: 
yuuji@20:   In  any case, you can quit  from image completion and can move
yuuji@20: to the next editing  operation if the La@TeX{}  command you want is
yuuji@20: shown in the buffer.
yuuji@20: 
yuuji@20:   @code{;} itself in math-environment is inserted by @kbd{;;}.  Typing
yuuji@20: @kbd{TAB} in the midst of image completion shows all of the La@TeX{}
yuuji@20: commands that start with the same name as string you previously typed in.
yuuji@20: In this menu buffer, press @kbd{RET} after moving the cursor (by @kbd{n},
yuuji@20: @kbd{p}, @kbd{b}, @kbd{f}) to insert the La@TeX{} command.
yuuji@20: 
yuuji@20:   To know all of the completion table, type @kbd{TAB} just after @kbd{;}.
yuuji@20: And here is the sample menu by @kbd{TAB} after @kbd{;<}.
yuuji@20: 
yuuji@20: @example
yuuji@20: KEY             LaTeX sequence          sign
yuuji@20: <               \leq                    <
yuuji@20:                                         ~
yuuji@20: <<              \ll                     << 
yuuji@20: <-              \leftarrow              <-
yuuji@20: <=              \Leftarrow              <=
yuuji@20: @end example
yuuji@20: 
yuuji@20:   You can define your favorite key-vs-sequence completion table in the
yuuji@20: Emacs-Lisp variable @code{YaTeX-math-sign-alist-private}.  See also
yuuji@20: @file{yatexmth.el} for the information of the structure of this variable.
yuuji@20: 
yuuji@392: @node Greek letters completion, Inserting parentheses, Image completion, Completion
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section Greek letters completion
yuuji@20: @cindex Greek letters completion
yuuji@52: @cindex :
yuuji@20: 
yuuji@20:   Math-mode of YaTeX provides another image completion, Greek letters
yuuji@52: completion in the same method.  After prefix @kbd{:}, typing @kbd{a} makes
yuuji@20: @code{\alpha}, @kbd{b} makes @code{\beta} and @kbd{g} makes @code{\gamma}
yuuji@58: and so on.  First, type @kbd{:TAB} to know all the correspondence of
yuuji@58: alphabets vs. Greek letters.
yuuji@20: 
yuuji@52:   If you will find @kbd{;} or @kbd{:} doesn't work in correct position of
yuuji@20: math environment, it may be a bug of YaTeX.  Please send me a bug report
yuuji@20: with the configuration of your text, and avoid it temporarily by typing
yuuji@52: @kbd{;} or @kbd{:} after universal-argument(@kbd{C-u}) which forces
yuuji@52: @kbd{;} and @kbd{:} to work as math-prefix.
yuuji@20: 
yuuji@392: @node Inserting parentheses,  , Greek letters completion, Completion
yuuji@392: @section Inserting parentheses
yuuji@392: 
yuuji@392:   Typing opening parenthesis, one of @code{(}, @code{@{ and @code{[}},
yuuji@392: automatically inserts the closing one.  If a opening bracket is typed
yuuji@392: after @code{\}, @code{\]} is automatically inserted with computed
yuuji@392: indentation.  If you stop automatic insertion, type @kbd{C-q} before
yuuji@392: opening parenthesis.
yuuji@392: 
yuuji@49: @node Local dictionaries, Commenting out, Completion, Top
yuuji@49: @comment  node-name,  next,  previous,  up
yuuji@49: @chapter Local dictionaries
yuuji@49: @cindex local dictionaries
yuuji@49: @cindex nervous users
yuuji@49: 
yuuji@49:   Tables for completion consist of three dictionaries; `standard
yuuji@49: dictionary' built in @file{yatex.el}, `user dictionary' for your common
yuuji@49: private commands, and `local dictionary' that is effective in a certain
yuuji@49: directory.
yuuji@49: 
yuuji@49:   When you input the command unknown to YaTeX at a completion in the
yuuji@49: minibuffer, YaTeX asks you with the following prompt;
yuuji@49: 
yuuji@49: @example
yuuji@73:   `foo' is not in table. Register into: U)serDic L)ocalDic N)one D)iscard
yuuji@49: @end example
yuuji@49: 
yuuji@265: @noindent
yuuji@51: In this menu, typing @kbd{u} updates your `user dictionary', @kbd{l}
yuuji@51: updates your local dictionary, @kbd{n} updates only on-memory dictionary
yuuji@51: which go through only current Emacs session, and @kbd{d} updates no
yuuji@51: dictionary and throws the new word away.
yuuji@49: 
yuuji@49:   If you find this switching feature meaningless and bothersome, put the
yuuji@49: next expression into your @file{~/.emacs}
yuuji@49: 
yuuji@49: @lisp
yuuji@49:         (setq YaTeX-nervous nil)
yuuji@49: @end lisp
yuuji@49: 
yuuji@49: @node Commenting out, Cursor jump, Local dictionaries, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter Commenting out
yuuji@20: @cindex commenting out
yuuji@20: @cindex prefix >
yuuji@20: @cindex prefix <
yuuji@20: @cindex prefix ,
yuuji@20: @cindex prefix .
yuuji@20: 
yuuji@20:   You may want to comment out some region.
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] >
yuuji@46:         @dots{} comment out region by %
yuuji@20: @item [prefix] <
yuuji@46:         @dots{} uncomment region
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: cause an operation to the region between point and mark.
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] .
yuuji@46:         @dots{} comment out current paragraph
yuuji@20: @item [prefix] ,
yuuji@46:         @dots{} uncomment current paragraph
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: comments or  uncomments the paragraph  where the  cursor  belongs.
yuuji@20: This  `paragraph' means   the   region marked    by  the  function
yuuji@20: mark-paragraph,  bound    to  @kbd{ESC h}   by   default.   It  is NOT
yuuji@20: predictable  what will happen  when you  continuously  comment out
yuuji@20: some paragraph many times.
yuuji@20: 
yuuji@20:   You can also comment out an environment between @code{\begin} and
yuuji@20: @code{\end}, or a @code{\begin}-\@code{\end} pair themselves, by making the
yuuji@20: following key strokes on the line where @code{\begin@{@}} or
yuuji@20: @code{\end@{@}} exists.
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] >
yuuji@46:         @dots{} comment out from \begin to \@code{end}
yuuji@20: @item [prefix] <
yuuji@46:         @dots{} uncomment from \begin to \@code{end}
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: comment whole the contents of environment.  Moreover,
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] .
yuuji@46:         @dots{} comment out \begin and \@code{end}
yuuji@20: @item [prefix] ,
yuuji@46:         @dots{} uncomment \begin and \@code{end}
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: (un)comments out only environment declaration: @code{\begin@{@}} and
yuuji@20: @code{\end@{@}}.  NOTE that even if you intend to comment out some region,
yuuji@20: invoking @kbd{[prefix] >} on the @code{\begin},@code{\end} line decides to
yuuji@20: work in `commenting out from @code{\begin} to @code{\end}' mode.
yuuji@20: 
yuuji@20: 
yuuji@20: @node Cursor jump, Changing and Deleting, Commenting out, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter Cursor jump
yuuji@20: @cindex cursor jump
yuuji@20: @cindex prefix g
yuuji@20: 
yuuji@68: 
yuuji@68: @menu
yuuji@471: * Jump to corresponding object::
yuuji@471: * Invoking image processor::
yuuji@471: * Jump to main file::
yuuji@471: * Jumping around the environment::
yuuji@471: * Jumping to last completion position::
yuuji@68: @end menu
yuuji@68: 
yuuji@68: @node Jump to corresponding object, Invoking image processor, Cursor jump, Cursor jump
yuuji@68: @comment  node-name,  next,  previous,  up
yuuji@51: @section Jump to corresponding object
yuuji@51: 
yuuji@48:   Typing
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] g
yuuji@46:         @dots{} go to corresponding object
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@48: in a certain place move the cursor to the place corresponding to the
yuuji@48: La@TeX{} command of last place.  YaTeX recognize the followings as pairs
yuuji@48: that have relation each other.
yuuji@48: 
yuuji@49: @itemize @bullet
yuuji@48: @item @code{\begin@{@}} <-> @code{\end@{@}}
yuuji@48: @item @code{%#BEGIN} <-> @code{%#END}
yuuji@59: @item On the image-including line -> corresponding viewer or drawing tool
yuuji@48: @item @code{\label@{@}} <-> @code{\ref@{@}}
yuuji@48: @item @code{\include(\input)} -> included file
yuuji@48: @item @code{\bibitem@{@}} <-> @code{\cite@{@}}
yuuji@49: @end itemize
yuuji@48: 
yuuji@49:   On a @code{\begin},@code{\end} line, typing @kbd{[prefix] g} moves the
yuuji@49: cursor to the corresponding @code{\end},@code{\begin} line, if its partner
yuuji@51: really exists.  The behavior on the line @code{%#BEGIN} and @code{%#END}
yuuji@49: are the same.  Note that if the correspondent of @code{label/ref} or
yuuji@51: @code{cite/bibitem} exists in another file, that file have to be opened to
yuuji@49: make a round trip between references by @kbd{[prefix] g}.
yuuji@20: 
yuuji@20:   If you type @code{[prefix] g} on the line of @code{\include@{chap1@}},
yuuji@48: typically in the main text, YaTeX switches buffer to @file{chap1.tex}.
yuuji@51: 
yuuji@51: @table @kbd
yuuji@51: @item [prefix] 4 g
yuuji@51:         @dots{} go to corresponding object in other window
yuuji@51: @end table
yuuji@51: 
yuuji@51: @noindent
yuuji@51: do the same job as @kbd{[prefix] g} except it's done in other window.
yuuji@51: Note that this function doesn't work on @code{begin/end},
yuuji@51: @code{%#BEGIN/%#END} pairs because it is meaningless.
yuuji@51: 
yuuji@68: @node Invoking image processor, Jump to main file, Jump to corresponding object, Cursor jump
yuuji@68: @comment  node-name,  next,  previous,  up
yuuji@68: @section Invoking image processor
yuuji@59: @cindex{Drawing tool invocation}
yuuji@59: 
yuuji@59: `image-including line' described above means such lines as
yuuji@59: @code{\epsfile@{file=foo.ps@}}.  If you type @kbd{[prefix] g} on that
yuuji@59: line, YaTeX automatically searches source of `foo.ps' and invokes image
yuuji@59: viewer or drawing tool correspoinding to it.  For example; if you draw
yuuji@59: an image foo.obj with Tgif and enclose its product named foo.eps by
yuuji@59: @code{\epsfile} command.  Typing @kbd{[prefix] g} on @code{\epsfile} line
yuuji@59: make YaTeX invoke @code{tgif foo.obj}.  How a processor is choosen is as
yuuji@59: follows.
yuuji@59: 
yuuji@59: @enumerate
yuuji@59: @item
yuuji@59: If there is an expression matching with one of the pattern
yuuji@59: defined in @code{YaTeX-processed-file-regexp-alist}, extract file name
yuuji@59: from regexp group surrounded by \\(\\).  (Which group corresponds is
yuuji@59: written in the cdr part of each list.)  If no matches were found, do
yuuji@59: nothing.
yuuji@59: @item
yuuji@59: If there is a pattern as `%PROCESSOR' which is defined in the variable
yuuji@59: @code{YaTeX-file-processor-alist}, call that processor giving the
yuuji@59: file name with corresponding extension.
yuuji@59: @item
yuuji@59: If not, check the existence of each file which is supplied the
yuuji@59: extension in the cdr part of each list of
yuuji@59: @code{YaTeX-file-processor-alist}.  If any, call the corresponding
yuuji@59: image viewer or drawing tool.
yuuji@59: @end enumerate
yuuji@59: 
yuuji@68: @node Jump to main file, Jumping around the environment, Invoking image processor, Cursor jump
yuuji@68: @comment  node-name,  next,  previous,  up
yuuji@51: @section Jump to main file
yuuji@51: 
yuuji@51:   Typing
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] ^
yuuji@46:         @dots{} visit main file
yuuji@20: @item [prefix] 4^
yuuji@46:         @dots{} visit main file in other buffer
yuuji@20: @end table
yuuji@20: @cindex prefix ^
yuuji@20: @cindex prefix 4 ^
yuuji@20: 
yuuji@20: in a sub text switch the buffer to the main text specified by
yuuji@20: @code{%#!}  notation.
yuuji@20: 
yuuji@68: @node Jumping around the environment, Jumping to last completion position, Jump to main file, Cursor jump
yuuji@68: @comment  node-name,  next,  previous,  up
yuuji@68: @section Jumping around the environment
yuuji@51: 
yuuji@20:   And these are the functions which work on the current La@TeX{}
yuuji@20: environment:
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item M-C-a
yuuji@46:         @dots{} beginning of environment
yuuji@20: @item M-C-e
yuuji@46:         @dots{} @code{end} of environment
yuuji@20: @item M-C-@@
yuuji@46:         @dots{} mark environment
yuuji@20: @end table
yuuji@20: @cindex M-C-a
yuuji@20: @cindex M-C-e
yuuji@20: @cindex M-C-@@
yuuji@20: 
yuuji@68: @node Jumping to last completion position,  , Jumping around the environment, Cursor jump
yuuji@68: @comment  node-name,  next,  previous,  up
yuuji@68: @section Jumping to last completion position
yuuji@68: 
yuuji@68: YaTeX always memorize the position of completion into register @code{3}.
yuuji@68: So every time you make a trip to any other part of text other than you are
yuuji@68: writing, you can return to the editing paragraph by calling
yuuji@68: register-to-point with argument YaTeX-current-position-register, which is
yuuji@68: achieved by typing @kbd{C-x j 3}(by default).
yuuji@68: 
yuuji@51: @node Changing and Deleting, Filling, Cursor jump, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter Changing and Deleting
yuuji@20: 
yuuji@20:   These  functions  are for change or   deletion of La@TeX{} commands
yuuji@20: already entered.
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] c
yuuji@46:         @dots{} change La@TeX{} command
yuuji@20: @item [prefix] k
yuuji@46:         @dots{} kill La@TeX{} command
yuuji@20: @end table
yuuji@20: @cindex prefix c
yuuji@20: @cindex prefix k
yuuji@20: 
yuuji@49: @menu
yuuji@471: * Changing LaTeX commands::
yuuji@471: * Killing LaTeX commands::
yuuji@49: @end menu
yuuji@49: 
yuuji@68: @node Changing LaTeX commands, Killing LaTeX commands, Changing and Deleting, Changing and Deleting
yuuji@49: @comment  node-name,  next,  previous,  up
yuuji@49: @section Changing La@TeX{} commands
yuuji@49: 
yuuji@49: @kbd{[prefix] c} can change the various (La)@TeX{} commands.  This can
yuuji@49: change the followings.
yuuji@49: @itemize @bullet
yuuji@49: @item Environment names
yuuji@49: @item Section-type commands
yuuji@49: @item Argument of section-type commands
yuuji@49: @item Optional parameters (enclosed by []) of section-type commands
yuuji@49: @item Font/size designators
yuuji@52: @item Math-mode's maketitle-type commands that can be inputted with
yuuji@52: image completion
yuuji@49: @end itemize
yuuji@49: 
yuuji@49:   Typing @kbd{[prefix] c} on one of above objects you want to change
yuuji@49: brings a suitable reading function sometimes with completion.
yuuji@49: Note: If you want to change the argument of section-type command that
yuuji@49: contains other La@TeX{} commands, type @kbd{[prefix] c} either of
yuuji@49: surrounding braces of the argument in order to make YaTeX ignore the
yuuji@49: internal La@TeX{} sequences as an object of changing.  Anyway, it is
yuuji@49: very difficult to know which argument position the cursor belongs because
yuuji@49: the La@TeX{} commands can be nested and braces can freely emerge.  So keep 
yuuji@49: it mind to put the cursor on a brace when you are thinking of changing a
yuuji@49: complicated argument.
yuuji@49: 
yuuji@68: @node Killing LaTeX commands,  , Changing LaTeX commands, Changing and Deleting
yuuji@49: @comment  node-name,  next,  previous,  up
yuuji@49: @section Killing La@TeX{} commands
yuuji@49: @cindex Killing La@TeX{} commands
yuuji@49: 
yuuji@49:   @kbd{[prefix] k} kills the La@TeX{} commands sometimes with their
yuuji@49: arguments.  Following table illustrates the correspondence of the invoking
yuuji@49: position and what is killed.
yuuji@20: 
yuuji@20: @example
yuuji@20: [Invoking position]             [action]
yuuji@49: \begin, \end line               kill \begin,\end pairs
yuuji@49: %#BEGIN, %#END line             kill %#BEGIN,%#END pairs
yuuji@20: on a Section-type command       kill section-type command
yuuji@20: on a parenthesis                kill parentheses
yuuji@20: @end example
yuuji@20: 
yuuji@49: Note that when killing @code{\begin, \end} or @code{%#BEGIN, %#END} pair,
yuuji@49: the lines @code{\begin, \end} or @code{%#BEGIN, %#END} exist will be
yuuji@49: killed entirely.  So take care not to create any line that contains more
yuuji@49: than one @code{\begin} or so.
yuuji@49: 
yuuji@20: While all operations above are to kill `containers' which surround some
yuuji@20: text, universal argument (@kbd{C-u}) for these commands kills not only
yuuji@20: `containers' but also `contents' of them.  See below as a sample.
yuuji@20: 
yuuji@20: @example
yuuji@46: Original text:                  [prefix] k      C-u [prefix] k
yuuji@46: Main \footnote@{note@} here.    Main note here. Main  here.
yuuji@20:        ~(cursor)
yuuji@20: @end example
yuuji@20: 
yuuji@58: @node Filling, Updation of includeonly, Changing and Deleting, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@51: @chapter Filling
yuuji@51: @cindex filling
yuuji@51: 
yuuji@51: @section Filling an item
yuuji@20: @cindex filling an item
yuuji@20: @cindex prefix i
yuuji@20: 
yuuji@51:   To fill a term (descriptive sentences) of @code{\item}, type
yuuji@20: 
yuuji@58: @c @table @kbd
yuuji@58: @c @item [prefix] i
yuuji@58: @c         @dots{} fill item
yuuji@58: @c @end table
yuuji@20: @table @kbd
yuuji@58: @item M-q
yuuji@46:         @dots{} fill item
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: on that item.
yuuji@20: 
yuuji@20:   YaTeX uses the value of  the variable @code{YaTeX-item-regexp} as the
yuuji@20: regular expression to search item header  in  itemize environment.
yuuji@51: If you make a newcommand to itemize terms(e.g. @code{\underlineitem}), put
yuuji@20: 
yuuji@20: @lisp
yuuji@46:         (setq YaTeX-item-regexp
yuuji@58:               "\\(\\\\\\(sub\\)*item\\)\\|\\(\\\\underlineitem\\)")
yuuji@20: @end lisp
yuuji@20: @cindex YaTeX-item-regexp
yuuji@20: 
yuuji@20: in your @file{~/.emacs}.  If you are not familiar with regular expression
yuuji@20: for Emacs-Lisp, name  a newcommand  for  `itemize' beginning  with
yuuji@20: @code{\item} such as @code{\itembf}, not @code{\bfitem}.
yuuji@20: 
yuuji@58:   This function reformats the @code{\item} into `hang-indented' style.
yuuji@58: For example:
yuuji@51: 
yuuji@51: @example
yuuji@58: itemize, enumerate environment:
yuuji@51:        >
yuuji@51:        >\item[foo] `foo' is the typical word for describing an
yuuji@51:        >           arbitrarily written....
yuuji@58: description environment:
yuuji@58:        > \item[bar] When the word `for' is used as an arbitrarily
yuuji@58:        >        word, `bar'  is bound to follow it.
yuuji@51: @end example
yuuji@51: 
yuuji@52:   Note that the indent depth of an @code{\item} word and its descriptive
yuuji@51: paragraph are the same in latter case.  If you want to use different
yuuji@51: depth, invoke fill-paragraph at the beginning of non-whitespace
yuuji@51: character(see below).
yuuji@51: 
yuuji@51: @section Filling paragraph
yuuji@51: @cindex Filling paragraph
yuuji@51: @cindex M-q
yuuji@51: 
yuuji@51:   Fill-paragraph is little bit adapted for La@TeX{} sources.  It retains from
yuuji@51: filling in certain environments where formatting leads to a disaster such
yuuji@51: as verbatim, tabular, or so.  And it protects @code{\verb} expressions
yuuji@51: from being folded (The variable @code{YaTeX-verb-regexp} controls this).
yuuji@51: Besides, putting cursor on the first occurrence of non-whitespace
yuuji@51: character on a line changes the fill-prefix temporarily to the depth of
yuuji@51: the line.
yuuji@51: 
yuuji@59: @node Updation of includeonly, What column, Filling, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter Updation of @code{\includeonly}
yuuji@20: @cindex includeonly
yuuji@20: 
yuuji@20:   When you edit splitting source texts, the notation
yuuji@20: 
yuuji@20: @example
yuuji@46:         \includeonly@{CurrentEditingFileName@}
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: in the main file reduces the time of typesetting.  If you want
yuuji@20: to hack other file a little however, you have to rewrite it to
yuuji@20: 
yuuji@20: @example
yuuji@46:         \includeonly@{OtherFileNameYouWantToFix@}
yuuji@20: @end example
yuuji@20: 
yuuji@20: @noindent
yuuji@20: in the main file.  YaTeX automatically detects that the current
yuuji@20: edited text is not in includeonly list and prompts you
yuuji@20: 
yuuji@20: @example
yuuji@46:         A)dd R)eplace %)comment?
yuuji@20: @end example
yuuji@20: 
yuuji@20: in the minibuffer.  Type @kbd{a} if you want to add the current file name
yuuji@20: to @code{\includeonly} list, @kbd{r} to replace \@code{includeonly} list
yuuji@79: with the current file, and type @kbd{%} to comment out the
yuuji@20: @code{\includeonly} line.
yuuji@20: 
yuuji@59: @node What column, Intelligent newline, Updation of includeonly, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter What column?
yuuji@20: @cindex what column
yuuji@20: @cindex complex tabular
yuuji@20: @cindex prefix &
yuuji@20: 
yuuji@20:   We  are often get  tired of  finding the corresponding column in
yuuji@20: large tabulars.  For example,
yuuji@20: 
yuuji@20: @example
yuuji@20:         \begin@{tabular@}@{|c|c|c|c|c|c|c|c|@}\hline
yuuji@20:          Name&Position&Post No.&Addr.&Phone No.&FAX No.&
yuuji@20:                 Home Addr.&Home Phone\\ \hline
yuuji@20:          Thunder Bird & 6 & 223 & LA & xxx-yyy &
yuuji@20:           zzz-www & Japan & 9876-54321 \\
yuuji@20:            & 2 & \multicolumn@{2@}@{c|@}@{Unknown@}
yuuji@20:                 &&&(???)
yuuji@20:          \\ \hline
yuuji@20:          \end@{tabular@}
yuuji@20: @end example
yuuji@20: 
yuuji@20: Suppose you have the cursor located  at @code{(???)} mark, can you tell
yuuji@20: which  column it is  belonging  at once?  Maybe no.  In such case,
yuuji@20: type
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] &
yuuji@46:         @dots{} What column
yuuji@20: @end table
yuuji@20: 
yuuji@20: @noindent
yuuji@20: in  that position.   YaTeX  tells you  the  column header  of  the
yuuji@20: current  field.  Since  YaTeX  assumes  the  first line of tabular
yuuji@20: environment  as a row of column  headers, you  can  create a row of
yuuji@20: virtual column  headers by  putting  them  in the  first line  and
yuuji@20: commenting that line with @code{%}.
yuuji@20: 
yuuji@79: @node Intelligent newline, Usepackage checker, What column, Top
yuuji@28: @comment  node-name,  next,  previous,  up
yuuji@28: @chapter Intelligent newline
yuuji@28: @cindex Intelligent newline
yuuji@28: @cindex ESC RET
yuuji@28: @cindex M-C-m
yuuji@28: 
yuuji@58:   At the end of begin-type completion of tabular[*], array, itemize,
yuuji@58: enumerate or tabbing environment, or typing 
yuuji@28: 
yuuji@28: @table @kbd
yuuji@28: @item ESC RET
yuuji@46:         @dots{} Intelligent newline
yuuji@28: @end table
yuuji@28: 
yuuji@265: @noindent
yuuji@58: in these environments inserts the contents corresponding to the current
yuuji@58: environment in the next line.  (At the begin-type completion, this
yuuji@58: contents can be removed by `undo'.)  In @code{tabular} environment, for
yuuji@58: example, @kbd{ESC RET} inserts the certain number of @code{&} and trailing
yuuji@58: @code{\\}, and @code{\hline} if other @code{\hline} is found in backward.
yuuji@58: Here are the list of contents vs. environments.
yuuji@28: 
yuuji@28: @itemize
yuuji@28: @item @code{tabular}, @code{tabular*}, @code{array}
yuuji@28: 
yuuji@46:         Corresponding number of @code{&} and  @code{\\}.
yuuji@46:         And @code{\hline} if needed.
yuuji@28: 
yuuji@28: @item @code{tabbing}
yuuji@28: 
yuuji@46:         The same number of @code{\>} as @code{\=} in the first line.
yuuji@28: 
yuuji@28: @item @code{itemize}, @code{enumerate}, @code{description}, @code{list}
yuuji@28: 
yuuji@46:         @code{\item} or @code{item[]}.
yuuji@28: @end itemize
yuuji@28: 
yuuji@28:   Note that since this function works seeing the contents of the first
yuuji@28: line, please call this after the second line if possible.
yuuji@28: 
yuuji@28:   If you want to apply these trick to other environments, @code{foo}
yuuji@28: environment for example, define the function named
yuuji@28: @code{YaTeX-intelligent-newline-foo} to insert corresponding contents.
yuuji@28: That function will be called at the beginning of the next line after the
yuuji@28: newline is inserted to the current line.  Since the function
yuuji@28: @code{YaTeX-indent-line} is designed to indent the current line properly,
yuuji@28: calling this function before your code to insert certain contents must be
yuuji@28: useful.  See the definition of the function
yuuji@28: @code{YaTeX-intelligent-newline-itemize} as an example.
yuuji@28: 
yuuji@79: @node Usepackage checker, Online help, Intelligent newline, Top
yuuji@79: @comment  node-name,  next,  previous,  up
yuuji@79: @chapter Usepackage checker
yuuji@79: @cindex usepackage
yuuji@79: 
yuuji@79: When you input begint-type, section-type, maketitle-type macros with
yuuji@79: completion, and it requires some LaTeX2e package, YaTeX examines
yuuji@79: the existence of correct @code{\usepackage}.  If not, YaTeX inserts
yuuji@79: the @code{\usepackage@{@}} declaration corresponding to input macro.
yuuji@79: 
yuuji@79: To activate the package completion for your favarite package,
yuuji@79: set the variable @code{YaTeX-package-alist-private} correctly.
yuuji@79: Please refere the value of @code{YaTeX-package-alist-default} as an
yuuji@79: example.
yuuji@79: 
yuuji@79: @node Online help, Browsing file hierarchy, Usepackage checker, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter Online help
yuuji@20: @cindex online help
yuuji@20: @cindex prefix ?
yuuji@20: @cindex prefix /
yuuji@20: @cindex apropos
yuuji@20: @cindex keyword search
yuuji@20: 
yuuji@20:   YaTeX provides you the online help with popular La@TeX{} commands.
yuuji@20: 
yuuji@20:   Here are the key strokes for the online help.
yuuji@20: 
yuuji@20: @table @kbd
yuuji@20: @item [prefix] ?
yuuji@46:         @dots{} Online help
yuuji@20: @item [prefix] /
yuuji@46:         @dots{} Online apropos
yuuji@20: @end table
yuuji@20: 
yuuji@20: @section Online help
yuuji@20: 
yuuji@20:   `Online help' shows the documentation for the popular La@TeX{}
yuuji@20: commands(defaults to the commands on the cursor) in the next buffer.
yuuji@20: There are two help file, `global help' and `private help'.  The former
yuuji@20: file contains the descriptions on the standard La@TeX{} command and is
yuuji@20: specified its name by variable @code{YaTeX-help-file}.  Usually, the
yuuji@20: global help file should be located in public space (@code{$EMACSEXECPATH}
yuuji@20: by default) and should be world writable so that anyone can update it to
yuuji@20: enrich its contents.  The latter file contains descriptions on
yuuji@20: non-standard or personal command definitions and is specified by
yuuji@20: @code{YaTeX-help-file-private}.  This file should be put into private
yuuji@20: directory.
yuuji@20: 
yuuji@20: @section Online apropos
yuuji@20: 
yuuji@20:   `Online  apropos' is an  equivalent  of GNU Emacs's apropos.  It
yuuji@20: shows all the documentations that contains  the keyword entered by
yuuji@20: the user.
yuuji@20: 
yuuji@20: @section When no descriptions are found...
yuuji@20: 
yuuji@20:   If there is no description  on a command   in help files,  YaTeX
yuuji@20: requires you to  write a description on  that command.  If you are
yuuji@20: willing  to  do, determine  which help file  to add and  write the
yuuji@20: description on it referring  your manual of (La)TeX.  Please  send
yuuji@20: me your additional descriptions if you  describe  the help on some
yuuji@20: standard commands.   I might  want    to include it  in   the next
yuuji@20: distribution.
yuuji@20: 
yuuji@53: @node Browsing file hierarchy, Cooperation with other packages, Online help, Top
yuuji@53: @comment  node-name,  next,  previous,  up
yuuji@53: @chapter Browsing file hierarchy
yuuji@53: @cindex hierarchy
yuuji@53: @cindex browsing
yuuji@53: 
yuuji@53:   When you are editing multi-file source, typing
yuuji@53: 
yuuji@53: @table @kbd
yuuji@53: @item [prefix] d
yuuji@53:         @dots{} browse file hierarchy
yuuji@53: @end table
yuuji@53: 
yuuji@53: @noindent
yuuji@53: asks you the parent-most file (which may be defaulted) and displays the
yuuji@53: documentation hierarchy in the next window.  In this buffer, the following
yuuji@53: commands are available.
yuuji@53: 
yuuji@53: @table @kbd
yuuji@53: @item n
yuuji@53:         @dots{} move to the next line and show its contents
yuuji@53: @item p
yuuji@53:         @dots{} move to the previous line and show its contents
yuuji@53: @item N
yuuji@53:         @dots{} move to the next file in the same inclusion level
yuuji@53: @item P
yuuji@53:         @dots{} move to the previous file in the same inclusion level
yuuji@53: @item j
yuuji@53:         @dots{} move to the next line
yuuji@53: @item k
yuuji@53:         @dots{} move to the previous line
yuuji@53: @item u
yuuji@53:         @dots{} move to the parent file
yuuji@53: @item .
yuuji@53:         @dots{} show the current files contents in the next window
yuuji@53: @item SPC
yuuji@53:         @dots{} scroll up the current file window
yuuji@53: @item DEL, b
yuuji@53:         @dots{} scroll down the current file window
yuuji@53: @item <
yuuji@53:         @dots{} show the beginning of the current file
yuuji@53: @item >
yuuji@53:         @dots{} show the end of the current file
yuuji@53: @item >
yuuji@53:         @dots{} return to the previous postion after @kbd{<} or @kbd{>}
yuuji@53: @item RET, g
yuuji@53:         @dots{} open the current file in the next window
yuuji@53: @item mouse-2
yuuji@53:         @dots{} same as RET(available only with window system)
yuuji@53: @item o
yuuji@53:         @dots{} other window
yuuji@53: @item 1
yuuji@53:         @dots{} delete other windows
yuuji@53: @item -
yuuji@53:         @dots{} shrink hierarchy buffer window
yuuji@53: @item +
yuuji@53:         @dots{} enlarge hierarchy buffer window
yuuji@53: @item ?
yuuji@53:         @dots{} describe mode
yuuji@53: @item q
yuuji@53:         @dots{} quit
yuuji@53: @end table
yuuji@53: 
yuuji@53:   Note that operations on the file contents in the next window do not work 
yuuji@53: correctly when you close the corresponding file.
yuuji@53: 
yuuji@53: @node Cooperation with other packages, Customizations, Browsing file hierarchy, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter Cooperation with other packages
yuuji@20: 
yuuji@20:   YaTeX works better with other brilliant packages.
yuuji@20: 
yuuji@20: @section gmhist
yuuji@20: @cindex gmhist
yuuji@20: @cindex command history
yuuji@20: @cindex minibuffer history
yuuji@20: 
yuuji@20:   When you are loading @file{gmhist.el} and @file{gmhist-mh.el}, you can
yuuji@20: use independent command history list at the prompt of preview command
yuuji@20: (@kbd{[prefix] tp}) and print command (@kbd{[prefix] tl}).  On each
yuuji@20: prompt, you can enter the previous command line string repeatedly by
yuuji@20: typing @kbd{M-p}.
yuuji@20: 
yuuji@20: @section min-out
yuuji@20: @cindex min-out
yuuji@20: 
yuuji@20:   @file{min-out}, the outline minor mode,  can  be used in yatex-mode
yuuji@20: buffers.  If you want to use it with YaTeX, please refer the
yuuji@20: file @file{yatexm-o.el} as an example.
yuuji@20: 
yuuji@20: @node Customizations, Etcetera, Cooperation with other packages, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter Customizations
yuuji@20: @cindex customizations
yuuji@20: 
yuuji@20:   You can customize YaTeX by setting Emacs-Lisp variables and by making
yuuji@20: add-in functions.
yuuji@20: 
yuuji@20: @menu
yuuji@471: * Lisp variables::
yuuji@471: * Add-in functions::
yuuji@471: * Add-in generator::
yuuji@20: @end menu
yuuji@20: 
yuuji@33: @node Lisp variables, Add-in functions, Customizations, Customizations
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section Lisp variables
yuuji@20: @cindex customizable variables
yuuji@20: 
yuuji@60:   You can change the key assignments or make completion more comfortable
yuuji@60: by setting the values of various variables which control the movement of
yuuji@60: yatex-mode.
yuuji@20: 
yuuji@20:   For example, if you want to change the prefix key stroke from @kbd{C-c}
yuuji@20: to any other sequence, set YaTeX-prefix to whatever you want to use.  If
yuuji@20: you don't want to use the key sequence @kbd{C-c letter} which is assumed
yuuji@20: to be the user reserved sequence in Emacs world, set
yuuji@20: @code{YaTeX-inhibit-prefix-letter} to @code{t}, and all of the default key
yuuji@20: bind of @kbd{C-c letter} will turn to the corresponding @kbd{C-c C-letter}
yuuji@20: (but the region based completions that is invoked with @kbd{C-c
yuuji@20: Capital-letter} remain valid, if you want to disable those bindings, set
yuuji@20: that variable to 1 instead of @code{t}).
yuuji@20: 
yuuji@20: @menu
yuuji@471: * All customizable variables::
yuuji@471: * Sample definitions::
yuuji@471: * Hook variables::
yuuji@471: * Hook file::
yuuji@20: @end menu
yuuji@20: 
yuuji@33: @node All customizable variables, Sample definitions, Lisp variables, Lisp variables
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @subsection All customizable variables
yuuji@20: @cindex all customizable variables
yuuji@20: 
yuuji@20:   Here are the customizable variables of yatex-mode.  Each value setq-ed
yuuji@20: in @file{~/.emacs} is preferred and that of defined in @file{yatex.el} is
yuuji@49: neglected.  Parenthesized contents stands for the default value.  When you
yuuji@49: are to change some of these variables,  see more detailed documentation of
yuuji@49: the variable by @kbd{M-x describe-variable}.
yuuji@20: 
yuuji@79: @defvar YaTeX-japan
yuuji@79: Set this nil to produce all messages in English
yuuji@79: (@code{Depends on Japanese feature of Emacs})
yuuji@79: @end defvar
yuuji@79: 
yuuji@79: @defvar YaTeX-kanji-code
yuuji@79: Default buffer-file-coding-system for YaTeX modes' buffer.
yuuji@79: Set this 0 to no language conversion.  Nil to preserve original 
yuuji@118: coding-system. 1=Shift JIS, 2=JIS, 3=EUC, 4=UTF-8 (@code{1 or 2})
yuuji@79: @end defvar
yuuji@79: 
yuuji@46: @defvar YaTeX-prefix
yuuji@60: Prefix key stroke (@kbd{C-c})
yuuji@46: @end defvar
yuuji@20: 
yuuji@46: @defvar YaTeX-inhibit-prefix-letter
yuuji@60: Change key stroke from @kbd{C-c letter} to @kbd{C-c C-letter} (@code{nil})
yuuji@46: @end defvar
yuuji@20: 
yuuji@46: @defvar YaTeX-fill-prefix
yuuji@60: Fill-prefix used in yatex-mode (@code{nil})
yuuji@46: @end defvar
yuuji@20: 
yuuji@46: @defvar YaTeX-user-completion-table
yuuji@60: Name of user dictionary where learned completion table will be stored. 
yuuji@60: (@code{"~/.yatexrc"})
yuuji@60: @end defvar
yuuji@60: 
yuuji@60: @defvar tex-command
yuuji@60: La@TeX{} typesetter command (@code{"latex"})
yuuji@60: @end defvar
yuuji@60: 
yuuji@60: @defvar dvi2-command
yuuji@60: Preview command (@code{"xdvi -geo +0+0 -s 4"})
yuuji@60: @end defvar
yuuji@60: 
yuuji@60: @defvar dviprint-command-format
yuuji@60: Command format to print dvi file (@code{"dvi2ps %f %t %s | lpr"})
yuuji@60: @end defvar
yuuji@60: 
yuuji@60: @defvar dviprint-from-format
yuuji@60: Start page format of above %f. %b will turn to start page (@code{"-f %b"})
yuuji@60: @end defvar
yuuji@60: 
yuuji@60: @defvar dviprint-to-format
yuuji@60: End page format of above %t. %e will turn to @code{end} page (@code{"-t %e"})
yuuji@60: @end defvar
yuuji@60: 
yuuji@60: @defvar makeindex-command
yuuji@60: Default makeindex command (@code{"makeindex"} (@code{"makeind"} on MS-DOS))
yuuji@60: @end defvar
yuuji@60: 
yuuji@126: @defvar YaTeX-dvipdf-command
yuuji@126: Default command name to convert .dvi to PDF (@code{"dvipdfmx"})
yuuji@126: @end defvar
yuuji@126: 
yuuji@379: @defvar YaTeX-on-the-fly-preview-interval
yuuji@379: Interval time in seconds of idle to trigger on-the-fly preview of
yuuji@379: environment by @kbd{[prefix] t e}(0.9).
yuuji@379: @code{Nil} disables on-the-fly preview.
yuuji@379: @end defvar
yuuji@379: 
yuuji@392: @defvar YaTeX-on-the-fly-math-preview-engine
yuuji@392: Function symbol to use on-the-fly preview of MATH environment
yuuji@392: started by @kbd{[prefix] t e} (@code{'YaTeX-typeset-environment-by-lmp}
yuuji@392: which calls latex-math-preview-expression function if latex-math-preview
yuuji@392: is available, otherwise @code{'YaTeX-typeset-environment-by-builtin} which
yuuji@392: alls built-in function).
yuuji@392: 
yuuji@392: @code{Nil} disables on-the-fly preview.
yuuji@392: @end defvar
yuuji@392: 
yuuji@336: @defvar YaTeX-cmd-gimp
yuuji@336: Command name of GIMP (code{"gimp"})
yuuji@336: @end defvar
yuuji@336: @defvar YaTeX-cmd-tgif
yuuji@336: Command name of tgif (code{"tgif"})
yuuji@336: @end defvar
yuuji@336: @defvar YaTeX-cmd-inkscape
yuuji@336: Command name of Inkscape (code{"inkscape"})
yuuji@336: @end defvar
yuuji@336: @defvar YaTeX-cmd-dia
yuuji@336: Command name of Dia (code{"dia"})
yuuji@336: @end defvar
yuuji@336: @defvar YaTeX-cmd-ooo
yuuji@336: Command name of OpenOffice.org/LibreOffice (code{"soffice"})
yuuji@336: @end defvar
yuuji@336: @defvar YaTeX-cmd-gs
yuuji@336: Command name of Ghostscript (code{"gs"})
yuuji@336: @end defvar
yuuji@363: @defvar YaTeX-cmd-dvips
yuuji@363: Command name of dvips (code{"dvips"})
yuuji@363: @end defvar
yuuji@363: @defvar YaTeX-cmd-displayline
yuuji@363: Command name of displayline
yuuji@363: (code{"/Applications/Skim.app/Contents/SharedSupport/displayline"})
yuuji@363: @end defvar
yuuji@336: @defvar YaTeX-cmd-edit-ps
yuuji@336: Command name for editing PostScript files(Value of code{"YaTeX-cmd-gimp"})
yuuji@336: @end defvar
yuuji@336: @defvar YaTeX-cmd-edit-pdf
yuuji@336: Command name for editing PDF files(Value of code{"YaTeX-cmd-ooo"})
yuuji@336: @end defvar
yuuji@336: @defvar YaTeX-cmd-edit-ai
yuuji@336: Command name for editing `.ai' files(Value of code{"YaTeX-cmd-inkscape"})
yuuji@336: @end defvar
yuuji@336: @defvar YaTeX-cmd-edit-svg
yuuji@336: Command name for editing SVG files(Value of code{"YaTeX-cmd-inkscape"})
yuuji@336: @end defvar
yuuji@336: @defvar YaTeX-cmd-edit-images
yuuji@336: Command name for editing image files(Value of code{"YaTeX-cmd-gimp"})
yuuji@336: @end defvar
yuuji@336: 
yuuji@60: @defvar YaTeX-need-nonstop
yuuji@60: Put @code{\nonstopmode@{@}} or not (@code{nil})
yuuji@60: @end defvar
yuuji@60: 
yuuji@60: @defvar latex-warning-regexp
yuuji@60: Regular expression of warning message latex command puts out 
yuuji@60: (@code{"line.* [0-9]*"})
yuuji@60: @end defvar
yuuji@60: 
yuuji@60: @defvar latex-error-regexp
yuuji@60: Regular expression of error message (@code{"l\\.[1-9][0-9]*"})
yuuji@60: @end defvar
yuuji@60: 
yuuji@60: @defvar latex-dos-emergency-message
yuuji@60: Message latex command running on DOS puts at abort (@code{"Emergency stop"})
yuuji@46: @end defvar
yuuji@20: 
yuuji@46: @defvar YaTeX-item-regexp
yuuji@60: Regular expression of item command (@code{"\\\\item"})
yuuji@46: @end defvar
yuuji@20: 
yuuji@51: @defvar YaTeX-verb-regexp
yuuji@60: Regexp of verb family.  Omit \\\\. (@code{"verb\\*?\\|path"})
yuuji@51: @end defvar
yuuji@51: 
yuuji@60: @defvar YaTeX-nervous
yuuji@60: T for using local dictionary (@code{t})
yuuji@46: @end defvar
yuuji@20: 
yuuji@46: @defvar YaTeX-sectioning-regexp
yuuji@60: Regexp of La@TeX{} sectioning command 
yuuji@60: (@code{"\\(part\\|chapter\\*?\\|\\(sub\\)*\\(section\\|paragraph\\)\\*?\\)\\b"})
yuuji@46: @end defvar
yuuji@20: 
yuuji@46: @defvar YaTeX-fill-inhibit-environments
yuuji@60: Inhibit fill in these environments 
yuuji@60: (@code{'("tabular" "tabular*" "array" "picture" "eqnarray" "eqnarray*" "equation" "math" "displaymath" "verbatim" "verbatim*")})
yuuji@46: @end defvar
yuuji@20: 
yuuji@46: @defvar YaTeX-uncomment-once
yuuji@60: T for deleting all preceding @code{%} (@code{nil})
yuuji@46: @end defvar
yuuji@20: 
yuuji@46: @defvar YaTeX-close-paren-always
yuuji@60: T for always close all parenthesis automatically, @code{nil} for only eol 
yuuji@60: (@code{t})
yuuji@46: @end defvar
yuuji@20: 
yuuji@46: @defvar YaTeX-auto-math-mode
yuuji@60: Switch math-mode automatically (@code{t})
yuuji@46: @end defvar
yuuji@20: 
yuuji@51: @defvar YaTeX-math-key-list-private
yuuji@60: User defined alist, math-mode-prefix vs completion alist
yuuji@60: used in image completion (@code{nil}).  See @file{yatexmth.el}
yuuji@60: for the information about how to define a completion alist.
yuuji@51: @end defvar
yuuji@51: 
yuuji@46: @defvar YaTeX-default-pop-window-height
yuuji@60: Initial height of typesetting buffer when one-window.
yuuji@60: Number for the lines of the buffer, numerical string for
yuuji@60: the percentage of the screen-height. @code{nil} for half height (10)
yuuji@46: @end defvar
yuuji@20: 
yuuji@46: @defvar YaTeX-help-file
yuuji@73: Global online help file name (@file{$doc-directory/../../site-lisp/YATEXHLP.eng})
yuuji@46: @end defvar
yuuji@20: 
yuuji@46: @defvar YaTeX-help-file-private
yuuji@73: Private online help file name (@file{"~/YATEXHLP.eng"})
yuuji@46: @end defvar
yuuji@20: 
yuuji@46: @defvar YaTeX-no-begend-shortcut
yuuji@60: Disable [prefix] b ?? shortcut (@code{nil)}
yuuji@46: @end defvar
yuuji@20: 
yuuji@49: @defvar YaTeX-hilit-pattern-adjustment-private
yuuji@49: List of the list that contain the regular expression and the symbol of
yuuji@49: logical meaning of the string that matches the pattern.  See also the
yuuji@49: value from @code{(assq 'yatex-mode hilit-patterns-alist)} and the value of 
yuuji@49: @code{YaTeX-hilit-pattern-adjustment-default} (and even the document of
yuuji@49: hilit19.el).
yuuji@49: @end defvar
yuuji@49: 
yuuji@49: @defvar YaTeX-sectioning-level
yuuji@49: Alist of LaTeX's sectioning command vs its height.
yuuji@49: @end defvar
yuuji@49: 
yuuji@53: @defvar YaTeX-hierarchy-ignore-heading-regexp
yuuji@53: @code{YaTeX-display-hierarchy} searches for sectioning command first, and
yuuji@53: comment line secondary as a file headings.  In latter case, ignore lines
yuuji@53: that match with regular expression of this variable.  Default value of
yuuji@53: this variable is RCS header expressions and mode specifying line `-*- xxxx 
yuuji@53: -*'.
yuuji@53: @end defvar
yuuji@53: 
yuuji@54: @defvar YaTeX-skip-default-reader
yuuji@54: Non-nil for this variable skips the default argument reader of
yuuji@60: section-type command when add-in function for it is not defined 
yuuji@60: (@code{nil})
yuuji@54: @end defvar
yuuji@54: 
yuuji@56: @defvar YaTeX-create-file-prefix-g
yuuji@56: When typing @kbd{prefix g} on the @code{\include} line,
yuuji@60: open the target file even if the file doesn't exist (@code{nil})
yuuji@56: @end defvar
yuuji@56: 
yuuji@56: @defvar YaTeX-simple-messages
yuuji@60: Simplyfy messages of various completions (@code{nil})
yuuji@56: @end defvar
yuuji@56: 
yuuji@57: @defvar YaTeX-hilit-sectioning-face
yuuji@57: When hilit19 and yatex19 is active, YaTeX colors the sectioning commands.
yuuji@57: This variable specifies the foreground and background color of
yuuji@57: @code{\part} macro.  The default value is @code{'(yellow/dodgerblue
yuuji@57: yellow/slateblue)}.  The first element of this list is for the screen when
yuuji@57: @code{hilit-background-mode} is @code{'light}, and the second element is
yuuji@57: for @code{'dark}.  You should specify both color as `forecolor/backcolor'.
yuuji@57: @end defvar
yuuji@57: 
yuuji@57: @defvar YaTeX-hilit-sectioning-attenuation-rate
yuuji@57: When color mode, this variable specifies how much attenuate the color
yuuji@60: density of @code{\subparagraph} compared with that of @code{\chapter} 
yuuji@60: (@code{'(15 40)}) See also @code{YaTeX-hilit-sectioning-face}.
yuuji@57: @end defvar
yuuji@56: 
yuuji@58: @defvar YaTeX-use-AMS-LaTeX
yuuji@60: If you use AMS-LaTeX, set to @code{t} (@code{nil})
yuuji@58: @end defvar
yuuji@56: 
yuuji@70: @defvar YaTeX-use-LaTeX2e
yuuji@73: If you use LaTeX2e, set to @code{t} (@code{t})
yuuji@70: @end defvar
yuuji@70: 
yuuji@65: @defvar YaTeX-template-file
yuuji@65: File name which is automatically inserted at creation
yuuji@65: (@code{~/work/template.tex})
yuuji@65: @end defvar
yuuji@65: 
yuuji@72: @defvar YaTeX-search-file-from-top-directory
yuuji@72: Non-nil means to search input-files from the directory where main file exists
yuuji@72: (@code{t})
yuuji@72: @end defvar
yuuji@72: 
yuuji@72: @defvar YaTeX-use-font-lock
yuuji@72: Use font-lock to fontify buffer or not (@code{(featurep 'font-lock)}
yuuji@72: @end defvar
yuuji@72: 
yuuji@72: @defvar YaTeX-use-hilit19
yuuji@72: Use hilit19 to highlight buffer or not (@code{(featurep 'hilit19)}
yuuji@72: @end defvar
yuuji@72: 
yuuji@72: @defvar YaTeX-use-italic-bold
yuuji@72: YaTeX tries to search italic, bold fontsets or not
yuuji@72: (@code{t} if Emacs-20 or later).  This variable is effective only when
yuuji@72: font-lock is used.
yuuji@72: (@code{(featurep 'hilit19)}
yuuji@72: @end defvar
yuuji@72: 
yuuji@79: @defvar YaTeX-singlecmd-suffix
yuuji@79: Suffix which is always inserted after maketitle-type macros.
yuuji@265: @code{"@{@}"} is recommended.
yuuji@79: @end defvar
yuuji@79: 
yuuji@79: @defvar YaTeX-package-alist-private
yuuji@79: Alist of LaTeX2e-package name vs. lists of macros in it.
yuuji@79: Set this alist properly and YaTeX automatically check the declaratiion of
yuuji@79: `usepackage' for corresponding macro, when you input that macro with
yuuji@79: completion.  If required `usepackage' is not found, YaTeX also
yuuji@79: automatically inserts `\usepackage'.  Alist is as follows;
yuuji@79: @lisp
yuuji@79:    '((PackageName1
yuuji@79:         (completionType ListOfMacro)
yuuji@79:         (completionType ListOfMacro))
yuuji@79:      (PackageName2
yuuji@79:         (completionType ListOfMacro)
yuuji@79:         (completionType ListOfMacro...))....)
yuuji@79: @end lisp
yuuji@79: completionType is one of @code{env, section, maketitle}.
yuuji@79: Consult the value of @code{YaTeX-package-alist-default} as an example.
yuuji@79: @end defvar
yuuji@72: 
yuuji@80: @defvar YaTeX-tabular-indentation
yuuji@80: At indentation by @kbd{C-i} in tabular or array environment, 
yuuji@80: YaTeX put the additional spaces to the normail indentation depth.
yuuji@80: The number of additional spaces is the product of YaTeX-tabular-indentation
yuuji@80: and the number of column position in tabular.
yuuji@80: @end defvar
yuuji@80: 
yuuji@80: @defvar YaTeX-noindent-env-regexp
yuuji@80: Regexp of environment names that should begin with no indentation.
yuuji@80: All verbatime-like environment name should match with.
yuuji@80: @end defvar
yuuji@80: 
yuuji@409: @defvar YaTeX-electric-indent-mode
yuuji@409: Emacs 24.4 introduces automatic indentation of current and new lines.
yuuji@409: This might be annoying for some people.  Pass this value to the function
yuuji@409: 'electric-indent-local-mode.  If you prefer to stop electric-indent-mode
yuuji@409: in yatex-mode, set `-1' to this variable.
yuuji@409: @end defvar
yuuji@409: 
yuuji@80: @defvar YaTeX-ref-default-label-string
yuuji@80: Default \\ref time string format.
yuuji@80: This format is like strftime(3) but allowed conversion char are as follows;
yuuji@80: %y -> Last 2 digit of year,  %b -> Month name,  %m -> Monthe number(1-12),
yuuji@80: %d -> Day,  %H -> Hour,  %M -> Minute,  %S -> Second,
yuuji@80: %qx -> alphabetical-decimal conversion of yymmdd.
yuuji@80: %qX -> alphabetical-decimal conversion of HHMMSS.
yuuji@80: Beware defualt label-string should be always unique.  So this format string
yuuji@80: should have both time part (%H+%M+%S or %qX) and date
yuuji@80: part (%y+(%b|%m)+%d or %qx).
yuuji@80: @end defvar
yuuji@80: 
yuuji@80: @defvar YaTeX-ref-generate-label-function
yuuji@265: Function to generate default label string for unnamed \\label@{@}s.
yuuji@80: The function pointed to this value should take two arguments.
yuuji@80: First argument is LaTeX macro's name, second is macro's argument.
yuuji@80: Here is an example for using this value.
yuuji@80: @lisp
yuuji@80:   (setq YaTeX-ref-generate-label-function 'my-yatex-generate-label)
yuuji@80:   (defun my-yatex-generate-label (command value)
yuuji@80:     (and (string= command "caption")
yuuji@265:          (re-search-backward "\\\\begin@{\\(figure\\|table\\)@}" nil t)
yuuji@80:          (setq command (match-string 1)))
yuuji@80:     (let ((alist '(("chapter" . "chap")
yuuji@80:                    ("section" . "sec")
yuuji@80:                    ("subsection" . "subsec")
yuuji@80:                    ("figure" . "fig")
yuuji@80:                    ("table" . "tbl"))))
yuuji@80:       (if (setq command (cdr (assoc command alist)))
yuuji@80:           (concat command ":" value)
yuuji@80:         (YaTeX::ref-generate-label nil nil))))
yuuji@80: @end lisp
yuuji@80: @end defvar
yuuji@80: 
yuuji@80: 
yuuji@20: @node Sample definitions, Hook variables, All customizable variables, Lisp variables
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @subsection Sample definitions
yuuji@20: @cindex prefix key stroke
yuuji@20: @cindex fill-prefix
yuuji@20: 
yuuji@20:  For instance, to change the prefix key stroke to @kbd{ESC}, and name of
yuuji@20: the user dictionary @file{~/src/emacs/yatexrc}, and set @code{fill-prefix}
yuuji@20: to single TAB character, add the following @code{setq} to @file{~/.emacs}.
yuuji@20: 
yuuji@20: @lisp
yuuji@46:         (setq YaTeX-prefix "\e"
yuuji@46:               YaTeX-user-completion-table "~/src/emacs/yatexrc"
yuuji@46:               YaTeX-fill-prefix "       ")
yuuji@20: @end lisp
yuuji@20: 
yuuji@20: @node Hook variables, Hook file, Sample definitions, Lisp variables
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @subsection Hook variables
yuuji@20: @cindex hook variables
yuuji@20: 
yuuji@20:   More customizations will be done by the hook-function defined in
yuuji@20: hook-variable @code{yatex-mode-hook}.  This is useful to define a shortcut
yuuji@20: key sequence to enter some environments other than @code{document} and
yuuji@20: @code{enumerate} etc.  The following statement defines @code{[prefix] ba}
yuuji@20: to enter @code{\begin@{abstract@}} ...  @code{=end@{abstract@}}
yuuji@20: immediately.
yuuji@20: 
yuuji@20: @lisp
yuuji@46:         (setq yatex-mode-hook
yuuji@46:               '(lambda() (YaTeX-define-begend-key "ba" "abstract")))
yuuji@20: @end lisp
yuuji@20: 
yuuji@46:         You should use functions @code{YaTeX-define-key}, or
yuuji@46: @code{YaTeX-define-begend-key}  to define all the key sequences of
yuuji@20: yatex-mode.
yuuji@20: 
yuuji@20: @node Hook file,  , Hook variables, Lisp variables
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @subsection Hook file
yuuji@20: @cindex hook file
yuuji@20: 
yuuji@58:   You can stuff all of YaTeX related expressions into a file named
yuuji@20: @file{yatexhks.el} if you have a lot of codes.  YaTeX automatically load
yuuji@20: this file at the initialization of itself.  Using @file{yatexhks.el}
yuuji@20: makes @code{yatex-mode-load-hook} unnecessary.
yuuji@20: 
yuuji@49: @node Add-in functions, Add-in generator, Lisp variables, Customizations
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @section Add-in functions
yuuji@20: @cindex add-in functions
yuuji@49: @cindex yatexadd.el
yuuji@20: 
yuuji@20:   You can easily  define  a function to input  detailed  arguments
yuuji@49: with completion according  to La@TeX{} environments  or commands. 
yuuji@20: 
yuuji@49: @c @node What is add-in functions?,  , Add-in functions, Add-in functions
yuuji@49: @comment  node-name,  next,  previous,  up
yuuji@49: @subsection What is add-in functions?
yuuji@49: @cindex tabular
yuuji@49: 
yuuji@49:   When you input @code{tabular} environment, don't you think ``I want
yuuji@49: YaTeX to complete its argument toward my favorite one such as
yuuji@49: @code{@{|c|c|c|@}}...''?  Yes, you can define the function to complete
yuuji@49: arguments for any environment and any La@TeX{} commands.
yuuji@49: 
yuuji@49: @subsection Procedure
yuuji@49: 
yuuji@49:   Here is the procedure to define add-in functions.
yuuji@49: @enumerate
yuuji@49: @item
yuuji@49: Define the function
yuuji@49: @item
yuuji@49: Put the function into @file{yatexhks.el}
yuuji@49: @end enumerate
yuuji@49: 
yuuji@49: @menu
yuuji@471: * How the add-in function works::
yuuji@471: * How the function is called::
yuuji@471: * Useful functions for creating add-in::
yuuji@471: * Contribution::
yuuji@49: @end menu
yuuji@49: 
yuuji@58: @node How the add-in function works, How the function is called, Add-in functions, Add-in functions
yuuji@49: @comment  node-name,  next,  previous,  up
yuuji@58: @subsection How the add-in function works
yuuji@49: 
yuuji@79: There are three types of add-in.
yuuji@79: 
yuuji@79: @enumerate
yuuji@79: @item
yuuji@79: Option add-in
yuuji@79: @item
yuuji@79: argument add-in
yuuji@79: @item
yuuji@79: enclosing add-in
yuuji@79: @end enumerate
yuuji@79: 
yuuji@79: @dfn{Option add-in} returns the
yuuji@49: La@TeX{}'s optional parameters such as optional strings after
yuuji@49: @code{\begin@{ENV@}}, optional strings between a section-type command
yuuji@49: and its first argument, and optional strings just after type
yuuji@49: maketitle-type command.  The following illustrates the name of add-in
yuuji@49: functions, where underlined strings are generated by add-in functions.
yuuji@49: 
yuuji@49: @display
yuuji@70: \begin@{table@}[ht]		(Function name: YaTeX:table)
yuuji@49:              ~~~~
yuuji@70: \put(100,200)@{@}		(Function name: YaTeX:put)
yuuji@49:     ~~~~~~~~~
yuuji@70: \sum_@{i=0@}^@{n@}		(Function name: YaTeX:sum)
yuuji@49:     ~~~~~~~~~~
yuuji@49: @end display
yuuji@49: 
yuuji@49:   Obviously, the function name is decided by concatenating the prefix
yuuji@49: `YaTeX:' and La@TeX{} command's name.
yuuji@49: 
yuuji@49:   Another add-in type is @dfn{argument add-in}, which completes arguments
yuuji@49: for section-type commands.
yuuji@49: 
yuuji@49: @display
yuuji@70: \newcommand@{\foo@}@{bar@}	(Function name: YaTeX::newcommand)
yuuji@49:             ~~~~  ~~~
yuuji@49: @end display
yuuji@49: 
yuuji@49:   When the section-type command is inputted, the function named by
yuuji@49: concatenating `YaTeX::' and section-type command, is called automatically
yuuji@49: with an integer argument which indicates which argument of section-type
yuuji@49: command is being read.  Thus the add-in should determine the
yuuji@51: job referring the value of its argument.
yuuji@49: 
yuuji@79:   @dfn{enclosing add-in} is for modifying and/or checking the region that
yuuji@79: will be enclosed by section-type commands via @kbd{[prefix] S}.  An
yuuji@79: enclosing add-in function will be called with two arguments, beginning of
yuuji@79: the enclosed region and end of the region.  Suppose you want to enclose
yuuji@265: the existing text @code{(a+b)/c} by @code{\frac@{@}}.
yuuji@79: 
yuuji@79: @display
yuuji@79: a/c
yuuji@79: |  |
yuuji@79: A  B
yuuji@79: @end display
yuuji@79: 
yuuji@79: You do set-mark-command at point A and then move to point B.  Typing
yuuji@79: @kbd{[prefix] S} and input @code{frac} enclose the region like this;
yuuji@79: 
yuuji@79: @display
yuuji@265: \frac@{a/c@}
yuuji@79: @end display
yuuji@79: 
yuuji@79: Normally, the expression @code{a/c} is translated to
yuuji@79: @code{\frac@{a@}@{c@}}. An enclosing add-in is useful for modifying
yuuji@79: @code{/} to @code{@}@{}.
yuuji@79: 
yuuji@49: @menu
yuuji@471: * Defining option-add-in::
yuuji@471: * Defining argument-add-in::
yuuji@471: * Defining enclosing-add-in::
yuuji@49: @end menu
yuuji@49: 
yuuji@68: @node Defining option-add-in, Defining argument-add-in, How the add-in function works, How the add-in function works
yuuji@49: @comment  node-name,  next,  previous,  up
yuuji@49: @subsubsection Defining `option add-in'
yuuji@49: 
yuuji@49:   If you want @code{@{|c|c|c|@}} for all @code{tabular} environment,
yuuji@49: 
yuuji@49: @lisp
yuuji@49:         (defun YaTeX:tabular ()
yuuji@70:           "@{|c|c|c|@}")
yuuji@49: @end lisp
yuuji@49: 
yuuji@49: @noindent
yuuji@49: is enough.  If you want more complicated format, define as below.
yuuji@49: 
yuuji@49: @lisp
yuuji@49:         (defun YaTeX:tabular ()
yuuji@49:           "@{@@@{\\vrule width 1pt\\ @}|||@@@{\\ \\vrule width 1pt@}@}")
yuuji@49: @end lisp
yuuji@49: 
yuuji@49: @noindent
yuuji@49: Note that the character @code{\} must be described as @code{\\} in
yuuji@49: Emacs-Lisp.  The next example reads the tabular format from keyboard.
yuuji@49: @lisp
yuuji@49:         (defun YaTeX:tabular ()
yuuji@70:           (concat "@{" (read-string "Rule: ") "@}"))
yuuji@49: @end lisp
yuuji@49: 
yuuji@79: @node Defining argument-add-in, Defining enclosing-add-in, Defining option-add-in, How the add-in function works
yuuji@49: @comment  node-name,  next,  previous,  up
yuuji@49: @subsubsection Defining `argument add-in'
yuuji@49: 
yuuji@49:   This section describes how to define the add-in function for
yuuji@49: @code{\newcommand}.
yuuji@49: 
yuuji@49:   The first argument of @code{\newcommand} begins always with @code{\}.
yuuji@49: The second argument is usually so complex that we can not edit them in the 
yuuji@49: minibuffer.  Here is the created function considering this.
yuuji@49: 
yuuji@49: @lisp
yuuji@49:         (defun YaTeX::newcommand (n)	;n is argument position
yuuji@49:           (cond
yuuji@49:            ((= n 1)			;1st argument is macro name
yuuji@49:             (read-string "Command: " "\\")) ;initial input `\' 
yuuji@49:            ((= n 2) "")			;do nothing when reading arg#2
yuuji@49:            (t nil)))
yuuji@49: @end lisp
yuuji@49: 
yuuji@49:   Note that when the `argument add-in' function return `nil', normal
yuuji@49: argument reader will be called.
yuuji@49: 
yuuji@79: @node Defining enclosing-add-in,  , Defining argument-add-in, How the add-in function works
yuuji@79: @comment  node-name,  next,  previous,  up
yuuji@79: @subsubsection Defining `enclosing add-in'
yuuji@79: 
yuuji@79:   This section describes how to define the add-in function for
yuuji@79: text enclosed by @code{\frac@{@}}.
yuuji@79: 
yuuji@79:   When enclosing the text @code{5/3} by @code{\frac@{@}}, you might want to
yuuji@79: replace @code{/} with @code{@}@{}.  Enclosing function
yuuji@79: @code{YaTeX::frac-region} is called with two arguments, beginning of
yuuji@79: enclosed text and end of enclosed text.  The function is expected to
yuuji@79: replace @code{/} with @code{@}@{}.  Here is an example expression.
yuuji@79: 
yuuji@79: @lisp
yuuji@79: (defun YaTeX::frac-region (beg end)
yuuji@79:   (catch 'done
yuuji@79:     (while (search-forward "/" end t)
yuuji@79:       (goto-char (match-beginning 0))
yuuji@269:       (if (y-or-n-p "Replace this slash(/) with `@}@{'")
yuuji@269: 	  (throw 'done (replace-match "@}@{")))
yuuji@79:       (goto-char (match-end 0)))))
yuuji@79: @end lisp
yuuji@79: 
yuuji@58: @node How the function is called, Useful functions for creating add-in, How the add-in function works, Add-in functions
yuuji@49: @comment  node-name,  next,  previous,  up
yuuji@49: @subsection How the function is called
yuuji@49: 
yuuji@49:   YaTeX calls the add-in functions for specified begin-type, section-type,
yuuji@49: and maketitle-type command, if any.  `Option add-in' functions for
yuuji@49: begin-type are called when @code{\begin@{ENV@}} has been inserted,
yuuji@49: functions for section-type are called just before input of the first
yuuji@49: argument, and functions for maketitle-type is called after maketitle-type
yuuji@49: command has been inserted.  `Argument add-in' functions are called at each
yuuji@49: entry of arguments for section-type commands.
yuuji@49: 
yuuji@49: @node Useful functions for creating add-in, Contribution, How the function is called, Add-in functions
yuuji@49: @comment  node-name,  next,  previous,  up
yuuji@49: @subsection Useful functions for creating add-in
yuuji@49: 
yuuji@49:   Many add-in functions for typical La@TeX{} commands are defined in
yuuji@49: @file{yatexadd.el}.  Those are also useful as references.  Here are the
yuuji@49: short descriptions on useful functions, where [F] means function, [A]
yuuji@49: means arguments, [D] means description.
yuuji@49: 
yuuji@69: @table @kbd
yuuji@49: @item [F]
yuuji@49: YaTeX:read-position
yuuji@49: @itemx [A]
yuuji@49: Character list which can show up in the brackets
yuuji@49: @itemx [D]
yuuji@49:    Return the location specifier such as `[htb]'.  When
yuuji@49: nothing is entered, omit [] itself.  If the possible characters
yuuji@49: are "htbp", call this function as
yuuji@49: @code{(YaTeX:read-position "htbp")}
yuuji@49: 
yuuji@49: @item [F]
yuuji@49: YaTeX:read-coordinates
yuuji@49: @itemx [A]
yuuji@49: Base prompt, X-axis prompt, Y-axis prompt     (each optional)        
yuuji@49: @itemx [D]
yuuji@51:   Read the coordinates with the prompt ``BasePrompt X-axisPrompt:'' for
yuuji@49: X-axis, ``BasePrompt Y-axisPrompt:'' for Y-axis, and return it in the form 
yuuji@51: of ``(X,Y)''.  The default prompts are @code{Dimension}, @code{X},
yuuji@49: @code{Y} respectively.
yuuji@49: 
yuuji@49: @item [F]
yuuji@51: YaTeX:check-completion-type
yuuji@49: @itemx [A]
yuuji@49: One of the symbols: 'begin, 'section, or 'maketitle
yuuji@49: @itemx [D]
yuuji@49:   Check the current completion type is specified one and cause error if
yuuji@49: not. The variable @code{YaTeX-current-completion-type} holds the symbol
yuuji@49: according to the current completion type.
yuuji@69: @end table
yuuji@49: 
yuuji@49: @node Contribution,  , Useful functions for creating add-in, Add-in functions
yuuji@49: @comment  node-name,  next,  previous,  up
yuuji@49: @subsection Contribution
yuuji@49: 
yuuji@49:   If you make your own pretty function and you let it be in public, please 
yuuji@49: send me the function.  I'm going to include it in the next release.
yuuji@49: 
yuuji@49: @node Add-in generator,  , Add-in functions, Customizations
yuuji@49: @comment  node-name,  next,  previous,  up
yuuji@49: @section Add-in generator
yuuji@49: 
yuuji@49:   First, don't forget to read the section of add-in functions @ref{Add-in
yuuji@49: functions}.  If you easily understand how to define them, there's no need
yuuji@49: to read this section.  But being not familiar with Emacs-Lisp, when you
yuuji@49: don't have clear idea what to do, this section describes how to get YaTeX
yuuji@49: make add-in function.
yuuji@49: 
yuuji@49:   There are two methods of generation.  One is for fully interactive
yuuji@49: generator for beginners and another requires little knowledge of
yuuji@49: Emacs-Lisp.
yuuji@49: 
yuuji@49: @subsection Generator for beginners
yuuji@49:   The former generator is called by
yuuji@49: @center @kbd{M-x YaTeX-generate}
yuuji@49: 
yuuji@49: @noindent
yuuji@49: strokes.  All you have to do is follow the guidances.  Defying them may cases 
yuuji@49: the disaster (I wonder what is it???).  So when you make some mistake, it
yuuji@49: is recommendable to type @kbd{C-g} and start afresh.
yuuji@49: 
yuuji@49: @subsection Simple generator
yuuji@49: 
yuuji@49:   The latter generator is invoked by the next sequence.
yuuji@49: @center @kbd{M-x YaTeX-generate-simple}
yuuji@49: This generator can make both ``option add-in'' and ``argument add-in''
yuuji@49: (@emph{refer the section add-in functions}
yuuji@68: @ref{How the add-in function works}), whereas @code{YaTeX-generate}
yuuji@49: cannot make ``argument addin''.
yuuji@49: 
yuuji@49:   For example, assume you have the LaTeX command as follows.
yuuji@49: 
yuuji@49: @example
yuuji@70: 	\epsinput[t](250,50)@{hoge.eps@}@{plain@}@{Picture of foo@}
yuuji@49: 	         (A)  (B)     (1)      (2)      (3)
yuuji@49: 	(A)Optional parameter to specify the position
yuuji@49: 	   One of t(top), b(bottom), l(left), r(right)
yuuji@49: 	(B)Maximum size of frame
yuuji@49: 	(1)1st argument is filename of EPS file
yuuji@49: 	(2)2nd argument indicates
yuuji@49: 		plain		do nothing
yuuji@49: 		frame		make frame around image
yuuji@49: 		dframe		make double-frame around image
yuuji@49: 	   for included EPS file.
yuuji@49: 	(3)Caption for the picture
yuuji@49: @end example
yuuji@49: 
yuuji@49:   Now get start with generation.  Typing @kbd{M-x YaTeX-generate-simple}
yuuji@49: brings the prompt:
yuuji@49: @display
yuuji@49:                 (O)ption? (A)rgument?
yuuji@49: @end display
yuuji@49: 
yuuji@49: @subsubsection Generating ``option add-in''
yuuji@49: @cindex option add-in
yuuji@49: 
yuuji@49:   Since (A), (B) above are optional argument, all we have to do to
yuuji@49: complete them is define the option add-in for them.  Let's generate the
yuuji@49: function to complete (A).
yuuji@49: 
yuuji@49: @display
yuuji@49:                 M-x YaTeX-generate-simple RET
yuuji@49:                 epsinput RET
yuuji@49:                 o
yuuji@49: @end display
yuuji@49: 
yuuji@49: @noindent
yuuji@49: Typing as above leads the next prompt.
yuuji@49: 
yuuji@49: @display
yuuji@49: Read type(1): (S)tring (C)omplete (F)ile ([)option (P)osition co(O)rd. (q)uit
yuuji@49: @end display
yuuji@49: 
yuuji@49: @noindent
yuuji@49:   This asks that ``Which type is the completion style of 1st argument?''.
yuuji@49: Here are the possible completion style.
yuuji@49: 
yuuji@49: @table @code
yuuji@49: @item String
yuuji@49: read plain string
yuuji@49: @item Complete
yuuji@49: read with completion
yuuji@49: @item File
yuuji@49: read file name
yuuji@49: @item Option
yuuji@49: read optional string (if string omitted, omit [] too)
yuuji@49: @item Position
yuuji@49: read positional option (like [htbp])
yuuji@49: @item Coord.
yuuji@51: read coordinates
yuuji@49: @item Quit
yuuji@51: quit from generating
yuuji@49: @end table
yuuji@49: 
yuuji@49:   Since (A) is the optional argument to specify the location of included
yuuji@49: EPS file, the completion style is @code{Position}, and the possible
yuuji@49: characters are t, b, l, and r.  To tell these information to generator,
yuuji@49: operate as follows.
yuuji@49: 
yuuji@49: @display
yuuji@49:                 Read type(1).... 		p
yuuji@49:                 Acceptable characters:		tblr RET
yuuji@49: @end display
yuuji@49: 
yuuji@49:   (B) is coordinate.  So its completion style is coOrd.  We want a prompt
yuuji@49: meaning ``Maximum size'' when completion.
yuuji@49: 
yuuji@49: @display
yuuji@49:                 Read type(2)....		o
yuuji@49:                 Prompt for coordinates:		Max size RET
yuuji@49: @end display
yuuji@49: 
yuuji@49:   That's all for optional argument.  Select quit.
yuuji@49: 
yuuji@49: @display
yuuji@49:                 Read type(3)....		q
yuuji@49: @end display
yuuji@49: 
yuuji@49:   Then the generated option add-in function for \epsinput will be shown in
yuuji@49: the next window.
yuuji@49: 
yuuji@49: @subsubsection Generating ``argument add-in''
yuuji@49: @cindex argument add-in
yuuji@49: 
yuuji@49:   Next, create the argument add-in.  The arguments for \epsinput are EPS
yuuji@49: file name, framing style, and caption string in sequence.
yuuji@49: 
yuuji@49: @display
yuuji@49:                 M-x YaTeX-generate-simple RET
yuuji@49:                 epsinput RET
yuuji@49:                 a
yuuji@49: @end display
yuuji@49: 
yuuji@49:   Above key strokes bring the prompt that asks the number of argument.
yuuji@49: Answer it with 3.
yuuji@49: 
yuuji@49: @display
yuuji@49:                 How many arguments?: 3 RET
yuuji@49: @end display
yuuji@49: 
yuuji@49:   Then the generator asks the completion style and prompt for completion.
yuuji@49: Answer them.  @kbd{f} for FileName and prompt string.
yuuji@49: 
yuuji@49: @display
yuuji@49:                 Read type(1)....		f
yuuji@49:                 Prompt for argument#1		EPS file name RET
yuuji@49: @end display
yuuji@49: 
yuuji@49:   The second argument is one of selected symbol.  So the completion type
yuuji@49: is @code{Completion}.
yuuji@49: 
yuuji@49: @display
yuuji@49:                 Read type(2)....		c
yuuji@49:                 Prompt for argument#2		Include style RET
yuuji@49: @end display
yuuji@49: 
yuuji@49:   Then all the candidates ready to be read.  Type single RET after
yuuji@49: entering all.
yuuji@49: 
yuuji@49: @display
yuuji@49: 		Item[1](RET to exit):		plain RET
yuuji@49: 		Item[2](RET to exit):		frame RET
yuuji@49: 		Item[3](RET to exit):		dframe RET
yuuji@49: 		Item[4](RET to exit):		RET
yuuji@49: @end display
yuuji@49: 
yuuji@49:   The following prompt asks whether the entered string must belong to
yuuji@49: candidates or not.  In this case, since the argument must be one of
yuuji@49: @code{plain}, @code{frame}, and @code{dframe}, type @code{y}.
yuuji@49: 
yuuji@49: @display
yuuji@49:                 Require match? (y or n)		y
yuuji@49: @end display
yuuji@49: 
yuuji@49:   The last argument is the caption string for which any completion is
yuuji@49: needed.
yuuji@49: 
yuuji@49: @display
yuuji@49:                 Read type(3)....		s
yuuji@49:                 Prompt for argument#3		Caption RET
yuuji@49:                 default:			Figure of RET
yuuji@49: @end display
yuuji@49: 
yuuji@49:   Finally we'll get the argument add-in in the next window.
yuuji@49: 
yuuji@49: @subsection Contribution
yuuji@49: 
yuuji@49:   If you get your own pretty function and you let it be in public, please 
yuuji@51: steel yourself in the happy atmosphere and do not send me the function.
yuuji@49: I do know it is not fine because it is generated by yatexgen:-p.
yuuji@20: 
yuuji@20: @node Etcetera, Copying, Customizations, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter Etcetera
yuuji@20: 
yuuji@20:   The standard completion  tables provided  in @file{yatex.el} contain  a
yuuji@20: few La@TeX{}  commands  I frequently use.  This is  to lessen the key
yuuji@20: strokes to  complete  entire  word, because   too  many candidates
yuuji@20: rarely used  often cause too many  hits.   Therefore always try to
yuuji@20: use completion  in order to  enrich your dictionary,  and you will
yuuji@20: also find `Wild Bird' growing suitable for your La@TeX{} style.
yuuji@20: 
yuuji@51:   The package name `Wild Bird' is the English translation of Japanese
yuuji@51: title `Yachou', which is a trick on words of Japanese.
yuuji@20: 
yuuji@20: @node Copying,  , Etcetera, Top
yuuji@20: @comment  node-name,  next,  previous,  up
yuuji@20: @chapter Copying
yuuji@20: 
yuuji@80:   This   program   is  distributed   as   a   free   software.   You   can
yuuji@80: use/copy/modify/redistribute this software freely  but with NO warranty to
yuuji@80: anything  as a result  of using  this software.   Adopting code  from this
yuuji@80: program is  also free.  But  I would not  do contract act.
yuuji@80: 
yuuji@472:   This software can be treated with: ``The 2-Clause BSD License''
yuuji@472: (since 2017-09-09, yatex 1.80).
yuuji@472: 
yuuji@80: Any reports  and suggestions are  welcome as long  as I feel  interests in
yuuji@80: this software.  My possible  e-mail address is `yuuji@@yatex.org'.  (as of
yuuji@472: Sep.2017)  And there  is  mailing  list for  YaTeX.   Although the  common
yuuji@80: language is Japanese,  questions in English will be  welcome.  To join the
yuuji@80: ML,   send  the   mail  whose   subject   is  `append'   to  the   address
yuuji@80: `yatex@@yatex.org.    If   you  have   some   question,   please  ask   to
yuuji@80: `yatex-admin@@yatex.org'.
yuuji@20: 
yuuji@20:   The specification of this software will be surely modified
yuuji@20: (depending on my feelings) without notice :-p.
yuuji@20: 
yuuji@20: 
yuuji@20: @flushright
yuuji@20:                                                         HIROSE Yuuji
yuuji@20: @end flushright
yuuji@20: @bye
yuuji@20: 
yuuji@20: Local variables:
yuuji@20: mode: texinfo
yuuji@20: fill-prefix: nil
yuuji@20: fill-column: 74
yuuji@20: End:




