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