1\def\lang{jp} % -*- texinfo -*-
2\input texinfo.tex
3@setfilename yatexe
4@settitle Yet Another tex-mode for Emacs
5@direntry
6* YaTeX-e: (yatexe).    Yet Another tex-mode for Emacs (English).
7@end direntry
8
9@iftex
10@c @syncodeindex fn cp
11@c Last modified Sat Jan  6 23:42:24 2018 on firestorm
12@syncodeindex vr cp
13@end iftex
14
15@titlepage
16@sp 10
17@center
18@subtitle Yet Another tex-mode for emacs
19@title Wild Bird
20@subtitle // YaTeX //
21@author @copyright{} 1991-2017 by    HIROSE, Yuuji [yuuji@@yatex.org]
22@end titlepage
23
24@node Top, What is YaTeX?, (dir), (dir)
25@comment  node-name,  next,  previous,  up
26@cindex Demacs
27@cindex Mule
28@cindex LaTeX
29@cindex YaTeX
30
31@menu
32* What is YaTeX?::
33* Main features::               What YaTeX can do
34* Installation::                Guide to install
35* Typesetting::                 Call typesetting processes
36* %#notation::                  Meta-keyword `%#'
37* Completion::                  Input LaTeX commands with completion
38* Local dictionaries::          Directory dependent completion
39* Commenting out::              Commenting/uncommenting text
40* Cursor jump::                 Jumping to related position
41* Changing and Deleting::       Changing/deleting certain unit of text
42* Filling::                     Filling an item or paragraph
43* Updation of includeonly::     Free from maintaining includeonly
44* What column::                 Check what table-column the cursor belong
45* Intelligent newline::         Guess requisites of new line
46* Usepackage checker::          Selecting correct \usepackage is YaTeX's job
47* Online help::                 On-line documentation of LaTeX
48* Browsing file hierarchy::     Walking through file hierarchy
49* Cooperation with other packages::  Work well with gmhist, min-out
50* Customizations::              How to breed `Wild Bird'
51* Etcetera::                    YaTeX is acquisitive.
52* Copying::                     Redistribution
53
54@end menu
55
56@node What is YaTeX?, Main features, Top, Top
57@comment  node-name,  next,  previous,  up
58@chapter What is YaTeX?
59
60  YaTeX automates typesetting and previewing of LaTeX and enables
61completing input of LaTeX mark-up command such as
62@code{\begin@{@}}..@code{\end@{@}}.
63
64  YaTeX also supports Demacs which runs on MS-DOS(386), Mule (Multi
65Language Enhancement to GNU Emacs), and latex on DOS.
66
67@node Main features, Installation, What is YaTeX?, Top
68@comment  node-name,  next,  previous,  up
69@chapter Main features
70
71@itemize
72@item Invocation of typesetter,  previewer and related programs(@kbd{C-c t})
73@item Typesetting on static region which is independent from point
74@item Semiautomatic replacing of @code{\includeonly}
75@item Jumping to error line(@kbd{C-c '})
76@item Completing-read of La@TeX{} commands such as @code{\begin@{@}},
77        @code{\section} etc.
78        (@kbd{C-c b}, @kbd{C-c s}, @kbd{C-c l}, @kbd{C-c m})
79@item Enclosing text into La@TeX{} environments or commands
80      (@var{AboveKeyStrokes} after region setting)
81@item Displaying the structure of text at entering sectioning commands
82@item Lump shifting of sectioning commands (@ref{view-sectioning})
83@item Learning unknown/new La@TeX{} commands for the next completion
84@item Argument reading with a guide for complicated La@TeX{} commands
85@item Generating argument-readers for new/unsupported commands(@file{yatexgen})
86@item Quick changing or deleting of La@TeX{} commands(@kbd{C-c c}, @kbd{C-c k})
87@item Jumping from and to inter-file, begin<->end, ref<->label(@kbd{C-c g})
88@item Blanket commenting out or uncommenting
89        (@kbd{C-c >}, @kbd{C-c <}, @kbd{C-c ,}, @kbd{C-c .})
90@item Easy input of accent mark, math-mode's commands and Greek letters
91        (@kbd{C-c a}, @kbd{;}, @kbd{:})
92@item Online help for the popular La@TeX{} commands
93      (@kbd{C-c ?}, @kbd{C-c /})
94@item Document files hierarchy browser (@kbd{C-c d})
95@item Adding automatically \usepackage corresponding to inputting LaTeX
96      macro with completion
97@item Allow you to forget creating \label@{@}s, \ref@{@} or \cite@{@}
98      completion automatically generate labels.
99@item \includegraphics by Drag&Drop of image file
100@end itemize
101
102@node Installation, Typesetting, Main features, Top
103@comment  node-name,  next,  previous,  up
104@chapter Installation
105@cindex installation
106@cindex .emacs
107@cindex auto-mode-alist
108@cindex autoload
109
110  Put next two expressions into your @file{~/.emacs}.
111
112@lisp
113        (setq auto-mode-alist
114              (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist))
115        (autoload 'yatex-mode "yatex" "Yet Another La@TeX{} mode" t)
116@end lisp
117
118Next, add certain path name where you put files of YaTeX to your
119load-path.  If you want to put them in @file{~/src/emacs}, write
120
121@lisp
122       (setq load-path
123             (cons (expand-file-name "~/src/emacs") load-path))
124@end lisp
125
126@noindent
127in your @file{~/.emacs}
128
129  Then, yatex-mode will be automatically loaded when you visit a
130file which has extension @file{.tex}.  If yatex-mode is successfully
131loaded, mode string on mode line will be turned to "YaTeX".
132
133
134@node Typesetting, %#notation, Installation, Top
135@comment  node-name,  next,  previous,  up
136@chapter Typesetting
137@cindex typesetting
138@cindex previewer
139@cindex typesetter
140@cindex latex
141@cindex printing out
142
143  The prefix key stroke of yatex-mode is @kbd{C-c} (Press 'C' with Control
144key) by default.  If you don't intend to change the prefix key stroke,
145assume all @kbd{[prefix]} as @kbd{C-c} in this document.  These key
146strokes execute typeset or preview command.
147
148@table @kbd
149@item [prefix] t j
150        @dots{} invoke typesetter
151@item [prefix] t r
152        @dots{} invoke typesetter on region
153@item [prefix] t e
154        @dots{} `on-the-fly preview' on current environment or whole
155         portion of current formulas in math-mode
156@item [prefix] t d
157	@dots{} invoke dvipdfmx after successful typesetting
158@item [prefix] t k
159        @dots{} kill current typesetting process
160@item [prefix] t b
161        @dots{} invoke bibtex
162@item [prefix] t i
163        @dots{} invoke makeindex
164@item [prefix] t d
165        @dots{} invoke latex && dvipdfmx
166@item [prefix] t p
167        @dots{} preview
168@item [prefix] t l
169        @dots{} lpr dvi-file
170@item [prefix] t s
171        @dots{} search current string on xdvi-remote
172@end table
173
174@menu
175* Calling typesetter::
176* Calling previewer::
177* Printing out::
178@end menu
179
180@node Calling typesetter, Calling previewer, Typesetting, Typesetting
181@comment  node-name,  next,  previous,  up
182@section Calling typesetter
183
184  Typing @kbd{[prefix] t j}, the current editing window will be divided
185horizontally when you invoke latex command, and log message of La@TeX{}
186typesetting will be displayed in the other window; called typesetting
187buffer.  The typesetting buffer automatically scrolls up and traces
188La@TeX{} warnings and error messages.  If you see latex stopping by an
189error, you can send string to latex in the typesetting buffer.
190
191  If an error  stops the La@TeX{}  typesetting, this  key stroke will
192move the cursor to the line where La@TeX{} error is detected.
193
194@table @kbd
195@item [prefix] '
196@itemx ([prefix]+single quotation)
197
198        @dots{} jump to the previous error or warning
199@end table
200
201  If you find a noticeable error, move to the typesetting buffer and move
202the cursor on the line of error message and type @kbd{SPACE} key.  This
203makes the cursor move to corresponding source line.
204
205  YaTeX-typeset-region invoked by @kbd{[prefix] tr} call typesetter
206for region.  The region is specified by standard point and mark, or
207by @code{%#BEGIN} and @code{%#END} marks.  Selected region will be
208copied to the temporary file @file{texput.tex} with the same preamble
209as the main file of current editing sources.  Be sure to put
210all local macro settings in preamble, not after @code{\begin@{document@}}.
211  The method of specification of the region is shown in the
212section @xref{%#notation}.
213
214  The documentclass  for typeset-region is the same as that of editing
215file if you edit one  file,  and is the same as main file's if you
216edit splitting files.
217
218  The @kbd{[prefix] te} key automatically marks current inner environment
219or inner math mode or paragraph, and then call typeset-region with marked
220region.  This
221is convenient to quick view of current tabular environment or current
222editing formulas.  If running Emacs has the ability of displaying images,
223typeset image will be shown in the next window.  Further more,
224if you modify the content within that environment, YaTeX performs
225`on-the-fly' preview that automatically update preview image as you typed.
226
227If your Emacs does not supply on-the-fly preview,
228keeping previewer window for @file{texput.dvi} is handy
229for debugging.  Since @kbd{[prefix] te} selects the inner-most environment
230as region, it is not suitable for partial typesetting of doubly or more
231composed environment.  If you want to do partial typesetting for a nested
232environment, use @kbd{[prefix] tr} for static-region, which is described
233in the section @xref{%#notation}.
234
235@node Calling previewer, Printing out, Calling typesetter, Typesetting
236@comment  node-name,  next,  previous,  up
237@section Calling previewer
238
239  @kbd{[prefix] t p} invokes the TeX previewer.  And if you are using
240xdvi-remote, which can be controled from other terminals, @kbd{[prefix] t
241s} enables you to search current string at the cursor on the running xdvi
242window.
243
244@node Printing out,  , Calling previewer, Typesetting
245@comment  node-name,  next,  previous,  up
246@section Printing out
247
248  When you type @code{[preifx] t l}, YaTeX asks you the range of
249dvi-printing by default.  You can skip this by invoking it with
250universal-argument as follows:
251
252@example
253        C-u [prefix] tl
254@end example
255
256@node %#notation, Completion, Typesetting, Top
257@comment  node-name,  next,  previous,  up
258@chapter %# notation
259@cindex %# notation
260
261  You can control the typesetting process by describing @code{%#}
262notations in the source text.
263
264@menu
265* Changing typesetter::
266* Splitting input files::
267* Static region for typesetting::
268* Special Filtering Region::
269* Lpr format::
270* Controlling which command to invoke::
271* Editing %# notation::
272@end menu
273
274@node Changing typesetter, Splitting input files, %#notation, %#notation
275@comment  node-name,  next,  previous,  up
276@section To change the `latex' command or to split a source text.
277@cindex typesetter
278
279  To change the typesetting command, write
280
281@example
282        %#!latex-big
283@end example
284
285@noindent
286anywhere in the source text.  This is useful for changing
287typesetter.
288
289@node Splitting input files, Static region for typesetting, Changing typesetter, %#notation
290@comment  node-name,  next,  previous,  up
291@section Splitting input files
292
293  And if you split the source text and
294edit subfile that should be included from main text.
295
296@example
297        %#!latex main.tex
298@end example
299
300@noindent
301will be helpful to execute latex on main file from sub text buffer.  Since
302this command line after @kbd{%#!} will be sent to shell literally, next
303description makes it convenient to use ghostview as dvi-previewer.
304
305@example
306        %#!latex main && dvi2ps main.dvi > main
307@end example
308
309@noindent
310Note that YaTeX  assumes the component  before the  last period of
311the last word in this line as base name of the main La@TeX{} source.
312The @code{%f} notation in this line is replaced by main file name, and
313@code{%r} replaced by root name of main file name.  If you specify
314@code{%f} or @code{%r}, YaTeX always ask you the name of main file at the
315first typesetting.
316
317  To make best use of the feature of inter-file jumping by
318@kbd{[prefix] g} (see @ref{Cursor jump}), take described below into
319consideration.
320
321@itemize
322@item You can put split texts in sub directory, but not in
323 sub directory of sub directory.
324@item In the main text, specify the child file name with relative path name
325 such as \include@{chap1/sub@}, when you include the file in
326 a sub-directory.
327@item In a sub-text, write @code{%#!latex main.tex} even if @file{main.tex}
328 is in the parent directory(not %#!latex ../main.tex).
329@end itemize
330
331@node Static region for typesetting, Lpr format, Splitting input files, %#notation
332@comment  node-name,  next,  previous,  up
333@section Static region
334@cindex static region
335@cindex Fixed region
336
337  Typeset-region by @kbd{[prefix] tr} passes the region between point and
338mark to typesetting command by default.  But when you want to typeset
339static region, enclose the region by @code{%#BEGIN} and @code{%#END} as
340follows.
341
342@example
343        %#BEGIN
344          TheRegionYouWantToTypesetManyTimes
345        %#END
346@end example
347
348This is the rule of deciding the region.
349
350@enumerate
351@item
352If there exists %#BEGIN before point,
353
354@enumerate
355@item
356If there exists %#END after %#BEGIN,
357@itemize
358@item From %#BEGIN to %#END.
359@end itemize
360
361@item
362If %#END does not exist after %#BEGIN,
363@itemize
364@item From %#BEGIN to the end of buffer.
365@end itemize
366@end enumerate
367
368@item
369If there does not exist %#BEGIN before point,
370@itemize
371@item Between point and mark(standard method of Emacs).
372@end itemize
373@end enumerate
374
375  It is useful to write @code{%#BEGIN} in the previous line of \begin and
376@code{%#END} in the next line of \@code{end} when you try complex
377environment such as `tabular' many times.  It is also useful to put only
378@code{%#BEGIN} alone at the middle of very long text.  Do not forget to
379erase @code{%#BEGIN} @code{%#END} pair.
380
381@node Special Filtering Region, Lpr format, Static region for typesetting, %#notation
382@section Special Filtering Region
383  A region like below will be passed to external filter command.
384@example
385%#BEGIN FILTER{foo.pdf}{dot -T %t -o %o}
386\if0
387....blah blah blah...
388....blah blah blah...
389....blah blah blah...
390\fi
391%#END
392@end example
393
394In this case, typing @kbd{[prefix] t e} send three `blah' lines
395to "dot -T pdf -o foo.pdf" as standard-input.  It is useful to
396have source of text-origin graphic generated by such tools as
397graphviz or blockdiag, in La@TeX{} source.  This special form of region
398can be inserted via feeding @code{.dot} into environment completion by
399@kbd{[prefix] t b}.
400
401
402
403@node Lpr format, Controlling which command to invoke, Static region for typesetting, %#notation
404@comment  node-name,  next,  previous,  up
405@section Lpr format
406@cindex lpr format
407
408  Lpr format is specified by three Lisp variables.  Here are the
409default values of them.
410
411@table @code
412@item (1)dviprint-command-format
413        @code{"dvi2ps %f %t %s | lpr"}
414@item (2)dviprint-from-format
415        @code{"-f %b"}
416@item (3)dviprint-to-format
417        @code{"-t %e"}
418@end table
419
420  On YaTeX-lpr, @code{%s} in (1) is replaced by the file name of main
421text, @code{%f} by contents of (2), %t by contents of (3).  At these
422replacements, @code{%b} in (2) is also replaced by the number of beginning
423page, @code{%e} in (3) is replaced by the number of ending page.  But
424@code{%f} and @code{%t} are ignored when you omit the range of print-out
425by @kbd{C-u [prefix] tl}.
426
427  If you want to change this lpr format temporarily, put a command
428such as follows somewhere in the text:
429
430@example
431        %#LPR dvi2ps %f %t %s | 4up -page 4 | texfix | lpr -Plp2
432@end example
433
434  And if you want YaTeX not to ask you the range of printing
435out, the next example may be helpful.
436
437@example
438        %#LPR dvi2ps %s | lpr
439@end example
440
441@node Controlling which command to invoke, Editing %# notation, Lpr format, %#notation
442@comment  node-name,  next,  previous,  up
443@section Controlling which command to invoke
444
445These %# notation below can control which command to invoke for
446La@TeX{} related process.
447
448@table @code
449 @item %#PREVIEW
450	@dots{} Command line for DVI viewing ([prefix] t p)
451 @item %#MAKEINDEX
452	@dots{} Command line for makeindex ([prefix] t i)
453 @item %#BIBTEX
454	@dots{} Command line for bibtex ([prefix] t b)
455 @item %#DVIPDF
456	@dots{} Command line for dvipdf(mx) ([prefix] t b)
457 @item %#LPR
458	@dots{} Command line for printing out([prefix] t l)
459 @item %#PDFVIEW
460	@dots{} Command line for PDF viewing
461 @item %#IMAGEDPI
462	@dots{} DPI value for converting to on-the-fly prewview image
463@end table
464
465If you want to invoke ``makeidx hogehoge'' to update index,
466put the next line some upper place in the source, for example.
467
468@example
469%#MAKEINDEX makeidx hogehoge
470@end example
471
472
473@node Editing %# notation,  , Controlling which command to invoke, %#notation
474@comment  node-name,  next,  previous,  up
475@section Editing %# notation
476
477  To edit @code{%#} notation described above, type
478
479@table @kbd
480@item [prefix] %
481        @dots{} editing %# notation menu
482@end table
483
484@noindent
485and select one of the entry of the menu as follows.
486
487@example
488        !)Edit-%#! B)EGIN-END-region L)Edit-%#LPR
489@end example
490
491@noindent
492Type @kbd{!} to edit @code{%#!} entry, @code{b} to enclose the region with
493@code{%#BEGIN} and @code{%#END}, and @code{l} to edit @code{%#LPR} entry.
494When you type @kbd{b}, all @code{%#BEGIN} and @code{%#END} are
495automatically erased.
496
497@node Completion, Local dictionaries, %#notation, Top
498@comment  node-name,  next,  previous,  up
499@chapter Completion
500@cindex completion
501
502  YaTeX makes it easy to input the La@TeX{} commands.  There are several
503kinds of completion type, begin-type, section-type, large-type, etc...
504
505@menu
506* Begin-type completion::
507* Section-type completion::
508* Label Generation::
509* Large-type completion::
510* Maketitle-type completion::
511* Arbitrary completion::
512* End completion::
513* Accent completion::
514* Image completion::
515* Greek letters completion::
516* Inserting parentheses::
517@end menu
518
519@node Begin-type completion, Section-type completion, Completion, Completion
520@comment  node-name,  next,  previous,  up
521@section Begin-type completion
522@cindex begin-type completion
523@cindex environment
524@cindex prefix b
525
526  "Begin-type completion" completes commands of @code{\begin@{env@}} ...
527@code{\end@{env@}}.  All of the begin-type completions begin with this key
528sequence.
529
530@table @kbd
531@item [prefix] b
532        @dots{} start begin-type completion
533@end table
534
535@noindent
536An additional key  stroke immediately  completes a frequently used
537La@TeX{} @code{\begin@{@}}...@code{\@code{end}@{@}} environment.
538
539@table @kbd
540@item [prefix] b c
541        @dots{}  @code{\begin@{center@}...\end@{center@}}
542@item [prefix] b d
543        @dots{}  @code{\begin@{document@}...\end@{document@}}
544@item [prefix] b D
545        @dots{}  @code{\begin@{description@}...\end@{description@}}
546@item [prefix] b e
547        @dots{}  @code{\begin@{enumerate@}...\end@{enumerate@}}
548@item [prefix] b E
549        @dots{}  @code{\begin@{equation@}...\end@{equation@}}
550@item [prefix] b i
551        @dots{}  @code{\begin@{itemize@}...\end@{itemize@}}
552@item [prefix] b l
553        @dots{}  @code{\begin@{flushleft@}...\end@{flushleft@}}
554@item [prefix] b m
555        @dots{}  @code{\begin@{minipage@}...\end@{minipage@}}
556@item [prefix] b t
557        @dots{}  @code{\begin@{tabbing@}...\end@{tabbing@}}
558@item [prefix] b T
559        @dots{}  @code{\begin@{tabular@}...\end@{tabular@}}
560@item [prefix] b^T
561        @dots{}  @code{\begin@{table@}...\end@{table@}}
562@item [prefix] b p
563        @dots{}  @code{\begin@{picture@}...\end@{picture@}}
564@item [prefix] b q
565        @dots{}  @code{\begin@{quote@}...\end@{quote@}}
566@item [prefix] b Q
567        @dots{}  @code{\begin@{quotation@}...\end@{quotation@}}
568@item [prefix] b r
569        @dots{}  @code{\begin@{flushright@}...\end@{flushright@}}
570@item [prefix] b v
571        @dots{}  @code{\begin@{verbatim@}...\end@{verbatim@}}
572@item [prefix] b V
573        @dots{}  @code{\begin@{verse@}...\end@{verse@}}
574@end table
575
576  Any other La@TeX{} environments are made by  completing-read of the
577Emacs function.
578
579@table @kbd
580@item [prefix] b SPACE
581        @dots{} begin-type completion
582@end table
583
584@noindent
585The next message will show up in the minibuffer
586
587@example
588        Begin environment(default document):
589@end example
590
591@noindent
592by typing @kbd{[prefix] b}.  Put the wishing environment with completion
593in the minibuffer, and @code{\begin@{env@}}...\@code{\end@{env@}} will be
594inserted in the La@TeX{} source text.  If the environment you want to put
595does not exist in the YaTeX completion table, it will be registered in the
596user completion table.  YaTeX automatically saves the user completion
597table in the user dictionary file at exiting of emacs.
598
599At the completion of certain environments, the expected initial entry will
600automatically inserted such as @code{\item} for @code{itemize}
601environment.  If you don't want the entry, it can be removed by undoing.
602
603  If you want to enclose some paragraphs which have already been written
604into environment, invoke the begin-type completion right after region marking.
605@cindex enclose region into environment
606
607If you set @code{transient-mark-mode} to @code{nil} in your
608@file{~/.emacs},  typing @kbd{C-space} (@code{set-mark-command}) twice
609turns @code{transient-mark-mode} on temporarily.  Then, type call
610begin-type completion to enclose text into a environment.
611
612
613@node Section-type completion, Label Generation, Begin-type completion, Completion
614@comment  node-name,  next,  previous,  up
615@section Section-type completion
616@cindex section-type completion
617@cindex prefix s
618
619  "Section-type completion" completes section-type commands which take an
620argument or more such as @code{\section@{foo@}}.  To invoke section-type
621completion, type
622
623@table @kbd
624@item [prefix] s
625        @dots{} section-type completion
626@end table
627
628@noindent
629then the prompt
630
631@example
632        (C-v for view) \???@{@} (default documentclass):
633@end example
634
635@noindent
636will  show up in the  minibuffer.  Section-type La@TeX{} commands are
637completed by space key, and the default value is selected when you
638type nothing in the minibuffer.
639
640  Next,
641
642@example
643        \section@{???@}:
644@end example
645
646@noindent
647prompts you the argument of section-type La@TeX{} command.  For
648example, the following inputs
649
650@example
651        \???@{@} (default documentclass): section
652        \section@{???@}: Hello world.
653@end example
654
655@noindent
656will insert the string
657
658@example
659        \section@{Hello world.@}
660@end example
661
662in your La@TeX{} source.  When you neglect argument such as
663
664@example
665        (C-v for view) \???@{@} (default section): vspace*
666        \vspace*@{???@}:
667@end example
668
669YaTeX puts
670
671@example
672        \vspace*@{@}
673@end example
674
675@noindent
676and move the cursor in the braces.
677
678  In La@TeX{} command, there are commands which take more than one
679arguments such as @code{\addtolength@{\topmargin@}@{8mm@}}.  To complete these
680commands, invoke section-type completion with universal argument as,
681@cindex number of argument
682
683@example
684        C-u 2 [prefix] s (or ESC 2 [prefix] s)
685@end example
686
687@noindent
688and make answers in minibuffer like this.
689
690@example
691        (C-v for view) \???@{@} (default vspace*): addtolength
692        \addtolength@{???@}: \topmargin
693        Argument 2: 8mm
694@end example
695
696@code{\addtolength} and the first argument @code{\topmargin} can be typed
697easily by completing read.  Since YaTeX also learns the number of
698arguments of section-type command and will ask that many arguments in
699future completion, you had better tell the number of arguments to YaTeX at
700the first completion of the new word.  But you can change the number of
701arguments by calling the completion with different universal argument
702again.
703
704
705  Invoking section-type completion with @code{[Prefix] S} (Capital `S')
706includes the region as the first argument of section-type command.
707
708  The  section/large/maketitle type completion  can  work at the
709prompt for   the argument   of  other section-type   completion.
710Nested La@TeX{}  commands are  efficiently read with  the recursive
711completion by typing  YaTeX's   completion key sequence in   the
712minibuffer.
713
714@menu
715* view-sectioning::
716@end menu
717
718@node view-sectioning,  , Section-type completion, Section-type completion
719@comment  node-name,  next,  previous,  up
720@subsection view-sectioning
721@cindex view sectioning
722@cindex outline
723
724  In the minibuffer at the prompt of section-type command completion,
725typing @kbd{C-v} shows a list of sectioning commands in source text(The
726line with @code{<<--} mark is the nearest sectioning command).  Then,
727default sectioning command appears in the minibuffer.  You can go up/down
728sectioning command by typing @kbd{C-p}/@kbd{C-n}, can scrolls up/down the
729listing buffer by @kbd{C-v}/@kbd{M-v}, and can hide sectioning commands
730under certain level by 0 through 6.  Type @kbd{?}  in the minibuffer of
731sectioning prompt for more information.
732
733  You can generate this listing buffer (@code{*Sectioning Lines*} buffer)
734by typing
735@table @kbd
736@item M-x YaTeX-section-overview
737        @dots{} Generate *Sectioning Lines* buffer
738@end table
739@cindex{Generate the listing of sectioning units}
740from the LaTeX source buffer.  In this listing buffer, typing @kbd{u} on
741the sectioning command shifts up the corresponding sectioning command in
742source text and @kbd{d} shifts down.  After marking lines in the listing
743buffer, typing @kbd{U} shifts up all sectioning commands in the region,
744and @kbd{U} shifts down.  Here are all the key bindings of
745@code{*Sectioning Lines*} buffer.
746
747@table @kbd
748@item SPC
749        @dots{} Jump to corresponding source line
750@item .
751        @dots{} Display corresponding source line
752@item u
753        @dots{} Shift up a sectioning line
754@item d
755        @dots{} Shift down a sectioning line
756@item U
757        @dots{} Shift up sectioning lines in region
758@item D
759        @dots{} Shift down sectioning lines in region
760@item 0@dots{}6
761        @dots{} Hide sectioning commands whose level is lower than n
762@end table
763
764@node  Label Generation, Large-type completion, Section-type completion, Completion
765@section Label Generation
766@comment label generation
767@cindex label generation
768@cindex ref label cite
769
770When you want to type-in references of @code{\ref} or @code{\cite},
771all you have to do is type @kbd{[prefix] s ref} without adding labels
772beforehand.  You will see possible La@TeX{}-counters in the next window
773even if some counter does not have @code{\label}.  Selecting the counter
774will automatically set the label to that counter.
775
776All possible counter list in the buffer tends to be large.
777You can reduce the number of list by filtering type of counters by
778key-commands as follows.
779@table @kbd
780 @item M-a
781	@dots{} Show all(disable filtering)
782 @item M-c
783	@dots{} Captions only
784 @item M-e
785	@dots{} equations (with counters) only
786 @item M-i
787	@dots{} numbers items only
788 @item M-s
789	@dots{} sections only
790 @item M-m
791	@dots{} other counters only
792@end table
793
794
795@node Large-type completion, Maketitle-type completion, Label Generation, Completion
796@comment  node-name,  next,  previous,  up
797@section Large-type completion
798
799  "Large-type   completion"  inputs  the  font  or  size  changing
800descriptions such as @code{@{\large @}}.  When you type
801
802@table @kbd
803@item [prefix] l
804        @dots{} large-type completion
805@end table
806
807@noindent
808the message in the minibuffer
809
810@example
811        @{\??? @} (default large):
812@end example
813
814prompts prompts you large-type command with completing-read.  There are
815TeX commands to change fonts or sizes, @code{it}, @code{huge} and so on,
816in the completion table.
817
818  Region-based completion is also invoked by calling completion
819after region activated.
820
821@node Maketitle-type completion, Arbitrary completion, Large-type completion, Completion
822@comment  node-name,  next,  previous,  up
823@section Maketitle-type completion
824@cindex maketitle-type completion
825
826  We call it "maketitle-type completion" which completes commands such as
827@code{\maketitle}.  Take notice that maketitle-type commands take no
828arguments.  Then, typing
829
830@table @kbd
831@item [prefix] m
832        @dots{} maketitle-type completion
833@end table
834
835@noindent
836begins maketitle-completion.  Above mentioned  method is  true for
837maketitle-completion, and   there  are   La@TeX{} commands    with no
838arguments in completion table.
839
840@node Arbitrary completion, End completion, Maketitle-type completion, Completion
841@comment  node-name,  next,  previous,  up
842@section Arbitrary completion
843@cindex arbitrary completion
844
845@noindent
846  You can complete certain La@TeX{} command anywhere without typical
847completing method as described, by typing
848
849@table @kbd
850@item [prefix] SPC
851        @dots{} arbitrary completion
852@end table
853
854@noindent
855after the initial string of La@TeX{} command that is preceded by @code{\}.
856
857@node End completion, Accent completion, Arbitrary completion, Completion
858@comment  node-name,  next,  previous,  up
859@section End completion
860@cindex end completion
861
862@noindent
863  YaTeX automatically detects the opened environment and close it with
864\@code{\end@{environment@}}.  Though proficient YaTeX users never fail to
865make environment with begin-type completion, some may begin an environment
866manually.  In that case, type
867
868@table @kbd
869@item [prefix] e
870        @dots{} @code{end} completion
871@end table
872
873@noindent
874at the end of the opened environment.
875
876@node Accent completion, Image completion, End completion, Completion
877@comment  node-name,  next,  previous,  up
878@section Accent completion
879@cindex accent completion
880
881  When you want to write the European accent marks(like @code{\`@{o@}}),
882
883@table @kbd
884@item [prefix] a
885        @dots{} accent completion
886@end table
887
888@noindent
889shows the menu
890
891@example
892        1:` 2:' 3:^ 4:" 5:~ 6:= 7:. u v H t c d b
893@end example
894
895@noindent
896in the minibuffer.  Chose one character or corresponding numeric,
897and you will see
898
899@example
900        \`@{@}
901@end example
902
903@noindent
904in the editing buffer with the cursor positioned  in braces.  Type
905one more character `o' for example, then
906
907@example
908        \`@{o@}
909@end example
910
911@noindent
912will be completed, and the cursor gets out from braces.
913
914@node Image completion, Greek letters completion, Accent completion, Completion
915@comment  node-name,  next,  previous,  up
916@section Image completion of mathematical sign
917@cindex image completion
918@cindex math-mode
919@cindex sigma
920@cindex leftarrow
921@cindex ;
922
923  Arrow  marks,  sigma mark and those signs mainly used  in  the
924TeX's  math environment  are completed by  key  sequences  which
925imitate the  corresponding symbols graphically.  This completion
926only works in the math environment.  YaTeX automatically detects
927whether the  cursor  located  in math environment  or  not,  and
928change the behavior of key strokes @kbd{;} and @kbd{:}.
929
930  By the way, we often express the leftarrow mark by `<-' for example.
931Considering such image, you can write @code{\leftarrow} by typing @kbd{<-}
932after @kbd{;} (semicolon) as a prefix.  In the same way,
933@code{\longleftarrow} (@code{<--}) is completed by typing @kbd{;<--},
934infinity mark which is imitated by @code{oo} is completed by typing
935@kbd{;oo}.
936
937  Here are the sample operations in YaTeX math-mode.
938
939@example
940INPUT                   Completed La@TeX{} commands
941; < -                   @code{\leftarrow}
942; < - -                 @code{\longleftarrow}
943; < - - >               @code{\longleftrightarrow}
944; o                     @code{\circ}
945; o o                   @code{\infty}
946@end example
947
948  In  any case, you can quit  from image completion and can move
949to the next editing  operation if the La@TeX{}  command you want is
950shown in the buffer.
951
952  @code{;} itself in math-environment is inserted by @kbd{;;}.  Typing
953@kbd{TAB} in the midst of image completion shows all of the La@TeX{}
954commands that start with the same name as string you previously typed in.
955In this menu buffer, press @kbd{RET} after moving the cursor (by @kbd{n},
956@kbd{p}, @kbd{b}, @kbd{f}) to insert the La@TeX{} command.
957
958  To know all of the completion table, type @kbd{TAB} just after @kbd{;}.
959And here is the sample menu by @kbd{TAB} after @kbd{;<}.
960
961@example
962KEY             LaTeX sequence          sign
963<               \leq                    <
964                                        ~
965<<              \ll                     <<
966<-              \leftarrow              <-
967<=              \Leftarrow              <=
968@end example
969
970  You can define your favorite key-vs-sequence completion table in the
971Emacs-Lisp variable @code{YaTeX-math-sign-alist-private}.  See also
972@file{yatexmth.el} for the information of the structure of this variable.
973
974@node Greek letters completion, Inserting parentheses, Image completion, Completion
975@comment  node-name,  next,  previous,  up
976@section Greek letters completion
977@cindex Greek letters completion
978@cindex :
979
980  Math-mode of YaTeX provides another image completion, Greek letters
981completion in the same method.  After prefix @kbd{:}, typing @kbd{a} makes
982@code{\alpha}, @kbd{b} makes @code{\beta} and @kbd{g} makes @code{\gamma}
983and so on.  First, type @kbd{:TAB} to know all the correspondence of
984alphabets vs. Greek letters.
985
986  If you will find @kbd{;} or @kbd{:} doesn't work in correct position of
987math environment, it may be a bug of YaTeX.  Please send me a bug report
988with the configuration of your text, and avoid it temporarily by typing
989@kbd{;} or @kbd{:} after universal-argument(@kbd{C-u}) which forces
990@kbd{;} and @kbd{:} to work as math-prefix.
991
992@node Inserting parentheses,  , Greek letters completion, Completion
993@section Inserting parentheses
994
995  Typing opening parenthesis, one of @code{(}, @code{@{ and @code{[}},
996automatically inserts the closing one.  If a opening bracket is typed
997after @code{\}, @code{\]} is automatically inserted with computed
998indentation.  If you stop automatic insertion, type @kbd{C-q} before
999opening parenthesis.
1000
1001@node Local dictionaries, Commenting out, Completion, Top
1002@comment  node-name,  next,  previous,  up
1003@chapter Local dictionaries
1004@cindex local dictionaries
1005@cindex nervous users
1006
1007  Tables for completion consist of three dictionaries; `standard
1008dictionary' built in @file{yatex.el}, `user dictionary' for your common
1009private commands, and `local dictionary' that is effective in a certain
1010directory.
1011
1012  When you input the command unknown to YaTeX at a completion in the
1013minibuffer, YaTeX asks you with the following prompt;
1014
1015@example
1016  `foo' is not in table. Register into: U)serDic L)ocalDic N)one D)iscard
1017@end example
1018
1019@noindent
1020In this menu, typing @kbd{u} updates your `user dictionary', @kbd{l}
1021updates your local dictionary, @kbd{n} updates only on-memory dictionary
1022which go through only current Emacs session, and @kbd{d} updates no
1023dictionary and throws the new word away.
1024
1025  If you find this switching feature meaningless and bothersome, put the
1026next expression into your @file{~/.emacs}
1027
1028@lisp
1029        (setq YaTeX-nervous nil)
1030@end lisp
1031
1032@node Commenting out, Cursor jump, Local dictionaries, Top
1033@comment  node-name,  next,  previous,  up
1034@chapter Commenting out
1035@cindex commenting out
1036@cindex prefix >
1037@cindex prefix <
1038@cindex prefix ,
1039@cindex prefix .
1040
1041  You may want to comment out some region.
1042
1043@table @kbd
1044@item [prefix] >
1045        @dots{} comment out region by %
1046@item [prefix] <
1047        @dots{} uncomment region
1048@end table
1049
1050@noindent
1051cause an operation to the region between point and mark.
1052
1053@table @kbd
1054@item [prefix] .
1055        @dots{} comment out current paragraph
1056@item [prefix] ,
1057        @dots{} uncomment current paragraph
1058@end table
1059
1060@noindent
1061comments or  uncomments the paragraph  where the  cursor  belongs.
1062This  `paragraph' means   the   region marked    by  the  function
1063mark-paragraph,  bound    to  @kbd{ESC h}   by   default.   It  is NOT
1064predictable  what will happen  when you  continuously  comment out
1065some paragraph many times.
1066
1067  You can also comment out an environment between @code{\begin} and
1068@code{\end}, or a @code{\begin}-\@code{\end} pair themselves, by making the
1069following key strokes on the line where @code{\begin@{@}} or
1070@code{\end@{@}} exists.
1071
1072@table @kbd
1073@item [prefix] >
1074        @dots{} comment out from \begin to \@code{end}
1075@item [prefix] <
1076        @dots{} uncomment from \begin to \@code{end}
1077@end table
1078
1079@noindent
1080comment whole the contents of environment.  Moreover,
1081
1082@table @kbd
1083@item [prefix] .
1084        @dots{} comment out \begin and \@code{end}
1085@item [prefix] ,
1086        @dots{} uncomment \begin and \@code{end}
1087@end table
1088
1089@noindent
1090(un)comments out only environment declaration: @code{\begin@{@}} and
1091@code{\end@{@}}.  NOTE that even if you intend to comment out some region,
1092invoking @kbd{[prefix] >} on the @code{\begin},@code{\end} line decides to
1093work in `commenting out from @code{\begin} to @code{\end}' mode.
1094
1095
1096@node Cursor jump, Changing and Deleting, Commenting out, Top
1097@comment  node-name,  next,  previous,  up
1098@chapter Cursor jump
1099@cindex cursor jump
1100@cindex prefix g
1101
1102
1103@menu
1104* Jump to corresponding object::
1105* Invoking image processor::
1106* Jump to main file::
1107* Jumping around the environment::
1108* Jumping to last completion position::
1109@end menu
1110
1111@node Jump to corresponding object, Invoking image processor, Cursor jump, Cursor jump
1112@comment  node-name,  next,  previous,  up
1113@section Jump to corresponding object
1114
1115  Typing
1116
1117@table @kbd
1118@item [prefix] g
1119        @dots{} go to corresponding object
1120@end table
1121
1122@noindent
1123in a certain place move the cursor to the place corresponding to the
1124La@TeX{} command of last place.  YaTeX recognize the followings as pairs
1125that have relation each other.
1126
1127@itemize @bullet
1128@item @code{\begin@{@}} <-> @code{\end@{@}}
1129@item @code{%#BEGIN} <-> @code{%#END}
1130@item On the image-including line -> corresponding viewer or drawing tool
1131@item @code{\label@{@}} <-> @code{\ref@{@}}
1132@item @code{\include(\input)} -> included file
1133@item @code{\bibitem@{@}} <-> @code{\cite@{@}}
1134@end itemize
1135
1136  On a @code{\begin},@code{\end} line, typing @kbd{[prefix] g} moves the
1137cursor to the corresponding @code{\end},@code{\begin} line, if its partner
1138really exists.  The behavior on the line @code{%#BEGIN} and @code{%#END}
1139are the same.  Note that if the correspondent of @code{label/ref} or
1140@code{cite/bibitem} exists in another file, that file have to be opened to
1141make a round trip between references by @kbd{[prefix] g}.
1142
1143  If you type @code{[prefix] g} on the line of @code{\include@{chap1@}},
1144typically in the main text, YaTeX switches buffer to @file{chap1.tex}.
1145
1146@table @kbd
1147@item [prefix] 4 g
1148        @dots{} go to corresponding object in other window
1149@end table
1150
1151@noindent
1152do the same job as @kbd{[prefix] g} except it's done in other window.
1153Note that this function doesn't work on @code{begin/end},
1154@code{%#BEGIN/%#END} pairs because it is meaningless.
1155
1156@node Invoking image processor, Jump to main file, Jump to corresponding object, Cursor jump
1157@comment  node-name,  next,  previous,  up
1158@section Invoking image processor
1159@cindex{Drawing tool invocation}
1160
1161`image-including line' described above means such lines as
1162@code{\epsfile@{file=foo.ps@}}.  If you type @kbd{[prefix] g} on that
1163line, YaTeX automatically searches source of `foo.ps' and invokes image
1164viewer or drawing tool correspoinding to it.  For example; if you draw
1165an image foo.obj with Tgif and enclose its product named foo.eps by
1166@code{\epsfile} command.  Typing @kbd{[prefix] g} on @code{\epsfile} line
1167make YaTeX invoke @code{tgif foo.obj}.  How a processor is choosen is as
1168follows.
1169
1170@enumerate
1171@item
1172If there is an expression matching with one of the pattern
1173defined in @code{YaTeX-processed-file-regexp-alist}, extract file name
1174from regexp group surrounded by \\(\\).  (Which group corresponds is
1175written in the cdr part of each list.)  If no matches were found, do
1176nothing.
1177@item
1178If there is a pattern as `%PROCESSOR' which is defined in the variable
1179@code{YaTeX-file-processor-alist}, call that processor giving the
1180file name with corresponding extension.
1181@item
1182If not, check the existence of each file which is supplied the
1183extension in the cdr part of each list of
1184@code{YaTeX-file-processor-alist}.  If any, call the corresponding
1185image viewer or drawing tool.
1186@end enumerate
1187
1188@node Jump to main file, Jumping around the environment, Invoking image processor, Cursor jump
1189@comment  node-name,  next,  previous,  up
1190@section Jump to main file
1191
1192  Typing
1193
1194@table @kbd
1195@item [prefix] ^
1196        @dots{} visit main file
1197@item [prefix] 4^
1198        @dots{} visit main file in other buffer
1199@end table
1200@cindex prefix ^
1201@cindex prefix 4 ^
1202
1203in a sub text switch the buffer to the main text specified by
1204@code{%#!}  notation.
1205
1206@node Jumping around the environment, Jumping to last completion position, Jump to main file, Cursor jump
1207@comment  node-name,  next,  previous,  up
1208@section Jumping around the environment
1209
1210  And these are the functions which work on the current La@TeX{}
1211environment:
1212
1213@table @kbd
1214@item M-C-a
1215        @dots{} beginning of environment
1216@item M-C-e
1217        @dots{} @code{end} of environment
1218@item M-C-@@
1219        @dots{} mark environment
1220@end table
1221@cindex M-C-a
1222@cindex M-C-e
1223@cindex M-C-@@
1224
1225@node Jumping to last completion position,  , Jumping around the environment, Cursor jump
1226@comment  node-name,  next,  previous,  up
1227@section Jumping to last completion position
1228
1229YaTeX always memorize the position of completion into register @code{3}.
1230So every time you make a trip to any other part of text other than you are
1231writing, you can return to the editing paragraph by calling
1232register-to-point with argument YaTeX-current-position-register, which is
1233achieved by typing @kbd{C-x j 3}(by default).
1234
1235@node Changing and Deleting, Filling, Cursor jump, Top
1236@comment  node-name,  next,  previous,  up
1237@chapter Changing and Deleting
1238
1239  These  functions  are for change or   deletion of La@TeX{} commands
1240already entered.
1241
1242@table @kbd
1243@item [prefix] c
1244        @dots{} change La@TeX{} command
1245@item [prefix] k
1246        @dots{} kill La@TeX{} command
1247@end table
1248@cindex prefix c
1249@cindex prefix k
1250
1251@menu
1252* Changing LaTeX commands::
1253* Killing LaTeX commands::
1254@end menu
1255
1256@node Changing LaTeX commands, Killing LaTeX commands, Changing and Deleting, Changing and Deleting
1257@comment  node-name,  next,  previous,  up
1258@section Changing La@TeX{} commands
1259
1260@kbd{[prefix] c} can change the various (La)@TeX{} commands.  This can
1261change the followings.
1262@itemize @bullet
1263@item Environment names
1264@item Section-type commands
1265@item Argument of section-type commands
1266@item Optional parameters (enclosed by []) of section-type commands
1267@item Font/size designators
1268@item Math-mode's maketitle-type commands that can be inputted with
1269image completion
1270@end itemize
1271
1272  Typing @kbd{[prefix] c} on one of above objects you want to change
1273brings a suitable reading function sometimes with completion.
1274Note: If you want to change the argument of section-type command that
1275contains other La@TeX{} commands, type @kbd{[prefix] c} either of
1276surrounding braces of the argument in order to make YaTeX ignore the
1277internal La@TeX{} sequences as an object of changing.  Anyway, it is
1278very difficult to know which argument position the cursor belongs because
1279the La@TeX{} commands can be nested and braces can freely emerge.  So keep
1280it mind to put the cursor on a brace when you are thinking of changing a
1281complicated argument.
1282
1283@node Killing LaTeX commands,  , Changing LaTeX commands, Changing and Deleting
1284@comment  node-name,  next,  previous,  up
1285@section Killing La@TeX{} commands
1286@cindex Killing La@TeX{} commands
1287
1288  @kbd{[prefix] k} kills the La@TeX{} commands sometimes with their
1289arguments.  Following table illustrates the correspondence of the invoking
1290position and what is killed.
1291
1292@example
1293[Invoking position]             [action]
1294\begin, \end line               kill \begin,\end pairs
1295%#BEGIN, %#END line             kill %#BEGIN,%#END pairs
1296on a Section-type command       kill section-type command
1297on a parenthesis                kill parentheses
1298@end example
1299
1300Note that when killing @code{\begin, \end} or @code{%#BEGIN, %#END} pair,
1301the lines @code{\begin, \end} or @code{%#BEGIN, %#END} exist will be
1302killed entirely.  So take care not to create any line that contains more
1303than one @code{\begin} or so.
1304
1305While all operations above are to kill `containers' which surround some
1306text, universal argument (@kbd{C-u}) for these commands kills not only
1307`containers' but also `contents' of them.  See below as a sample.
1308
1309@example
1310Original text:                  [prefix] k      C-u [prefix] k
1311Main \footnote@{note@} here.    Main note here. Main  here.
1312       ~(cursor)
1313@end example
1314
1315@node Filling, Updation of includeonly, Changing and Deleting, Top
1316@comment  node-name,  next,  previous,  up
1317@chapter Filling
1318@cindex filling
1319
1320@section Filling an item
1321@cindex filling an item
1322@cindex prefix i
1323
1324  To fill a term (descriptive sentences) of @code{\item}, type
1325
1326@c @table @kbd
1327@c @item [prefix] i
1328@c         @dots{} fill item
1329@c @end table
1330@table @kbd
1331@item M-q
1332        @dots{} fill item
1333@end table
1334
1335@noindent
1336on that item.
1337
1338  YaTeX uses the value of  the variable @code{YaTeX-item-regexp} as the
1339regular expression to search item header  in  itemize environment.
1340If you make a newcommand to itemize terms(e.g. @code{\underlineitem}), put
1341
1342@lisp
1343        (setq YaTeX-item-regexp
1344              "\\(\\\\\\(sub\\)*item\\)\\|\\(\\\\underlineitem\\)")
1345@end lisp
1346@cindex YaTeX-item-regexp
1347
1348in your @file{~/.emacs}.  If you are not familiar with regular expression
1349for Emacs-Lisp, name  a newcommand  for  `itemize' beginning  with
1350@code{\item} such as @code{\itembf}, not @code{\bfitem}.
1351
1352  This function reformats the @code{\item} into `hang-indented' style.
1353For example:
1354
1355@example
1356itemize, enumerate environment:
1357       >
1358       >\item[foo] `foo' is the typical word for describing an
1359       >           arbitrarily written....
1360description environment:
1361       > \item[bar] When the word `for' is used as an arbitrarily
1362       >        word, `bar'  is bound to follow it.
1363@end example
1364
1365  Note that the indent depth of an @code{\item} word and its descriptive
1366paragraph are the same in latter case.  If you want to use different
1367depth, invoke fill-paragraph at the beginning of non-whitespace
1368character(see below).
1369
1370@section Filling paragraph
1371@cindex Filling paragraph
1372@cindex M-q
1373
1374  Fill-paragraph is little bit adapted for La@TeX{} sources.  It retains from
1375filling in certain environments where formatting leads to a disaster such
1376as verbatim, tabular, or so.  And it protects @code{\verb} expressions
1377from being folded (The variable @code{YaTeX-verb-regexp} controls this).
1378Besides, putting cursor on the first occurrence of non-whitespace
1379character on a line changes the fill-prefix temporarily to the depth of
1380the line.
1381
1382@node Updation of includeonly, What column, Filling, Top
1383@comment  node-name,  next,  previous,  up
1384@chapter Updation of @code{\includeonly}
1385@cindex includeonly
1386
1387  When you edit splitting source texts, the notation
1388
1389@example
1390        \includeonly@{CurrentEditingFileName@}
1391@end example
1392
1393@noindent
1394in the main file reduces the time of typesetting.  If you want
1395to hack other file a little however, you have to rewrite it to
1396
1397@example
1398        \includeonly@{OtherFileNameYouWantToFix@}
1399@end example
1400
1401@noindent
1402in the main file.  YaTeX automatically detects that the current
1403edited text is not in includeonly list and prompts you
1404
1405@example
1406        A)dd R)eplace %)comment?
1407@end example
1408
1409in the minibuffer.  Type @kbd{a} if you want to add the current file name
1410to @code{\includeonly} list, @kbd{r} to replace \@code{includeonly} list
1411with the current file, and type @kbd{%} to comment out the
1412@code{\includeonly} line.
1413
1414@node What column, Intelligent newline, Updation of includeonly, Top
1415@comment  node-name,  next,  previous,  up
1416@chapter What column?
1417@cindex what column
1418@cindex complex tabular
1419@cindex prefix &
1420
1421  We  are often get  tired of  finding the corresponding column in
1422large tabulars.  For example,
1423
1424@example
1425        \begin@{tabular@}@{|c|c|c|c|c|c|c|c|@}\hline
1426         Name&Position&Post No.&Addr.&Phone No.&FAX No.&
1427                Home Addr.&Home Phone\\ \hline
1428         Thunder Bird & 6 & 223 & LA & xxx-yyy &
1429          zzz-www & Japan & 9876-54321 \\
1430           & 2 & \multicolumn@{2@}@{c|@}@{Unknown@}
1431                &&&(???)
1432         \\ \hline
1433         \end@{tabular@}
1434@end example
1435
1436Suppose you have the cursor located  at @code{(???)} mark, can you tell
1437which  column it is  belonging  at once?  Maybe no.  In such case,
1438type
1439
1440@table @kbd
1441@item [prefix] &
1442        @dots{} What column
1443@end table
1444
1445@noindent
1446in  that position.   YaTeX  tells you  the  column header  of  the
1447current  field.  Since  YaTeX  assumes  the  first line of tabular
1448environment  as a row of column  headers, you  can  create a row of
1449virtual column  headers by  putting  them  in the  first line  and
1450commenting that line with @code{%}.
1451
1452@node Intelligent newline, Usepackage checker, What column, Top
1453@comment  node-name,  next,  previous,  up
1454@chapter Intelligent newline
1455@cindex Intelligent newline
1456@cindex ESC RET
1457@cindex M-C-m
1458
1459  At the end of begin-type completion of tabular[*], array, itemize,
1460enumerate or tabbing environment, or typing
1461
1462@table @kbd
1463@item ESC RET
1464        @dots{} Intelligent newline
1465@end table
1466
1467@noindent
1468in these environments inserts the contents corresponding to the current
1469environment in the next line.  (At the begin-type completion, this
1470contents can be removed by `undo'.)  In @code{tabular} environment, for
1471example, @kbd{ESC RET} inserts the certain number of @code{&} and trailing
1472@code{\\}, and @code{\hline} if other @code{\hline} is found in backward.
1473Here are the list of contents vs. environments.
1474
1475@itemize
1476@item @code{tabular}, @code{tabular*}, @code{array}
1477
1478        Corresponding number of @code{&} and  @code{\\}.
1479        And @code{\hline} if needed.
1480
1481@item @code{tabbing}
1482
1483        The same number of @code{\>} as @code{\=} in the first line.
1484
1485@item @code{itemize}, @code{enumerate}, @code{description}, @code{list}
1486
1487        @code{\item} or @code{item[]}.
1488@end itemize
1489
1490  Note that since this function works seeing the contents of the first
1491line, please call this after the second line if possible.
1492
1493  If you want to apply these trick to other environments, @code{foo}
1494environment for example, define the function named
1495@code{YaTeX-intelligent-newline-foo} to insert corresponding contents.
1496That function will be called at the beginning of the next line after the
1497newline is inserted to the current line.  Since the function
1498@code{YaTeX-indent-line} is designed to indent the current line properly,
1499calling this function before your code to insert certain contents must be
1500useful.  See the definition of the function
1501@code{YaTeX-intelligent-newline-itemize} as an example.
1502
1503@node Usepackage checker, Online help, Intelligent newline, Top
1504@comment  node-name,  next,  previous,  up
1505@chapter Usepackage checker
1506@cindex usepackage
1507
1508When you input begint-type, section-type, maketitle-type macros with
1509completion, and it requires some LaTeX2e package, YaTeX examines
1510the existence of correct @code{\usepackage}.  If not, YaTeX inserts
1511the @code{\usepackage@{@}} declaration corresponding to input macro.
1512
1513To activate the package completion for your favarite package,
1514set the variable @code{YaTeX-package-alist-private} correctly.
1515Please refere the value of @code{YaTeX-package-alist-default} as an
1516example.
1517
1518@node Online help, Browsing file hierarchy, Usepackage checker, Top
1519@comment  node-name,  next,  previous,  up
1520@chapter Online help
1521@cindex online help
1522@cindex prefix ?
1523@cindex prefix /
1524@cindex apropos
1525@cindex keyword search
1526
1527  YaTeX provides you the online help with popular La@TeX{} commands.
1528
1529  Here are the key strokes for the online help.
1530
1531@table @kbd
1532@item [prefix] ?
1533        @dots{} Online help
1534@item [prefix] /
1535        @dots{} Online apropos
1536@end table
1537
1538@section Online help
1539
1540  `Online help' shows the documentation for the popular La@TeX{}
1541commands(defaults to the commands on the cursor) in the next buffer.
1542There are two help file, `global help' and `private help'.  The former
1543file contains the descriptions on the standard La@TeX{} command and is
1544specified its name by variable @code{YaTeX-help-file}.  Usually, the
1545global help file should be located in public space (@code{$EMACSEXECPATH}
1546by default) and should be world writable so that anyone can update it to
1547enrich its contents.  The latter file contains descriptions on
1548non-standard or personal command definitions and is specified by
1549@code{YaTeX-help-file-private}.  This file should be put into private
1550directory.
1551
1552@section Online apropos
1553
1554  `Online  apropos' is an  equivalent  of GNU Emacs's apropos.  It
1555shows all the documentations that contains  the keyword entered by
1556the user.
1557
1558@section When no descriptions are found...
1559
1560  If there is no description  on a command   in help files,  YaTeX
1561requires you to  write a description on  that command.  If you are
1562willing  to  do, determine  which help file  to add and  write the
1563description on it referring  your manual of (La)TeX.  Please  send
1564me your additional descriptions if you  describe  the help on some
1565standard commands.   I might  want    to include it  in   the next
1566distribution.
1567
1568@node Browsing file hierarchy, Cooperation with other packages, Online help, Top
1569@comment  node-name,  next,  previous,  up
1570@chapter Browsing file hierarchy
1571@cindex hierarchy
1572@cindex browsing
1573
1574  When you are editing multi-file source, typing
1575
1576@table @kbd
1577@item [prefix] d
1578        @dots{} browse file hierarchy
1579@end table
1580
1581@noindent
1582asks you the parent-most file (which may be defaulted) and displays the
1583documentation hierarchy in the next window.  In this buffer, the following
1584commands are available.
1585
1586@table @kbd
1587@item n
1588        @dots{} move to the next line and show its contents
1589@item p
1590        @dots{} move to the previous line and show its contents
1591@item N
1592        @dots{} move to the next file in the same inclusion level
1593@item P
1594        @dots{} move to the previous file in the same inclusion level
1595@item j
1596        @dots{} move to the next line
1597@item k
1598        @dots{} move to the previous line
1599@item u
1600        @dots{} move to the parent file
1601@item .
1602        @dots{} show the current files contents in the next window
1603@item SPC
1604        @dots{} scroll up the current file window
1605@item DEL, b
1606        @dots{} scroll down the current file window
1607@item <
1608        @dots{} show the beginning of the current file
1609@item >
1610        @dots{} show the end of the current file
1611@item >
1612        @dots{} return to the previous postion after @kbd{<} or @kbd{>}
1613@item RET, g
1614        @dots{} open the current file in the next window
1615@item mouse-2
1616        @dots{} same as RET(available only with window system)
1617@item o
1618        @dots{} other window
1619@item 1
1620        @dots{} delete other windows
1621@item -
1622        @dots{} shrink hierarchy buffer window
1623@item +
1624        @dots{} enlarge hierarchy buffer window
1625@item ?
1626        @dots{} describe mode
1627@item q
1628        @dots{} quit
1629@end table
1630
1631  Note that operations on the file contents in the next window do not work
1632correctly when you close the corresponding file.
1633
1634@node Cooperation with other packages, Customizations, Browsing file hierarchy, Top
1635@comment  node-name,  next,  previous,  up
1636@chapter Cooperation with other packages
1637
1638  YaTeX works better with other brilliant packages.
1639
1640@section gmhist
1641@cindex gmhist
1642@cindex command history
1643@cindex minibuffer history
1644
1645  When you are loading @file{gmhist.el} and @file{gmhist-mh.el}, you can
1646use independent command history list at the prompt of preview command
1647(@kbd{[prefix] tp}) and print command (@kbd{[prefix] tl}).  On each
1648prompt, you can enter the previous command line string repeatedly by
1649typing @kbd{M-p}.
1650
1651@section min-out
1652@cindex min-out
1653
1654  @file{min-out}, the outline minor mode,  can  be used in yatex-mode
1655buffers.  If you want to use it with YaTeX, please refer the
1656file @file{yatexm-o.el} as an example.
1657
1658@node Customizations, Etcetera, Cooperation with other packages, Top
1659@comment  node-name,  next,  previous,  up
1660@chapter Customizations
1661@cindex customizations
1662
1663  You can customize YaTeX by setting Emacs-Lisp variables and by making
1664add-in functions.
1665
1666@menu
1667* Lisp variables::
1668* Add-in functions::
1669* Add-in generator::
1670@end menu
1671
1672@node Lisp variables, Add-in functions, Customizations, Customizations
1673@comment  node-name,  next,  previous,  up
1674@section Lisp variables
1675@cindex customizable variables
1676
1677  You can change the key assignments or make completion more comfortable
1678by setting the values of various variables which control the movement of
1679yatex-mode.
1680
1681  For example, if you want to change the prefix key stroke from @kbd{C-c}
1682to any other sequence, set YaTeX-prefix to whatever you want to use.  If
1683you don't want to use the key sequence @kbd{C-c letter} which is assumed
1684to be the user reserved sequence in Emacs world, set
1685@code{YaTeX-inhibit-prefix-letter} to @code{t}, and all of the default key
1686bind of @kbd{C-c letter} will turn to the corresponding @kbd{C-c C-letter}
1687(but the region based completions that is invoked with @kbd{C-c
1688Capital-letter} remain valid, if you want to disable those bindings, set
1689that variable to 1 instead of @code{t}).
1690
1691@menu
1692* All customizable variables::
1693* Sample definitions::
1694* Hook variables::
1695* Hook file::
1696@end menu
1697
1698@node All customizable variables, Sample definitions, Lisp variables, Lisp variables
1699@comment  node-name,  next,  previous,  up
1700@subsection All customizable variables
1701@cindex all customizable variables
1702
1703  Here are the customizable variables of yatex-mode.  Each value setq-ed
1704in @file{~/.emacs} is preferred and that of defined in @file{yatex.el} is
1705neglected.  Parenthesized contents stands for the default value.  When you
1706are to change some of these variables,  see more detailed documentation of
1707the variable by @kbd{M-x describe-variable}.
1708
1709@defvar YaTeX-japan
1710Set this nil to produce all messages in English
1711(@code{Depends on Japanese feature of Emacs})
1712@end defvar
1713
1714@defvar YaTeX-kanji-code
1715Default buffer-file-coding-system for YaTeX modes' buffer.
1716Set this 0 to no language conversion.  Nil to preserve original
1717coding-system. 1=Shift JIS, 2=JIS, 3=EUC, 4=UTF-8 (@code{1 or 2})
1718@end defvar
1719
1720@defvar YaTeX-prefix
1721Prefix key stroke (@kbd{C-c})
1722@end defvar
1723
1724@defvar YaTeX-inhibit-prefix-letter
1725Change key stroke from @kbd{C-c letter} to @kbd{C-c C-letter} (@code{nil})
1726@end defvar
1727
1728@defvar YaTeX-fill-prefix
1729Fill-prefix used in yatex-mode (@code{nil})
1730@end defvar
1731
1732@defvar YaTeX-user-completion-table
1733Name of user dictionary where learned completion table will be stored.
1734(@code{"~/.yatexrc"})
1735@end defvar
1736
1737@defvar tex-command
1738La@TeX{} typesetter command (@code{"latex"})
1739@end defvar
1740
1741@defvar dvi2-command
1742Preview command (@code{"xdvi -geo +0+0 -s 4"})
1743@end defvar
1744
1745@defvar dviprint-command-format
1746Command format to print dvi file (@code{"dvi2ps %f %t %s | lpr"})
1747@end defvar
1748
1749@defvar dviprint-from-format
1750Start page format of above %f. %b will turn to start page (@code{"-f %b"})
1751@end defvar
1752
1753@defvar dviprint-to-format
1754End page format of above %t. %e will turn to @code{end} page (@code{"-t %e"})
1755@end defvar
1756
1757@defvar makeindex-command
1758Default makeindex command (@code{"makeindex"} (@code{"makeind"} on MS-DOS))
1759@end defvar
1760
1761@defvar YaTeX-dvipdf-command
1762Default command name to convert .dvi to PDF (@code{"dvipdfmx"})
1763@end defvar
1764
1765@defvar YaTeX-on-the-fly-preview-interval
1766Interval time in seconds of idle to trigger on-the-fly preview of
1767environment by @kbd{[prefix] t e}(0.9).
1768@code{Nil} disables on-the-fly preview.
1769@end defvar
1770
1771@defvar YaTeX-on-the-fly-math-preview-engine
1772Function symbol to use on-the-fly preview of MATH environment
1773started by @kbd{[prefix] t e} (@code{'YaTeX-typeset-environment-by-lmp}
1774which calls latex-math-preview-expression function if latex-math-preview
1775is available, otherwise @code{'YaTeX-typeset-environment-by-builtin} which
1776alls built-in function).
1777
1778@code{Nil} disables on-the-fly preview.
1779@end defvar
1780
1781@defvar YaTeX-cmd-gimp
1782Command name of GIMP (code{"gimp"})
1783@end defvar
1784@defvar YaTeX-cmd-tgif
1785Command name of tgif (code{"tgif"})
1786@end defvar
1787@defvar YaTeX-cmd-inkscape
1788Command name of Inkscape (code{"inkscape"})
1789@end defvar
1790@defvar YaTeX-cmd-dia
1791Command name of Dia (code{"dia"})
1792@end defvar
1793@defvar YaTeX-cmd-ooo
1794Command name of OpenOffice.org/LibreOffice (code{"soffice"})
1795@end defvar
1796@defvar YaTeX-cmd-gs
1797Command name of Ghostscript (code{"gs"})
1798@end defvar
1799@defvar YaTeX-cmd-dvips
1800Command name of dvips (code{"dvips"})
1801@end defvar
1802@defvar YaTeX-cmd-displayline
1803Command name of displayline
1804(code{"/Applications/Skim.app/Contents/SharedSupport/displayline"})
1805@end defvar
1806@defvar YaTeX-cmd-edit-ps
1807Command name for editing PostScript files(Value of code{"YaTeX-cmd-gimp"})
1808@end defvar
1809@defvar YaTeX-cmd-edit-pdf
1810Command name for editing PDF files(Value of code{"YaTeX-cmd-ooo"})
1811@end defvar
1812@defvar YaTeX-cmd-edit-ai
1813Command name for editing `.ai' files(Value of code{"YaTeX-cmd-inkscape"})
1814@end defvar
1815@defvar YaTeX-cmd-edit-svg
1816Command name for editing SVG files(Value of code{"YaTeX-cmd-inkscape"})
1817@end defvar
1818@defvar YaTeX-cmd-edit-images
1819Command name for editing image files(Value of code{"YaTeX-cmd-gimp"})
1820@end defvar
1821
1822@defvar YaTeX-need-nonstop
1823Put @code{\nonstopmode@{@}} or not (@code{nil})
1824@end defvar
1825
1826@defvar latex-warning-regexp
1827Regular expression of warning message latex command puts out
1828(@code{"line.* [0-9]*"})
1829@end defvar
1830
1831@defvar latex-error-regexp
1832Regular expression of error message (@code{"l\\.[1-9][0-9]*"})
1833@end defvar
1834
1835@defvar latex-dos-emergency-message
1836Message latex command running on DOS puts at abort (@code{"Emergency stop"})
1837@end defvar
1838
1839@defvar YaTeX-item-regexp
1840Regular expression of item command (@code{"\\\\item"})
1841@end defvar
1842
1843@defvar YaTeX-verb-regexp
1844Regexp of verb family.  Omit \\\\. (@code{"verb\\*?\\|path"})
1845@end defvar
1846
1847@defvar YaTeX-nervous
1848T for using local dictionary (@code{t})
1849@end defvar
1850
1851@defvar YaTeX-sectioning-regexp
1852Regexp of La@TeX{} sectioning command
1853(@code{"\\(part\\|chapter\\*?\\|\\(sub\\)*\\(section\\|paragraph\\)\\*?\\)\\b"})
1854@end defvar
1855
1856@defvar YaTeX-fill-inhibit-environments
1857Inhibit fill in these environments
1858(@code{'("tabular" "tabular*" "array" "picture" "eqnarray" "eqnarray*" "equation" "math" "displaymath" "verbatim" "verbatim*")})
1859@end defvar
1860
1861@defvar YaTeX-uncomment-once
1862T for deleting all preceding @code{%} (@code{nil})
1863@end defvar
1864
1865@defvar YaTeX-close-paren-always
1866T for always close all parenthesis automatically, @code{nil} for only eol
1867(@code{t})
1868@end defvar
1869
1870@defvar YaTeX-auto-math-mode
1871Switch math-mode automatically (@code{t})
1872@end defvar
1873
1874@defvar YaTeX-math-key-list-private
1875User defined alist, math-mode-prefix vs completion alist
1876used in image completion (@code{nil}).  See @file{yatexmth.el}
1877for the information about how to define a completion alist.
1878@end defvar
1879
1880@defvar YaTeX-default-pop-window-height
1881Initial height of typesetting buffer when one-window.
1882Number for the lines of the buffer, numerical string for
1883the percentage of the screen-height. @code{nil} for half height (10)
1884@end defvar
1885
1886@defvar YaTeX-help-file
1887Global online help file name (@file{$doc-directory/../../site-lisp/YATEXHLP.eng})
1888@end defvar
1889
1890@defvar YaTeX-help-file-private
1891Private online help file name (@file{"~/YATEXHLP.eng"})
1892@end defvar
1893
1894@defvar YaTeX-no-begend-shortcut
1895Disable [prefix] b ?? shortcut (@code{nil)}
1896@end defvar
1897
1898@defvar YaTeX-hilit-pattern-adjustment-private
1899List of the list that contain the regular expression and the symbol of
1900logical meaning of the string that matches the pattern.  See also the
1901value from @code{(assq 'yatex-mode hilit-patterns-alist)} and the value of
1902@code{YaTeX-hilit-pattern-adjustment-default} (and even the document of
1903hilit19.el).
1904@end defvar
1905
1906@defvar YaTeX-sectioning-level
1907Alist of LaTeX's sectioning command vs its height.
1908@end defvar
1909
1910@defvar YaTeX-hierarchy-ignore-heading-regexp
1911@code{YaTeX-display-hierarchy} searches for sectioning command first, and
1912comment line secondary as a file headings.  In latter case, ignore lines
1913that match with regular expression of this variable.  Default value of
1914this variable is RCS header expressions and mode specifying line `-*- xxxx
1915-*'.
1916@end defvar
1917
1918@defvar YaTeX-skip-default-reader
1919Non-nil for this variable skips the default argument reader of
1920section-type command when add-in function for it is not defined
1921(@code{nil})
1922@end defvar
1923
1924@defvar YaTeX-create-file-prefix-g
1925When typing @kbd{prefix g} on the @code{\include} line,
1926open the target file even if the file doesn't exist (@code{nil})
1927@end defvar
1928
1929@defvar YaTeX-simple-messages
1930Simplyfy messages of various completions (@code{nil})
1931@end defvar
1932
1933@defvar YaTeX-hilit-sectioning-face
1934When hilit19 and yatex19 is active, YaTeX colors the sectioning commands.
1935This variable specifies the foreground and background color of
1936@code{\part} macro.  The default value is @code{'(yellow/dodgerblue
1937yellow/slateblue)}.  The first element of this list is for the screen when
1938@code{hilit-background-mode} is @code{'light}, and the second element is
1939for @code{'dark}.  You should specify both color as `forecolor/backcolor'.
1940@end defvar
1941
1942@defvar YaTeX-hilit-sectioning-attenuation-rate
1943When color mode, this variable specifies how much attenuate the color
1944density of @code{\subparagraph} compared with that of @code{\chapter}
1945(@code{'(15 40)}) See also @code{YaTeX-hilit-sectioning-face}.
1946@end defvar
1947
1948@defvar YaTeX-use-AMS-LaTeX
1949If you use AMS-LaTeX, set to @code{t} (@code{nil})
1950@end defvar
1951
1952@defvar YaTeX-use-LaTeX2e
1953If you use LaTeX2e, set to @code{t} (@code{t})
1954@end defvar
1955
1956@defvar YaTeX-template-file
1957File name which is automatically inserted at creation
1958(@code{~/work/template.tex})
1959@end defvar
1960
1961@defvar YaTeX-search-file-from-top-directory
1962Non-nil means to search input-files from the directory where main file exists
1963(@code{t})
1964@end defvar
1965
1966@defvar YaTeX-use-font-lock
1967Use font-lock to fontify buffer or not (@code{(featurep 'font-lock)}
1968@end defvar
1969
1970@defvar YaTeX-use-hilit19
1971Use hilit19 to highlight buffer or not (@code{(featurep 'hilit19)}
1972@end defvar
1973
1974@defvar YaTeX-use-italic-bold
1975YaTeX tries to search italic, bold fontsets or not
1976(@code{t} if Emacs-20 or later).  This variable is effective only when
1977font-lock is used.
1978(@code{(featurep 'hilit19)}
1979@end defvar
1980
1981@defvar YaTeX-singlecmd-suffix
1982Suffix which is always inserted after maketitle-type macros.
1983@code{"@{@}"} is recommended.
1984@end defvar
1985
1986@defvar YaTeX-package-alist-private
1987Alist of LaTeX2e-package name vs. lists of macros in it.
1988Set this alist properly and YaTeX automatically check the declaratiion of
1989`usepackage' for corresponding macro, when you input that macro with
1990completion.  If required `usepackage' is not found, YaTeX also
1991automatically inserts `\usepackage'.  Alist is as follows;
1992@lisp
1993   '((PackageName1
1994        (completionType ListOfMacro)
1995        (completionType ListOfMacro))
1996     (PackageName2
1997        (completionType ListOfMacro)
1998        (completionType ListOfMacro...))....)
1999@end lisp
2000completionType is one of @code{env, section, maketitle}.
2001Consult the value of @code{YaTeX-package-alist-default} as an example.
2002@end defvar
2003
2004@defvar YaTeX-tabular-indentation
2005At indentation by @kbd{C-i} in tabular or array environment,
2006YaTeX put the additional spaces to the normail indentation depth.
2007The number of additional spaces is the product of YaTeX-tabular-indentation
2008and the number of column position in tabular.
2009@end defvar
2010
2011@defvar YaTeX-noindent-env-regexp
2012Regexp of environment names that should begin with no indentation.
2013All verbatime-like environment name should match with.
2014@end defvar
2015
2016@defvar YaTeX-electric-indent-mode
2017Emacs 24.4 introduces automatic indentation of current and new lines.
2018This might be annoying for some people.  Pass this value to the function
2019'electric-indent-local-mode.  If you prefer to stop electric-indent-mode
2020in yatex-mode, set `-1' to this variable.
2021@end defvar
2022
2023@defvar YaTeX-ref-default-label-string
2024Default \\ref time string format.
2025This format is like strftime(3) but allowed conversion char are as follows;
2026%y -> Last 2 digit of year,  %b -> Month name,  %m -> Monthe number(1-12),
2027%d -> Day,  %H -> Hour,  %M -> Minute,  %S -> Second,
2028%qx -> alphabetical-decimal conversion of yymmdd.
2029%qX -> alphabetical-decimal conversion of HHMMSS.
2030Beware defualt label-string should be always unique.  So this format string
2031should have both time part (%H+%M+%S or %qX) and date
2032part (%y+(%b|%m)+%d or %qx).
2033@end defvar
2034
2035@defvar YaTeX-ref-generate-label-function
2036Function to generate default label string for unnamed \\label@{@}s.
2037The function pointed to this value should take two arguments.
2038First argument is LaTeX macro's name, second is macro's argument.
2039Here is an example for using this value.
2040@lisp
2041  (setq YaTeX-ref-generate-label-function 'my-yatex-generate-label)
2042  (defun my-yatex-generate-label (command value)
2043    (and (string= command "caption")
2044         (re-search-backward "\\\\begin@{\\(figure\\|table\\)@}" nil t)
2045         (setq command (match-string 1)))
2046    (let ((alist '(("chapter" . "chap")
2047                   ("section" . "sec")
2048                   ("subsection" . "subsec")
2049                   ("figure" . "fig")
2050                   ("table" . "tbl"))))
2051      (if (setq command (cdr (assoc command alist)))
2052          (concat command ":" value)
2053        (YaTeX::ref-generate-label nil nil))))
2054@end lisp
2055@end defvar
2056
2057
2058@node Sample definitions, Hook variables, All customizable variables, Lisp variables
2059@comment  node-name,  next,  previous,  up
2060@subsection Sample definitions
2061@cindex prefix key stroke
2062@cindex fill-prefix
2063
2064 For instance, to change the prefix key stroke to @kbd{ESC}, and name of
2065the user dictionary @file{~/src/emacs/yatexrc}, and set @code{fill-prefix}
2066to single TAB character, add the following @code{setq} to @file{~/.emacs}.
2067
2068@lisp
2069        (setq YaTeX-prefix "\e"
2070              YaTeX-user-completion-table "~/src/emacs/yatexrc"
2071              YaTeX-fill-prefix "       ")
2072@end lisp
2073
2074@node Hook variables, Hook file, Sample definitions, Lisp variables
2075@comment  node-name,  next,  previous,  up
2076@subsection Hook variables
2077@cindex hook variables
2078
2079  More customizations will be done by the hook-function defined in
2080hook-variable @code{yatex-mode-hook}.  This is useful to define a shortcut
2081key sequence to enter some environments other than @code{document} and
2082@code{enumerate} etc.  The following statement defines @code{[prefix] ba}
2083to enter @code{\begin@{abstract@}} ...  @code{=end@{abstract@}}
2084immediately.
2085
2086@lisp
2087        (setq yatex-mode-hook
2088              '(lambda() (YaTeX-define-begend-key "ba" "abstract")))
2089@end lisp
2090
2091        You should use functions @code{YaTeX-define-key}, or
2092@code{YaTeX-define-begend-key}  to define all the key sequences of
2093yatex-mode.
2094
2095@node Hook file,  , Hook variables, Lisp variables
2096@comment  node-name,  next,  previous,  up
2097@subsection Hook file
2098@cindex hook file
2099
2100  You can stuff all of YaTeX related expressions into a file named
2101@file{yatexhks.el} if you have a lot of codes.  YaTeX automatically load
2102this file at the initialization of itself.  Using @file{yatexhks.el}
2103makes @code{yatex-mode-load-hook} unnecessary.
2104
2105@node Add-in functions, Add-in generator, Lisp variables, Customizations
2106@comment  node-name,  next,  previous,  up
2107@section Add-in functions
2108@cindex add-in functions
2109@cindex yatexadd.el
2110
2111  You can easily  define  a function to input  detailed  arguments
2112with completion according  to La@TeX{} environments  or commands.
2113
2114@c @node What is add-in functions?,  , Add-in functions, Add-in functions
2115@comment  node-name,  next,  previous,  up
2116@subsection What is add-in functions?
2117@cindex tabular
2118
2119  When you input @code{tabular} environment, don't you think ``I want
2120YaTeX to complete its argument toward my favorite one such as
2121@code{@{|c|c|c|@}}...''?  Yes, you can define the function to complete
2122arguments for any environment and any La@TeX{} commands.
2123
2124@subsection Procedure
2125
2126  Here is the procedure to define add-in functions.
2127@enumerate
2128@item
2129Define the function
2130@item
2131Put the function into @file{yatexhks.el}
2132@end enumerate
2133
2134@menu
2135* How the add-in function works::
2136* How the function is called::
2137* Useful functions for creating add-in::
2138* Contribution::
2139@end menu
2140
2141@node How the add-in function works, How the function is called, Add-in functions, Add-in functions
2142@comment  node-name,  next,  previous,  up
2143@subsection How the add-in function works
2144
2145There are three types of add-in.
2146
2147@enumerate
2148@item
2149Option add-in
2150@item
2151argument add-in
2152@item
2153enclosing add-in
2154@end enumerate
2155
2156@dfn{Option add-in} returns the
2157La@TeX{}'s optional parameters such as optional strings after
2158@code{\begin@{ENV@}}, optional strings between a section-type command
2159and its first argument, and optional strings just after type
2160maketitle-type command.  The following illustrates the name of add-in
2161functions, where underlined strings are generated by add-in functions.
2162
2163@display
2164\begin@{table@}[ht]		(Function name: YaTeX:table)
2165             ~~~~
2166\put(100,200)@{@}		(Function name: YaTeX:put)
2167    ~~~~~~~~~
2168\sum_@{i=0@}^@{n@}		(Function name: YaTeX:sum)
2169    ~~~~~~~~~~
2170@end display
2171
2172  Obviously, the function name is decided by concatenating the prefix
2173`YaTeX:' and La@TeX{} command's name.
2174
2175  Another add-in type is @dfn{argument add-in}, which completes arguments
2176for section-type commands.
2177
2178@display
2179\newcommand@{\foo@}@{bar@}	(Function name: YaTeX::newcommand)
2180            ~~~~  ~~~
2181@end display
2182
2183  When the section-type command is inputted, the function named by
2184concatenating `YaTeX::' and section-type command, is called automatically
2185with an integer argument which indicates which argument of section-type
2186command is being read.  Thus the add-in should determine the
2187job referring the value of its argument.
2188
2189  @dfn{enclosing add-in} is for modifying and/or checking the region that
2190will be enclosed by section-type commands via @kbd{[prefix] S}.  An
2191enclosing add-in function will be called with two arguments, beginning of
2192the enclosed region and end of the region.  Suppose you want to enclose
2193the existing text @code{(a+b)/c} by @code{\frac@{@}}.
2194
2195@display
2196a/c
2197|  |
2198A  B
2199@end display
2200
2201You do set-mark-command at point A and then move to point B.  Typing
2202@kbd{[prefix] S} and input @code{frac} enclose the region like this;
2203
2204@display
2205\frac@{a/c@}
2206@end display
2207
2208Normally, the expression @code{a/c} is translated to
2209@code{\frac@{a@}@{c@}}. An enclosing add-in is useful for modifying
2210@code{/} to @code{@}@{}.
2211
2212@menu
2213* Defining option-add-in::
2214* Defining argument-add-in::
2215* Defining enclosing-add-in::
2216@end menu
2217
2218@node Defining option-add-in, Defining argument-add-in, How the add-in function works, How the add-in function works
2219@comment  node-name,  next,  previous,  up
2220@subsubsection Defining `option add-in'
2221
2222  If you want @code{@{|c|c|c|@}} for all @code{tabular} environment,
2223
2224@lisp
2225        (defun YaTeX:tabular ()
2226          "@{|c|c|c|@}")
2227@end lisp
2228
2229@noindent
2230is enough.  If you want more complicated format, define as below.
2231
2232@lisp
2233        (defun YaTeX:tabular ()
2234          "@{@@@{\\vrule width 1pt\\ @}|||@@@{\\ \\vrule width 1pt@}@}")
2235@end lisp
2236
2237@noindent
2238Note that the character @code{\} must be described as @code{\\} in
2239Emacs-Lisp.  The next example reads the tabular format from keyboard.
2240@lisp
2241        (defun YaTeX:tabular ()
2242          (concat "@{" (read-string "Rule: ") "@}"))
2243@end lisp
2244
2245@node Defining argument-add-in, Defining enclosing-add-in, Defining option-add-in, How the add-in function works
2246@comment  node-name,  next,  previous,  up
2247@subsubsection Defining `argument add-in'
2248
2249  This section describes how to define the add-in function for
2250@code{\newcommand}.
2251
2252  The first argument of @code{\newcommand} begins always with @code{\}.
2253The second argument is usually so complex that we can not edit them in the
2254minibuffer.  Here is the created function considering this.
2255
2256@lisp
2257        (defun YaTeX::newcommand (n)	;n is argument position
2258          (cond
2259           ((= n 1)			;1st argument is macro name
2260            (read-string "Command: " "\\")) ;initial input `\'
2261           ((= n 2) "")			;do nothing when reading arg#2
2262           (t nil)))
2263@end lisp
2264
2265  Note that when the `argument add-in' function return `nil', normal
2266argument reader will be called.
2267
2268@node Defining enclosing-add-in,  , Defining argument-add-in, How the add-in function works
2269@comment  node-name,  next,  previous,  up
2270@subsubsection Defining `enclosing add-in'
2271
2272  This section describes how to define the add-in function for
2273text enclosed by @code{\frac@{@}}.
2274
2275  When enclosing the text @code{5/3} by @code{\frac@{@}}, you might want to
2276replace @code{/} with @code{@}@{}.  Enclosing function
2277@code{YaTeX::frac-region} is called with two arguments, beginning of
2278enclosed text and end of enclosed text.  The function is expected to
2279replace @code{/} with @code{@}@{}.  Here is an example expression.
2280
2281@lisp
2282(defun YaTeX::frac-region (beg end)
2283  (catch 'done
2284    (while (search-forward "/" end t)
2285      (goto-char (match-beginning 0))
2286      (if (y-or-n-p "Replace this slash(/) with `@}@{'")
2287	  (throw 'done (replace-match "@}@{")))
2288      (goto-char (match-end 0)))))
2289@end lisp
2290
2291@node How the function is called, Useful functions for creating add-in, How the add-in function works, Add-in functions
2292@comment  node-name,  next,  previous,  up
2293@subsection How the function is called
2294
2295  YaTeX calls the add-in functions for specified begin-type, section-type,
2296and maketitle-type command, if any.  `Option add-in' functions for
2297begin-type are called when @code{\begin@{ENV@}} has been inserted,
2298functions for section-type are called just before input of the first
2299argument, and functions for maketitle-type is called after maketitle-type
2300command has been inserted.  `Argument add-in' functions are called at each
2301entry of arguments for section-type commands.
2302
2303@node Useful functions for creating add-in, Contribution, How the function is called, Add-in functions
2304@comment  node-name,  next,  previous,  up
2305@subsection Useful functions for creating add-in
2306
2307  Many add-in functions for typical La@TeX{} commands are defined in
2308@file{yatexadd.el}.  Those are also useful as references.  Here are the
2309short descriptions on useful functions, where [F] means function, [A]
2310means arguments, [D] means description.
2311
2312@table @kbd
2313@item [F]
2314YaTeX:read-position
2315@itemx [A]
2316Character list which can show up in the brackets
2317@itemx [D]
2318   Return the location specifier such as `[htb]'.  When
2319nothing is entered, omit [] itself.  If the possible characters
2320are "htbp", call this function as
2321@code{(YaTeX:read-position "htbp")}
2322
2323@item [F]
2324YaTeX:read-coordinates
2325@itemx [A]
2326Base prompt, X-axis prompt, Y-axis prompt     (each optional)
2327@itemx [D]
2328  Read the coordinates with the prompt ``BasePrompt X-axisPrompt:'' for
2329X-axis, ``BasePrompt Y-axisPrompt:'' for Y-axis, and return it in the form
2330of ``(X,Y)''.  The default prompts are @code{Dimension}, @code{X},
2331@code{Y} respectively.
2332
2333@item [F]
2334YaTeX:check-completion-type
2335@itemx [A]
2336One of the symbols: 'begin, 'section, or 'maketitle
2337@itemx [D]
2338  Check the current completion type is specified one and cause error if
2339not. The variable @code{YaTeX-current-completion-type} holds the symbol
2340according to the current completion type.
2341@end table
2342
2343@node Contribution,  , Useful functions for creating add-in, Add-in functions
2344@comment  node-name,  next,  previous,  up
2345@subsection Contribution
2346
2347  If you make your own pretty function and you let it be in public, please
2348send me the function.  I'm going to include it in the next release.
2349
2350@node Add-in generator,  , Add-in functions, Customizations
2351@comment  node-name,  next,  previous,  up
2352@section Add-in generator
2353
2354  First, don't forget to read the section of add-in functions @ref{Add-in
2355functions}.  If you easily understand how to define them, there's no need
2356to read this section.  But being not familiar with Emacs-Lisp, when you
2357don't have clear idea what to do, this section describes how to get YaTeX
2358make add-in function.
2359
2360  There are two methods of generation.  One is for fully interactive
2361generator for beginners and another requires little knowledge of
2362Emacs-Lisp.
2363
2364@subsection Generator for beginners
2365  The former generator is called by
2366@center @kbd{M-x YaTeX-generate}
2367
2368@noindent
2369strokes.  All you have to do is follow the guidances.  Defying them may cases
2370the disaster (I wonder what is it???).  So when you make some mistake, it
2371is recommendable to type @kbd{C-g} and start afresh.
2372
2373@subsection Simple generator
2374
2375  The latter generator is invoked by the next sequence.
2376@center @kbd{M-x YaTeX-generate-simple}
2377This generator can make both ``option add-in'' and ``argument add-in''
2378(@emph{refer the section add-in functions}
2379@ref{How the add-in function works}), whereas @code{YaTeX-generate}
2380cannot make ``argument addin''.
2381
2382  For example, assume you have the LaTeX command as follows.
2383
2384@example
2385	\epsinput[t](250,50)@{hoge.eps@}@{plain@}@{Picture of foo@}
2386	         (A)  (B)     (1)      (2)      (3)
2387	(A)Optional parameter to specify the position
2388	   One of t(top), b(bottom), l(left), r(right)
2389	(B)Maximum size of frame
2390	(1)1st argument is filename of EPS file
2391	(2)2nd argument indicates
2392		plain		do nothing
2393		frame		make frame around image
2394		dframe		make double-frame around image
2395	   for included EPS file.
2396	(3)Caption for the picture
2397@end example
2398
2399  Now get start with generation.  Typing @kbd{M-x YaTeX-generate-simple}
2400brings the prompt:
2401@display
2402                (O)ption? (A)rgument?
2403@end display
2404
2405@subsubsection Generating ``option add-in''
2406@cindex option add-in
2407
2408  Since (A), (B) above are optional argument, all we have to do to
2409complete them is define the option add-in for them.  Let's generate the
2410function to complete (A).
2411
2412@display
2413                M-x YaTeX-generate-simple RET
2414                epsinput RET
2415                o
2416@end display
2417
2418@noindent
2419Typing as above leads the next prompt.
2420
2421@display
2422Read type(1): (S)tring (C)omplete (F)ile ([)option (P)osition co(O)rd. (q)uit
2423@end display
2424
2425@noindent
2426  This asks that ``Which type is the completion style of 1st argument?''.
2427Here are the possible completion style.
2428
2429@table @code
2430@item String
2431read plain string
2432@item Complete
2433read with completion
2434@item File
2435read file name
2436@item Option
2437read optional string (if string omitted, omit [] too)
2438@item Position
2439read positional option (like [htbp])
2440@item Coord.
2441read coordinates
2442@item Quit
2443quit from generating
2444@end table
2445
2446  Since (A) is the optional argument to specify the location of included
2447EPS file, the completion style is @code{Position}, and the possible
2448characters are t, b, l, and r.  To tell these information to generator,
2449operate as follows.
2450
2451@display
2452                Read type(1).... 		p
2453                Acceptable characters:		tblr RET
2454@end display
2455
2456  (B) is coordinate.  So its completion style is coOrd.  We want a prompt
2457meaning ``Maximum size'' when completion.
2458
2459@display
2460                Read type(2)....		o
2461                Prompt for coordinates:		Max size RET
2462@end display
2463
2464  That's all for optional argument.  Select quit.
2465
2466@display
2467                Read type(3)....		q
2468@end display
2469
2470  Then the generated option add-in function for \epsinput will be shown in
2471the next window.
2472
2473@subsubsection Generating ``argument add-in''
2474@cindex argument add-in
2475
2476  Next, create the argument add-in.  The arguments for \epsinput are EPS
2477file name, framing style, and caption string in sequence.
2478
2479@display
2480                M-x YaTeX-generate-simple RET
2481                epsinput RET
2482                a
2483@end display
2484
2485  Above key strokes bring the prompt that asks the number of argument.
2486Answer it with 3.
2487
2488@display
2489                How many arguments?: 3 RET
2490@end display
2491
2492  Then the generator asks the completion style and prompt for completion.
2493Answer them.  @kbd{f} for FileName and prompt string.
2494
2495@display
2496                Read type(1)....		f
2497                Prompt for argument#1		EPS file name RET
2498@end display
2499
2500  The second argument is one of selected symbol.  So the completion type
2501is @code{Completion}.
2502
2503@display
2504                Read type(2)....		c
2505                Prompt for argument#2		Include style RET
2506@end display
2507
2508  Then all the candidates ready to be read.  Type single RET after
2509entering all.
2510
2511@display
2512		Item[1](RET to exit):		plain RET
2513		Item[2](RET to exit):		frame RET
2514		Item[3](RET to exit):		dframe RET
2515		Item[4](RET to exit):		RET
2516@end display
2517
2518  The following prompt asks whether the entered string must belong to
2519candidates or not.  In this case, since the argument must be one of
2520@code{plain}, @code{frame}, and @code{dframe}, type @code{y}.
2521
2522@display
2523                Require match? (y or n)		y
2524@end display
2525
2526  The last argument is the caption string for which any completion is
2527needed.
2528
2529@display
2530                Read type(3)....		s
2531                Prompt for argument#3		Caption RET
2532                default:			Figure of RET
2533@end display
2534
2535  Finally we'll get the argument add-in in the next window.
2536
2537@subsection Contribution
2538
2539  If you get your own pretty function and you let it be in public, please
2540steel yourself in the happy atmosphere and do not send me the function.
2541I do know it is not fine because it is generated by yatexgen:-p.
2542
2543@node Etcetera, Copying, Customizations, Top
2544@comment  node-name,  next,  previous,  up
2545@chapter Etcetera
2546
2547  The standard completion  tables provided  in @file{yatex.el} contain  a
2548few La@TeX{}  commands  I frequently use.  This is  to lessen the key
2549strokes to  complete  entire  word, because   too  many candidates
2550rarely used  often cause too many  hits.   Therefore always try to
2551use completion  in order to  enrich your dictionary,  and you will
2552also find `Wild Bird' growing suitable for your La@TeX{} style.
2553
2554  The package name `Wild Bird' is the English translation of Japanese
2555title `Yachou', which is a trick on words of Japanese.
2556
2557@node Copying,  , Etcetera, Top
2558@comment  node-name,  next,  previous,  up
2559@chapter Copying
2560
2561  This   program   is  distributed   as   a   free   software.   You   can
2562use/copy/modify/redistribute this software freely  but with NO warranty to
2563anything  as a result  of using  this software.   Adopting code  from this
2564program is  also free.  But  I would not  do contract act.
2565
2566  This software can be treated with: ``The 2-Clause BSD License''
2567(since 2017-09-09, yatex 1.80).
2568
2569Any reports  and suggestions are  welcome as long  as I feel  interests in
2570this software.  My possible  e-mail address is `yuuji@@yatex.org'.  (as of
2571Sep.2017)  And there  is  mailing  list for  YaTeX.   Although the  common
2572language is Japanese,  questions in English will be  welcome.  To join the
2573ML,   send  the   mail  whose   subject   is  `append'   to  the   address
2574`yatex@@yatex.org.    If   you  have   some   question,   please  ask   to
2575`yatex-admin@@yatex.org'.
2576
2577  The specification of this software will be surely modified
2578(depending on my feelings) without notice :-p.
2579
2580
2581@flushright
2582                                                        HIROSE Yuuji
2583@end flushright
2584@bye
2585
2586Local variables:
2587mode: texinfo
2588fill-prefix: nil
2589fill-column: 74
2590End:
2591