home *** CD-ROM | disk | FTP | other *** search
/ Internet File Formats / InternetFileFormatsCD.bin / text / latex / mac / alpha.6.0.sit / Tcl / SystemCode / latexEngine.tcl < prev    next >
MacBinary  |  1995-07-16  |  30.3 KB  |  [TEXT/ALFA]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Sun Jul 16 02:21:42 1995, modified Sun Jul 16 02:21:42 1995, creator Alpha editor, type ASCII, 30370 bytes "latexEngine.tcl" , at 0x7722 382 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[ALFA]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0f 6c 61 74 65 78 45 | 6e 67 69 6e 65 2e 74 63 |..latexE|ngine.tc|
|00000010| 6c 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |l.......|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 41 4c 46 | 41 01 00 00 00 00 00 00 |.TEXTALF|A.......|
|00000050| 00 00 00 00 00 76 a2 00 | 00 01 7e ac 2e 60 76 ac |.....v..|..~..`v.|
|00000060| 2e 60 76 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |.`v.....|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 a7 bd 00 00 |........|........|
|00000080| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000090| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000000a0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000000b0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000000c0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 0d 23 23 |########|#####.##|
|000000d0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000000e0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000000f0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000100| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000110| 23 23 23 23 23 23 23 23 | 23 23 23 0d 23 0d 23 20 |########|###.#.# |
|00000120| 6c 61 74 65 78 45 6e 67 | 69 6e 65 2e 74 63 6c 20 |latexEng|ine.tcl |
|00000130| 28 63 61 6c 6c 65 64 20 | 66 72 6f 6d 20 6c 61 74 |(called |from lat|
|00000140| 65 78 2e 74 63 6c 29 0d | 23 0d 23 20 54 68 65 20 |ex.tcl).|#.# The |
|00000150| 4c 61 54 65 58 20 65 6e | 67 69 6e 65 0d 23 0d 23 |LaTeX en|gine.#.#|
|00000160| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000170| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000180| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000190| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000001a0| 23 23 23 23 23 23 23 23 | 23 23 23 23 0d 23 0d 23 |########|####.#.#|
|000001b0| 20 41 75 74 68 6f 72 3a | 20 20 54 6f 6d 20 53 63 | Author:| Tom Sc|
|000001c0| 61 76 6f 20 28 74 72 73 | 63 61 76 6f 40 73 79 72 |avo (trs|cavo@syr|
|000001d0| 2e 65 64 75 29 0d 23 0d | 23 23 23 23 23 23 23 23 |.edu).#.|########|
|000001e0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|000001f0| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000200| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000210| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000220| 23 23 23 23 23 0d 23 23 | 23 23 23 23 23 23 23 23 |#####.##|########|
|00000230| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000240| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000250| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000260| 23 23 23 23 23 23 23 23 | 23 23 23 23 23 23 23 23 |########|########|
|00000270| 23 23 23 0d 0d 0d 23 2d | 2d 2d 2d 2d 2d 2d 2d 2d |###...#-|--------|
|00000280| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000290| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002c0| 2d 0d 23 20 4d 61 72 6b | 20 4d 65 6e 75 3a 0d 23 |-.# Mark| Menu:.#|
|000002d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000002f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000300| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000310| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 0d 0d 70 72 6f 63 |--------|--..proc|
|00000320| 20 54 65 58 4d 61 72 6b | 46 69 6c 65 20 7b 7d 20 | TeXMark|File {} |
|00000330| 7b 0d 09 73 65 74 20 65 | 6e 64 20 5b 6d 61 78 50 |{..set e|nd [maxP|
|00000340| 6f 73 5d 0d 09 73 65 74 | 20 70 6f 73 20 30 0d 09 |os]..set| pos 0..|
|00000350| 73 65 74 20 6c 20 7b 7d | 0d 0d 09 23 20 52 65 6d |set l {}|...# Rem|
|00000360| 6f 76 65 20 61 6c 6c 20 | 70 72 65 76 69 6f 75 73 |ove all |previous|
|00000370| 20 6d 61 72 6b 73 20 69 | 6e 20 74 68 69 73 20 66 | marks i|n this f|
|00000380| 69 6c 65 3f 0d 09 73 65 | 74 20 65 78 70 20 7b 5c |ile?..se|t exp {\|
|00000390| 5c 28 28 73 75 62 29 2a | 73 65 63 74 69 6f 6e 7c |\((sub)*|section||
|000003a0| 63 68 61 70 74 65 72 29 | 28 5c 5b 2e 2a 5c 5d 7c |chapter)|(\[.*\]||
|000003b0| 5c 2a 29 3f 7b 28 5b 5e | 7b 7d 5d 2a 29 7d 7d 0d |\*)?{([^|{}]*)}}.|
|000003c0| 09 77 68 69 6c 65 20 7b | 21 5b 63 61 74 63 68 20 |.while {|![catch |
|000003d0| 7b 73 65 61 72 63 68 20 | 2d 73 20 2d 66 20 31 20 |{search |-s -f 1 |
|000003e0| 2d 72 20 31 20 2d 6d 20 | 30 20 2d 69 20 30 20 24 |-r 1 -m |0 -i 0 $|
|000003f0| 65 78 70 20 24 70 6f 73 | 7d 20 72 65 73 5d 7d 20 |exp $pos|} res]} |
|00000400| 7b 0d 09 09 73 65 74 20 | 73 74 61 72 74 20 5b 6c |{...set |start [l|
|00000410| 69 6e 64 65 78 20 24 72 | 65 73 20 30 5d 0d 09 09 |index $r|es 0]...|
|00000420| 73 65 74 20 65 6e 64 20 | 5b 6c 69 6e 64 65 78 20 |set end |[lindex |
|00000430| 24 72 65 73 20 31 5d 0d | 09 09 73 65 74 20 74 65 |$res 1].|..set te|
|00000440| 78 74 20 5b 67 65 74 54 | 65 78 74 20 24 73 74 61 |xt [getT|ext $sta|
|00000450| 72 74 20 24 65 6e 64 5d | 0d 09 09 69 66 20 7b 5b |rt $end]|...if {[|
|00000460| 72 65 67 65 78 70 20 7b | 5c 7b 28 2e 2a 29 5c 7d |regexp {|\{(.*)\}|
|00000470| 7d 20 24 74 65 78 74 20 | 64 75 6d 6d 79 20 6d 74 |} $text |dummy mt|
|00000480| 63 68 5d 7d 20 7b 0d 09 | 09 09 73 65 74 20 6c 61 |ch]} {..|..set la|
|00000490| 62 20 22 22 0d 09 09 09 | 69 66 20 7b 5b 72 65 67 |b ""....|if {[reg|
|000004a0| 65 78 70 20 7b 28 73 75 | 62 29 2a 73 65 63 74 69 |exp {(su|b)*secti|
|000004b0| 6f 6e 7d 20 24 74 65 78 | 74 20 74 69 74 6c 65 5d |on} $tex|t title]|
|000004c0| 7d 20 74 68 65 6e 20 7b | 0d 09 09 09 09 61 70 70 |} then {|.....app|
|000004d0| 65 6e 64 20 6c 61 62 20 | 24 6c 20 5b 66 6f 72 6d |end lab |$l [form|
|000004e0| 61 74 20 22 25 5b 65 78 | 70 72 20 5b 73 74 72 69 |at "%[ex|pr [stri|
|000004f0| 6e 67 20 6c 65 6e 67 74 | 68 20 24 74 69 74 6c 65 |ng lengt|h $title|
|00000500| 5d 20 2d 20 37 5d 5c 73 | 22 20 22 22 5d 0d 09 09 |] - 7]\s|" ""]...|
|00000510| 09 7d 20 65 6c 73 65 20 | 7b 0d 09 09 09 09 73 65 |.} else |{.....se|
|00000520| 74 20 6c 20 7b 20 20 20 | 7d 0d 09 09 09 7d 0d 09 |t l { |}....}..|
|00000530| 09 09 23 20 57 54 50 20 | 0d 09 09 09 72 65 67 73 |..# WTP |....regs|
|00000540| 75 62 20 2d 61 6c 6c 20 | 22 5c 5b 5c 20 5c 72 5c |ub -all |"\[\ \r\|
|00000550| 74 5c 5d 5c 2b 22 20 24 | 6d 74 63 68 20 7b 20 7d |t\]\+" $|mtch { }|
|00000560| 20 6d 74 63 68 0d 09 09 | 09 69 66 20 7b 5b 73 74 | mtch...|.if {[st|
|00000570| 72 69 6e 67 20 6c 65 6e | 67 74 68 20 24 6d 74 63 |ring len|gth $mtc|
|00000580| 68 5d 20 3e 20 33 30 7d | 20 7b 20 73 65 74 20 6d |h] > 30}| { set m|
|00000590| 74 63 68 20 22 5b 73 74 | 72 69 6e 67 20 72 61 6e |tch "[st|ring ran|
|000005a0| 67 65 20 24 6d 74 63 68 | 20 30 20 32 36 5d 2e 2e |ge $mtch| 0 26]..|
|000005b0| 2e 22 20 7d 0d 09 09 09 | 23 0d 09 09 09 61 70 70 |." }....|#....app|
|000005c0| 65 6e 64 20 6c 61 62 20 | 24 6d 74 63 68 0d 09 09 |end lab |$mtch...|
|000005d0| 09 72 65 67 73 75 62 20 | 2d 61 6c 6c 20 7b 5b 3c |.regsub |-all {[<|
|000005e0| 28 5d 7d 20 24 6c 61 62 | 20 7b 7d 20 6c 61 62 0d |(]} $lab| {} lab.|
|000005f0| 09 09 09 72 65 67 73 75 | 62 20 2d 61 6c 6c 20 7b |...regsu|b -all {|
|00000600| 5b 29 3e 5d 7d 20 24 6c | 61 62 20 7b c8 7d 20 6c |[)>]} $l|ab {.} l|
|00000610| 61 62 0d 09 09 09 72 65 | 67 73 75 62 20 2d 61 6c |ab....re|gsub -al|
|00000620| 6c 20 7b 5b 21 5e 2f 5d | 7d 20 24 6c 61 62 20 7b |l {[!^/]|} $lab {|
|00000630| 7c 7d 20 6c 61 62 0d 09 | 09 09 73 65 74 4e 61 6d ||} lab..|..setNam|
|00000640| 65 64 4d 61 72 6b 20 24 | 6c 61 62 20 5b 6c 69 6e |edMark $|lab [lin|
|00000650| 65 53 74 61 72 74 20 5b | 65 78 70 72 20 24 73 74 |eStart [|expr $st|
|00000660| 61 72 74 20 2d 20 31 5d | 5d 20 24 73 74 61 72 74 |art - 1]|] $start|
|00000670| 20 24 73 74 61 72 74 0d | 09 09 7d 0d 09 09 73 65 | $start.|..}...se|
|00000680| 74 20 70 6f 73 20 5b 65 | 78 70 72 20 24 65 6e 64 |t pos [e|xpr $end|
|00000690| 2b 31 5d 0d 09 7d 0d 7d | 0d 0d 23 2d 2d 2d 2d 2d |+1]..}.}|..#-----|
|000006a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000006e0| 2d 2d 2d 2d 2d 0d 23 20 | 43 6f 6d 6d 61 6e 64 2d |-----.# |Command-|
|000006f0| 64 6f 75 62 6c 65 2d 63 | 6c 69 63 6b 69 6e 67 3a |double-c|licking:|
|00000700| 0d 23 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.#------|--------|
|00000710| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000720| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000730| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000740| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 23 20 49 |--------|----.# I|
|00000750| 6e 20 54 65 58 20 6d 6f | 64 65 2c 20 75 73 65 20 |n TeX mo|de, use |
|00000760| 43 6d 64 2d 64 6f 75 62 | 6c 65 2d 63 6c 69 63 6b |Cmd-doub|le-click|
|00000770| 73 20 74 6f 20 66 6f 6c | 6c 6f 77 20 72 65 66 65 |s to fol|low refe|
|00000780| 72 65 6e 63 65 73 20 61 | 6e 64 20 63 69 74 61 74 |rences a|nd citat|
|00000790| 69 6f 6e 73 2c 0d 23 20 | 6f 72 20 6f 70 65 6e 20 |ions,.# |or open |
|000007a0| 69 6e 70 75 74 20 66 69 | 6c 65 73 2e 0d 23 0d 23 |input fi|les..#.#|
|000007b0| 20 28 77 72 69 74 74 65 | 6e 20 62 79 20 54 6f 6d | (writte|n by Tom|
|000007c0| 20 50 6f 6c 6c 61 72 64 | 20 61 6e 64 20 41 6e 64 | Pollard| and And|
|000007d0| 72 65 61 73 20 41 6d 61 | 6e 6e 29 0d 23 0d 23 20 |reas Ama|nn).#.# |
|000007e0| 52 65 6d 61 69 6e 69 6e | 67 20 62 75 67 73 3a 0d |Remainin|g bugs:.|
|000007f0| 23 20 20 20 2d 20 73 65 | 61 72 63 68 65 73 20 61 |# - se|arches a|
|00000800| 72 65 20 73 75 63 63 65 | 73 73 66 75 6c 20 65 76 |re succe|ssful ev|
|00000810| 65 6e 20 69 66 20 74 68 | 65 20 70 61 74 74 65 72 |en if th|e patter|
|00000820| 6e 20 69 73 20 63 6f 6d | 6d 65 6e 74 65 64 20 6f |n is com|mented o|
|00000830| 75 74 0d 09 0d 70 72 6f | 63 20 54 65 58 44 62 6c |ut...pro|c TeXDbl|
|00000840| 43 6c 69 63 6b 20 7b 66 | 72 6f 6d 20 74 6f 7d 20 |Click {f|rom to} |
|00000850| 7b 0d 09 67 6c 6f 62 61 | 6c 20 54 65 58 6d 6f 64 |{..globa|l TeXmod|
|00000860| 65 56 61 72 73 20 54 65 | 58 53 65 61 72 63 68 50 |eVars Te|XSearchP|
|00000870| 61 74 68 0d 0d 09 23 20 | 52 65 73 65 74 20 74 68 |ath...# |Reset th|
|00000880| 65 20 73 65 61 72 63 68 | 20 70 61 74 68 20 6c 69 |e search| path li|
|00000890| 73 74 2c 20 66 6f 72 63 | 69 6e 67 20 69 74 20 74 |st, forc|ing it t|
|000008a0| 6f 20 62 65 20 72 65 62 | 75 69 6c 74 2e 0d 09 23 |o be reb|uilt...#|
|000008b0| 20 28 49 74 20 77 6f 75 | 6c 64 20 69 6d 70 72 6f | (It wou|ld impro|
|000008c0| 76 65 20 72 65 73 70 6f | 6e 73 69 76 65 6e 65 73 |ve respo|nsivenes|
|000008d0| 73 20 69 66 20 74 68 65 | 20 73 65 61 72 63 68 50 |s if the| searchP|
|000008e0| 61 74 68 20 77 65 72 65 | 20 6f 6e 6c 79 0d 09 23 |ath were| only..#|
|000008f0| 20 72 65 62 75 69 6c 74 | 20 61 73 20 6e 65 65 64 | rebuilt| as need|
|00000900| 65 64 2c 20 70 65 72 68 | 61 70 73 20 61 74 20 73 |ed, perh|aps at s|
|00000910| 74 61 72 74 75 70 20 61 | 6e 64 20 77 68 65 6e 20 |tartup a|nd when |
|00000920| 72 65 71 75 65 73 74 65 | 64 20 62 79 20 74 68 65 |requeste|d by the|
|00000930| 20 75 73 65 72 2e 29 0d | 09 23 0d 09 73 65 74 20 | user.).|.#..set |
|00000940| 54 65 58 53 65 61 72 63 | 68 50 61 74 68 20 7b 7d |TeXSearc|hPath {}|
|00000950| 0d 09 0d 09 73 65 74 20 | 62 69 62 50 61 74 20 22 |....set |bibPat "|
|00000960| 5c 5c 62 69 62 6c 69 6f | 67 72 61 70 68 79 5c 7b |\\biblio|graphy\{|
|00000970| 22 0d 09 73 65 74 20 74 | 68 65 42 69 62 50 61 74 |"..set t|heBibPat|
|00000980| 20 22 5c 5c 62 65 67 69 | 6e 5c 7b 74 68 65 62 69 | "\\begi|n\{thebi|
|00000990| 62 6c 69 6f 67 72 61 70 | 68 79 22 0d 09 73 65 74 |bliograp|hy"..set|
|000009a0| 20 62 69 62 69 74 65 6d | 50 61 74 20 7b 5c 62 69 | bibitem|Pat {\bi|
|000009b0| 62 69 74 65 6d 28 5c 5b | 5b 5e 5c 5d 2a 5c 5d 29 |bitem(\[|[^\]*\])|
|000009c0| 3f 5c 7b 7d 0d 09 73 65 | 74 20 6c 61 62 65 6c 50 |?\{}..se|t labelP|
|000009d0| 61 74 20 22 5c 5c 6c 61 | 62 65 6c 5c 7b 22 0d 20 |at "\\la|bel\{". |
|000009e0| 09 73 65 74 20 62 69 62 | 54 6f 70 50 61 74 20 7b |.set bib|TopPat {|
|000009f0| 40 28 5b 61 2d 7a 41 2d | 5a 5d 2b 29 5b 5c 7b 5c |@([a-zA-|Z]+)[\{\|
|00000a00| 28 5d 5b 20 09 5d 2a 7d | 0d 09 0d 09 23 20 45 78 |(][ .]*}|....# Ex|
|00000a10| 74 65 6e 64 20 73 65 6c | 65 63 74 69 6f 6e 20 74 |tend sel|ection t|
|00000a20| 6f 20 6c 61 72 67 65 73 | 74 20 73 74 72 69 6e 67 |o larges|t string|
|00000a30| 20 64 65 6c 69 6d 69 74 | 65 64 20 62 79 20 63 6f | delimit|ed by co|
|00000a40| 6d 6d 61 73 20 6f 72 20 | 63 75 72 6c 79 2d 62 72 |mmas or |curly-br|
|00000a50| 61 63 65 73 0d 09 73 65 | 74 20 74 65 78 74 20 5b |aces..se|t text [|
|00000a60| 73 74 72 69 6e 67 20 74 | 72 69 6d 20 5b 65 76 61 |string t|rim [eva|
|00000a70| 6c 20 67 65 74 54 65 78 | 74 20 5b 54 65 58 45 78 |l getTex|t [TeXEx|
|00000a80| 74 65 6e 64 41 72 67 20 | 24 66 72 6f 6d 20 24 74 |tendArg |$from $t|
|00000a90| 6f 5d 5d 5d 0d 0d 09 23 | 20 51 75 6f 74 65 20 72 |o]]]...#| Quote r|
|00000aa0| 65 67 65 78 70 2d 61 63 | 74 69 76 65 20 63 68 61 |egexp-ac|tive cha|
|00000ab0| 72 61 63 74 65 72 73 20 | 69 6e 20 63 61 73 65 20 |racters |in case |
|00000ac0| 77 65 20 75 73 65 20 24 | 74 65 78 74 20 69 6e 20 |we use $|text in |
|00000ad0| 61 20 72 65 67 65 78 70 | 20 73 65 61 72 63 68 0d |a regexp| search.|
|00000ae0| 09 73 65 74 20 71 74 65 | 78 74 20 5b 71 75 6f 74 |.set qte|xt [quot|
|00000af0| 65 45 78 70 72 20 24 74 | 65 78 74 5d 0d 09 0d 09 |eExpr $t|ext]....|
|00000b00| 23 20 53 65 74 20 24 63 | 6d 64 20 74 6f 20 54 65 |# Set $c|md to Te|
|00000b10| 58 20 63 6f 6d 6d 61 6e | 64 20 66 6f 72 20 77 68 |X comman|d for wh|
|00000b20| 69 63 68 20 74 68 65 20 | 73 65 6c 65 63 74 69 6f |ich the |selectio|
|00000b30| 6e 20 69 73 20 61 6e 20 | 61 72 67 75 6d 65 6e 74 |n is an |argument|
|00000b40| 2c 20 62 75 74 0d 09 23 | 20 6f 6e 6c 79 20 69 66 |, but..#| only if|
|00000b50| 20 75 73 65 72 20 63 6c | 69 63 6b 65 64 20 6f 6e | user cl|icked on|
|00000b60| 20 61 20 76 61 6c 69 64 | 20 63 6f 6d 6d 61 6e 64 | a valid| command|
|00000b70| 20 61 72 67 75 6d 65 6e | 74 2e 0d 09 73 65 74 20 | argumen|t...set |
|00000b80| 63 6d 64 20 7b 7d 0d 09 | 69 66 20 7b 5b 73 65 74 |cmd {}..|if {[set|
|00000b90| 20 6d 74 63 68 20 5b 66 | 69 6e 64 43 6f 6d 6d 61 | mtch [f|indComma|
|00000ba0| 6e 64 57 69 74 68 50 61 | 72 74 73 20 24 66 72 6f |ndWithPa|rts $fro|
|00000bb0| 6d 20 30 5d 5d 20 21 3d | 20 22 22 7d 20 7b 0d 09 |m 0]] !=| ""} {..|
|00000bc0| 09 73 65 74 20 62 65 67 | 20 5b 6c 69 6e 64 65 78 |.set beg| [lindex|
|00000bd0| 20 24 6d 74 63 68 20 30 | 5d 0d 09 09 73 65 74 20 | $mtch 0|]...set |
|00000be0| 61 72 67 20 5b 6c 69 6e | 64 65 78 20 24 6d 74 63 |arg [lin|dex $mtc|
|00000bf0| 68 20 32 5d 0d 09 09 73 | 65 74 20 65 6e 64 20 5b |h 2]...s|et end [|
|00000c00| 6c 69 6e 64 65 78 20 24 | 6d 74 63 68 20 33 5d 0d |lindex $|mtch 3].|
|00000c10| 09 09 23 20 4d 61 6b 65 | 20 73 75 72 65 20 74 68 |..# Make| sure th|
|00000c20| 65 20 75 73 65 72 20 63 | 6c 69 63 6b 65 64 20 77 |e user c|licked w|
|00000c30| 69 74 68 69 6e 20 61 20 | 54 65 58 20 61 72 67 75 |ithin a |TeX argu|
|00000c40| 6d 65 6e 74 20 61 6e 64 | 20 6e 6f 74 0d 09 09 23 |ment and| not...#|
|00000c50| 20 6f 6e 20 74 68 65 20 | 63 6f 6d 6d 61 6e 64 20 | on the |command |
|00000c60| 6e 61 6d 65 20 69 74 73 | 65 6c 66 0d 09 09 69 66 |name its|elf...if|
|00000c70| 20 7b 24 66 72 6f 6d 20 | 3e 20 24 61 72 67 20 26 | {$from |> $arg &|
|00000c80| 26 20 24 74 6f 20 3c 20 | 24 65 6e 64 7d 20 7b 0d |& $to < |$end} {.|
|00000c90| 09 09 09 73 65 74 20 63 | 6d 64 20 5b 65 78 74 72 |...set c|md [extr|
|00000ca0| 61 63 74 43 6f 6d 6d 61 | 6e 64 4e 61 6d 65 20 5b |actComma|ndName [|
|00000cb0| 67 65 74 54 65 78 74 20 | 24 62 65 67 20 24 61 72 |getText |$beg $ar|
|00000cc0| 67 5d 5d 0d 09 09 7d 0d | 09 7d 0d 09 0d 09 23 20 |g]]...}.|.}....# |
|00000cd0| 5c 63 69 74 65 2c 20 5c | 6e 6f 63 69 74 65 2c 20 |\cite, \|nocite, |
|00000ce0| 65 74 63 2e 0d 09 23 20 | 0d 09 69 66 20 7b 5b 6c |etc...# |..if {[l|
|00000cf0| 73 65 61 72 63 68 20 2d | 65 78 61 63 74 20 24 54 |search -|exact $T|
|00000d00| 65 58 6d 6f 64 65 56 61 | 72 73 28 63 69 74 65 43 |eXmodeVa|rs(citeC|
|00000d10| 6f 6d 6d 61 6e 64 73 29 | 20 24 63 6d 64 5d 20 3e |ommands)| $cmd] >|
|00000d20| 3d 20 30 7d 20 7b 0d 09 | 09 0d 09 09 23 20 43 68 |= 0} {..|....# Ch|
|00000d30| 65 63 6b 20 66 69 72 73 | 74 20 66 6f 72 20 61 20 |eck firs|t for a |
|00000d40| 5c 74 68 65 62 69 62 6c | 69 6f 67 72 61 70 68 79 |\thebibl|iography|
|00000d50| 20 65 6e 76 69 72 6f 6e | 6d 65 6e 74 2e 2e 2e 0d | environ|ment....|
|00000d60| 09 09 69 66 20 7b 21 5b | 63 61 74 63 68 20 7b 73 |..if {![|catch {s|
|00000d70| 65 61 72 63 68 20 2d 66 | 20 30 20 2d 72 20 30 20 |earch -f| 0 -r 0 |
|00000d80| 2d 6d 20 30 20 2d 73 20 | 24 74 68 65 42 69 62 50 |-m 0 -s |$theBibP|
|00000d90| 61 74 20 5b 6d 61 78 50 | 6f 73 5d 7d 20 6d 74 63 |at [maxP|os]} mtc|
|00000da0| 68 5d 7d 20 7b 0d 09 09 | 09 73 65 74 20 62 69 62 |h]} {...|.set bib|
|00000db0| 50 6f 73 20 5b 6c 69 6e | 64 65 78 20 24 6d 74 63 |Pos [lin|dex $mtc|
|00000dc0| 68 20 31 5d 0d 09 09 09 | 69 66 20 7b 21 5b 63 61 |h 1]....|if {![ca|
|00000dd0| 74 63 68 20 7b 73 65 61 | 72 63 68 20 2d 66 20 31 |tch {sea|rch -f 1|
|00000de0| 20 2d 72 20 31 20 2d 6d | 20 30 20 2d 73 20 22 24 | -r 1 -m| 0 -s "$|
|00000df0| 62 69 62 69 74 65 6d 50 | 61 74 24 71 74 65 78 74 |bibitemP|at$qtext|
|00000e00| 5c 7d 22 20 24 62 69 62 | 50 6f 73 7d 20 6d 74 63 |\}" $bib|Pos} mtc|
|00000e10| 68 5d 7d 20 7b 0d 09 09 | 09 09 70 75 73 68 4d 61 |h]} {...|..pushMa|
|00000e20| 72 6b 0d 09 09 09 09 65 | 76 61 6c 20 73 65 6c 65 |rk.....e|val sele|
|00000e30| 63 74 20 24 6d 74 63 68 | 0d 09 09 09 09 6d 65 73 |ct $mtch|.....mes|
|00000e40| 73 61 67 65 20 22 70 72 | 65 73 73 20 3c 43 74 6c |sage "pr|ess <Ctl|
|00000e50| 20 2e 3e 20 74 6f 20 72 | 65 74 75 72 6e 20 74 6f | .> to r|eturn to|
|00000e60| 20 6f 72 69 67 69 6e 61 | 6c 20 63 75 72 73 6f 72 | origina|l cursor|
|00000e70| 20 70 6f 73 69 74 69 6f | 6e 22 0d 09 09 09 09 72 | positio|n".....r|
|00000e80| 65 74 75 72 6e 0d 09 09 | 09 7d 0d 09 09 7d 0d 09 |eturn...|.}...}..|
|00000e90| 09 0d 09 09 23 20 2e 2e | 2e 6f 74 68 65 72 77 69 |....# ..|.otherwi|
|00000ea0| 73 65 20 67 65 74 20 74 | 68 65 20 62 69 62 20 66 |se get t|he bib f|
|00000eb0| 69 6c 65 20 6e 61 6d 65 | 28 73 29 20 66 72 6f 6d |ile name|(s) from|
|00000ec0| 20 61 20 5c 62 69 62 6c | 69 6f 67 72 61 70 68 79 | a \bibl|iography|
|00000ed0| 20 63 6f 6d 6d 61 6e 64 | 0d 09 09 69 66 20 7b 21 | command|...if {!|
|00000ee0| 5b 63 61 74 63 68 20 7b | 73 65 61 72 63 68 20 2d |[catch {|search -|
|00000ef0| 66 20 30 20 2d 72 20 30 | 20 2d 73 20 2d 6d 20 30 |f 0 -r 0| -s -m 0|
|00000f00| 20 24 62 69 62 50 61 74 | 20 5b 6d 61 78 50 6f 73 | $bibPat| [maxPos|
|00000f10| 5d 7d 20 6d 74 63 68 5d | 7d 20 7b 0d 09 09 09 23 |]} mtch]|} {....#|
|00000f20| 20 47 65 74 20 41 4c 4c | 20 74 68 65 20 62 69 62 | Get ALL| the bib|
|00000f30| 20 66 69 6c 65 20 6e 61 | 6d 65 73 0d 09 09 09 73 | file na|mes....s|
|00000f40| 65 74 20 62 65 67 20 5b | 6c 69 6e 64 65 78 20 24 |et beg [|lindex $|
|00000f50| 6d 74 63 68 20 31 5d 0d | 09 09 09 73 65 74 20 65 |mtch 1].|...set e|
|00000f60| 6e 64 20 5b 6d 61 74 63 | 68 49 74 20 22 5c 7b 22 |nd [matc|hIt "\{"|
|00000f70| 20 24 62 65 67 5d 0d 09 | 09 09 73 65 74 20 66 6e | $beg]..|..set fn|
|00000f80| 61 6d 65 73 20 22 5b 73 | 70 6c 69 74 20 5b 67 65 |ames "[s|plit [ge|
|00000f90| 74 54 65 78 74 20 24 62 | 65 67 20 24 65 6e 64 5d |tText $b|eg $end]|
|00000fa0| 20 2c 5d 22 0d 09 09 09 | 23 20 43 68 65 63 6b 20 | ,]"....|# Check |
|00000fb0| 65 76 65 72 79 20 66 69 | 6c 65 0d 09 09 09 66 6f |every fi|le....fo|
|00000fc0| 72 65 61 63 68 20 66 6e | 61 6d 65 20 24 66 6e 61 |reach fn|ame $fna|
|00000fd0| 6d 65 73 20 7b 0d 09 09 | 09 09 73 65 74 20 66 69 |mes {...|..set fi|
|00000fe0| 6c 65 6e 61 6d 65 20 5b | 61 62 73 6f 6c 75 74 65 |lename [|absolute|
|00000ff0| 50 61 74 68 20 22 24 66 | 6e 61 6d 65 2e 62 69 62 |Path "$f|name.bib|
|00001000| 22 5d 0d 09 09 09 09 69 | 66 20 7b 5b 73 65 74 20 |"].....i|f {[set |
|00001010| 70 6f 73 20 5b 73 65 61 | 72 63 68 49 6e 46 69 6c |pos [sea|rchInFil|
|00001020| 65 20 24 66 69 6c 65 6e | 61 6d 65 20 20 24 62 69 |e $filen|ame $bi|
|00001030| 62 54 6f 70 50 61 74 24 | 71 74 65 78 74 5d 5d 20 |bTopPat$|qtext]] |
|00001040| 3e 3d 20 30 7d 20 7b 0d | 09 09 09 09 09 6f 70 65 |>= 0} {.|.....ope|
|00001050| 6e 46 69 6c 65 51 75 69 | 65 74 6c 79 20 24 66 69 |nFileQui|etly $fi|
|00001060| 6c 65 6e 61 6d 65 0d 09 | 09 09 09 09 67 6f 74 6f |lename..|....goto|
|00001070| 20 24 70 6f 73 0d 09 09 | 09 09 09 72 65 74 75 72 | $pos...|...retur|
|00001080| 6e 0d 09 09 09 09 7d 09 | 0d 09 09 09 7d 0d 09 09 |n.....}.|....}...|
|00001090| 09 69 66 20 7b 5b 6c 6c | 65 6e 67 74 68 20 24 54 |.if {[ll|ength $T|
|000010a0| 65 58 53 65 61 72 63 68 | 50 61 74 68 5d 20 3d 3d |eXSearch|Path] ==|
|000010b0| 20 30 7d 20 7b 0d 09 09 | 09 09 73 65 74 20 54 65 | 0} {...|..set Te|
|000010c0| 58 53 65 61 72 63 68 50 | 61 74 68 20 5b 62 75 69 |XSearchP|ath [bui|
|000010d0| 6c 64 54 65 58 53 65 61 | 72 63 68 50 61 74 68 5d |ldTeXSea|rchPath]|
|000010e0| 0d 09 09 09 7d 0d 09 09 | 09 66 6f 72 65 61 63 68 |....}...|.foreach|
|000010f0| 20 66 6e 61 6d 65 20 24 | 66 6e 61 6d 65 73 20 7b | fname $|fnames {|
|00001100| 0d 09 09 09 09 09 66 6f | 72 65 61 63 68 20 66 6f |......fo|reach fo|
|00001110| 6c 64 65 72 20 24 54 65 | 58 53 65 61 72 63 68 50 |lder $Te|XSearchP|
|00001120| 61 74 68 20 7b 0d 09 09 | 09 09 09 09 73 65 74 20 |ath {...|....set |
|00001130| 66 69 6c 65 6e 61 6d 65 | 20 22 24 66 6f 6c 64 65 |filename| "$folde|
|00001140| 72 24 66 6e 61 6d 65 2e | 62 69 62 22 0d 09 09 09 |r$fname.|bib"....|
|00001150| 09 09 09 09 69 66 20 7b | 5b 73 65 74 20 70 6f 73 |....if {|[set pos|
|00001160| 20 5b 73 65 61 72 63 68 | 49 6e 46 69 6c 65 20 24 | [search|InFile $|
|00001170| 66 69 6c 65 6e 61 6d 65 | 20 24 62 69 62 54 6f 70 |filename| $bibTop|
|00001180| 50 61 74 24 71 74 65 78 | 74 5d 5d 20 3e 3d 20 30 |Pat$qtex|t]] >= 0|
|00001190| 7d 20 7b 0d 09 09 09 09 | 09 09 09 09 6f 70 65 6e |} {.....|....open|
|000011a0| 46 69 6c 65 51 75 69 65 | 74 6c 79 20 24 66 69 6c |FileQuie|tly $fil|
|000011b0| 65 6e 61 6d 65 0d 09 09 | 09 09 09 09 09 09 67 6f |ename...|......go|
|000011c0| 74 6f 20 24 70 6f 73 0d | 09 09 09 09 09 09 09 09 |to $pos.|........|
|000011d0| 72 65 74 75 72 6e 0d 09 | 09 09 09 09 09 09 7d 0d |return..|......}.|
|000011e0| 09 09 09 09 09 7d 0d 09 | 09 09 7d 0d 09 09 09 62 |.....}..|..}....b|
|000011f0| 65 65 70 0d 09 09 09 6d | 65 73 73 61 67 65 20 22 |eep....m|essage "|
|00001200| 63 61 6e 27 74 20 66 69 | 6e 64 20 5c 22 24 74 65 |can't fi|nd \"$te|
|00001210| 78 74 5c 22 20 69 6e 20 | 74 68 65 20 2e 62 69 62 |xt\" in |the .bib|
|00001220| 20 66 69 6c 65 28 73 29 | 22 0d 09 09 09 0d 09 09 | file(s)|".......|
|00001230| 7d 20 65 6c 73 65 20 7b | 0d 09 09 09 62 65 65 70 |} else {|....beep|
|00001240| 0d 09 09 09 6d 65 73 73 | 61 67 65 20 22 63 61 6e |....mess|age "can|
|00001250| 27 74 20 66 69 6e 64 20 | 61 20 5c 5c 62 69 62 6c |'t find |a \\bibl|
|00001260| 69 6f 67 72 61 70 68 79 | 22 0d 09 09 7d 0d 09 09 |iography|"...}...|
|00001270| 0d 09 23 20 5c 72 65 66 | 2c 20 5c 70 61 67 65 72 |..# \ref|, \pager|
|00001280| 65 66 2c 20 65 74 63 2e | 0d 09 7d 20 65 6c 73 65 |ef, etc.|..} else|
|00001290| 69 66 20 7b 5b 6c 73 65 | 61 72 63 68 20 2d 65 78 |if {[lse|arch -ex|
|000012a0| 61 63 74 20 24 54 65 58 | 6d 6f 64 65 56 61 72 73 |act $TeX|modeVars|
|000012b0| 28 72 65 66 43 6f 6d 6d | 61 6e 64 73 29 20 24 63 |(refComm|ands) $c|
|000012c0| 6d 64 5d 20 3e 3d 20 30 | 7d 20 7b 0d 09 09 69 66 |md] >= 0|} {...if|
|000012d0| 20 7b 21 5b 63 61 74 63 | 68 20 7b 73 65 61 72 63 | {![catc|h {searc|
|000012e0| 68 20 2d 66 20 31 20 2d | 72 20 30 20 2d 6d 20 30 |h -f 1 -|r 0 -m 0|
|000012f0| 20 2d 73 20 22 24 6c 61 | 62 65 6c 50 61 74 24 74 | -s "$la|belPat$t|
|00001300| 65 78 74 5c 7d 22 20 30 | 7d 20 6d 74 63 68 5d 7d |ext\}" 0|} mtch]}|
|00001310| 20 7b 0d 09 09 09 70 75 | 73 68 4d 61 72 6b 0d 09 | {....pu|shMark..|
|00001320| 09 09 65 76 61 6c 20 73 | 65 6c 65 63 74 20 24 6d |..eval s|elect $m|
|00001330| 74 63 68 0d 09 09 09 6d | 65 73 73 61 67 65 20 22 |tch....m|essage "|
|00001340| 70 72 65 73 73 20 3c 43 | 74 6c 20 2e 3e 20 74 6f |press <C|tl .> to|
|00001350| 20 72 65 74 75 72 6e 20 | 74 6f 20 6f 72 69 67 69 | return |to origi|
|00001360| 6e 61 6c 20 63 75 72 73 | 6f 72 20 70 6f 73 69 74 |nal curs|or posit|
|00001370| 69 6f 6e 22 0d 09 09 7d | 20 65 6c 73 65 20 7b 0d |ion"...}| else {.|
|00001380| 09 09 09 6d 65 73 73 61 | 67 65 20 7b 4e 6f 20 6d |...messa|ge {No m|
|00001390| 61 74 63 68 69 6e 67 20 | 5c 6c 61 62 65 6c 20 66 |atching |\label f|
|000013a0| 6f 75 6e 64 7d 0d 09 09 | 7d 0d 09 09 0d 09 23 09 |ound}...|}.....#.|
|000013b0| 5c 69 6e 70 75 74 0d 09 | 7d 20 65 6c 73 65 69 66 |\input..|} elseif|
|000013c0| 20 7b 20 24 63 6d 64 20 | 3d 3d 20 22 69 6e 70 75 | { $cmd |== "inpu|
|000013d0| 74 22 20 7d 20 7b 0d 09 | 09 6f 70 65 6e 54 65 58 |t" } {..|.openTeX|
|000013e0| 46 69 6c 65 20 24 74 65 | 78 74 20 22 2e 74 65 78 |File $te|xt ".tex|
|000013f0| 22 0d 0d 09 23 09 5c 69 | 6e 63 6c 75 64 65 0d 09 |"...#.\i|nclude..|
|00001400| 7d 20 65 6c 73 65 69 66 | 20 7b 20 24 63 6d 64 20 |} elseif| { $cmd |
|00001410| 3d 3d 20 22 69 6e 63 6c | 75 64 65 22 20 7d 20 7b |== "incl|ude" } {|
|00001420| 0d 09 09 6f 70 65 6e 54 | 65 58 46 69 6c 65 20 22 |...openT|eXFile "|
|00001430| 24 7b 74 65 78 74 7d 2e | 74 65 78 22 0d 0d 09 23 |${text}.|tex"...#|
|00001440| 20 5c 64 6f 63 75 6d 65 | 6e 74 63 6c 61 73 73 20 | \docume|ntclass |
|00001450| 6f 72 20 5c 4c 6f 61 64 | 43 6c 61 73 73 0d 09 7d |or \Load|Class..}|
|00001460| 20 65 6c 73 65 69 66 20 | 7b 20 24 63 6d 64 20 3d | elseif |{ $cmd =|
|00001470| 3d 20 22 64 6f 63 75 6d | 65 6e 74 63 6c 61 73 73 |= "docum|entclass|
|00001480| 22 20 7c 7c 20 24 63 6d | 64 20 3d 3d 20 22 4c 6f |" || $cm|d == "Lo|
|00001490| 61 64 43 6c 61 73 73 22 | 20 7d 20 7b 0d 09 09 6f |adClass"| } {...o|
|000014a0| 70 65 6e 54 65 58 46 69 | 6c 65 20 22 24 7b 74 65 |penTeXFi|le "${te|
|000014b0| 78 74 7d 2e 63 6c 73 22 | 0d 09 09 0d 09 23 20 5c |xt}.cls"|.....# \|
|000014c0| 75 73 65 70 61 63 6b 61 | 67 65 20 6f 72 20 5c 52 |usepacka|ge or \R|
|000014d0| 65 71 75 69 72 65 50 61 | 63 6b 61 67 65 0d 09 7d |equirePa|ckage..}|
|000014e0| 20 65 6c 73 65 69 66 20 | 7b 20 24 63 6d 64 20 3d | elseif |{ $cmd =|
|000014f0| 3d 20 22 75 73 65 70 61 | 63 6b 61 67 65 22 20 7c |= "usepa|ckage" ||
|00001500| 7c 20 24 63 6d 64 20 3d | 3d 20 22 52 65 71 75 69 || $cmd =|= "Requi|
|00001510| 72 65 50 61 63 6b 61 67 | 65 22 20 7d 20 7b 0d 09 |rePackag|e" } {..|
|00001520| 09 6f 70 65 6e 54 65 58 | 46 69 6c 65 20 22 24 7b |.openTeX|File "${|
|00001530| 74 65 78 74 7d 2e 73 74 | 79 22 0d 09 09 0d 09 23 |text}.st|y".....#|
|00001540| 20 5c 62 69 62 6c 69 6f | 67 72 61 70 68 79 0d 09 | \biblio|graphy..|
|00001550| 7d 20 65 6c 73 65 69 66 | 20 7b 24 63 6d 64 20 3d |} elseif| {$cmd =|
|00001560| 3d 20 22 62 69 62 6c 69 | 6f 67 72 61 70 68 79 22 |= "bibli|ography"|
|00001570| 7d 20 7b 0d 09 09 6f 70 | 65 6e 54 65 58 46 69 6c |} {...op|enTeXFil|
|00001580| 65 20 22 24 7b 74 65 78 | 74 7d 2e 62 69 62 22 0d |e "${tex|t}.bib".|
|00001590| 09 09 0d 09 23 20 5c 62 | 69 62 6c 69 6f 67 72 61 |....# \b|ibliogra|
|000015a0| 70 68 79 73 74 79 6c 65 | 0d 09 7d 20 65 6c 73 65 |phystyle|..} else|
|000015b0| 69 66 20 7b 24 63 6d 64 | 20 3d 3d 20 22 62 69 62 |if {$cmd| == "bib|
|000015c0| 6c 69 6f 67 72 61 70 68 | 79 73 74 79 6c 65 22 7d |liograph|ystyle"}|
|000015d0| 20 7b 0d 09 09 6f 70 65 | 6e 54 65 58 46 69 6c 65 | {...ope|nTeXFile|
|000015e0| 20 22 24 7b 74 65 78 74 | 7d 2e 62 73 74 22 0d 09 | "${text|}.bst"..|
|000015f0| 09 0d 09 23 20 62 6f 78 | 2d 6d 61 6b 69 6e 67 20 |...# box|-making |
|00001600| 6d 61 63 72 6f 20 28 24 | 62 6f 78 4d 61 63 72 6f |macro ($|boxMacro|
|00001610| 4e 61 6d 65 29 0d 09 7d | 20 65 6c 73 65 69 66 20 |Name)..}| elseif |
|00001620| 7b 24 63 6d 64 20 3d 3d | 20 24 54 65 58 6d 6f 64 |{$cmd ==| $TeXmod|
|00001630| 65 56 61 72 73 28 62 6f | 78 4d 61 63 72 6f 4e 61 |eVars(bo|xMacroNa|
|00001640| 6d 65 29 7d 20 7b 0d 09 | 09 6f 70 65 6e 54 65 58 |me)} {..|.openTeX|
|00001650| 46 69 6c 65 20 24 74 65 | 78 74 20 0d 09 09 0d 09 |File $te|xt .....|
|00001660| 23 20 4f 74 68 65 72 0d | 09 7d 20 65 6c 73 65 20 |# Other.|.} else |
|00001670| 7b 0d 09 09 73 65 6c 65 | 63 74 20 24 66 72 6f 6d |{...sele|ct $from|
|00001680| 20 24 74 6f 0d 09 09 6d | 65 73 73 61 67 65 20 7b | $to...m|essage {|
|00001690| 43 6f 6d 6d 61 6e 64 2d | 64 6f 75 62 6c 65 2d 63 |Command-|double-c|
|000016a0| 6c 69 63 6b 20 6f 6e 20 | 74 68 65 20 72 65 71 75 |lick on |the requ|
|000016b0| 69 72 65 64 20 61 72 67 | 75 6d 65 6e 74 20 6f 66 |ired arg|ument of|
|000016c0| 20 61 6e 20 75 6e 64 65 | 72 6c 69 6e 65 64 20 4c | an unde|rlined L|
|000016d0| 61 54 65 58 20 63 6f 6d | 6d 61 6e 64 7d 0d 09 7d |aTeX com|mand}..}|
|000016e0| 0d 7d 0d 0d 23 20 4f 70 | 65 6e 20 61 20 54 65 58 |.}..# Op|en a TeX|
|000016f0| 20 73 6f 75 72 63 65 20 | 66 69 6c 65 2e 20 0d 23 | source |file. .#|
|00001700| 0d 70 72 6f 63 20 6f 70 | 65 6e 54 65 58 46 69 6c |.proc op|enTeXFil|
|00001710| 65 20 7b 66 69 6c 65 20 | 7b 65 78 74 20 22 22 7d |e {file |{ext ""}|
|00001720| 7d 20 7b 0d 09 67 6c 6f | 62 61 6c 20 54 65 58 53 |} {..glo|bal TeXS|
|00001730| 65 61 72 63 68 50 61 74 | 68 0d 09 23 20 44 65 74 |earchPat|h..# Det|
|00001740| 65 72 6d 69 6e 65 20 61 | 62 73 6f 6c 75 74 65 20 |ermine a|bsolute |
|00001750| 66 69 6c 65 20 73 70 65 | 63 69 66 69 63 61 74 69 |file spe|cificati|
|00001760| 6f 6e 0d 09 23 20 49 67 | 6e 6f 72 65 20 24 65 78 |on..# Ig|nore $ex|
|00001770| 74 20 69 66 20 24 66 69 | 6c 65 20 61 6c 72 65 61 |t if $fi|le alrea|
|00001780| 64 79 20 68 61 73 20 61 | 6e 20 65 78 74 65 6e 73 |dy has a|n extens|
|00001790| 69 6f 6e 0d 09 69 66 20 | 7b 5b 73 74 72 69 6e 67 |ion..if |{[string|
|000017a0| 20 6c 65 6e 67 74 68 20 | 5b 66 69 6c 65 20 65 78 | length |[file ex|
|000017b0| 74 65 6e 73 69 6f 6e 20 | 24 66 69 6c 65 5d 5d 20 |tension |$file]] |
|000017c0| 3d 3d 20 30 7d 20 7b 0d | 09 09 73 65 74 20 66 69 |== 0} {.|..set fi|
|000017d0| 6c 65 20 24 66 69 6c 65 | 24 65 78 74 0d 09 7d 0d |le $file|$ext..}.|
|000017e0| 09 73 65 74 20 66 69 6c | 65 6e 61 6d 65 20 5b 61 |.set fil|ename [a|
|000017f0| 62 73 6f 6c 75 74 65 50 | 61 74 68 20 24 66 69 6c |bsoluteP|ath $fil|
|00001800| 65 5d 0d 09 69 66 20 7b | 21 5b 63 61 74 63 68 20 |e]..if {|![catch |
|00001810| 7b 6f 70 65 6e 46 69 6c | 65 51 75 69 65 74 6c 79 |{openFil|eQuietly|
|00001820| 20 24 66 69 6c 65 6e 61 | 6d 65 7d 5d 7d 20 7b 20 | $filena|me}]} { |
|00001830| 0d 09 09 6d 65 73 73 61 | 67 65 20 24 66 69 6c 65 |...messa|ge $file|
|00001840| 6e 61 6d 65 0d 09 09 72 | 65 74 75 72 6e 20 0d 09 |name...r|eturn ..|
|00001850| 7d 0d 09 69 66 20 7b 5b | 6c 6c 65 6e 67 74 68 20 |}..if {[|llength |
|00001860| 24 54 65 58 53 65 61 72 | 63 68 50 61 74 68 5d 20 |$TeXSear|chPath] |
|00001870| 3d 3d 20 30 7d 20 7b 0d | 09 09 73 65 74 20 54 65 |== 0} {.|..set Te|
|00001880| 58 53 65 61 72 63 68 50 | 61 74 68 20 5b 62 75 69 |XSearchP|ath [bui|
|00001890| 6c 64 54 65 58 53 65 61 | 72 63 68 50 61 74 68 5d |ldTeXSea|rchPath]|
|000018a0| 0d 09 7d 0d 09 66 6f 72 | 65 61 63 68 20 66 6f 6c |..}..for|each fol|
|000018b0| 64 65 72 20 24 54 65 58 | 53 65 61 72 63 68 50 61 |der $TeX|SearchPa|
|000018c0| 74 68 20 7b 0d 09 09 73 | 65 74 20 66 69 6c 65 6e |th {...s|et filen|
|000018d0| 61 6d 65 20 22 24 66 6f | 6c 64 65 72 24 66 69 6c |ame "$fo|lder$fil|
|000018e0| 65 24 65 78 74 22 0d 09 | 09 69 66 20 7b 21 5b 63 |e$ext"..|.if {![c|
|000018f0| 61 74 63 68 20 7b 6f 70 | 65 6e 46 69 6c 65 51 75 |atch {op|enFileQu|
|00001900| 69 65 74 6c 79 20 24 66 | 69 6c 65 6e 61 6d 65 7d |ietly $f|ilename}|
|00001910| 5d 7d 20 7b 0d 09 09 09 | 6d 65 73 73 61 67 65 20 |]} {....|message |
|00001920| 24 66 69 6c 65 6e 61 6d | 65 0d 09 09 09 72 65 74 |$filenam|e....ret|
|00001930| 75 72 6e 20 09 0d 09 09 | 7d 0d 09 7d 0d 09 62 65 |urn ....|}..}..be|
|00001940| 65 70 0d 09 6d 65 73 73 | 61 67 65 20 22 63 61 6e |ep..mess|age "can|
|00001950| 27 74 20 66 69 6e 64 20 | 54 65 58 20 69 6e 70 75 |'t find |TeX inpu|
|00001960| 74 20 66 69 6c 65 20 5c | 22 24 66 69 6c 65 5c 22 |t file \|"$file\"|
|00001970| 22 0d 7d 0d 0d 23 20 52 | 65 74 75 72 6e 20 61 20 |".}..# R|eturn a |
|00001980| 6c 69 73 74 20 6f 66 20 | 66 6f 6c 64 65 72 73 20 |list of |folders |
|00001990| 69 6e 20 77 68 69 63 68 | 20 74 6f 20 73 65 61 72 |in which| to sear|
|000019a0| 63 68 20 66 6f 72 20 54 | 65 58 20 69 6e 70 75 74 |ch for T|eX input|
|000019b0| 20 66 69 6c 65 73 2c 20 | 0d 23 20 69 6e 63 6c 75 | files, |.# inclu|
|000019c0| 64 69 6e 67 20 74 68 65 | 20 54 65 58 49 6e 70 75 |ding the| TeXInpu|
|000019d0| 74 73 20 66 6f 6c 64 65 | 72 20 28 69 66 20 69 74 |ts folde|r (if it|
|000019e0| 20 65 78 69 73 74 73 29 | 20 61 6e 64 20 61 6e 79 | exists)| and any|
|000019f0| 20 66 6f 6c 64 65 72 73 | 20 6f 66 20 0d 23 20 74 | folders| of .# t|
|00001a00| 68 65 20 66 6f 72 6d 20 | 22 2a 69 6e 70 75 74 2a |he form |"*input*|
|00001a10| 22 20 69 6e 20 74 68 65 | 20 54 65 58 20 61 70 70 |" in the| TeX app|
|00001a20| 6c 69 63 61 74 69 6f 6e | 20 64 69 72 65 63 74 6f |lication| directo|
|00001a30| 72 79 2e 20 20 54 68 65 | 20 63 75 72 72 65 6e 74 |ry. The| current|
|00001a40| 0d 23 20 66 6f 6c 64 65 | 72 20 69 73 20 6e 6f 74 |.# folde|r is not|
|00001a50| 20 69 6e 63 6c 75 64 65 | 64 20 69 6e 20 74 68 65 | include|d in the|
|00001a60| 20 6c 69 73 74 2e 0d 23 | 0d 23 20 28 54 68 65 20 | list..#|.# (The |
|00001a70| 54 65 58 49 6e 70 75 74 | 73 20 66 6f 6c 64 65 72 |TeXInput|s folder|
|00001a80| 20 69 73 20 61 73 73 69 | 67 6e 65 64 20 66 72 6f | is assi|gned fro|
|00001a90| 6d 20 74 68 65 20 41 70 | 70 50 61 74 68 73 20 73 |m the Ap|pPaths s|
|00001aa0| 75 62 6d 65 6e 75 2e 29 | 0d 23 0d 70 72 6f 63 20 |ubmenu.)|.#.proc |
|00001ab0| 62 75 69 6c 64 54 65 58 | 53 65 61 72 63 68 50 61 |buildTeX|SearchPa|
|00001ac0| 74 68 20 7b 7d 20 7b 0d | 09 67 6c 6f 62 61 6c 20 |th {} {.|.global |
|00001ad0| 54 65 58 49 6e 70 75 74 | 73 20 74 65 78 50 61 74 |TeXInput|s texPat|
|00001ae0| 68 0d 09 6d 65 73 73 61 | 67 65 20 22 62 75 69 6c |h..messa|ge "buil|
|00001af0| 64 69 6e 67 20 54 65 58 | 20 73 65 61 72 63 68 20 |ding TeX| search |
|00001b00| 70 61 74 68 2e 2e 2e 22 | 0d 09 73 65 74 20 66 6f |path..."|..set fo|
|00001b10| 6c 64 65 72 73 20 7b 7d | 0d 09 0d 09 23 20 54 68 |lders {}|....# Th|
|00001b20| 65 20 6c 6f 63 61 6c 20 | 27 54 65 58 49 6e 70 75 |e local |'TeXInpu|
|00001b30| 74 73 27 20 66 6f 6c 64 | 65 72 3a 0d 09 69 66 20 |ts' fold|er:..if |
|00001b40| 7b 5b 69 6e 66 6f 20 65 | 78 69 73 74 73 20 54 65 |{[info e|xists Te|
|00001b50| 58 49 6e 70 75 74 73 5d | 20 26 26 20 5b 73 74 72 |XInputs]| && [str|
|00001b60| 69 6e 67 20 6c 65 6e 67 | 74 68 20 24 54 65 58 49 |ing leng|th $TeXI|
|00001b70| 6e 70 75 74 73 5d 20 3e | 20 30 7d 20 7b 20 0d 09 |nputs] >| 0} { ..|
|00001b80| 09 73 65 74 20 66 6f 6c | 64 65 72 73 20 5b 63 6f |.set fol|ders [co|
|00001b90| 6e 63 61 74 20 24 66 6f | 6c 64 65 72 73 20 5b 6c |ncat $fo|lders [l|
|00001ba0| 69 73 74 20 24 54 65 58 | 49 6e 70 75 74 73 5d 5d |ist $TeX|Inputs]]|
|00001bb0| 0d 09 09 23 20 53 65 61 | 72 63 68 20 73 75 62 66 |...# Sea|rch subf|
|00001bc0| 6f 6c 64 65 72 73 20 6f | 6e 65 20 6c 65 76 65 6c |olders o|ne level|
|00001bd0| 20 64 65 65 70 3a 0d 09 | 09 73 65 74 20 66 6f 6c | deep:..|.set fol|
|00001be0| 64 65 72 73 20 5b 63 6f | 6e 63 61 74 20 24 66 6f |ders [co|ncat $fo|
|00001bf0| 6c 64 65 72 73 20 5b 6c | 69 73 74 53 75 62 66 6f |lders [l|istSubfo|
|00001c00| 6c 64 65 72 73 20 24 54 | 65 58 49 6e 70 75 74 73 |lders $T|eXInputs|
|00001c10| 20 31 5d 5d 0d 09 7d 0d | 0d 09 23 20 41 6e 79 20 | 1]]..}.|..# Any |
|00001c20| 22 2a 69 6e 70 75 74 73 | 2a 22 20 66 6f 6c 64 65 |"*inputs|*" folde|
|00001c30| 72 73 20 69 6e 20 74 68 | 65 20 54 65 58 20 61 70 |rs in th|e TeX ap|
|00001c40| 70 6c 69 63 61 74 69 6f | 6e 20 66 6f 6c 64 65 72 |plicatio|n folder|
|00001c50| 3a 0d 09 69 66 20 7b 5b | 69 6e 66 6f 20 65 78 69 |:..if {[|info exi|
|00001c60| 73 74 73 20 74 65 78 50 | 61 74 68 5d 20 26 26 20 |sts texP|ath] && |
|00001c70| 5b 73 74 72 69 6e 67 20 | 6c 65 6e 67 74 68 20 24 |[string |length $|
|00001c80| 74 65 78 50 61 74 68 5d | 20 3e 20 30 7d 20 7b 20 |texPath]| > 0} { |
|00001c90| 0d 09 09 73 65 74 20 54 | 65 58 44 69 72 20 5b 66 |...set T|eXDir [f|
|00001ca0| 69 6c 65 20 64 69 72 6e | 61 6d 65 20 24 74 65 78 |ile dirn|ame $tex|
|00001cb0| 50 61 74 68 5d 0d 09 09 | 73 65 74 20 66 6f 6c 64 |Path]...|set fold|
|00001cc0| 65 72 73 20 5b 63 6f 6e | 63 61 74 20 24 66 6f 6c |ers [con|cat $fol|
|00001cd0| 64 65 72 73 20 5b 6c 69 | 73 74 20 24 54 65 58 44 |ders [li|st $TeXD|
|00001ce0| 69 72 5d 5d 0d 09 09 23 | 20 42 75 67 3a 20 20 27 |ir]]...#| Bug: '|
|00001cf0| 67 6c 6f 62 27 20 69 73 | 20 63 61 73 65 20 73 65 |glob' is| case se|
|00001d00| 6e 73 69 74 69 76 65 21 | 0d 09 09 66 6f 72 65 61 |nsitive!|...forea|
|00001d10| 63 68 20 66 6f 6c 64 65 | 72 20 5b 67 6c 6f 62 20 |ch folde|r [glob |
|00001d20| 22 24 54 65 58 44 69 72 | 3a 2a 5c 5b 49 69 5c 5d |"$TeXDir|:*\[Ii\]|
|00001d30| 6e 70 75 74 73 2a 22 5d | 20 7b 0d 09 09 09 73 65 |nputs*"]| {....se|
|00001d40| 74 20 66 6f 6c 64 65 72 | 73 20 5b 63 6f 6e 63 61 |t folder|s [conca|
|00001d50| 74 20 24 66 6f 6c 64 65 | 72 73 20 5b 6c 69 73 74 |t $folde|rs [list|
|00001d60| 20 24 66 6f 6c 64 65 72 | 5d 5d 0d 09 09 09 23 20 | $folder|]]....# |
|00001d70| 53 65 61 72 63 68 20 73 | 75 62 66 6f 6c 64 65 72 |Search s|ubfolder|
|00001d80| 73 20 6f 6e 65 20 6c 65 | 76 65 6c 20 64 65 65 70 |s one le|vel deep|
|00001d90| 3a 0d 09 09 09 73 65 74 | 20 66 6f 6c 64 65 72 73 |:....set| folders|
|00001da0| 20 5b 63 6f 6e 63 61 74 | 20 24 66 6f 6c 64 65 72 | [concat| $folder|
|00001db0| 73 20 5b 6c 69 73 74 53 | 75 62 66 6f 6c 64 65 72 |s [listS|ubfolder|
|00001dc0| 73 20 24 66 6f 6c 64 65 | 72 20 31 5d 5d 0d 09 09 |s $folde|r 1]]...|
|00001dd0| 7d 0d 09 7d 0d 0d 09 23 | 20 4d 61 6b 65 20 73 75 |}..}...#| Make su|
|00001de0| 72 65 20 65 61 63 68 20 | 66 6f 6c 64 65 72 20 65 |re each |folder e|
|00001df0| 6e 64 73 20 77 69 74 68 | 20 61 20 63 6f 6c 6f 6e |nds with| a colon|
|00001e00| 0d 09 73 65 74 20 72 65 | 73 75 6c 74 20 7b 7d 0d |..set re|sult {}.|
|00001e10| 09 66 6f 72 65 61 63 68 | 20 66 6f 6c 64 65 72 20 |.foreach| folder |
|00001e20| 24 66 6f 6c 64 65 72 73 | 20 7b 0d 09 09 73 65 74 |$folders| {...set|
|00001e30| 20 66 6f 6c 64 65 72 20 | 22 5b 73 74 72 69 6e 67 | folder |"[string|
|00001e40| 20 74 72 69 6d 72 69 67 | 68 74 20 24 66 6f 6c 64 | trimrig|ht $fold|
|00001e50| 65 72 20 7b 3a 7d 5d 3a | 22 0d 09 09 73 65 74 20 |er {:}]:|"...set |
|00001e60| 72 65 73 75 6c 74 20 5b | 63 6f 6e 63 61 74 20 24 |result [|concat $|
|00001e70| 72 65 73 75 6c 74 20 5b | 6c 69 73 74 20 24 66 6f |result [|list $fo|
|00001e80| 6c 64 65 72 5d 5d 0d 09 | 7d 0d 09 72 65 74 75 72 |lder]]..|}..retur|
|00001e90| 6e 20 24 72 65 73 75 6c | 74 0d 7d 0d 0d 0d 23 20 |n $resul|t.}...# |
|00001ea0| 45 78 74 65 6e 64 20 74 | 68 65 20 61 72 67 75 6d |Extend t|he argum|
|00001eb0| 65 6e 74 20 61 72 6f 75 | 6e 64 20 74 68 65 20 70 |ent arou|nd the p|
|00001ec0| 6f 73 69 74 69 6f 6e 20 | 24 66 72 6f 6d 2e 0d 23 |osition |$from..#|
|00001ed0| 20 28 41 72 67 73 20 61 | 72 65 20 64 65 6c 69 6d | (Args a|re delim|
|00001ee0| 69 74 65 64 20 62 79 20 | 63 6f 6d 6d 61 73 20 6f |ited by |commas o|
|00001ef0| 72 20 63 75 72 6c 79 2d | 62 72 61 63 65 73 2e 29 |r curly-|braces.)|
|00001f00| 0d 70 72 6f 63 20 54 65 | 58 45 78 74 65 6e 64 41 |.proc Te|XExtendA|
|00001f10| 72 67 20 7b 66 72 6f 6d | 20 7b 74 6f 20 30 7d 7d |rg {from| {to 0}}|
|00001f20| 20 7b 0d 09 69 66 20 7b | 24 74 6f 20 3d 3d 20 30 | {..if {|$to == 0|
|00001f30| 7d 20 7b 20 73 65 74 20 | 74 6f 20 24 66 72 6f 6d |} { set |to $from|
|00001f40| 20 7d 0d 09 73 65 74 20 | 72 65 73 75 6c 74 20 5b | }..set |result [|
|00001f50| 6c 69 73 74 20 24 66 72 | 6f 6d 20 24 74 6f 5d 0d |list $fr|om $to].|
|00001f60| 09 69 66 20 7b 21 5b 63 | 61 74 63 68 20 7b 73 65 |.if {![c|atch {se|
|00001f70| 61 72 63 68 20 2d 66 20 | 30 20 2d 72 20 31 20 2d |arch -f |0 -r 1 -|
|00001f80| 73 20 2d 6d 20 30 20 22 | 5c 5b 2c 5c 7b 5c 5d 22 |s -m 0 "|\[,\{\]"|
|00001f90| 20 24 66 72 6f 6d 7d 20 | 6d 74 63 68 30 5d 7d 20 | $from} |mtch0]} |
|00001fa0| 7b 0d 09 09 69 66 20 7b | 21 5b 63 61 74 63 68 20 |{...if {|![catch |
|00001fb0| 7b 73 65 61 72 63 68 20 | 2d 66 20 31 20 2d 72 20 |{search |-f 1 -r |
|00001fc0| 31 20 2d 73 20 2d 6d 20 | 30 20 22 5c 5b 2c 5c 7d |1 -s -m |0 "\[,\}|
|00001fd0| 5c 5d 22 20 24 74 6f 7d | 20 6d 74 63 68 31 5d 7d |\]" $to}| mtch1]}|
|00001fe0| 20 7b 0d 09 09 09 73 65 | 74 20 66 72 6f 6d 20 5b | {....se|t from [|
|00001ff0| 6c 69 6e 64 65 78 20 24 | 6d 74 63 68 30 20 31 5d |lindex $|mtch0 1]|
|00002000| 0d 09 09 09 73 65 74 20 | 74 6f 20 5b 6c 69 6e 64 |....set |to [lind|
|00002010| 65 78 20 24 6d 74 63 68 | 31 20 30 5d 0d 09 09 09 |ex $mtch|1 0]....|
|00002020| 23 23 20 45 6d 62 65 64 | 64 65 64 20 62 72 61 63 |## Embed|ded brac|
|00002030| 65 73 20 69 6e 20 74 68 | 65 20 61 72 67 20 70 72 |es in th|e arg pr|
|00002040| 6f 62 61 62 6c 79 20 6d | 65 61 6e 20 74 68 61 74 |obably m|ean that|
|00002050| 20 74 68 65 20 75 73 65 | 72 0d 09 09 09 23 23 20 | the use|r....## |
|00002060| 63 6c 69 63 6b 65 64 20 | 6f 75 74 73 69 64 65 20 |clicked |outside |
|00002070| 61 20 76 61 6c 69 64 20 | 63 6f 6d 6d 61 6e 64 20 |a valid |command |
|00002080| 61 72 67 75 6d 65 6e 74 | 0d 09 09 09 69 66 20 7b |argument|....if {|
|00002090| 5b 72 65 67 65 78 70 20 | 22 5c 5b 5c 7b 5c 7d 5c |[regexp |"\[\{\}\|
|000020a0| 5d 22 20 5b 67 65 74 54 | 65 78 74 20 24 66 72 6f |]" [getT|ext $fro|
|000020b0| 6d 20 24 74 6f 5d 5d 20 | 3d 3d 20 30 7d 20 7b 0d |m $to]] |== 0} {.|
|000020c0| 09 09 09 09 73 65 74 20 | 72 65 73 75 6c 74 20 5b |....set |result [|
|000020d0| 6c 69 73 74 20 24 66 72 | 6f 6d 20 24 74 6f 5d 0d |list $fr|om $to].|
|000020e0| 09 09 09 7d 0d 09 09 7d | 0d 09 7d 0d 09 72 65 74 |...}...}|..}..ret|
|000020f0| 75 72 6e 20 24 72 65 73 | 75 6c 74 0d 7d 0d 0d 23 |urn $res|ult.}..#|
|00002100| 20 46 69 6e 64 20 61 20 | 4c 61 54 65 58 20 63 6f | Find a |LaTeX co|
|00002110| 6d 6d 61 6e 64 20 77 69 | 74 68 20 61 72 67 75 6d |mmand wi|th argum|
|00002120| 65 6e 74 73 20 69 6e 20 | 65 69 74 68 65 72 20 64 |ents in |either d|
|00002130| 69 72 65 63 74 69 6f 6e | 2e 0d 23 20 28 73 65 65 |irection|..# (see|
|00002140| 20 66 69 6e 64 43 6f 6d | 6d 61 6e 64 57 69 74 68 | findCom|mandWith|
|00002150| 41 72 67 73 20 69 6e 20 | 6c 61 74 65 78 4d 61 63 |Args in |latexMac|
|00002160| 72 6f 73 2e 74 63 6c 29 | 0d 23 20 54 68 69 73 20 |ros.tcl)|.# This |
|00002170| 76 65 72 73 69 6f 6e 20 | 72 65 74 75 72 6e 73 20 |version |returns |
|00002180| 74 68 65 20 70 6f 73 69 | 74 69 6f 6e 73 20 61 74 |the posi|tions at|
|00002190| 20 77 68 69 63 68 20 74 | 68 65 20 63 6f 6d 6d 61 | which t|he comma|
|000021a0| 6e 64 20 6f 70 74 69 6f | 6e 73 20 0d 23 20 61 6e |nd optio|ns .# an|
|000021b0| 64 20 61 72 67 75 6d 65 | 6e 74 73 20 73 74 61 72 |d argume|nts star|
|000021c0| 74 2c 20 61 73 20 77 65 | 6c 6c 2e 0d 70 72 6f 63 |t, as we|ll..proc|
|000021d0| 20 66 69 6e 64 43 6f 6d | 6d 61 6e 64 57 69 74 68 | findCom|mandWith|
|000021e0| 50 61 72 74 73 20 7b 70 | 6f 73 20 64 69 72 65 63 |Parts {p|os direc|
|000021f0| 74 69 6f 6e 7d 20 7b 0d | 09 73 65 74 20 73 65 61 |tion} {.|.set sea|
|00002200| 72 63 68 53 74 72 69 6e | 67 20 7b 5c 5c 28 5b 5e |rchStrin|g {\\([^|
|00002210| 61 2d 7a 41 2d 5a 5c 74 | 5c 72 5d 7c 5b 61 2d 7a |a-zA-Z\t|\r]|[a-z|
|00002220| 41 2d 5a 5d 2b 5c 2a 3f | 29 28 5c 5b 2e 2a 5c 5d |A-Z]+\*?|)(\[.*\]|
|00002230| 29 2a 28 7b 5b 5e 7b 7d | 5d 2a 7d 29 3f 7d 0d 09 |)*({[^{}|]*})?}..|
|00002240| 69 66 20 7b 21 5b 63 61 | 74 63 68 20 7b 73 65 61 |if {![ca|tch {sea|
|00002250| 72 63 68 20 2d 73 20 2d | 66 20 24 64 69 72 65 63 |rch -s -|f $direc|
|00002260| 74 69 6f 6e 20 2d 72 20 | 31 20 24 73 65 61 72 63 |tion -r |1 $searc|
|00002270| 68 53 74 72 69 6e 67 20 | 24 70 6f 73 7d 20 6d 74 |hString |$pos} mt|
|00002280| 63 68 5d 7d 20 7b 0d 09 | 09 73 65 74 20 62 65 67 |ch]} {..|.set beg|
|00002290| 20 5b 6c 69 6e 64 65 78 | 20 24 6d 74 63 68 20 30 | [lindex| $mtch 0|
|000022a0| 5d 0d 09 09 73 65 74 20 | 65 6e 64 20 5b 6c 69 6e |]...set |end [lin|
|000022b0| 64 65 78 20 24 6d 74 63 | 68 20 31 5d 0d 09 09 72 |dex $mtc|h 1]...r|
|000022c0| 65 67 65 78 70 20 2d 69 | 6e 64 69 63 65 73 20 24 |egexp -i|ndices $|
|000022d0| 73 65 61 72 63 68 53 74 | 72 69 6e 67 20 5b 67 65 |searchSt|ring [ge|
|000022e0| 74 54 65 78 74 20 24 62 | 65 67 20 24 65 6e 64 5d |tText $b|eg $end]|
|000022f0| 20 61 6c 6c 20 63 6d 64 | 20 6f 70 74 20 61 72 67 | all cmd| opt arg|
|00002300| 0d 09 09 73 65 74 20 6f | 70 74 20 5b 65 78 70 72 |...set o|pt [expr|
|00002310| 20 24 62 65 67 20 2b 20 | 5b 6c 69 6e 64 65 78 20 | $beg + |[lindex |
|00002320| 24 6f 70 74 20 30 5d 5d | 0d 09 09 73 65 74 20 61 |$opt 0]]|...set a|
|00002330| 72 67 20 5b 65 78 70 72 | 20 24 62 65 67 20 2b 20 |rg [expr| $beg + |
|00002340| 5b 6c 69 6e 64 65 78 20 | 24 61 72 67 20 30 5d 5d |[lindex |$arg 0]]|
|00002350| 0d 09 09 72 65 74 75 72 | 6e 20 5b 6c 69 73 74 20 |...retur|n [list |
|00002360| 24 62 65 67 20 24 6f 70 | 74 20 24 61 72 67 20 24 |$beg $op|t $arg $|
|00002370| 65 6e 64 5d 0d 09 7d 20 | 65 6c 73 65 20 7b 0d 09 |end]..} |else {..|
|00002380| 09 72 65 74 75 72 6e 20 | 22 22 0d 09 7d 0d 7d 0d |.return |""..}.}.|
|00002390| 0d 23 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.#------|--------|
|000023a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000023b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000023c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000023d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 23 20 49 |--------|----.# I|
|000023e0| 6e 73 65 72 74 69 6f 6e | 20 72 6f 75 74 69 6e 65 |nsertion| routine|
|000023f0| 73 3a 0d 23 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |s:.#----|--------|
|00002400| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002410| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002420| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002430| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 0d |--------|------..|
|00002440| 23 20 52 65 74 75 72 6e | 73 20 61 20 6d 6f 64 69 |# Return|s a modi|
|00002450| 66 69 65 64 20 74 65 78 | 74 20 73 74 72 69 6e 67 |fied tex|t string|
|00002460| 20 69 66 20 74 68 65 20 | 73 74 72 69 6e 67 20 24 | if the |string $|
|00002470| 74 65 78 74 20 69 73 20 | 6e 6f 6e 2d 6e 75 6c 6c |text is |non-null|
|00002480| 2c 20 0d 23 20 61 6e 64 | 20 74 68 65 20 6e 75 6c |, .# and| the nul|
|00002490| 6c 20 73 74 72 69 6e 67 | 20 6f 74 68 65 72 77 69 |l string| otherwi|
|000024a0| 73 65 2e 20 20 54 68 65 | 20 61 72 67 75 6d 65 6e |se. The| argumen|
|000024b0| 74 20 27 6f 70 65 72 61 | 74 69 6f 6e 27 20 69 73 |t 'opera|tion' is|
|000024c0| 20 61 20 0d 23 20 73 74 | 72 69 6e 67 20 64 69 72 | a .# st|ring dir|
|000024d0| 65 63 74 69 6e 67 20 27 | 64 6f 50 72 65 66 69 78 |ecting '|doPrefix|
|000024e0| 54 65 78 74 27 20 74 6f | 20 65 69 74 68 65 72 20 |Text' to| either |
|000024f0| 22 69 6e 73 65 72 74 22 | 20 6f 72 20 22 72 65 6d |"insert"| or "rem|
|00002500| 6f 76 65 22 20 0d 23 20 | 24 70 72 65 66 69 78 53 |ove" .# |$prefixS|
|00002510| 74 72 69 6e 67 20 74 6f | 2f 66 72 6f 6d 20 65 61 |tring to|/from ea|
|00002520| 63 68 20 6c 69 6e 65 20 | 6f 66 20 24 74 65 78 74 |ch line |of $text|
|00002530| 2e 20 20 28 54 68 69 73 | 20 72 6f 75 74 69 6e 65 |. (This| routine|
|00002540| 20 69 73 0d 23 20 61 64 | 61 70 74 65 64 20 66 72 | is.# ad|apted fr|
|00002550| 6f 6d 20 73 74 72 69 6e | 67 73 2e 74 63 6c 2e 29 |om strin|gs.tcl.)|
|00002560| 0d 70 72 6f 63 20 64 6f | 50 72 65 66 69 78 54 65 |.proc do|PrefixTe|
|00002570| 78 74 20 7b 6f 70 65 72 | 61 74 69 6f 6e 20 70 72 |xt {oper|ation pr|
|00002580| 65 66 69 78 53 74 72 69 | 6e 67 20 74 65 78 74 7d |efixStri|ng text}|
|00002590| 20 7b 0d 09 69 66 20 7b | 24 74 65 78 74 20 3d 3d | {..if {|$text ==|
|000025a0| 20 22 22 7d 20 7b 72 65 | 74 75 72 6e 20 22 22 7d | ""} {re|turn ""}|
|000025b0| 0d 09 73 65 74 20 70 72 | 65 66 20 5b 71 75 6f 74 |..set pr|ef [quot|
|000025c0| 65 45 78 70 72 20 24 70 | 72 65 66 69 78 53 74 72 |eExpr $p|refixStr|
|000025d0| 69 6e 67 5d 0d 09 69 66 | 20 7b 24 6f 70 65 72 61 |ing]..if| {$opera|
|000025e0| 74 69 6f 6e 20 3d 3d 20 | 22 69 6e 73 65 72 74 22 |tion == |"insert"|
|000025f0| 7d 20 74 68 65 6e 20 7b | 0d 09 09 73 65 74 20 74 |} then {|...set t|
|00002600| 72 61 69 6c 43 68 61 72 | 20 22 22 0d 09 09 73 65 |railChar| ""...se|
|00002610| 74 20 74 65 78 74 4c 65 | 6e 20 5b 73 74 72 69 6e |t textLe|n [strin|
|00002620| 67 20 6c 65 6e 67 74 68 | 20 24 74 65 78 74 5d 0d |g length| $text].|
|00002630| 09 09 69 66 20 7b 5b 73 | 74 72 69 6e 67 20 69 6e |..if {[s|tring in|
|00002640| 64 65 78 20 24 74 65 78 | 74 20 5b 65 78 70 72 20 |dex $tex|t [expr |
|00002650| 24 74 65 78 74 4c 65 6e | 2d 31 5d 5d 20 3d 3d 20 |$textLen|-1]] == |
|00002660| 22 5c 72 22 7d 20 74 68 | 65 6e 20 7b 0d 09 09 09 |"\r"} th|en {....|
|00002670| 73 65 74 20 74 65 78 74 | 20 5b 73 74 72 69 6e 67 |set text| [string|
|00002680| 20 72 61 6e 67 65 20 24 | 74 65 78 74 20 30 20 5b | range $|text 0 [|
|00002690| 65 78 70 72 20 24 74 65 | 78 74 4c 65 6e 2d 32 5d |expr $te|xtLen-2]|
|000026a0| 5d 0d 09 09 09 73 65 74 | 20 74 72 61 69 6c 43 68 |]....set| trailCh|
|000026b0| 61 72 20 22 5c 72 22 0d | 09 09 7d 0d 09 09 73 65 |ar "\r".|..}...se|
|000026c0| 74 20 73 74 72 20 5c 72 | 24 70 72 65 66 69 78 53 |t str \r|$prefixS|
|000026d0| 74 72 69 6e 67 0d 09 09 | 72 65 67 73 75 62 20 2d |tring...|regsub -|
|000026e0| 61 6c 6c 20 5c 72 20 24 | 74 65 78 74 20 24 73 74 |all \r $|text $st|
|000026f0| 72 20 74 65 78 74 0d 09 | 09 72 65 74 75 72 6e 20 |r text..|.return |
|00002700| 24 70 72 65 66 69 78 53 | 74 72 69 6e 67 24 74 65 |$prefixS|tring$te|
|00002710| 78 74 24 74 72 61 69 6c | 43 68 61 72 0d 09 7d 20 |xt$trail|Char..} |
|00002720| 65 6c 73 65 69 66 20 7b | 24 6f 70 65 72 61 74 69 |elseif {|$operati|
|00002730| 6f 6e 20 3d 3d 20 22 72 | 65 6d 6f 76 65 22 7d 20 |on == "r|emove"} |
|00002740| 74 68 65 6e 20 7b 0d 09 | 09 72 65 67 73 75 62 20 |then {..|.regsub |
|00002750| 2d 61 6c 6c 20 5c 72 24 | 70 72 65 66 20 24 74 65 |-all \r$|pref $te|
|00002760| 78 74 20 5c 72 20 74 65 | 78 74 0d 09 09 72 65 67 |xt \r te|xt...reg|
|00002770| 73 75 62 20 5e 24 70 72 | 65 66 20 24 74 65 78 74 |sub ^$pr|ef $text|
|00002780| 20 22 22 20 74 65 78 74 | 0d 09 09 72 65 74 75 72 | "" text|...retur|
|00002790| 6e 20 24 74 65 78 74 0d | 09 7d 0d 7d 0d 0d 23 20 |n $text.|.}.}..# |
|000027a0| 53 68 69 66 74 20 65 61 | 63 68 20 6c 69 6e 65 20 |Shift ea|ch line |
|000027b0| 6f 66 20 24 74 65 78 74 | 20 74 6f 20 74 68 65 20 |of $text| to the |
|000027c0| 72 69 67 68 74 20 62 79 | 20 69 6e 73 65 72 74 69 |right by| inserti|
|000027d0| 6e 67 20 61 20 73 74 72 | 69 6e 67 20 6f 66 0d 23 |ng a str|ing of.#|
|000027e0| 20 24 77 68 69 74 65 73 | 70 61 63 65 20 63 68 61 | $whites|pace cha|
|000027f0| 72 61 63 74 65 72 73 20 | 61 74 20 74 68 65 20 62 |racters |at the b|
|00002800| 65 67 69 6e 6e 69 6e 67 | 20 6f 66 20 65 61 63 68 |eginning| of each|
|00002810| 20 6c 69 6e 65 2c 20 72 | 65 74 75 72 6e 69 6e 67 | line, r|eturning|
|00002820| 0d 23 20 74 68 65 20 72 | 65 73 75 6c 74 69 6e 67 |.# the r|esulting|
|00002830| 20 73 74 72 69 6e 67 2e | 0d 70 72 6f 63 20 73 68 | string.|.proc sh|
|00002840| 69 66 74 54 65 78 74 52 | 69 67 68 74 20 7b 74 65 |iftTextR|ight {te|
|00002850| 78 74 20 77 68 69 74 65 | 73 70 61 63 65 7d 20 7b |xt white|space} {|
|00002860| 0d 09 72 65 74 75 72 6e | 20 5b 64 6f 50 72 65 66 |..return| [doPref|
|00002870| 69 78 54 65 78 74 20 22 | 69 6e 73 65 72 74 22 20 |ixText "|insert" |
|00002880| 24 77 68 69 74 65 73 70 | 61 63 65 20 24 74 65 78 |$whitesp|ace $tex|
|00002890| 74 5d 0d 7d 0d 0d 23 20 | 52 65 74 75 72 6e 20 61 |t].}..# |Return a|
|000028a0| 20 73 74 72 69 6e 67 20 | 6f 66 20 77 68 69 74 65 | string |of white|
|000028b0| 73 70 61 63 65 20 63 68 | 61 72 61 63 74 65 72 73 |space ch|aracters|
|000028c0| 20 66 72 6f 6d 20 74 68 | 65 20 62 65 67 69 6e 6e | from th|e beginn|
|000028d0| 69 6e 67 20 0d 23 20 6f | 66 20 74 68 65 20 6c 69 |ing .# o|f the li|
|000028e0| 6e 65 20 63 6f 6e 74 61 | 69 6e 69 6e 67 20 24 70 |ne conta|ining $p|
|000028f0| 6f 73 20 75 70 20 74 6f | 20 74 68 65 20 66 69 72 |os up to| the fir|
|00002900| 73 74 20 6e 6f 6e 2d 77 | 68 69 74 65 73 70 61 63 |st non-w|hitespac|
|00002910| 65 20 0d 23 20 63 68 61 | 72 61 63 74 65 72 2e 0d |e .# cha|racter..|
|00002920| 70 72 6f 63 20 67 65 74 | 49 6e 64 65 6e 74 61 74 |proc get|Indentat|
|00002930| 69 6f 6e 20 7b 70 6f 73 | 7d 20 7b 0d 09 73 65 74 |ion {pos|} {..set|
|00002940| 20 74 65 78 74 20 5b 67 | 65 74 54 65 78 74 20 5b | text [g|etText [|
|00002950| 6c 69 6e 65 53 74 61 72 | 74 20 24 70 6f 73 5d 20 |lineStar|t $pos] |
|00002960| 5b 6e 65 78 74 4c 69 6e | 65 53 74 61 72 74 20 24 |[nextLin|eStart $|
|00002970| 70 6f 73 5d 5d 0d 09 72 | 65 67 65 78 70 20 7b 5e |pos]]..r|egexp {^|
|00002980| 5b 20 5c 74 5d 2a 7d 20 | 24 74 65 78 74 20 74 68 |[ \t]*} |$text th|
|00002990| 65 49 6e 64 65 6e 74 61 | 74 69 6f 6e 0d 09 72 65 |eIndenta|tion..re|
|000029a0| 74 75 72 6e 20 24 74 68 | 65 49 6e 64 65 6e 74 61 |turn $th|eIndenta|
|000029b0| 74 69 6f 6e 0d 7d 0d 0d | 23 20 52 65 74 75 72 6e |tion.}..|# Return|
|000029c0| 20 61 6e 20 22 69 6e 64 | 65 6e 74 65 64 20 63 61 | an "ind|ented ca|
|000029d0| 72 72 69 61 67 65 20 72 | 65 74 75 72 6e 22 20 69 |rriage r|eturn" i|
|000029e0| 66 20 61 6e 79 20 63 68 | 61 72 61 63 74 65 72 20 |f any ch|aracter |
|000029f0| 70 72 65 63 65 64 69 6e | 67 20 0d 23 20 74 68 65 |precedin|g .# the|
|00002a00| 20 69 6e 73 65 72 74 69 | 6f 6e 20 70 6f 69 6e 74 | inserti|on point|
|00002a10| 20 28 6f 6e 20 74 68 65 | 20 73 61 6d 65 20 6c 69 | (on the| same li|
|00002a20| 6e 65 29 20 69 73 20 61 | 20 6e 6f 6e 2d 77 68 69 |ne) is a| non-whi|
|00002a30| 74 65 73 70 61 63 65 20 | 0d 23 20 63 68 61 72 61 |tespace |.# chara|
|00002a40| 63 74 65 72 2e 20 20 4f | 74 68 65 72 77 69 73 65 |cter. O|therwise|
|00002a50| 2c 20 72 65 74 75 72 6e | 20 74 68 65 20 6e 75 6c |, return| the nul|
|00002a60| 6c 20 73 74 72 69 6e 67 | 2e 0d 70 72 6f 63 20 6f |l string|..proc o|
|00002a70| 70 65 6e 69 6e 67 43 61 | 72 72 69 61 67 65 52 65 |peningCa|rriageRe|
|00002a80| 74 75 72 6e 20 7b 7d 20 | 7b 0d 09 73 65 74 20 70 |turn {} |{..set p|
|00002a90| 6f 73 20 5b 67 65 74 50 | 6f 73 5d 0d 09 73 65 74 |os [getP|os]..set|
|00002aa0| 20 65 6e 64 20 24 70 6f | 73 0d 09 73 65 74 20 73 | end $po|s..set s|
|00002ab0| 74 61 72 74 20 5b 6c 69 | 6e 65 53 74 61 72 74 20 |tart [li|neStart |
|00002ac0| 24 70 6f 73 5d 0d 09 73 | 65 74 20 74 65 78 74 20 |$pos]..s|et text |
|00002ad0| 5b 67 65 74 54 65 78 74 | 20 24 73 74 61 72 74 20 |[getText| $start |
|00002ae0| 24 65 6e 64 5d 0d 09 69 | 66 20 7b 5b 69 73 57 68 |$end]..i|f {[isWh|
|00002af0| 69 74 65 73 70 61 63 65 | 20 24 74 65 78 74 5d 7d |itespace| $text]}|
|00002b00| 20 74 68 65 6e 20 7b 0d | 09 09 69 66 20 7b 24 73 | then {.|..if {$s|
|00002b10| 74 61 72 74 20 3d 3d 20 | 24 65 6e 64 7d 20 7b 72 |tart == |$end} {r|
|00002b20| 65 74 75 72 6e 20 5b 67 | 65 74 49 6e 64 65 6e 74 |eturn [g|etIndent|
|00002b30| 61 74 69 6f 6e 20 24 70 | 6f 73 5d 7d 20 7b 72 65 |ation $p|os]} {re|
|00002b40| 74 75 72 6e 20 22 22 7d | 0d 09 7d 20 65 6c 73 65 |turn ""}|..} else|
|00002b50| 20 7b 0d 09 09 72 65 74 | 75 72 6e 20 22 5c 72 5b | {...ret|urn "\r[|
|00002b60| 67 65 74 49 6e 64 65 6e | 74 61 74 69 6f 6e 20 24 |getInden|tation $|
|00002b70| 70 6f 73 5d 22 0d 09 7d | 0d 7d 0d 23 20 52 65 74 |pos]"..}|.}.# Ret|
|00002b80| 75 72 6e 20 61 6e 20 22 | 69 6e 64 65 6e 74 65 64 |urn an "|indented|
|00002b90| 20 63 61 72 72 69 61 67 | 65 20 72 65 74 75 72 6e | carriag|e return|
|00002ba0| 22 20 69 66 20 61 6e 79 | 20 63 68 61 72 61 63 74 |" if any| charact|
|00002bb0| 65 72 20 66 6f 6c 6c 6f | 77 69 6e 67 20 0d 23 20 |er follo|wing .# |
|00002bc0| 74 68 65 20 69 6e 73 65 | 72 74 69 6f 6e 20 70 6f |the inse|rtion po|
|00002bd0| 69 6e 74 20 28 6f 6e 20 | 74 68 65 20 73 61 6d 65 |int (on |the same|
|00002be0| 20 6c 69 6e 65 29 20 69 | 73 20 61 20 6e 6f 6e 2d | line) i|s a non-|
|00002bf0| 77 68 69 74 65 73 70 61 | 63 65 20 0d 23 20 63 68 |whitespa|ce .# ch|
|00002c00| 61 72 61 63 74 65 72 2e | 20 20 4f 74 68 65 72 77 |aracter.| Otherw|
|00002c10| 69 73 65 2c 20 72 65 74 | 75 72 6e 20 74 68 65 20 |ise, ret|urn the |
|00002c20| 6e 75 6c 6c 20 73 74 72 | 69 6e 67 2e 0d 70 72 6f |null str|ing..pro|
|00002c30| 63 20 63 6c 6f 73 69 6e | 67 43 61 72 72 69 61 67 |c closin|gCarriag|
|00002c40| 65 52 65 74 75 72 6e 20 | 7b 7d 20 7b 0d 09 73 65 |eReturn |{} {..se|
|00002c50| 74 20 70 6f 73 20 5b 73 | 65 6c 45 6e 64 5d 0d 09 |t pos [s|elEnd]..|
|00002c60| 69 66 20 7b 5b 69 73 53 | 65 6c 65 63 74 69 6f 6e |if {[isS|election|
|00002c70| 5d 20 26 26 20 28 24 70 | 6f 73 20 3d 3d 20 5b 6c |] && ($p|os == [l|
|00002c80| 69 6e 65 53 74 61 72 74 | 20 24 70 6f 73 5d 29 7d |ineStart| $pos])}|
|00002c90| 20 74 68 65 6e 20 7b 0d | 09 09 72 65 74 75 72 6e | then {.|..return|
|00002ca0| 20 22 5c 72 22 0d 09 7d | 20 65 6c 73 65 20 7b 0d | "\r"..}| else {.|
|00002cb0| 09 09 73 65 74 20 73 74 | 61 72 74 20 24 70 6f 73 |..set st|art $pos|
|00002cc0| 0d 09 09 73 65 74 20 65 | 6e 64 20 5b 6e 65 78 74 |...set e|nd [next|
|00002cd0| 4c 69 6e 65 53 74 61 72 | 74 20 24 73 74 61 72 74 |LineStar|t $start|
|00002ce0| 5d 0d 09 09 73 65 74 20 | 74 65 78 74 20 5b 67 65 |]...set |text [ge|
|00002cf0| 74 54 65 78 74 20 24 73 | 74 61 72 74 20 24 65 6e |tText $s|tart $en|
|00002d00| 64 5d 0d 09 09 69 66 20 | 7b 5b 69 73 57 68 69 74 |d]...if |{[isWhit|
|00002d10| 65 73 70 61 63 65 20 24 | 74 65 78 74 5d 7d 20 74 |espace $|text]} t|
|00002d20| 68 65 6e 20 7b 0d 09 09 | 09 72 65 74 75 72 6e 20 |hen {...|.return |
|00002d30| 22 22 0d 09 09 7d 20 65 | 6c 73 65 20 7b 0d 09 09 |""...} e|lse {...|
|00002d40| 09 72 65 74 75 72 6e 20 | 22 5c 72 5b 67 65 74 49 |.return |"\r[getI|
|00002d50| 6e 64 65 6e 74 61 74 69 | 6f 6e 20 24 70 6f 73 5d |ndentati|on $pos]|
|00002d60| 22 0d 09 09 7d 0d 09 7d | 0d 7d 0d 0d 23 20 49 6e |"...}..}|.}..# In|
|00002d70| 73 65 72 74 20 61 6e 20 | 6f 62 6a 65 63 74 20 61 |sert an |object a|
|00002d80| 74 20 74 68 65 20 69 6e | 73 65 72 74 69 6f 6e 20 |t the in|sertion |
|00002d90| 70 6f 69 6e 74 2e 20 49 | 66 20 74 68 65 72 65 20 |point. I|f there |
|00002da0| 69 73 20 61 20 73 65 6c | 65 63 74 69 6f 6e 20 61 |is a sel|ection a|
|00002db0| 6e 64 20 74 68 65 20 0d | 23 20 67 6c 6f 62 61 6c |nd the .|# global|
|00002dc0| 20 76 61 72 69 61 62 6c | 65 20 27 64 65 6c 65 74 | variabl|e 'delet|
|00002dd0| 65 4f 62 6a 65 63 74 4e | 6f 69 73 69 6c 79 27 20 |eObjectN|oisily' |
|00002de0| 69 73 20 66 61 6c 73 65 | 2c 20 71 75 69 65 74 6c |is false|, quietl|
|00002df0| 79 20 64 65 6c 65 74 65 | 20 74 68 65 20 73 65 6c |y delete| the sel|
|00002e00| 65 63 74 69 6f 6e 20 0d | 23 20 28 6c 69 6b 65 20 |ection .|# (like |
|00002e10| 27 70 61 73 74 65 27 29 | 2e 20 4f 74 68 65 72 77 |'paste')|. Otherw|
|00002e20| 69 73 65 2c 20 70 72 6f | 6d 70 74 20 74 68 65 20 |ise, pro|mpt the |
|00002e30| 75 73 65 72 20 66 6f 72 | 20 74 68 65 20 61 70 70 |user for| the app|
|00002e40| 72 6f 70 72 69 61 74 65 | 20 61 63 74 69 6f 6e 2e |ropriate| action.|
|00002e50| 20 0d 23 20 52 65 74 75 | 72 6e 73 20 74 72 75 65 | .# Retu|rns true|
|00002e60| 20 69 66 20 74 68 65 20 | 6f 62 6a 65 63 74 20 69 | if the |object i|
|00002e70| 73 20 75 6c 74 69 6d 61 | 74 65 6c 79 20 69 6e 73 |s ultima|tely ins|
|00002e80| 65 72 74 65 64 2c 20 61 | 6e 64 20 66 61 6c 73 65 |erted, a|nd false|
|00002e90| 20 69 66 20 74 68 65 20 | 0d 23 20 75 73 65 72 20 | if the |.# user |
|00002ea0| 63 61 6e 63 65 6c 73 20 | 74 68 65 20 6f 70 65 72 |cancels |the oper|
|00002eb0| 61 74 69 6f 6e 2e 20 0d | 70 72 6f 63 20 69 6e 73 |ation. .|proc ins|
|00002ec0| 65 72 74 4f 62 6a 65 63 | 74 20 7b 6f 62 6a 65 63 |ertObjec|t {objec|
|00002ed0| 74 4e 61 6d 65 7d 20 7b | 0d 09 67 6c 6f 62 61 6c |tName} {|..global|
|00002ee0| 20 54 65 58 6d 6f 64 65 | 56 61 72 73 0d 23 20 09 | TeXmode|Vars.# .|
|00002ef0| 69 66 20 7b 24 54 65 58 | 6d 6f 64 65 56 61 72 73 |if {$TeX|modeVars|
|00002f00| 28 65 78 70 65 72 74 4d | 6f 64 65 29 20 3d 3d 20 |(expertM|ode) == |
|00002f10| 30 7d 20 74 68 65 6e 20 | 7b 0d 23 20 09 09 69 66 |0} then |{.# ..if|
|00002f20| 20 7b 21 5b 69 73 49 6e | 44 6f 63 75 6d 65 6e 74 | {![isIn|Document|
|00002f30| 5d 7d 20 74 68 65 6e 20 | 7b 0d 23 20 09 09 09 69 |]} then |{.# ...i|
|00002f40| 66 20 7b 24 54 65 58 6d | 6f 64 65 56 61 72 73 28 |f {$TeXm|odeVars(|
|00002f50| 73 65 61 72 63 68 4e 6f | 69 73 69 6c 79 29 7d 20 |searchNo|isily)} |
|00002f60| 7b 62 65 65 70 7d 0d 23 | 20 09 09 09 63 61 73 65 |{beep}.#| ...case|
|00002f70| 20 5b 61 73 6b 79 65 73 | 6e 6f 20 22 54 68 65 20 | [askyes|no "The |
|00002f80| 63 75 72 73 6f 72 20 69 | 73 20 6e 6f 74 20 69 6e |cursor i|s not in|
|00002f90| 20 74 68 65 20 64 6f 63 | 75 6d 65 6e 74 20 65 6e | the doc|ument en|
|00002fa0| 76 69 72 6f 6e 6d 65 6e | 74 2e 5c 0d 23 20 09 09 |vironmen|t.\.# ..|
|00002fb0| 09 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00002fc0| 20 5c 72 43 6f 6e 74 69 | 6e 75 65 20 74 68 65 20 | \rConti|nue the |
|00002fd0| 6f 70 65 72 61 74 69 6f | 6e 3f 22 5d 20 69 6e 20 |operatio|n?"] in |
|00002fe0| 7b 0d 23 20 09 09 09 09 | 22 79 65 73 22 20 7b 7d |{.# ....|"yes" {}|
|00002ff0| 0d 23 20 09 09 09 09 22 | 6e 6f 22 20 7b 65 72 72 |.# ...."|no" {err|
|00003000| 6f 72 20 22 69 6e 73 65 | 72 74 4f 62 6a 65 63 74 |or "inse|rtObject|
|00003010| 3a 20 20 6f 75 74 20 6f | 66 20 63 6f 6e 74 65 78 |: out o|f contex|
|00003020| 74 22 7d 0d 23 20 09 09 | 09 7d 0d 23 20 09 09 7d |t"}.# ..|.}.# ..}|
|00003030| 0d 23 20 09 7d 0d 09 69 | 66 20 7b 5b 69 73 53 65 |.# .}..i|f {[isSe|
|00003040| 6c 65 63 74 69 6f 6e 5d | 7d 20 74 68 65 6e 20 7b |lection]|} then {|
|00003050| 0d 09 09 69 66 20 7b 24 | 54 65 58 6d 6f 64 65 56 |...if {$|TeXmodeV|
|00003060| 61 72 73 28 64 65 6c 65 | 74 65 4f 62 6a 65 63 74 |ars(dele|teObject|
|00003070| 4e 6f 69 73 69 6c 79 29 | 7d 20 74 68 65 6e 20 7b |Noisily)|} then {|
|00003080| 0d 09 09 09 63 61 73 65 | 20 5b 61 73 6b 79 65 73 |....case| [askyes|
|00003090| 6e 6f 20 2d 63 20 22 44 | 65 6c 65 74 65 20 73 65 |no -c "D|elete se|
|000030a0| 6c 65 63 74 69 6f 6e 3f | 22 5d 20 69 6e 20 7b 0d |lection?|"] in {.|
|000030b0| 09 09 09 09 22 79 65 73 | 22 20 7b 64 65 6c 65 74 |...."yes|" {delet|
|000030c0| 65 54 65 78 74 20 5b 67 | 65 74 50 6f 73 5d 20 5b |eText [g|etPos] [|
|000030d0| 73 65 6c 45 6e 64 5d 7d | 0d 09 09 09 09 22 6e 6f |selEnd]}|....."no|
|000030e0| 22 20 7b 62 61 63 6b 77 | 61 72 64 43 68 61 72 7d |" {backw|ardChar}|
|000030f0| 0d 09 09 09 09 22 63 61 | 6e 63 65 6c 22 20 7b 72 |....."ca|ncel" {r|
|00003100| 65 74 75 72 6e 20 30 7d | 0d 09 09 09 7d 0d 09 09 |eturn 0}|....}...|
|00003110| 7d 20 65 6c 73 65 20 7b | 0d 09 09 09 64 65 6c 65 |} else {|....dele|
|00003120| 74 65 54 65 78 74 20 5b | 67 65 74 50 6f 73 5d 20 |teText [|getPos] |
|00003130| 5b 73 65 6c 45 6e 64 5d | 0d 09 09 7d 0d 09 7d 0d |[selEnd]|...}..}.|
|00003140| 09 69 6e 73 65 72 74 54 | 65 78 74 20 24 6f 62 6a |.insertT|ext $obj|
|00003150| 65 63 74 4e 61 6d 65 0d | 09 72 65 74 75 72 6e 20 |ectName.|.return |
|00003160| 31 0d 7d 0d 0d 23 20 49 | 6e 73 65 72 74 20 61 6e |1.}..# I|nsert an|
|00003170| 20 6f 62 6a 65 63 74 20 | 61 74 20 74 68 65 20 69 | object |at the i|
|00003180| 6e 73 65 72 74 69 6f 6e | 20 70 6f 69 6e 74 2e 20 |nsertion| point. |
|00003190| 49 66 20 74 68 65 72 65 | 20 69 73 20 61 20 73 65 |If there| is a se|
|000031a0| 6c 65 63 74 69 6f 6e 2c | 20 77 72 61 70 20 0d 23 |lection,| wrap .#|
|000031b0| 20 69 74 20 69 6e 73 69 | 64 65 20 74 68 65 20 70 | it insi|de the p|
|000031c0| 61 72 61 6d 65 74 65 72 | 73 20 24 6c 65 66 74 20 |arameter|s $left |
|000031d0| 61 6e 64 20 24 72 69 67 | 68 74 2e 20 52 65 74 75 |and $rig|ht. Retu|
|000031e0| 72 6e 73 20 74 72 75 65 | 20 69 66 20 74 68 65 72 |rns true| if ther|
|000031f0| 65 20 69 73 20 61 20 0d | 23 20 73 65 6c 65 63 74 |e is a .|# select|
|00003200| 69 6f 6e 20 28 69 6e 20 | 77 68 69 63 68 20 63 61 |ion (in |which ca|
|00003210| 73 65 20 69 74 20 77 69 | 6c 6c 20 77 72 61 70 29 |se it wi|ll wrap)|
|00003220| 2c 20 61 6e 64 20 66 61 | 6c 73 65 20 6f 74 68 65 |, and fa|lse othe|
|00003230| 72 77 69 73 65 2e 20 0d | 70 72 6f 63 20 77 72 61 |rwise. .|proc wra|
|00003240| 70 4f 62 6a 65 63 74 20 | 7b 6c 65 66 74 20 72 69 |pObject |{left ri|
|00003250| 67 68 74 7d 20 7b 0d 23 | 20 09 67 6c 6f 62 61 6c |ght} {.#| .global|
|00003260| 20 54 65 58 6d 6f 64 65 | 56 61 72 73 0d 23 20 09 | TeXmode|Vars.# .|
|00003270| 69 66 20 7b 24 54 65 58 | 6d 6f 64 65 56 61 72 73 |if {$TeX|modeVars|
|00003280| 28 65 78 70 65 72 74 4d | 6f 64 65 29 20 3d 3d 20 |(expertM|ode) == |
|00003290| 30 7d 20 74 68 65 6e 20 | 7b 0d 23 20 09 09 69 66 |0} then |{.# ..if|
|000032a0| 20 7b 21 5b 69 73 49 6e | 44 6f 63 75 6d 65 6e 74 | {![isIn|Document|
|000032b0| 5d 7d 20 74 68 65 6e 20 | 7b 0d 23 20 09 09 09 69 |]} then |{.# ...i|
|000032c0| 66 20 7b 24 54 65 58 6d | 6f 64 65 56 61 72 73 28 |f {$TeXm|odeVars(|
|000032d0| 73 65 61 72 63 68 4e 6f | 69 73 69 6c 79 29 7d 20 |searchNo|isily)} |
|000032e0| 7b 62 65 65 70 7d 0d 23 | 20 09 09 09 63 61 73 65 |{beep}.#| ...case|
|000032f0| 20 5b 61 73 6b 79 65 73 | 6e 6f 20 22 54 68 65 20 | [askyes|no "The |
|00003300| 63 75 72 73 6f 72 20 69 | 73 20 6e 6f 74 20 69 6e |cursor i|s not in|
|00003310| 20 74 68 65 20 64 6f 63 | 75 6d 65 6e 74 20 65 6e | the doc|ument en|
|00003320| 76 69 72 6f 6e 6d 65 6e | 74 2e 5c 0d 23 20 09 09 |vironmen|t.\.# ..|
|00003330| 09 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00003340| 20 5c 72 43 6f 6e 74 69 | 6e 75 65 20 74 68 65 20 | \rConti|nue the |
|00003350| 6f 70 65 72 61 74 69 6f | 6e 3f 22 5d 20 69 6e 20 |operatio|n?"] in |
|00003360| 7b 0d 23 20 09 09 09 09 | 22 79 65 73 22 20 7b 7d |{.# ....|"yes" {}|
|00003370| 0d 23 20 09 09 09 09 22 | 6e 6f 22 20 7b 65 72 72 |.# ...."|no" {err|
|00003380| 6f 72 20 22 77 72 61 70 | 4f 62 6a 65 63 74 3a 20 |or "wrap|Object: |
|00003390| 20 6f 75 74 20 6f 66 20 | 63 6f 6e 74 65 78 74 22 | out of |context"|
|000033a0| 7d 0d 23 20 09 09 09 7d | 0d 23 20 09 09 7d 0d 23 |}.# ...}|.# ..}.#|
|000033b0| 20 09 7d 0d 09 73 65 74 | 20 63 75 72 72 65 6e 74 | .}..set| current|
|000033c0| 50 6f 73 20 5b 67 65 74 | 50 6f 73 5d 0d 09 73 65 |Pos [get|Pos]..se|
|000033d0| 74 20 73 65 6c 65 63 74 | 65 64 20 5b 69 73 53 65 |t select|ed [isSe|
|000033e0| 6c 65 63 74 69 6f 6e 5d | 0d 09 69 66 20 7b 24 73 |lection]|..if {$s|
|000033f0| 65 6c 65 63 74 65 64 7d | 20 74 68 65 6e 20 7b 0d |elected}| then {.|
|00003400| 09 09 72 65 70 6c 61 63 | 65 54 65 78 74 20 24 63 |..replac|eText $c|
|00003410| 75 72 72 65 6e 74 50 6f | 73 20 5b 73 65 6c 45 6e |urrentPo|s [selEn|
|00003420| 64 5d 20 24 6c 65 66 74 | 20 5b 67 65 74 53 65 6c |d] $left| [getSel|
|00003430| 65 63 74 5d 20 24 72 69 | 67 68 74 0d 09 7d 20 65 |ect] $ri|ght..} e|
|00003440| 6c 73 65 20 7b 0d 09 09 | 69 6e 73 65 72 74 54 65 |lse {...|insertTe|
|00003450| 78 74 20 24 6c 65 66 74 | 20 22 a5 22 20 24 72 69 |xt $left| "." $ri|
|00003460| 67 68 74 0d 09 7d 0d 09 | 67 6f 74 6f 20 24 63 75 |ght..}..|goto $cu|
|00003470| 72 72 65 6e 74 50 6f 73 | 0d 09 6e 65 78 74 54 61 |rrentPos|..nextTa|
|00003480| 62 53 74 6f 70 0d 09 72 | 65 74 75 72 6e 20 24 73 |bStop..r|eturn $s|
|00003490| 65 6c 65 63 74 65 64 0d | 7d 0d 0d 23 20 42 75 69 |elected.|}..# Bui|
|000034a0| 6c 64 73 20 61 6e 64 20 | 72 65 74 75 72 6e 73 20 |lds and |returns |
|000034b0| 61 20 4c 61 54 65 58 20 | 65 6e 76 69 72 6f 6e 6d |a LaTeX |environm|
|000034c0| 65 6e 74 2c 20 74 68 61 | 74 20 69 73 2c 20 61 20 |ent, tha|t is, a |
|000034d0| 5c 62 65 67 69 6e 2e 2e | 2e 5c 65 6e 64 20 0d 23 |\begin..|.\end .#|
|000034e0| 20 70 61 69 72 2c 20 67 | 69 76 65 6e 20 74 68 65 | pair, g|iven the|
|000034f0| 20 6e 61 6d 65 20 6f 66 | 20 74 68 65 20 65 6e 76 | name of| the env|
|00003500| 69 72 6f 6e 6d 65 6e 74 | 2c 20 61 6e 20 61 72 67 |ironment|, an arg|
|00003510| 75 6d 65 6e 74 20 73 74 | 72 69 6e 67 2c 20 0d 23 |ument st|ring, .#|
|00003520| 20 61 6e 64 20 74 68 65 | 20 65 6e 76 69 72 6f 6e | and the| environ|
|00003530| 6d 65 6e 74 20 62 6f 64 | 79 2e 20 20 54 68 65 20 |ment bod|y. The |
|00003540| 62 6f 64 79 20 73 68 6f | 75 6c 64 20 62 65 20 70 |body sho|uld be p|
|00003550| 61 73 73 65 64 20 74 6f | 20 74 68 69 73 20 0d 23 |assed to| this .#|
|00003560| 20 70 72 6f 63 65 64 75 | 72 65 20 66 75 6c 6c 79 | procedu|re fully|
|00003570| 20 66 6f 72 6d 61 74 74 | 65 64 2c 20 69 6e 63 6c | formatt|ed, incl|
|00003580| 75 64 69 6e 67 20 69 6e | 64 65 6e 74 61 74 69 6f |uding in|dentatio|
|00003590| 6e 2e 0d 70 72 6f 63 20 | 62 75 69 6c 64 45 6e 76 |n..proc |buildEnv|
|000035a0| 69 72 6f 6e 6d 65 6e 74 | 20 7b 65 6e 76 4e 61 6d |ironment| {envNam|
|000035b0| 65 20 65 6e 76 41 72 67 | 20 65 6e 76 42 6f 64 79 |e envArg| envBody|
|000035c0| 20 74 72 61 69 6c 69 6e | 67 43 6f 6d 6d 65 6e 74 | trailin|gComment|
|000035d0| 7d 20 7b 0d 09 73 65 74 | 20 69 6e 64 65 6e 74 20 |} {..set| indent |
|000035e0| 5b 67 65 74 49 6e 64 65 | 6e 74 61 74 69 6f 6e 20 |[getInde|ntation |
|000035f0| 5b 67 65 74 50 6f 73 5d | 5d 0d 09 73 65 74 20 65 |[getPos]|]..set e|
|00003600| 6e 76 53 74 72 20 5b 6f | 70 65 6e 69 6e 67 43 61 |nvStr [o|peningCa|
|00003610| 72 72 69 61 67 65 52 65 | 74 75 72 6e 5d 0d 09 61 |rriageRe|turn]..a|
|00003620| 70 70 65 6e 64 20 65 6e | 76 53 74 72 20 22 5c 5c |ppend en|vStr "\\|
|00003630| 62 65 67 69 6e 7b 22 20 | 24 65 6e 76 4e 61 6d 65 |begin{" |$envName|
|00003640| 20 22 7d 22 0d 09 61 70 | 70 65 6e 64 20 65 6e 76 | "}"..ap|pend env|
|00003650| 53 74 72 20 24 65 6e 76 | 41 72 67 20 22 5c 72 22 |Str $env|Arg "\r"|
|00003660| 0d 09 61 70 70 65 6e 64 | 20 65 6e 76 53 74 72 20 |..append| envStr |
|00003670| 24 65 6e 76 42 6f 64 79 | 0d 09 61 70 70 65 6e 64 |$envBody|..append|
|00003680| 20 65 6e 76 53 74 72 20 | 24 69 6e 64 65 6e 74 20 | envStr |$indent |
|00003690| 22 5c 5c 65 6e 64 7b 22 | 20 24 65 6e 76 4e 61 6d |"\\end{"| $envNam|
|000036a0| 65 20 22 7d 24 74 72 61 | 69 6c 69 6e 67 43 6f 6d |e "}$tra|ilingCom|
|000036b0| 6d 65 6e 74 22 0d 09 61 | 70 70 65 6e 64 20 65 6e |ment"..a|ppend en|
|000036c0| 76 53 74 72 20 5b 63 6c | 6f 73 69 6e 67 43 61 72 |vStr [cl|osingCar|
|000036d0| 72 69 61 67 65 52 65 74 | 75 72 6e 5d 0d 09 72 65 |riageRet|urn]..re|
|000036e0| 74 75 72 6e 20 24 65 6e | 76 53 74 72 0d 7d 0d 0d |turn $en|vStr.}..|
|000036f0| 23 20 49 6e 73 65 72 74 | 73 20 61 20 4c 61 54 65 |# Insert|s a LaTe|
|00003700| 58 20 65 6e 76 69 72 6f | 6e 6d 65 6e 74 20 77 69 |X enviro|nment wi|
|00003710| 74 68 20 74 68 65 20 73 | 70 65 63 69 66 69 65 64 |th the s|pecified|
|00003720| 20 6e 61 6d 65 2c 20 61 | 72 67 75 6d 65 6e 74 2c | name, a|rgument,|
|00003730| 20 0d 23 20 61 6e 64 20 | 62 6f 64 79 20 61 74 20 | .# and |body at |
|00003740| 74 68 65 20 69 6e 73 65 | 72 74 69 6f 6e 20 70 6f |the inse|rtion po|
|00003750| 69 6e 74 2e 20 20 50 6f | 73 69 74 69 6f 6e 73 20 |int. Po|sitions |
|00003760| 74 68 65 20 63 75 72 73 | 6f 72 20 61 74 20 74 68 |the curs|or at th|
|00003770| 65 20 0d 23 20 62 65 67 | 69 6e 6e 69 6e 67 20 6f |e .# beg|inning o|
|00003780| 66 20 74 68 65 20 65 6e | 76 69 72 6f 6e 6d 65 6e |f the en|vironmen|
|00003790| 74 2c 20 6c 65 61 76 69 | 6e 67 20 61 6e 79 20 73 |t, leavi|ng any s|
|000037a0| 75 62 73 65 71 75 65 6e | 74 20 61 63 74 69 6f 6e |ubsequen|t action|
|000037b0| 20 74 6f 20 74 68 65 20 | 0d 23 20 63 61 6c 6c 69 | to the |.# calli|
|000037c0| 6e 67 20 70 72 6f 63 65 | 64 75 72 65 2e 20 20 44 |ng proce|dure. D|
|000037d0| 65 6c 65 74 65 73 20 74 | 68 65 20 63 75 72 72 65 |eletes t|he curre|
|000037e0| 6e 74 20 73 65 6c 65 63 | 74 69 6f 6e 20 71 75 69 |nt selec|tion qui|
|000037f0| 65 74 6c 79 20 69 66 20 | 74 68 65 20 0d 23 20 67 |etly if |the .# g|
|00003800| 6c 6f 62 61 6c 20 76 61 | 72 69 61 62 6c 65 20 27 |lobal va|riable '|
|00003810| 64 65 6c 65 74 65 45 6e | 76 69 72 6f 6e 6d 65 6e |deleteEn|vironmen|
|00003820| 74 4e 6f 69 73 69 6c 79 | 27 20 69 73 20 66 61 6c |tNoisily|' is fal|
|00003830| 73 65 3b 20 6f 74 68 65 | 72 77 69 73 65 20 0d 23 |se; othe|rwise .#|
|00003840| 20 74 68 65 20 75 73 65 | 72 20 69 73 20 70 72 6f | the use|r is pro|
|00003850| 6d 70 74 65 64 20 66 6f | 72 20 64 69 72 65 63 74 |mpted fo|r direct|
|00003860| 69 6f 6e 73 2e 20 20 52 | 65 74 75 72 6e 73 20 74 |ions. R|eturns t|
|00003870| 72 75 65 20 69 66 20 74 | 68 65 20 0d 23 20 65 6e |rue if t|he .# en|
|00003880| 76 69 72 6f 6e 6d 65 6e | 74 20 69 73 20 75 6c 74 |vironmen|t is ult|
|00003890| 69 6d 61 74 65 6c 79 20 | 69 6e 73 65 72 74 65 64 |imately |inserted|
|000038a0| 2c 20 61 6e 64 20 66 61 | 6c 73 65 20 69 66 20 74 |, and fa|lse if t|
|000038b0| 68 65 20 75 73 65 72 20 | 63 61 6e 63 65 6c 73 20 |he user |cancels |
|000038c0| 0d 23 20 74 68 65 20 6f | 70 65 72 61 74 69 6f 6e |.# the o|peration|
|000038d0| 2e 0d 70 72 6f 63 20 69 | 6e 73 65 72 74 45 6e 76 |..proc i|nsertEnv|
|000038e0| 69 72 6f 6e 6d 65 6e 74 | 20 7b 65 6e 76 4e 61 6d |ironment| {envNam|
|000038f0| 65 20 65 6e 76 41 72 67 | 20 65 6e 76 42 6f 64 79 |e envArg| envBody|
|00003900| 7d 20 7b 0d 09 67 6c 6f | 62 61 6c 20 54 65 58 6d |} {..glo|bal TeXm|
|00003910| 6f 64 65 56 61 72 73 0d | 23 20 09 69 66 20 7b 24 |odeVars.|# .if {$|
|00003920| 54 65 58 6d 6f 64 65 56 | 61 72 73 28 65 78 70 65 |TeXmodeV|ars(expe|
|00003930| 72 74 4d 6f 64 65 29 20 | 3d 3d 20 30 7d 20 74 68 |rtMode) |== 0} th|
|00003940| 65 6e 20 7b 0d 23 20 09 | 09 69 66 20 7b 21 5b 69 |en {.# .|.if {![i|
|00003950| 73 49 6e 44 6f 63 75 6d | 65 6e 74 5d 7d 20 74 68 |sInDocum|ent]} th|
|00003960| 65 6e 20 7b 0d 23 20 09 | 09 09 69 66 20 7b 24 54 |en {.# .|..if {$T|
|00003970| 65 58 6d 6f 64 65 56 61 | 72 73 28 73 65 61 72 63 |eXmodeVa|rs(searc|
|00003980| 68 4e 6f 69 73 69 6c 79 | 29 7d 20 7b 62 65 65 70 |hNoisily|)} {beep|
|00003990| 7d 0d 23 20 09 09 09 63 | 61 73 65 20 5b 61 73 6b |}.# ...c|ase [ask|
|000039a0| 79 65 73 6e 6f 20 22 54 | 68 65 20 63 75 72 73 6f |yesno "T|he curso|
|000039b0| 72 20 69 73 20 6e 6f 74 | 20 69 6e 20 74 68 65 20 |r is not| in the |
|000039c0| 64 6f 63 75 6d 65 6e 74 | 20 65 6e 76 69 72 6f 6e |document| environ|
|000039d0| 6d 65 6e 74 2e 5c 0d 23 | 20 09 09 09 20 20 20 20 |ment.\.#| ... |
|000039e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 5c 72 43 6f | | \rCo|
|000039f0| 6e 74 69 6e 75 65 20 74 | 68 65 20 6f 70 65 72 61 |ntinue t|he opera|
|00003a00| 74 69 6f 6e 3f 22 5d 20 | 69 6e 20 7b 0d 23 20 09 |tion?"] |in {.# .|
|00003a10| 09 09 09 22 79 65 73 22 | 20 7b 7d 0d 23 20 09 09 |..."yes"| {}.# ..|
|00003a20| 09 09 22 6e 6f 22 20 7b | 65 72 72 6f 72 20 22 69 |.."no" {|error "i|
|00003a30| 6e 73 65 72 74 45 6e 76 | 69 72 6f 6e 6d 65 6e 74 |nsertEnv|ironment|
|00003a40| 3a 20 20 6f 75 74 20 6f | 66 20 63 6f 6e 74 65 78 |: out o|f contex|
|00003a50| 74 22 7d 0d 23 20 09 09 | 09 7d 0d 23 20 09 09 7d |t"}.# ..|.}.# ..}|
|00003a60| 0d 23 20 09 7d 0d 09 69 | 66 20 7b 5b 69 73 53 65 |.# .}..i|f {[isSe|
|00003a70| 6c 65 63 74 69 6f 6e 5d | 7d 20 74 68 65 6e 20 7b |lection]|} then {|
|00003a80| 0d 09 09 69 66 20 7b 24 | 54 65 58 6d 6f 64 65 56 |...if {$|TeXmodeV|
|00003a90| 61 72 73 28 64 65 6c 65 | 74 65 45 6e 76 69 72 6f |ars(dele|teEnviro|
|00003aa0| 6e 6d 65 6e 74 4e 6f 69 | 73 69 6c 79 29 7d 20 74 |nmentNoi|sily)} t|
|00003ab0| 68 65 6e 20 7b 0d 09 09 | 09 63 61 73 65 20 5b 61 |hen {...|.case [a|
|00003ac0| 73 6b 79 65 73 6e 6f 20 | 2d 63 20 22 44 65 6c 65 |skyesno |-c "Dele|
|00003ad0| 74 65 20 73 65 6c 65 63 | 74 69 6f 6e 3f 22 5d 20 |te selec|tion?"] |
|00003ae0| 69 6e 20 7b 0d 09 09 09 | 09 22 79 65 73 22 20 7b |in {....|."yes" {|
|00003af0| 7d 0d 09 09 09 09 22 6e | 6f 22 20 7b 62 61 63 6b |}....."n|o" {back|
|00003b00| 77 61 72 64 43 68 61 72 | 7d 0d 09 09 09 09 22 63 |wardChar|}....."c|
|00003b10| 61 6e 63 65 6c 22 20 7b | 72 65 74 75 72 6e 20 30 |ancel" {|return 0|
|00003b20| 7d 0d 09 09 09 7d 0d 09 | 09 7d 0d 09 7d 0d 09 73 |}....}..|.}..}..s|
|00003b30| 65 74 20 73 74 61 72 74 | 20 5b 67 65 74 50 6f 73 |et start| [getPos|
|00003b40| 5d 0d 09 73 65 74 20 65 | 6e 64 20 5b 73 65 6c 45 |]..set e|nd [selE|
|00003b50| 6e 64 5d 0d 09 73 65 74 | 20 62 6f 64 79 20 5b 73 |nd]..set| body [s|
|00003b60| 68 69 66 74 54 65 78 74 | 52 69 67 68 74 20 24 65 |hiftText|Right $e|
|00003b70| 6e 76 42 6f 64 79 20 5b | 67 65 74 49 6e 64 65 6e |nvBody [|getInden|
|00003b80| 74 61 74 69 6f 6e 20 24 | 73 74 61 72 74 5d 5d 0d |tation $|start]].|
|00003b90| 09 72 65 70 6c 61 63 65 | 54 65 78 74 20 24 73 74 |.replace|Text $st|
|00003ba0| 61 72 74 20 24 65 6e 64 | 20 5b 62 75 69 6c 64 45 |art $end| [buildE|
|00003bb0| 6e 76 69 72 6f 6e 6d 65 | 6e 74 20 24 65 6e 76 4e |nvironme|nt $envN|
|00003bc0| 61 6d 65 20 24 65 6e 76 | 41 72 67 20 24 62 6f 64 |ame $env|Arg $bod|
|00003bd0| 79 20 22 a5 22 5d 0d 09 | 67 6f 74 6f 20 24 73 74 |y "."]..|goto $st|
|00003be0| 61 72 74 0d 09 72 65 74 | 75 72 6e 20 31 0d 7d 0d |art..ret|urn 1.}.|
|00003bf0| 0d 23 20 49 6e 73 65 72 | 74 73 20 61 6e 20 65 6e |.# Inser|ts an en|
|00003c00| 76 69 72 6f 6e 6d 65 6e | 74 20 77 69 74 68 20 74 |vironmen|t with t|
|00003c10| 68 65 20 67 69 76 65 6e | 20 6e 61 6d 65 2c 20 61 |he given| name, a|
|00003c20| 72 67 75 6d 65 6e 74 2c | 20 61 6e 64 20 62 6f 64 |rgument,| and bod|
|00003c30| 79 20 61 74 20 0d 23 20 | 74 68 65 20 69 6e 73 65 |y at .# |the inse|
|00003c40| 72 74 69 6f 6e 20 70 6f | 69 6e 74 2e 20 20 50 6f |rtion po|int. Po|
|00003c50| 73 69 74 69 6f 6e 73 20 | 74 68 65 20 63 75 72 73 |sitions |the curs|
|00003c60| 6f 72 20 61 74 20 74 68 | 65 20 62 65 67 69 6e 6e |or at th|e beginn|
|00003c70| 69 6e 67 20 6f 66 20 0d | 23 20 74 68 65 20 65 6e |ing of .|# the en|
|00003c80| 76 69 72 6f 6e 6d 65 6e | 74 2c 20 6c 65 61 76 69 |vironmen|t, leavi|
|00003c90| 6e 67 20 61 6e 79 20 73 | 75 62 73 65 71 75 65 6e |ng any s|ubsequen|
|00003ca0| 74 20 61 63 74 69 6f 6e | 20 74 6f 20 74 68 65 20 |t action| to the |
|00003cb0| 63 61 6c 6c 69 6e 67 20 | 0d 23 20 70 72 6f 63 65 |calling |.# proce|
|00003cc0| 64 75 72 65 2e 20 20 49 | 66 20 74 68 65 72 65 20 |dure. I|f there |
|00003cd0| 69 73 20 63 75 72 72 65 | 6e 74 6c 79 20 61 20 73 |is curre|ntly a s|
|00003ce0| 65 6c 65 63 74 69 6f 6e | 2c 20 63 75 74 20 61 6e |election|, cut an|
|00003cf0| 64 20 70 61 73 74 65 20 | 69 74 20 0d 23 20 69 6e |d paste |it .# in|
|00003d00| 74 6f 20 74 68 65 20 62 | 6f 64 79 20 6f 66 20 74 |to the b|ody of t|
|00003d10| 68 65 20 6e 65 77 20 65 | 6e 76 69 72 6f 6e 6d 65 |he new e|nvironme|
|00003d20| 6e 74 2c 20 6d 61 69 6e | 74 61 69 6e 69 6e 67 20 |nt, main|taining |
|00003d30| 70 72 6f 70 65 72 20 0d | 23 20 69 6e 64 65 6e 74 |proper .|# indent|
|00003d40| 61 74 69 6f 6e 3b 20 6f | 74 68 65 72 77 69 73 65 |ation; o|therwise|
|00003d50| 2c 20 69 6e 73 65 72 74 | 20 61 20 74 61 62 20 73 |, insert| a tab s|
|00003d60| 74 6f 70 20 69 6e 74 6f | 20 74 68 65 20 62 6f 64 |top into| the bod|
|00003d70| 79 20 6f 66 20 74 68 65 | 0d 23 20 65 6e 76 69 72 |y of the|.# envir|
|00003d80| 6f 6e 6d 65 6e 74 2e 20 | 20 52 65 74 75 72 6e 73 |onment. | Returns|
|00003d90| 20 74 72 75 65 20 69 66 | 20 74 68 65 72 65 20 69 | true if| there i|
|00003da0| 73 20 61 20 73 65 6c 65 | 63 74 69 6f 6e 2c 20 61 |s a sele|ction, a|
|00003db0| 6e 64 20 66 61 6c 73 65 | 20 0d 23 20 6f 74 68 65 |nd false| .# othe|
|00003dc0| 72 77 69 73 65 2e 0d 70 | 72 6f 63 20 77 72 61 70 |rwise..p|roc wrap|
|00003dd0| 45 6e 76 69 72 6f 6e 6d | 65 6e 74 20 7b 65 6e 76 |Environm|ent {env|
|00003de0| 4e 61 6d 65 20 65 6e 76 | 41 72 67 20 65 6e 76 42 |Name env|Arg envB|
|00003df0| 6f 64 79 7d 20 7b 0d 23 | 20 09 67 6c 6f 62 61 6c |ody} {.#| .global|
|00003e00| 20 54 65 58 6d 6f 64 65 | 56 61 72 73 0d 23 20 09 | TeXmode|Vars.# .|
|00003e10| 69 66 20 7b 24 54 65 58 | 6d 6f 64 65 56 61 72 73 |if {$TeX|modeVars|
|00003e20| 28 65 78 70 65 72 74 4d | 6f 64 65 29 20 3d 3d 20 |(expertM|ode) == |
|00003e30| 30 7d 20 74 68 65 6e 20 | 7b 0d 23 20 09 09 69 66 |0} then |{.# ..if|
|00003e40| 20 7b 21 5b 69 73 49 6e | 44 6f 63 75 6d 65 6e 74 | {![isIn|Document|
|00003e50| 5d 7d 20 74 68 65 6e 20 | 7b 0d 23 20 09 09 09 69 |]} then |{.# ...i|
|00003e60| 66 20 7b 24 54 65 58 6d | 6f 64 65 56 61 72 73 28 |f {$TeXm|odeVars(|
|00003e70| 73 65 61 72 63 68 4e 6f | 69 73 69 6c 79 29 7d 20 |searchNo|isily)} |
|00003e80| 7b 62 65 65 70 7d 0d 23 | 20 09 09 09 63 61 73 65 |{beep}.#| ...case|
|00003e90| 20 5b 61 73 6b 79 65 73 | 6e 6f 20 22 54 68 65 20 | [askyes|no "The |
|00003ea0| 63 75 72 73 6f 72 20 69 | 73 20 6e 6f 74 20 69 6e |cursor i|s not in|
|00003eb0| 20 74 68 65 20 64 6f 63 | 75 6d 65 6e 74 20 65 6e | the doc|ument en|
|00003ec0| 76 69 72 6f 6e 6d 65 6e | 74 2e 5c 0d 23 20 09 09 |vironmen|t.\.# ..|
|00003ed0| 09 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00003ee0| 20 5c 72 43 6f 6e 74 69 | 6e 75 65 20 74 68 65 20 | \rConti|nue the |
|00003ef0| 6f 70 65 72 61 74 69 6f | 6e 3f 22 5d 20 69 6e 20 |operatio|n?"] in |
|00003f00| 7b 0d 23 20 09 09 09 09 | 22 79 65 73 22 20 7b 7d |{.# ....|"yes" {}|
|00003f10| 0d 23 20 09 09 09 09 22 | 6e 6f 22 20 7b 65 72 72 |.# ...."|no" {err|
|00003f20| 6f 72 20 22 77 72 61 70 | 45 6e 76 69 72 6f 6e 6d |or "wrap|Environm|
|00003f30| 65 6e 74 3a 20 20 6f 75 | 74 20 6f 66 20 63 6f 6e |ent: ou|t of con|
|00003f40| 74 65 78 74 22 7d 0d 23 | 20 09 09 09 7d 0d 23 20 |text"}.#| ...}.# |
|00003f50| 09 09 7d 0d 23 20 09 7d | 0d 09 73 65 74 20 73 74 |..}.# .}|..set st|
|00003f60| 61 72 74 20 5b 67 65 74 | 50 6f 73 5d 0d 09 73 65 |art [get|Pos]..se|
|00003f70| 74 20 65 6e 64 20 5b 73 | 65 6c 45 6e 64 5d 0d 09 |t end [s|elEnd]..|
|00003f80| 73 65 74 20 69 6e 64 65 | 6e 74 20 5b 67 65 74 49 |set inde|nt [getI|
|00003f90| 6e 64 65 6e 74 61 74 69 | 6f 6e 20 24 73 74 61 72 |ndentati|on $star|
|00003fa0| 74 5d 0d 09 69 66 20 7b | 5b 69 73 53 65 6c 65 63 |t]..if {|[isSelec|
|00003fb0| 74 69 6f 6e 5d 7d 20 74 | 68 65 6e 20 7b 0d 09 09 |tion]} t|hen {...|
|00003fc0| 73 65 74 20 74 65 78 74 | 20 5b 67 65 74 53 65 6c |set text| [getSel|
|00003fd0| 65 63 74 5d 0d 09 09 73 | 65 74 20 74 65 78 74 4c |ect]...s|et textL|
|00003fe0| 65 6e 20 5b 73 74 72 69 | 6e 67 20 6c 65 6e 67 74 |en [stri|ng lengt|
|00003ff0| 68 20 24 74 65 78 74 5d | 0d 09 09 69 66 20 7b 5b |h $text]|...if {[|
|00004000| 73 74 72 69 6e 67 20 69 | 6e 64 65 78 20 24 74 65 |string i|ndex $te|
|00004010| 78 74 20 5b 65 78 70 72 | 20 24 74 65 78 74 4c 65 |xt [expr| $textLe|
|00004020| 6e 2d 31 5d 5d 20 21 3d | 20 22 5c 72 22 7d 20 74 |n-1]] !=| "\r"} t|
|00004030| 68 65 6e 20 7b 0d 09 09 | 09 61 70 70 65 6e 64 20 |hen {...|.append |
|00004040| 74 65 78 74 20 22 5c 72 | 22 0d 09 09 7d 0d 09 09 |text "\r|"...}...|
|00004050| 69 66 20 7b 24 73 74 61 | 72 74 20 3d 3d 20 5b 6c |if {$sta|rt == [l|
|00004060| 69 6e 65 53 74 61 72 74 | 20 24 73 74 61 72 74 5d |ineStart| $start]|
|00004070| 7d 20 74 68 65 6e 20 7b | 0d 09 09 09 73 65 74 20 |} then {|....set |
|00004080| 62 6f 64 79 20 5b 73 68 | 69 66 74 54 65 78 74 52 |body [sh|iftTextR|
|00004090| 69 67 68 74 20 24 74 65 | 78 74 20 5c 74 5d 0d 09 |ight $te|xt \t]..|
|000040a0| 09 7d 20 65 6c 73 65 20 | 7b 0d 09 09 09 73 65 74 |.} else |{....set|
|000040b0| 20 62 6f 64 79 20 22 24 | 69 6e 64 65 6e 74 5b 73 | body "$|indent[s|
|000040c0| 68 69 66 74 54 65 78 74 | 52 69 67 68 74 20 24 74 |hiftText|Right $t|
|000040d0| 65 78 74 20 5c 74 5d 22 | 0d 09 09 7d 0d 09 09 61 |ext \t]"|...}...a|
|000040e0| 70 70 65 6e 64 20 62 6f | 64 79 20 5b 73 68 69 66 |ppend bo|dy [shif|
|000040f0| 74 54 65 78 74 52 69 67 | 68 74 20 24 65 6e 76 42 |tTextRig|ht $envB|
|00004100| 6f 64 79 20 24 69 6e 64 | 65 6e 74 5d 0d 09 09 73 |ody $ind|ent]...s|
|00004110| 65 74 20 65 6e 76 69 72 | 6f 6e 6d 65 6e 74 20 5b |et envir|onment [|
|00004120| 62 75 69 6c 64 45 6e 76 | 69 72 6f 6e 6d 65 6e 74 |buildEnv|ironment|
|00004130| 20 24 65 6e 76 4e 61 6d | 65 20 24 65 6e 76 41 72 | $envNam|e $envAr|
|00004140| 67 20 24 62 6f 64 79 20 | 22 a5 22 5d 0d 09 09 73 |g $body |"."]...s|
|00004150| 65 74 20 72 65 74 75 72 | 6e 46 6c 61 67 20 31 0d |et retur|nFlag 1.|
|00004160| 09 7d 20 65 6c 73 65 20 | 7b 0d 09 09 61 70 70 65 |.} else |{...appe|
|00004170| 6e 64 20 62 6f 64 79 20 | 22 24 69 6e 64 65 6e 74 |nd body |"$indent|
|00004180| 5c 74 a5 5c 72 22 20 5b | 73 68 69 66 74 54 65 78 |\t.\r" [|shiftTex|
|00004190| 74 52 69 67 68 74 20 24 | 65 6e 76 42 6f 64 79 20 |tRight $|envBody |
|000041a0| 24 69 6e 64 65 6e 74 5d | 0d 09 09 73 65 74 20 65 |$indent]|...set e|
|000041b0| 6e 76 69 72 6f 6e 6d 65 | 6e 74 20 5b 62 75 69 6c |nvironme|nt [buil|
|000041c0| 64 45 6e 76 69 72 6f 6e | 6d 65 6e 74 20 24 65 6e |dEnviron|ment $en|
|000041d0| 76 4e 61 6d 65 20 24 65 | 6e 76 41 72 67 20 24 62 |vName $e|nvArg $b|
|000041e0| 6f 64 79 20 22 a5 22 5d | 0d 09 09 73 65 74 20 72 |ody "."]|...set r|
|000041f0| 65 74 75 72 6e 46 6c 61 | 67 20 30 0d 09 7d 0d 09 |eturnFla|g 0..}..|
|00004200| 72 65 70 6c 61 63 65 54 | 65 78 74 20 24 73 74 61 |replaceT|ext $sta|
|00004210| 72 74 20 24 65 6e 64 20 | 24 65 6e 76 69 72 6f 6e |rt $end |$environ|
|00004220| 6d 65 6e 74 0d 09 67 6f | 74 6f 20 24 73 74 61 72 |ment..go|to $star|
|00004230| 74 0d 09 72 65 74 75 72 | 6e 20 24 72 65 74 75 72 |t..retur|n $retur|
|00004240| 6e 46 6c 61 67 0d 7d 0d | 0d 23 20 41 20 67 65 6e |nFlag.}.|.# A gen|
|00004250| 65 72 69 63 20 63 61 6c | 6c 20 74 6f 20 27 77 72 |eric cal|l to 'wr|
|00004260| 61 70 45 6e 76 69 72 6f | 6e 6d 65 6e 74 27 20 75 |apEnviro|nment' u|
|00004270| 73 65 64 20 74 68 72 6f | 75 67 68 6f 75 74 20 6c |sed thro|ughout l|
|00004280| 61 74 65 78 2e 74 63 6c | 3a 0d 70 72 6f 63 20 64 |atex.tcl|:.proc d|
|00004290| 6f 57 72 61 70 45 6e 76 | 69 72 6f 6e 6d 65 6e 74 |oWrapEnv|ironment|
|000042a0| 20 7b 65 6e 76 4e 61 6d | 65 7d 20 7b 0d 09 69 66 | {envNam|e} {..if|
|000042b0| 20 7b 5b 77 72 61 70 45 | 6e 76 69 72 6f 6e 6d 65 | {[wrapE|nvironme|
|000042c0| 6e 74 20 24 65 6e 76 4e | 61 6d 65 20 22 22 20 22 |nt $envN|ame "" "|
|000042d0| 22 5d 7d 20 74 68 65 6e | 20 7b 0d 09 09 73 65 74 |"]} then| {...set|
|000042e0| 20 6d 73 67 54 65 78 74 | 20 22 73 65 6c 65 63 74 | msgText| "select|
|000042f0| 69 6f 6e 20 77 72 61 70 | 70 65 64 22 0d 09 7d 20 |ion wrap|ped"..} |
|00004300| 65 6c 73 65 20 7b 0d 09 | 09 73 65 74 20 6d 73 67 |else {..|.set msg|
|00004310| 54 65 78 74 20 22 65 6e | 74 65 72 20 62 6f 64 79 |Text "en|ter body|
|00004320| 20 6f 66 20 24 65 6e 76 | 4e 61 6d 65 20 65 6e 76 | of $env|Name env|
|00004330| 69 72 6f 6e 6d 65 6e 74 | 22 0d 09 7d 0d 09 6e 65 |ironment|"..}..ne|
|00004340| 78 74 54 61 62 53 74 6f | 70 0d 09 6d 65 73 73 61 |xtTabSto|p..messa|
|00004350| 67 65 20 24 6d 73 67 54 | 65 78 74 0d 7d 0d 0d 23 |ge $msgT|ext.}..#|
|00004360| 20 49 6e 73 65 72 74 73 | 20 61 20 73 74 72 75 63 | Inserts| a struc|
|00004370| 74 75 72 65 64 20 64 6f | 63 75 6d 65 6e 74 20 74 |tured do|cument t|
|00004380| 65 6d 70 6c 61 74 65 20 | 61 74 20 74 68 65 20 69 |emplate |at the i|
|00004390| 6e 73 65 72 74 69 6f 6e | 20 70 6f 69 6e 74 2e 20 |nsertion| point. |
|000043a0| 20 0d 23 20 54 68 72 65 | 65 20 61 72 67 75 6d 65 | .# Thre|e argume|
|000043b0| 6e 74 73 20 61 72 65 20 | 72 65 71 75 69 72 65 64 |nts are |required|
|000043c0| 3a 20 20 74 68 65 20 63 | 6c 61 73 73 20 6e 61 6d |: the c|lass nam|
|000043d0| 65 20 6f 66 20 74 68 65 | 20 64 6f 63 75 6d 65 6e |e of the| documen|
|000043e0| 74 2c 20 61 20 0d 23 20 | 70 72 65 61 6d 62 6c 65 |t, a .# |preamble|
|000043f0| 20 73 74 72 69 6e 67 2c | 20 61 6e 64 20 61 20 73 | string,| and a s|
|00004400| 74 72 69 6e 67 20 63 6f | 6e 74 61 69 6e 69 6e 67 |tring co|ntaining|
|00004410| 20 74 68 65 20 62 6f 64 | 79 20 6f 66 20 74 68 65 | the bod|y of the|
|00004420| 20 64 6f 63 75 6d 65 6e | 74 2e 20 20 0d 23 20 49 | documen|t. .# I|
|00004430| 66 20 74 68 65 20 70 72 | 65 61 6d 62 6c 65 20 69 |f the pr|eamble i|
|00004440| 73 20 6e 75 6c 6c 2c 20 | 61 20 67 65 6e 65 72 69 |s null, |a generi|
|00004450| 63 20 5c 75 73 65 70 61 | 63 6b 61 67 65 20 73 74 |c \usepa|ckage st|
|00004460| 61 74 65 6d 65 6e 74 20 | 69 73 20 0d 23 20 69 6e |atement |is .# in|
|00004470| 73 65 72 74 65 64 3b 20 | 6f 74 68 65 72 77 69 73 |serted; |otherwis|
|00004480| 65 2c 20 74 68 65 20 70 | 72 65 61 6d 62 6c 65 20 |e, the p|reamble |
|00004490| 69 73 20 69 6e 73 65 72 | 74 65 64 20 61 73 20 69 |is inser|ted as i|
|000044a0| 73 2e 20 20 54 68 69 73 | 20 72 6f 75 74 69 6e 65 |s. This| routine|
|000044b0| 20 0d 23 20 64 6f 65 73 | 20 61 62 73 6f 6c 75 74 | .# does| absolut|
|000044c0| 65 6c 79 20 6e 6f 20 65 | 72 72 6f 72 2d 63 68 65 |ely no e|rror-che|
|000044d0| 63 6b 69 6e 67 20 28 74 | 68 69 73 20 69 73 20 74 |cking (t|his is t|
|000044e0| 6f 74 61 6c 6c 79 20 6c | 65 66 74 20 75 70 20 74 |otally l|eft up t|
|000044f0| 6f 20 74 68 65 20 0d 23 | 20 63 61 6c 6c 69 6e 67 |o the .#| calling|
|00004500| 20 70 72 6f 63 65 64 75 | 72 65 29 20 61 6e 64 20 | procedu|re) and |
|00004510| 72 65 74 75 72 6e 73 20 | 6e 6f 74 68 69 6e 67 2e |returns |nothing.|
|00004520| 0d 70 72 6f 63 20 69 6e | 73 65 72 74 44 6f 63 75 |.proc in|sertDocu|
|00004530| 6d 65 6e 74 20 7b 63 6c | 61 73 73 4e 61 6d 65 20 |ment {cl|assName |
|00004540| 70 72 65 61 6d 62 6c 65 | 20 64 6f 63 42 6f 64 79 |preamble| docBody|
|00004550| 7d 20 7b 0d 09 73 65 74 | 20 64 6f 63 53 74 72 20 |} {..set| docStr |
|00004560| 22 5c 5c 64 6f 63 75 6d | 65 6e 74 63 6c 61 73 73 |"\\docum|entclass|
|00004570| 5c 5b a5 5c 5d 7b 24 63 | 6c 61 73 73 4e 61 6d 65 |\[.\]{$c|lassName|
|00004580| 7d 5c 72 22 0d 09 69 66 | 20 7b 24 70 72 65 61 6d |}\r"..if| {$pream|
|00004590| 62 6c 65 20 3d 3d 20 22 | 22 7d 20 74 68 65 6e 20 |ble == "|"} then |
|000045a0| 7b 0d 09 09 61 70 70 65 | 6e 64 20 64 6f 63 53 74 |{...appe|nd docSt|
|000045b0| 72 20 22 5c 5c 75 73 65 | 70 61 63 6b 61 67 65 5c |r "\\use|package\|
|000045c0| 5b a5 5c 5d 7b a5 7d 5c | 72 5c 72 a5 5c 72 5c 72 |[.\]{.}\|r\r.\r\r|
|000045d0| 22 0d 09 7d 20 65 6c 73 | 65 20 7b 0d 09 09 61 70 |"..} els|e {...ap|
|000045e0| 70 65 6e 64 20 64 6f 63 | 53 74 72 20 24 70 72 65 |pend doc|Str $pre|
|000045f0| 61 6d 62 6c 65 0d 09 7d | 0d 09 61 70 70 65 6e 64 |amble..}|..append|
|00004600| 20 64 6f 63 53 74 72 20 | 5b 62 75 69 6c 64 45 6e | docStr |[buildEn|
|00004610| 76 69 72 6f 6e 6d 65 6e | 74 20 22 64 6f 63 75 6d |vironmen|t "docum|
|00004620| 65 6e 74 22 20 22 22 20 | 24 64 6f 63 42 6f 64 79 |ent" "" |$docBody|
|00004630| 20 22 5c 72 22 5d 0d 09 | 73 65 74 20 73 74 61 72 | "\r"]..|set star|
|00004640| 74 20 5b 67 65 74 50 6f | 73 5d 0d 09 73 65 74 20 |t [getPo|s]..set |
|00004650| 65 6e 64 20 5b 73 65 6c | 45 6e 64 5d 0d 09 72 65 |end [sel|End]..re|
|00004660| 70 6c 61 63 65 54 65 78 | 74 20 24 73 74 61 72 74 |placeTex|t $start|
|00004670| 20 24 65 6e 64 20 24 64 | 6f 63 53 74 72 0d 09 67 | $end $d|ocStr..g|
|00004680| 6f 74 6f 20 24 73 74 61 | 72 74 0d 09 72 65 74 75 |oto $sta|rt..retu|
|00004690| 72 6e 0d 7d 0d 0d 23 20 | 49 6e 73 65 72 74 73 20 |rn.}..# |Inserts |
|000046a0| 61 20 64 6f 63 75 6d 65 | 6e 74 20 74 65 6d 70 6c |a docume|nt templ|
|000046b0| 61 74 65 20 61 74 20 74 | 68 65 20 69 6e 73 65 72 |ate at t|he inser|
|000046c0| 74 69 6f 6e 20 70 6f 69 | 6e 74 20 67 69 76 65 6e |tion poi|nt given|
|000046d0| 20 74 68 65 20 0d 23 20 | 63 6c 61 73 73 20 6e 61 | the .# |class na|
|000046e0| 6d 65 20 6f 66 20 74 68 | 65 20 64 6f 63 75 6d 65 |me of th|e docume|
|000046f0| 6e 74 20 74 6f 20 62 65 | 20 69 6e 73 65 72 74 65 |nt to be| inserte|
|00004700| 64 2e 20 20 49 66 20 41 | 4c 4c 20 6f 66 20 74 68 |d. If A|LL of th|
|00004710| 65 20 63 75 72 72 65 6e | 74 0d 23 20 64 6f 63 75 |e curren|t.# docu|
|00004720| 6d 65 6e 74 20 69 73 20 | 73 65 6c 65 63 74 65 64 |ment is |selected|
|00004730| 2c 20 74 68 65 6e 20 74 | 68 65 20 72 6f 75 74 69 |, then t|he routi|
|00004740| 6e 65 20 77 72 61 70 73 | 20 74 68 65 20 74 65 78 |ne wraps| the tex|
|00004750| 74 20 69 6e 73 69 64 65 | 20 61 0d 23 20 67 65 6e |t inside| a.# gen|
|00004760| 65 72 69 63 20 64 6f 63 | 75 6d 65 6e 74 20 74 65 |eric doc|ument te|
|00004770| 6d 70 6c 61 74 65 2e 20 | 20 49 66 20 74 68 65 20 |mplate. | If the |
|00004780| 66 69 6c 65 20 69 73 20 | 65 6d 70 74 79 2c 20 61 |file is |empty, a|
|00004790| 20 62 75 6c 6c 65 74 20 | 69 73 20 0d 23 20 69 6e | bullet |is .# in|
|000047a0| 73 65 72 74 65 64 20 69 | 6e 20 70 6c 61 63 65 20 |serted i|n place |
|000047b0| 6f 66 20 74 68 65 20 64 | 6f 63 75 6d 65 6e 74 20 |of the d|ocument |
|000047c0| 62 6f 64 79 2e 20 20 49 | 66 20 6e 65 69 74 68 65 |body. I|f neithe|
|000047d0| 72 20 6f 66 20 74 68 65 | 73 65 20 0d 23 20 63 6f |r of the|se .# co|
|000047e0| 6e 64 69 74 69 6f 6e 73 | 20 69 73 20 74 72 75 65 |nditions| is true|
|000047f0| 2c 20 61 6e 20 61 6c 65 | 72 74 20 69 73 20 64 69 |, an ale|rt is di|
|00004800| 73 70 6c 61 79 65 64 2c | 20 61 6e 64 20 6e 6f 20 |splayed,| and no |
|00004810| 61 63 74 69 6f 6e 20 69 | 73 20 74 61 6b 65 6e 2e |action i|s taken.|
|00004820| 20 20 0d 23 20 52 65 74 | 75 72 6e 73 20 74 72 75 | .# Ret|urns tru|
|00004830| 65 20 69 66 20 77 72 61 | 70 70 69 6e 67 20 6f 63 |e if wra|pping oc|
|00004840| 63 75 72 73 2c 20 61 6e | 64 20 66 61 6c 73 65 20 |curs, an|d false |
|00004850| 6f 74 68 65 72 77 69 73 | 65 2e 0d 70 72 6f 63 20 |otherwis|e..proc |
|00004860| 77 72 61 70 44 6f 63 75 | 6d 65 6e 74 20 7b 63 6c |wrapDocu|ment {cl|
|00004870| 61 73 73 4e 61 6d 65 7d | 20 7b 0d 09 69 66 20 7b |assName}| {..if {|
|00004880| 5b 69 73 45 6d 70 74 79 | 46 69 6c 65 5d 7d 20 74 |[isEmpty|File]} t|
|00004890| 68 65 6e 20 7b 0d 09 09 | 61 70 70 65 6e 64 20 62 |hen {...|append b|
|000048a0| 6f 64 79 20 22 5c 72 a5 | 5c 72 5c 72 22 0d 09 09 |ody "\r.|\r\r"...|
|000048b0| 73 65 74 20 72 65 74 75 | 72 6e 46 6c 61 67 20 30 |set retu|rnFlag 0|
|000048c0| 0d 09 7d 20 65 6c 73 65 | 20 7b 0d 09 09 69 66 20 |..} else| {...if |
|000048d0| 7b 5b 69 73 44 6f 63 75 | 6d 65 6e 74 53 65 6c 65 |{[isDocu|mentSele|
|000048e0| 63 74 65 64 5d 7d 20 74 | 68 65 6e 20 7b 0d 09 09 |cted]} t|hen {...|
|000048f0| 09 73 65 74 20 74 65 78 | 74 20 5b 67 65 74 53 65 |.set tex|t [getSe|
|00004900| 6c 65 63 74 5d 0d 09 09 | 09 61 70 70 65 6e 64 20 |lect]...|.append |
|00004910| 62 6f 64 79 20 22 5c 72 | 24 74 65 78 74 5c 72 22 |body "\r|$text\r"|
|00004920| 0d 09 09 09 73 65 74 20 | 72 65 74 75 72 6e 46 6c |....set |returnFl|
|00004930| 61 67 20 31 0d 09 09 7d | 20 65 6c 73 65 20 7b 0d |ag 1...}| else {.|
|00004940| 09 09 09 61 6c 65 72 74 | 6e 6f 74 65 20 22 6e 6f |...alert|note "no|
|00004950| 6e 65 6d 70 74 79 20 66 | 69 6c 65 3a 20 20 64 65 |nempty f|ile: de|
|00004960| 6c 65 74 65 20 74 65 78 | 74 20 6f 72 20 5c 27 53 |lete tex|t or \'S|
|00004970| 65 6c 65 63 74 20 41 6c | 6c 5c 27 5c 0d 09 09 09 |elect Al|l\'\....|
|00004980| 09 66 72 6f 6d 20 74 68 | 65 20 45 64 69 74 20 6d |.from th|e Edit m|
|00004990| 65 6e 75 22 0d 09 09 09 | 72 65 74 75 72 6e 20 30 |enu"....|return 0|
|000049a0| 0d 09 09 7d 0d 09 7d 0d | 09 73 65 74 20 64 6f 63 |...}..}.|.set doc|
|000049b0| 53 74 72 20 22 5c 5c 64 | 6f 63 75 6d 65 6e 74 63 |Str "\\d|ocumentc|
|000049c0| 6c 61 73 73 5c 5b a5 5c | 5d 7b 24 63 6c 61 73 73 |lass\[.\|]{$class|
|000049d0| 4e 61 6d 65 7d 5c 72 22 | 0d 09 61 70 70 65 6e 64 |Name}\r"|..append|
|000049e0| 20 64 6f 63 53 74 72 20 | 22 5c 5c 75 73 65 70 61 | docStr |"\\usepa|
|000049f0| 63 6b 61 67 65 5c 5b a5 | 5c 5d 7b a5 7d 5c 72 5c |ckage\[.|\]{.}\r\|
|00004a00| 72 a5 5c 72 5c 72 22 0d | 09 61 70 70 65 6e 64 20 |r.\r\r".|.append |
|00004a10| 64 6f 63 53 74 72 20 5b | 62 75 69 6c 64 45 6e 76 |docStr [|buildEnv|
|00004a20| 69 72 6f 6e 6d 65 6e 74 | 20 22 64 6f 63 75 6d 65 |ironment| "docume|
|00004a30| 6e 74 22 20 22 22 20 24 | 62 6f 64 79 20 22 5c 72 |nt" "" $|body "\r|
|00004a40| 22 5d 0d 09 73 65 74 20 | 73 74 61 72 74 20 5b 67 |"]..set |start [g|
|00004a50| 65 74 50 6f 73 5d 0d 09 | 73 65 74 20 65 6e 64 20 |etPos]..|set end |
|00004a60| 5b 73 65 6c 45 6e 64 5d | 0d 09 72 65 70 6c 61 63 |[selEnd]|..replac|
|00004a70| 65 54 65 78 74 20 24 73 | 74 61 72 74 20 24 65 6e |eText $s|tart $en|
|00004a80| 64 20 24 64 6f 63 53 74 | 72 0d 09 67 6f 74 6f 20 |d $docSt|r..goto |
|00004a90| 24 73 74 61 72 74 0d 09 | 6e 65 78 74 54 61 62 53 |$start..|nextTabS|
|00004aa0| 74 6f 70 0d 09 6d 65 73 | 73 61 67 65 20 22 65 6e |top..mes|sage "en|
|00004ab0| 74 65 72 20 73 74 79 6c | 65 20 28 6f 72 20 6c 65 |ter styl|e (or le|
|00004ac0| 61 76 65 20 62 6c 61 6e | 6b 29 22 0d 09 72 65 74 |ave blan|k)"..ret|
|00004ad0| 75 72 6e 20 24 72 65 74 | 75 72 6e 46 6c 61 67 0d |urn $ret|urnFlag.|
|00004ae0| 7d 0d 0d 23 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |}..#----|--------|
|00004af0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004b00| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004b10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004b20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 23 |--------|------.#|
|00004b30| 20 42 6f 6f 6c 65 61 6e | 73 20 74 6f 20 64 65 74 | Boolean|s to det|
|00004b40| 65 72 6d 69 6e 65 20 74 | 68 65 20 6c 6f 63 61 74 |ermine t|he locat|
|00004b50| 69 6f 6e 20 6f 66 20 74 | 68 65 20 69 6e 73 65 72 |ion of t|he inser|
|00004b60| 74 69 6f 6e 20 70 6f 69 | 6e 74 0d 23 2d 2d 2d 2d |tion poi|nt.#----|
|00004b70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004b80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004b90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004ba0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00004bb0| 2d 2d 2d 2d 2d 2d 0d 0d | 23 20 52 65 74 75 72 6e |------..|# Return|
|00004bc0| 20 74 72 75 65 20 69 66 | 20 74 68 65 20 69 6e 73 | true if| the ins|
|00004bd0| 65 72 74 69 6f 6e 20 70 | 6f 69 6e 74 20 69 73 20 |ertion p|oint is |
|00004be0| 62 65 66 6f 72 65 20 74 | 68 65 20 70 72 65 61 6d |before t|he pream|
|00004bf0| 62 6c 65 2c 20 61 6e 64 | 20 0d 23 20 66 61 6c 73 |ble, and| .# fals|
|00004c00| 65 20 6f 74 68 65 72 77 | 69 73 65 2e 20 20 20 44 |e otherw|ise. D|
|00004c10| 65 66 69 6e 65 20 22 62 | 65 66 6f 72 65 20 74 68 |efine "b|efore th|
|00004c20| 65 20 70 72 65 61 6d 62 | 6c 65 22 20 74 6f 20 62 |e preamb|le" to b|
|00004c30| 65 20 61 6c 6c 20 74 65 | 78 74 20 74 6f 20 0d 23 |e all te|xt to .#|
|00004c40| 20 74 68 65 20 6c 65 66 | 74 20 6f 66 20 22 5c 22 | the lef|t of "\"|
|00004c50| 20 69 6e 20 22 5c 64 6f | 63 75 6d 65 6e 74 63 6c | in "\do|cumentcl|
|00004c60| 61 73 73 22 2e 0d 70 72 | 6f 63 20 69 73 42 65 66 |ass"..pr|oc isBef|
|00004c70| 6f 72 65 50 72 65 61 6d | 62 6c 65 20 7b 7d 20 7b |orePream|ble {} {|
|00004c80| 0d 09 73 65 74 20 73 65 | 61 72 63 68 53 74 72 69 |..set se|archStri|
|00004c90| 6e 67 20 22 5c 5c 64 6f | 63 75 6d 65 6e 74 63 6c |ng "\\do|cumentcl|
|00004ca0| 61 73 73 22 0d 09 73 65 | 74 20 73 65 61 72 63 68 |ass"..se|t search|
|00004cb0| 52 65 73 75 6c 74 20 5b | 73 65 61 72 63 68 20 2d |Result [|search -|
|00004cc0| 73 20 2d 66 20 31 20 2d | 72 20 30 20 2d 6e 20 24 |s -f 1 -|r 0 -n $|
|00004cd0| 73 65 61 72 63 68 53 74 | 72 69 6e 67 20 5b 67 65 |searchSt|ring [ge|
|00004ce0| 74 50 6f 73 5d 5d 0d 09 | 69 66 20 7b 5b 6c 6c 65 |tPos]]..|if {[lle|
|00004cf0| 6e 67 74 68 20 24 73 65 | 61 72 63 68 52 65 73 75 |ngth $se|archResu|
|00004d00| 6c 74 5d 7d 20 7b 0d 09 | 09 72 65 74 75 72 6e 20 |lt]} {..|.return |
|00004d10| 31 0d 09 7d 20 65 6c 73 | 65 20 7b 0d 09 09 72 65 |1..} els|e {...re|
|00004d20| 74 75 72 6e 20 30 0d 09 | 7d 0d 7d 0d 0d 23 20 52 |turn 0..|}.}..# R|
|00004d30| 65 74 75 72 6e 20 74 72 | 75 65 20 69 66 20 74 68 |eturn tr|ue if th|
|00004d40| 65 20 69 6e 73 65 72 74 | 69 6f 6e 20 70 6f 69 6e |e insert|ion poin|
|00004d50| 74 20 69 73 20 69 6e 20 | 74 68 65 20 70 72 65 61 |t is in |the prea|
|00004d60| 6d 62 6c 65 2c 20 61 6e | 64 20 66 61 6c 73 65 0d |mble, an|d false.|
|00004d70| 23 20 6f 74 68 65 72 77 | 69 73 65 2e 20 20 44 65 |# otherw|ise. De|
|00004d80| 66 69 6e 65 20 22 70 72 | 65 61 6d 62 6c 65 22 20 |fine "pr|eamble" |
|00004d90| 74 6f 20 62 65 20 61 6c | 6c 20 74 65 78 74 20 74 |to be al|l text t|
|00004da0| 6f 20 74 68 65 20 6c 65 | 66 74 20 6f 66 20 22 5c |o the le|ft of "\|
|00004db0| 22 20 0d 23 20 69 6e 20 | 22 5c 62 65 67 69 6e 7b |" .# in |"\begin{|
|00004dc0| 64 6f 63 75 6d 65 6e 74 | 7d 22 2c 20 62 75 74 20 |document|}", but |
|00004dd0| 6e 6f 74 20 62 65 66 6f | 72 65 20 74 68 65 20 22 |not befo|re the "|
|00004de0| 5c 22 20 69 6e 20 22 5c | 64 6f 63 75 6d 65 6e 74 |\" in "\|document|
|00004df0| 63 6c 61 73 73 22 2e 0d | 70 72 6f 63 20 69 73 49 |class"..|proc isI|
|00004e00| 6e 50 72 65 61 6d 62 6c | 65 20 7b 7d 20 7b 0d 09 |nPreambl|e {} {..|
|00004e10| 73 65 74 20 73 65 61 72 | 63 68 53 74 72 69 6e 67 |set sear|chString|
|00004e20| 20 22 5c 5c 62 65 67 69 | 6e 5c 7b 64 6f 63 75 6d | "\\begi|n\{docum|
|00004e30| 65 6e 74 5c 7d 22 0d 09 | 73 65 74 20 73 65 61 72 |ent\}"..|set sear|
|00004e40| 63 68 52 65 73 75 6c 74 | 20 5b 73 65 61 72 63 68 |chResult| [search|
|00004e50| 20 2d 73 20 2d 66 20 31 | 20 2d 72 20 30 20 2d 6e | -s -f 1| -r 0 -n|
|00004e60| 20 24 73 65 61 72 63 68 | 53 74 72 69 6e 67 20 5b | $search|String [|
|00004e70| 67 65 74 50 6f 73 5d 5d | 0d 09 69 66 20 7b 5b 6c |getPos]]|..if {[l|
|00004e80| 6c 65 6e 67 74 68 20 24 | 73 65 61 72 63 68 52 65 |length $|searchRe|
|00004e90| 73 75 6c 74 5d 7d 20 7b | 0d 09 09 72 65 74 75 72 |sult]} {|...retur|
|00004ea0| 6e 20 31 0d 09 7d 20 65 | 6c 73 65 20 7b 0d 09 09 |n 1..} e|lse {...|
|00004eb0| 72 65 74 75 72 6e 20 30 | 0d 09 7d 0d 7d 0d 0d 23 |return 0|..}.}..#|
|00004ec0| 20 52 65 74 75 72 6e 20 | 74 72 75 65 20 69 66 20 | Return |true if |
|00004ed0| 74 68 65 20 69 6e 73 65 | 72 74 69 6f 6e 20 70 6f |the inse|rtion po|
|00004ee0| 69 6e 74 20 69 73 20 69 | 6e 20 74 68 65 20 64 6f |int is i|n the do|
|00004ef0| 63 75 6d 65 6e 74 20 65 | 6e 76 69 72 6f 6e 6d 65 |cument e|nvironme|
|00004f00| 6e 74 2c 0d 23 20 61 6e | 64 20 66 61 6c 73 65 20 |nt,.# an|d false |
|00004f10| 6f 74 68 65 72 77 69 73 | 65 2e 20 20 44 65 66 69 |otherwis|e. Defi|
|00004f20| 6e 65 20 22 64 6f 63 75 | 6d 65 6e 74 22 20 74 6f |ne "docu|ment" to|
|00004f30| 20 62 65 20 61 6c 6c 20 | 74 65 78 74 20 62 65 74 | be all |text bet|
|00004f40| 77 65 65 6e 20 0d 23 20 | 22 5c 62 65 67 69 6e 7b |ween .# |"\begin{|
|00004f50| 64 6f 63 75 6d 65 6e 74 | 7d 22 20 61 6e 64 20 22 |document|}" and "|
|00004f60| 5c 65 6e 64 7b 64 6f 63 | 75 6d 65 6e 74 7d 22 2c |\end{doc|ument}",|
|00004f70| 20 69 6e 63 6c 75 73 69 | 76 65 2e 0d 70 72 6f 63 | inclusi|ve..proc|
|00004f80| 20 69 73 49 6e 44 6f 63 | 75 6d 65 6e 74 20 7b 7d | isInDoc|ument {}|
|00004f90| 20 7b 0d 09 73 65 74 20 | 70 6f 73 20 5b 67 65 74 | {..set |pos [get|
|00004fa0| 50 6f 73 5d 0d 09 69 66 | 20 7b 24 70 6f 73 20 3d |Pos]..if| {$pos =|
|00004fb0| 3d 20 30 7d 20 74 68 65 | 6e 20 7b 72 65 74 75 72 |= 0} the|n {retur|
|00004fc0| 6e 20 30 7d 0d 09 73 65 | 74 20 73 65 61 72 63 68 |n 0}..se|t search|
|00004fd0| 53 74 72 69 6e 67 20 22 | 5c 5c 62 65 67 69 6e 5c |String "|\\begin\|
|00004fe0| 7b 64 6f 63 75 6d 65 6e | 74 5c 7d 22 0d 09 73 65 |{documen|t\}"..se|
|00004ff0| 74 20 73 65 61 72 63 68 | 52 65 73 75 6c 74 20 5b |t search|Result [|
|00005000| 73 65 61 72 63 68 20 2d | 73 20 2d 66 20 30 20 2d |search -|s -f 0 -|
|00005010| 72 20 30 20 2d 6e 20 24 | 73 65 61 72 63 68 53 74 |r 0 -n $|searchSt|
|00005020| 72 69 6e 67 20 5b 65 78 | 70 72 20 24 70 6f 73 20 |ring [ex|pr $pos |
|00005030| 2d 20 31 5d 5d 0d 09 69 | 66 20 7b 5b 6c 6c 65 6e |- 1]]..i|f {[llen|
|00005040| 67 74 68 20 24 73 65 61 | 72 63 68 52 65 73 75 6c |gth $sea|rchResul|
|00005050| 74 5d 7d 20 74 68 65 6e | 20 7b 0d 09 09 73 65 74 |t]} then| {...set|
|00005060| 20 73 65 61 72 63 68 53 | 74 72 69 6e 67 20 22 5c | searchS|tring "\|
|00005070| 5c 65 6e 64 5c 7b 64 6f | 63 75 6d 65 6e 74 5c 7d |\end\{do|cument\}|
|00005080| 22 0d 09 09 23 20 61 64 | 6a 75 73 74 20 66 6f 72 |"...# ad|just for|
|00005090| 20 74 68 65 20 6c 65 6e | 67 74 68 20 6f 66 20 74 | the len|gth of t|
|000050a0| 68 65 20 73 65 61 72 63 | 68 20 73 74 72 69 6e 67 |he searc|h string|
|000050b0| 3a 0d 09 09 73 65 74 20 | 6c 65 6e 20 5b 73 74 72 |:...set |len [str|
|000050c0| 69 6e 67 20 6c 65 6e 67 | 74 68 20 24 73 65 61 72 |ing leng|th $sear|
|000050d0| 63 68 53 74 72 69 6e 67 | 5d 0d 09 09 73 65 74 20 |chString|]...set |
|000050e0| 73 65 61 72 63 68 52 65 | 73 75 6c 74 20 5b 73 65 |searchRe|sult [se|
|000050f0| 61 72 63 68 20 2d 73 20 | 2d 66 20 31 20 2d 72 20 |arch -s |-f 1 -r |
|00005100| 30 20 2d 6e 20 24 73 65 | 61 72 63 68 53 74 72 69 |0 -n $se|archStri|
|00005110| 6e 67 20 5b 65 78 70 72 | 20 24 70 6f 73 20 2d 20 |ng [expr| $pos - |
|00005120| 24 6c 65 6e 20 2b 20 31 | 5d 5d 0d 09 09 69 66 20 |$len + 1|]]...if |
|00005130| 7b 5b 6c 6c 65 6e 67 74 | 68 20 24 73 65 61 72 63 |{[llengt|h $searc|
|00005140| 68 52 65 73 75 6c 74 5d | 7d 20 74 68 65 6e 20 7b |hResult]|} then {|
|00005150| 0d 09 09 09 72 65 74 75 | 72 6e 20 31 0d 09 09 7d |....retu|rn 1...}|
|00005160| 20 65 6c 73 65 20 7b 0d | 09 09 09 72 65 74 75 72 | else {.|...retur|
|00005170| 6e 20 30 0d 09 09 7d 0d | 09 7d 20 65 6c 73 65 20 |n 0...}.|.} else |
|00005180| 7b 0d 09 09 72 65 74 75 | 72 6e 20 30 0d 09 7d 0d |{...retu|rn 0..}.|
|00005190| 7d 0d 0d 23 20 52 65 74 | 75 72 6e 20 74 72 75 65 |}..# Ret|urn true|
|000051a0| 20 69 66 20 74 68 65 20 | 69 6e 73 65 72 74 69 6f | if the |insertio|
|000051b0| 6e 20 70 6f 69 6e 74 20 | 69 73 20 61 66 74 65 72 |n point |is after|
|000051c0| 20 74 68 65 20 64 6f 63 | 75 6d 65 6e 74 0d 23 20 | the doc|ument.# |
|000051d0| 65 6e 76 69 72 6f 6e 6d | 65 6e 74 2c 20 61 6e 64 |environm|ent, and|
|000051e0| 20 66 61 6c 73 65 20 6f | 74 68 65 72 77 69 73 65 | false o|therwise|
|000051f0| 2e 20 20 44 65 66 69 6e | 65 20 22 61 66 74 65 72 |. Defin|e "after|
|00005200| 20 74 68 65 20 64 6f 63 | 75 6d 65 6e 74 20 0d 23 | the doc|ument .#|
|00005210| 20 65 6e 76 69 72 6f 6e | 6d 65 6e 74 22 20 74 6f | environ|ment" to|
|00005220| 20 62 65 20 61 6c 6c 20 | 74 65 78 74 20 74 6f 20 | be all |text to |
|00005230| 74 68 65 20 72 69 67 68 | 74 20 6f 66 20 22 7d 22 |the righ|t of "}"|
|00005240| 20 69 6e 20 22 5c 65 6e | 64 7b 64 6f 63 75 6d 65 | in "\en|d{docume|
|00005250| 6e 74 7d 22 2e 0d 70 72 | 6f 63 20 69 73 41 66 74 |nt}"..pr|oc isAft|
|00005260| 65 72 44 6f 63 75 6d 65 | 6e 74 20 7b 7d 20 7b 0d |erDocume|nt {} {.|
|00005270| 09 73 65 74 20 70 6f 73 | 20 5b 67 65 74 50 6f 73 |.set pos| [getPos|
|00005280| 5d 0d 09 73 65 74 20 73 | 65 61 72 63 68 53 74 72 |]..set s|earchStr|
|00005290| 69 6e 67 20 22 5c 5c 65 | 6e 64 5c 7b 64 6f 63 75 |ing "\\e|nd\{docu|
|000052a0| 6d 65 6e 74 5c 7d 22 0d | 09 73 65 74 20 73 65 61 |ment\}".|.set sea|
|000052b0| 72 63 68 52 65 73 75 6c | 74 20 5b 73 65 61 72 63 |rchResul|t [searc|
|000052c0| 68 20 2d 73 20 2d 66 20 | 30 20 2d 72 20 30 20 2d |h -s -f |0 -r 0 -|
|000052d0| 6e 20 24 73 65 61 72 63 | 68 53 74 72 69 6e 67 20 |n $searc|hString |
|000052e0| 24 70 6f 73 5d 0d 09 69 | 66 20 7b 5b 6c 6c 65 6e |$pos]..i|f {[llen|
|000052f0| 67 74 68 20 24 73 65 61 | 72 63 68 52 65 73 75 6c |gth $sea|rchResul|
|00005300| 74 5d 7d 20 7b 0d 09 09 | 73 65 74 20 70 6f 73 31 |t]} {...|set pos1|
|00005310| 20 5b 6c 69 6e 64 65 78 | 20 24 73 65 61 72 63 68 | [lindex| $search|
|00005320| 52 65 73 75 6c 74 20 30 | 5d 0d 09 09 73 65 74 20 |Result 0|]...set |
|00005330| 70 6f 73 32 20 5b 6c 69 | 6e 64 65 78 20 24 73 65 |pos2 [li|ndex $se|
|00005340| 61 72 63 68 52 65 73 75 | 6c 74 20 31 5d 0d 09 09 |archResu|lt 1]...|
|00005350| 69 66 20 7b 24 70 6f 73 | 31 20 3c 3d 20 24 70 6f |if {$pos|1 <= $po|
|00005360| 73 20 26 26 20 24 70 6f | 73 20 3c 20 24 70 6f 73 |s && $po|s < $pos|
|00005370| 32 7d 20 74 68 65 6e 20 | 7b 0d 09 09 09 72 65 74 |2} then |{....ret|
|00005380| 75 72 6e 20 30 0d 09 09 | 7d 20 65 6c 73 65 20 7b |urn 0...|} else {|
|00005390| 0d 09 09 09 72 65 74 75 | 72 6e 20 31 0d 09 09 7d |....retu|rn 1...}|
|000053a0| 0d 09 7d 20 65 6c 73 65 | 20 7b 0d 09 09 72 65 74 |..} else| {...ret|
|000053b0| 75 72 6e 20 30 0d 09 7d | 0d 7d 0d 0d 70 72 6f 63 |urn 0..}|.}..proc|
|000053c0| 20 69 73 49 6e 4d 61 74 | 68 4d 6f 64 65 20 7b 7d | isInMat|hMode {}|
|000053d0| 20 7b 0d 09 73 65 74 20 | 70 6f 73 20 5b 67 65 74 | {..set |pos [get|
|000053e0| 50 6f 73 5d 0d 09 23 20 | 43 68 65 63 6b 20 74 6f |Pos]..# |Check to|
|000053f0| 20 73 65 65 20 69 66 20 | 69 6e 20 4c 61 54 65 58 | see if |in LaTeX|
|00005400| 20 6d 61 74 68 20 6d 6f | 64 65 3a 0d 09 73 65 74 | math mo|de:..set|
|00005410| 20 73 65 61 72 63 68 53 | 74 72 69 6e 67 20 7b 5c | searchS|tring {\|
|00005420| 5c 5b 28 29 5d 7d 0d 09 | 73 65 74 20 73 65 61 72 |\[()]}..|set sear|
|00005430| 63 68 52 65 73 75 6c 74 | 31 20 5b 73 65 61 72 63 |chResult|1 [searc|
|00005440| 68 20 2d 73 20 2d 66 20 | 30 20 2d 72 20 31 20 2d |h -s -f |0 -r 1 -|
|00005450| 6e 20 24 73 65 61 72 63 | 68 53 74 72 69 6e 67 20 |n $searc|hString |
|00005460| 5b 65 78 70 72 20 24 70 | 6f 73 20 2d 20 31 5d 5d |[expr $p|os - 1]]|
|00005470| 0d 09 69 66 20 7b 5b 6c | 6c 65 6e 67 74 68 20 24 |..if {[l|length $|
|00005480| 73 65 61 72 63 68 52 65 | 73 75 6c 74 31 5d 7d 20 |searchRe|sult1]} |
|00005490| 74 68 65 6e 20 7b 0d 09 | 09 73 65 74 20 64 65 6c |then {..|.set del|
|000054a0| 69 6d 31 20 5b 65 76 61 | 6c 20 67 65 74 54 65 78 |im1 [eva|l getTex|
|000054b0| 74 20 24 73 65 61 72 63 | 68 52 65 73 75 6c 74 31 |t $searc|hResult1|
|000054c0| 5d 0d 09 7d 20 65 6c 73 | 65 20 7b 0d 09 09 73 65 |]..} els|e {...se|
|000054d0| 74 20 64 65 6c 69 6d 31 | 20 22 6e 6f 6e 65 22 0d |t delim1| "none".|
|000054e0| 09 7d 0d 09 73 65 74 20 | 73 65 61 72 63 68 52 65 |.}..set |searchRe|
|000054f0| 73 75 6c 74 32 20 5b 73 | 65 61 72 63 68 20 2d 73 |sult2 [s|earch -s|
|00005500| 20 2d 66 20 31 20 2d 72 | 20 31 20 2d 6e 20 24 73 | -f 1 -r| 1 -n $s|
|00005510| 65 61 72 63 68 53 74 72 | 69 6e 67 20 24 70 6f 73 |earchStr|ing $pos|
|00005520| 5d 0d 09 69 66 20 7b 5b | 6c 6c 65 6e 67 74 68 20 |]..if {[|llength |
|00005530| 24 73 65 61 72 63 68 52 | 65 73 75 6c 74 32 5d 7d |$searchR|esult2]}|
|00005540| 20 74 68 65 6e 20 7b 0d | 09 09 73 65 74 20 64 65 | then {.|..set de|
|00005550| 6c 69 6d 32 20 5b 65 76 | 61 6c 20 67 65 74 54 65 |lim2 [ev|al getTe|
|00005560| 78 74 20 24 73 65 61 72 | 63 68 52 65 73 75 6c 74 |xt $sear|chResult|
|00005570| 32 5d 0d 09 7d 20 65 6c | 73 65 20 7b 0d 09 09 73 |2]..} el|se {...s|
|00005580| 65 74 20 64 65 6c 69 6d | 32 20 22 6e 6f 6e 65 22 |et delim|2 "none"|
|00005590| 0d 09 7d 0d 09 73 65 74 | 20 66 6c 61 67 31 20 5b |..}..set| flag1 [|
|000055a0| 65 78 70 72 20 5b 73 74 | 72 69 6e 67 20 6d 61 74 |expr [st|ring mat|
|000055b0| 63 68 20 7b 6e 6f 6e 65 | 7d 20 24 64 65 6c 69 6d |ch {none|} $delim|
|000055c0| 31 5d 20 26 26 20 5b 73 | 74 72 69 6e 67 20 6d 61 |1] && [s|tring ma|
|000055d0| 74 63 68 20 7b 5c 5c 29 | 7d 20 24 64 65 6c 69 6d |tch {\\)|} $delim|
|000055e0| 32 5d 5d 0d 09 73 65 74 | 20 66 6c 61 67 32 20 5b |2]]..set| flag2 [|
|000055f0| 65 78 70 72 20 5b 73 74 | 72 69 6e 67 20 6d 61 74 |expr [st|ring mat|
|00005600| 63 68 20 7b 5c 5c 28 7d | 20 24 64 65 6c 69 6d 31 |ch {\\(}| $delim1|
|00005610| 5d 20 26 26 20 5b 73 74 | 72 69 6e 67 20 6d 61 74 |] && [st|ring mat|
|00005620| 63 68 20 7b 6e 6f 6e 65 | 7d 20 24 64 65 6c 69 6d |ch {none|} $delim|
|00005630| 32 5d 5d 0d 09 73 65 74 | 20 66 6c 61 67 33 20 5b |2]]..set| flag3 [|
|00005640| 65 78 70 72 20 5b 73 74 | 72 69 6e 67 20 6d 61 74 |expr [st|ring mat|
|00005650| 63 68 20 7b 5c 5c 28 7d | 20 24 64 65 6c 69 6d 31 |ch {\\(}| $delim1|
|00005660| 5d 20 26 26 20 5b 73 74 | 72 69 6e 67 20 6d 61 74 |] && [st|ring mat|
|00005670| 63 68 20 7b 5c 5c 29 7d | 20 24 64 65 6c 69 6d 32 |ch {\\)}| $delim2|
|00005680| 5d 5d 0d 09 73 65 74 20 | 66 6c 61 67 34 20 5b 65 |]]..set |flag4 [e|
|00005690| 78 70 72 20 5b 73 74 72 | 69 6e 67 20 6d 61 74 63 |xpr [str|ing matc|
|000056a0| 68 20 7b 5c 5c 28 7d 20 | 24 64 65 6c 69 6d 31 5d |h {\\(} |$delim1]|
|000056b0| 20 26 26 20 5b 73 74 72 | 69 6e 67 20 6d 61 74 63 | && [str|ing matc|
|000056c0| 68 20 7b 5c 5c 28 7d 20 | 24 64 65 6c 69 6d 32 5d |h {\\(} |$delim2]|
|000056d0| 5d 0d 09 73 65 74 20 66 | 6c 61 67 35 20 5b 65 78 |]..set f|lag5 [ex|
|000056e0| 70 72 20 5b 73 74 72 69 | 6e 67 20 6d 61 74 63 68 |pr [stri|ng match|
|000056f0| 20 7b 5c 5c 29 7d 20 24 | 64 65 6c 69 6d 31 5d 20 | {\\)} $|delim1] |
|00005700| 26 26 20 5b 73 74 72 69 | 6e 67 20 6d 61 74 63 68 |&& [stri|ng match|
|00005710| 20 7b 5c 5c 29 7d 20 24 | 64 65 6c 69 6d 32 5d 5d | {\\)} $|delim2]]|
|00005720| 0d 09 69 66 20 7b 24 66 | 6c 61 67 33 7d 20 74 68 |..if {$f|lag3} th|
|00005730| 65 6e 20 7b 0d 09 09 72 | 65 74 75 72 6e 20 31 0d |en {...r|eturn 1.|
|00005740| 09 7d 20 65 6c 73 65 69 | 66 20 7b 24 66 6c 61 67 |.} elsei|f {$flag|
|00005750| 31 20 7c 7c 20 24 66 6c | 61 67 32 20 7c 7c 20 24 |1 || $fl|ag2 || $|
|00005760| 66 6c 61 67 34 20 7c 7c | 20 24 66 6c 61 67 35 7d |flag4 ||| $flag5}|
|00005770| 20 74 68 65 6e 20 7b 0d | 09 09 73 65 74 20 6d 65 | then {.|..set me|
|00005780| 73 73 61 67 65 53 74 72 | 69 6e 67 20 22 75 6e 62 |ssageStr|ing "unb|
|00005790| 61 6c 61 6e 63 65 64 20 | 6d 61 74 68 20 6d 6f 64 |alanced |math mod|
|000057a0| 65 20 64 65 6c 69 6d 69 | 74 65 72 73 22 0d 09 09 |e delimi|ters"...|
|000057b0| 62 65 65 70 0d 09 09 61 | 6c 65 72 74 6e 6f 74 65 |beep...a|lertnote|
|000057c0| 20 24 6d 65 73 73 61 67 | 65 53 74 72 69 6e 67 0d | $messag|eString.|
|000057d0| 09 09 65 72 72 6f 72 20 | 22 69 73 49 6e 4d 61 74 |..error |"isInMat|
|000057e0| 68 4d 6f 64 65 3a 20 20 | 24 6d 65 73 73 61 67 65 |hMode: |$message|
|000057f0| 53 74 72 69 6e 67 22 0d | 09 7d 0d 09 23 20 43 68 |String".|.}..# Ch|
|00005800| 65 63 6b 20 74 6f 20 73 | 65 65 20 69 66 20 69 6e |eck to s|ee if in|
|00005810| 20 4c 61 54 65 58 20 64 | 69 73 70 6c 61 79 6d 61 | LaTeX d|isplayma|
|00005820| 74 68 20 6d 6f 64 65 3a | 0d 09 73 65 74 20 73 65 |th mode:|..set se|
|00005830| 61 72 63 68 53 74 72 69 | 6e 67 20 7b 5b 5e 5c 5c |archStri|ng {[^\\|
|00005840| 5d 5c 5c 5c 5b 7c 5c 5c | 5c 5d 7d 0d 09 73 65 74 |]\\\[|\\|\]}..set|
|00005850| 20 73 65 61 72 63 68 52 | 65 73 75 6c 74 31 20 5b | searchR|esult1 [|
|00005860| 73 65 61 72 63 68 20 2d | 73 20 2d 66 20 30 20 2d |search -|s -f 0 -|
|00005870| 72 20 31 20 2d 6e 20 24 | 73 65 61 72 63 68 53 74 |r 1 -n $|searchSt|
|00005880| 72 69 6e 67 20 5b 65 78 | 70 72 20 24 70 6f 73 20 |ring [ex|pr $pos |
|00005890| 2d 20 31 5d 5d 0d 09 69 | 66 20 7b 5b 6c 6c 65 6e |- 1]]..i|f {[llen|
|000058a0| 67 74 68 20 24 73 65 61 | 72 63 68 52 65 73 75 6c |gth $sea|rchResul|
|000058b0| 74 31 5d 7d 20 74 68 65 | 6e 20 7b 0d 09 09 73 65 |t1]} the|n {...se|
|000058c0| 74 20 62 65 67 50 6f 73 | 20 5b 6c 69 6e 64 65 78 |t begPos| [lindex|
|000058d0| 20 24 73 65 61 72 63 68 | 52 65 73 75 6c 74 31 20 | $search|Result1 |
|000058e0| 30 5d 0d 09 09 73 65 74 | 20 65 6e 64 50 6f 73 20 |0]...set| endPos |
|000058f0| 5b 6c 69 6e 64 65 78 20 | 24 73 65 61 72 63 68 52 |[lindex |$searchR|
|00005900| 65 73 75 6c 74 31 20 31 | 5d 0d 09 09 69 66 20 7b |esult1 1|]...if {|
|00005910| 5b 6c 6f 6f 6b 41 74 20 | 5b 65 78 70 72 20 24 65 |[lookAt |[expr $e|
|00005920| 6e 64 50 6f 73 20 2d 20 | 31 5d 5d 20 3d 3d 20 22 |ndPos - |1]] == "|
|00005930| 5c 5b 22 7d 20 74 68 65 | 6e 20 7b 0d 09 09 09 73 |\["} the|n {....s|
|00005940| 65 74 20 64 65 6c 69 6d | 31 20 5b 67 65 74 54 65 |et delim|1 [getTe|
|00005950| 78 74 20 5b 65 78 70 72 | 20 24 62 65 67 50 6f 73 |xt [expr| $begPos|
|00005960| 20 2b 20 31 5d 20 24 65 | 6e 64 50 6f 73 5d 0d 09 | + 1] $e|ndPos]..|
|00005970| 09 7d 20 65 6c 73 65 20 | 7b 0d 09 09 09 73 65 74 |.} else |{....set|
|00005980| 20 64 65 6c 69 6d 31 20 | 5b 65 76 61 6c 20 67 65 | delim1 |[eval ge|
|00005990| 74 54 65 78 74 20 24 73 | 65 61 72 63 68 52 65 73 |tText $s|earchRes|
|000059a0| 75 6c 74 31 5d 0d 09 09 | 7d 0d 09 7d 20 65 6c 73 |ult1]...|}..} els|
|000059b0| 65 20 7b 0d 09 09 73 65 | 74 20 64 65 6c 69 6d 31 |e {...se|t delim1|
|000059c0| 20 22 6e 6f 6e 65 22 0d | 09 7d 0d 09 73 65 74 20 | "none".|.}..set |
|000059d0| 73 65 61 72 63 68 52 65 | 73 75 6c 74 32 20 5b 73 |searchRe|sult2 [s|
|000059e0| 65 61 72 63 68 20 2d 73 | 20 2d 66 20 31 20 2d 72 |earch -s| -f 1 -r|
|000059f0| 20 31 20 2d 6e 20 24 73 | 65 61 72 63 68 53 74 72 | 1 -n $s|earchStr|
|00005a00| 69 6e 67 20 24 70 6f 73 | 5d 0d 09 69 66 20 7b 5b |ing $pos|]..if {[|
|00005a10| 6c 6c 65 6e 67 74 68 20 | 24 73 65 61 72 63 68 52 |llength |$searchR|
|00005a20| 65 73 75 6c 74 32 5d 7d | 20 74 68 65 6e 20 7b 0d |esult2]}| then {.|
|00005a30| 09 09 73 65 74 20 62 65 | 67 50 6f 73 20 5b 6c 69 |..set be|gPos [li|
|00005a40| 6e 64 65 78 20 24 73 65 | 61 72 63 68 52 65 73 75 |ndex $se|archResu|
|00005a50| 6c 74 32 20 30 5d 0d 09 | 09 73 65 74 20 65 6e 64 |lt2 0]..|.set end|
|00005a60| 50 6f 73 20 5b 6c 69 6e | 64 65 78 20 24 73 65 61 |Pos [lin|dex $sea|
|00005a70| 72 63 68 52 65 73 75 6c | 74 32 20 31 5d 0d 09 09 |rchResul|t2 1]...|
|00005a80| 69 66 20 7b 5b 6c 6f 6f | 6b 41 74 20 5b 65 78 70 |if {[loo|kAt [exp|
|00005a90| 72 20 24 65 6e 64 50 6f | 73 20 2d 20 31 5d 5d 20 |r $endPo|s - 1]] |
|00005aa0| 3d 3d 20 22 5c 5b 22 7d | 20 74 68 65 6e 20 7b 0d |== "\["}| then {.|
|00005ab0| 09 09 09 73 65 74 20 64 | 65 6c 69 6d 32 20 5b 67 |...set d|elim2 [g|
|00005ac0| 65 74 54 65 78 74 20 5b | 65 78 70 72 20 24 62 65 |etText [|expr $be|
|00005ad0| 67 50 6f 73 20 2b 20 31 | 5d 20 24 65 6e 64 50 6f |gPos + 1|] $endPo|
|00005ae0| 73 5d 0d 09 09 7d 20 65 | 6c 73 65 20 7b 0d 09 09 |s]...} e|lse {...|
|00005af0| 09 73 65 74 20 64 65 6c | 69 6d 32 20 5b 65 76 61 |.set del|im2 [eva|
|00005b00| 6c 20 67 65 74 54 65 78 | 74 20 24 73 65 61 72 63 |l getTex|t $searc|
|00005b10| 68 52 65 73 75 6c 74 32 | 5d 0d 09 09 7d 0d 09 7d |hResult2|]...}..}|
|00005b20| 20 65 6c 73 65 20 7b 0d | 09 09 73 65 74 20 64 65 | else {.|..set de|
|00005b30| 6c 69 6d 32 20 22 6e 6f | 6e 65 22 0d 09 7d 0d 09 |lim2 "no|ne"..}..|
|00005b40| 73 65 74 20 66 6c 61 67 | 31 20 5b 65 78 70 72 20 |set flag|1 [expr |
|00005b50| 5b 73 74 72 69 6e 67 20 | 6d 61 74 63 68 20 7b 6e |[string |match {n|
|00005b60| 6f 6e 65 7d 20 24 64 65 | 6c 69 6d 31 5d 20 26 26 |one} $de|lim1] &&|
|00005b70| 20 5b 73 74 72 69 6e 67 | 20 6d 61 74 63 68 20 7b | [string| match {|
|00005b80| 5c 5c 5c 5d 7d 20 24 64 | 65 6c 69 6d 32 5d 5d 0d |\\\]} $d|elim2]].|
|00005b90| 09 73 65 74 20 66 6c 61 | 67 32 20 5b 65 78 70 72 |.set fla|g2 [expr|
|00005ba0| 20 5b 73 74 72 69 6e 67 | 20 6d 61 74 63 68 20 7b | [string| match {|
|00005bb0| 5c 5c 5c 5b 7d 20 24 64 | 65 6c 69 6d 31 5d 20 26 |\\\[} $d|elim1] &|
|00005bc0| 26 20 5b 73 74 72 69 6e | 67 20 6d 61 74 63 68 20 |& [strin|g match |
|00005bd0| 7b 6e 6f 6e 65 7d 20 24 | 64 65 6c 69 6d 32 5d 5d |{none} $|delim2]]|
|00005be0| 0d 09 73 65 74 20 66 6c | 61 67 33 20 5b 65 78 70 |..set fl|ag3 [exp|
|00005bf0| 72 20 5b 73 74 72 69 6e | 67 20 6d 61 74 63 68 20 |r [strin|g match |
|00005c00| 7b 5c 5c 5c 5b 7d 20 24 | 64 65 6c 69 6d 31 5d 20 |{\\\[} $|delim1] |
|00005c10| 26 26 20 5b 73 74 72 69 | 6e 67 20 6d 61 74 63 68 |&& [stri|ng match|
|00005c20| 20 7b 5c 5c 5c 5d 7d 20 | 24 64 65 6c 69 6d 32 5d | {\\\]} |$delim2]|
|00005c30| 5d 0d 09 73 65 74 20 66 | 6c 61 67 34 20 5b 65 78 |]..set f|lag4 [ex|
|00005c40| 70 72 20 5b 73 74 72 69 | 6e 67 20 6d 61 74 63 68 |pr [stri|ng match|
|00005c50| 20 7b 5c 5c 5c 5b 7d 20 | 24 64 65 6c 69 6d 31 5d | {\\\[} |$delim1]|
|00005c60| 20 26 26 20 5b 73 74 72 | 69 6e 67 20 6d 61 74 63 | && [str|ing matc|
|00005c70| 68 20 7b 5c 5c 5c 5b 7d | 20 24 64 65 6c 69 6d 32 |h {\\\[}| $delim2|
|00005c80| 5d 5d 0d 09 73 65 74 20 | 66 6c 61 67 35 20 5b 65 |]]..set |flag5 [e|
|00005c90| 78 70 72 20 5b 73 74 72 | 69 6e 67 20 6d 61 74 63 |xpr [str|ing matc|
|00005ca0| 68 20 7b 5c 5c 5c 5d 7d | 20 24 64 65 6c 69 6d 31 |h {\\\]}| $delim1|
|00005cb0| 5d 20 26 26 20 5b 73 74 | 72 69 6e 67 20 6d 61 74 |] && [st|ring mat|
|00005cc0| 63 68 20 7b 5c 5c 5c 5d | 7d 20 24 64 65 6c 69 6d |ch {\\\]|} $delim|
|00005cd0| 32 5d 5d 0d 09 69 66 20 | 7b 24 66 6c 61 67 33 7d |2]]..if |{$flag3}|
|00005ce0| 20 74 68 65 6e 20 7b 0d | 09 09 72 65 74 75 72 6e | then {.|..return|
|00005cf0| 20 31 0d 09 7d 20 65 6c | 73 65 69 66 20 7b 24 66 | 1..} el|seif {$f|
|00005d00| 6c 61 67 31 20 7c 7c 20 | 24 66 6c 61 67 32 20 7c |lag1 || |$flag2 ||
|00005d10| 7c 20 24 66 6c 61 67 34 | 20 7c 7c 20 24 66 6c 61 || $flag4| || $fla|
|00005d20| 67 35 7d 20 74 68 65 6e | 20 7b 0d 09 09 73 65 74 |g5} then| {...set|
|00005d30| 20 6d 65 73 73 61 67 65 | 53 74 72 69 6e 67 20 22 | message|String "|
|00005d40| 75 6e 62 61 6c 61 6e 63 | 65 64 20 6d 61 74 68 20 |unbalanc|ed math |
|00005d50| 6d 6f 64 65 20 64 65 6c | 69 6d 69 74 65 72 73 22 |mode del|imiters"|
|00005d60| 0d 09 09 62 65 65 70 0d | 09 09 61 6c 65 72 74 6e |...beep.|..alertn|
|00005d70| 6f 74 65 20 24 6d 65 73 | 73 61 67 65 53 74 72 69 |ote $mes|sageStri|
|00005d80| 6e 67 0d 09 09 65 72 72 | 6f 72 20 22 69 73 49 6e |ng...err|or "isIn|
|00005d90| 4d 61 74 68 4d 6f 64 65 | 3a 20 20 24 6d 65 73 73 |MathMode|: $mess|
|00005da0| 61 67 65 53 74 72 69 6e | 67 22 0d 09 7d 0d 09 23 |ageStrin|g"..}..#|
|00005db0| 20 43 68 65 63 6b 20 74 | 6f 20 73 65 65 20 69 66 | Check t|o see if|
|00005dc0| 20 69 6e 20 6d 61 74 68 | 20 65 6e 76 69 72 6f 6e | in math| environ|
|00005dd0| 6d 65 6e 74 3a 0d 09 73 | 65 74 20 65 6e 76 4e 61 |ment:..s|et envNa|
|00005de0| 6d 65 20 5b 65 78 74 72 | 61 63 74 43 6f 6d 6d 61 |me [extr|actComma|
|00005df0| 6e 64 41 72 67 20 5b 65 | 76 61 6c 20 67 65 74 54 |ndArg [e|val getT|
|00005e00| 65 78 74 20 5b 73 65 61 | 72 63 68 45 6e 76 69 72 |ext [sea|rchEnvir|
|00005e10| 6f 6e 6d 65 6e 74 5d 5d | 5d 0d 09 73 65 74 20 65 |onment]]|]..set e|
|00005e20| 6e 76 4c 69 73 74 20 5b | 6c 69 73 74 20 22 6d 61 |nvList [|list "ma|
|00005e30| 74 68 22 20 22 64 69 73 | 70 6c 61 79 6d 61 74 68 |th" "dis|playmath|
|00005e40| 22 20 22 65 71 75 61 74 | 69 6f 6e 22 20 22 65 71 |" "equat|ion" "eq|
|00005e50| 6e 61 72 72 61 79 22 20 | 22 65 71 6e 61 72 72 61 |narray" |"eqnarra|
|00005e60| 79 2a 22 20 22 61 72 72 | 61 79 22 5d 0d 09 69 66 |y*" "arr|ay"]..if|
|00005e70| 20 7b 5b 6c 73 65 61 72 | 63 68 20 2d 65 78 61 63 | {[lsear|ch -exac|
|00005e80| 74 20 24 65 6e 76 4c 69 | 73 74 20 24 65 6e 76 4e |t $envLi|st $envN|
|00005e90| 61 6d 65 5d 20 3d 3d 20 | 2d 31 7d 20 7b 72 65 74 |ame] == |-1} {ret|
|00005ea0| 75 72 6e 20 30 7d 20 7b | 72 65 74 75 72 6e 20 31 |urn 0} {|return 1|
|00005eb0| 7d 0d 7d 0d 0d 23 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |}.}..#--|--------|
|00005ec0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005ed0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005ee0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005ef0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005f00| 0d 23 20 52 6f 75 74 69 | 6e 65 73 20 74 6f 20 64 |.# Routi|nes to d|
|00005f10| 69 73 73 65 63 74 20 4c | 61 54 65 58 20 63 6f 6d |issect L|aTeX com|
|00005f20| 6d 61 6e 64 73 0d 23 2d | 2d 2d 2d 2d 2d 2d 2d 2d |mands.#-|--------|
|00005f30| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005f40| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005f50| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005f60| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005f70| 2d 0d 0d 23 20 47 69 76 | 65 6e 20 61 20 4c 61 54 |-..# Giv|en a LaT|
|00005f80| 65 58 20 63 6f 6d 6d 61 | 6e 64 20 73 74 72 69 6e |eX comma|nd strin|
|00005f90| 67 2c 20 65 78 74 72 61 | 63 74 20 61 6e 64 20 72 |g, extra|ct and r|
|00005fa0| 65 74 75 72 6e 20 74 68 | 65 20 63 6f 6d 6d 61 6e |eturn th|e comman|
|00005fb0| 64 20 6e 61 6d 65 2e 0d | 70 72 6f 63 20 65 78 74 |d name..|proc ext|
|00005fc0| 72 61 63 74 43 6f 6d 6d | 61 6e 64 4e 61 6d 65 20 |ractComm|andName |
|00005fd0| 7b 63 6f 6d 6d 61 6e 64 | 53 74 72 7d 20 7b 0d 09 |{command|Str} {..|
|00005fe0| 69 66 20 7b 5b 72 65 67 | 65 78 70 20 7b 5c 5c 28 |if {[reg|exp {\\(|
|00005ff0| 5b 5e 61 2d 7a 41 2d 5a | 5c 74 5c 72 5d 7c 5b 61 |[^a-zA-Z|\t\r]|[a|
|00006000| 2d 7a 41 2d 5a 5d 2b 5c | 2a 3f 29 7d 20 24 63 6f |-zA-Z]+\|*?)} $co|
|00006010| 6d 6d 61 6e 64 53 74 72 | 20 64 75 6d 6d 79 20 63 |mmandStr| dummy c|
|00006020| 6f 6d 6d 61 6e 64 4e 61 | 6d 65 5d 7d 20 74 68 65 |ommandNa|me]} the|
|00006030| 6e 20 7b 0d 09 09 72 65 | 74 75 72 6e 20 24 63 6f |n {...re|turn $co|
|00006040| 6d 6d 61 6e 64 4e 61 6d | 65 0d 09 7d 20 65 6c 73 |mmandNam|e..} els|
|00006050| 65 20 7b 0d 09 09 72 65 | 74 75 72 6e 20 22 22 0d |e {...re|turn "".|
|00006060| 09 7d 0d 7d 0d 0d 23 20 | 47 69 76 65 6e 20 61 20 |.}.}..# |Given a |
|00006070| 4c 61 54 65 58 20 63 6f | 6d 6d 61 6e 64 20 73 74 |LaTeX co|mmand st|
|00006080| 72 69 6e 67 20 77 69 74 | 68 20 61 74 20 6d 6f 73 |ring wit|h at mos|
|00006090| 74 20 6f 6e 65 20 72 65 | 71 75 69 72 65 64 20 61 |t one re|quired a|
|000060a0| 72 67 75 6d 65 6e 74 20 | 61 6e 64 0d 23 20 6e 6f |rgument |and.# no|
|000060b0| 20 65 6d 62 65 64 64 65 | 64 20 63 61 72 72 69 61 | embedde|d carria|
|000060c0| 67 65 20 72 65 74 75 72 | 6e 73 2c 20 65 78 74 72 |ge retur|ns, extr|
|000060d0| 61 63 74 20 61 6e 64 20 | 72 65 74 75 72 6e 20 74 |act and |return t|
|000060e0| 68 65 20 61 72 67 75 6d | 65 6e 74 2e 0d 23 20 28 |he argum|ent..# (|
|000060f0| 4e 6f 74 65 3a 20 20 74 | 68 69 73 20 70 72 6f 63 |Note: t|his proc|
|00006100| 20 6e 65 65 64 73 20 6d | 6f 72 65 20 74 65 73 74 | needs m|ore test|
|00006110| 69 6e 67 2e 29 0d 70 72 | 6f 63 20 65 78 74 72 61 |ing.).pr|oc extra|
|00006120| 63 74 43 6f 6d 6d 61 6e | 64 41 72 67 20 7b 63 6f |ctComman|dArg {co|
|00006130| 6d 6d 61 6e 64 53 74 72 | 7d 20 7b 0d 09 69 66 20 |mmandStr|} {..if |
|00006140| 7b 5b 72 65 67 65 78 70 | 20 7b 5c 7b 28 2e 2a 29 |{[regexp| {\{(.*)|
|00006150| 5c 7d 7d 20 24 63 6f 6d | 6d 61 6e 64 53 74 72 20 |\}} $com|mandStr |
|00006160| 64 75 6d 6d 79 20 61 72 | 67 5d 7d 20 74 68 65 6e |dummy ar|g]} then|
|00006170| 20 7b 0d 09 09 72 65 74 | 75 72 6e 20 24 61 72 67 | {...ret|urn $arg|
|00006180| 0d 09 7d 20 65 6c 73 65 | 20 7b 0d 09 09 72 65 74 |..} else| {...ret|
|00006190| 75 72 6e 20 22 22 0d 09 | 7d 0d 7d 0d 0d 23 2d 2d |urn ""..|}.}..#--|
|000061a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000061b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000061c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000061d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000061e0| 2d 2d 2d 2d 2d 2d 2d 2d | 0d 23 20 41 6e 20 65 6e |--------|.# An en|
|000061f0| 76 69 72 6f 6e 6d 65 6e | 74 20 73 65 61 72 63 68 |vironmen|t search|
|00006200| 20 72 6f 75 74 69 6e 65 | 0d 23 2d 2d 2d 2d 2d 2d | routine|.#------|
|00006210| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006220| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006240| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00006250| 2d 2d 2d 2d 0d 0d 23 20 | 53 65 61 72 63 68 20 66 |----..# |Search f|
|00006260| 6f 72 20 74 68 65 20 63 | 6c 6f 73 65 73 74 20 73 |or the c|losest s|
|00006270| 75 72 72 6f 75 6e 64 69 | 6e 67 20 65 6e 76 69 72 |urroundi|ng envir|
|00006280| 6f 6e 6d 65 6e 74 20 61 | 6e 64 20 72 65 74 75 72 |onment a|nd retur|
|00006290| 6e 20 61 20 6c 69 73 74 | 20 0d 23 20 6f 66 20 74 |n a list| .# of t|
|000062a0| 77 6f 20 70 6f 73 69 74 | 69 6f 6e 73 20 69 66 20 |wo posit|ions if |
|000062b0| 74 68 65 20 65 6e 76 69 | 72 6f 6e 6d 65 6e 74 20 |the envi|ronment |
|000062c0| 69 73 20 66 6f 75 6e 64 | 3b 20 6f 74 68 65 72 77 |is found|; otherw|
|000062d0| 69 73 65 20 72 65 74 75 | 72 6e 20 74 68 65 20 0d |ise retu|rn the .|
|000062e0| 23 20 65 6d 70 74 79 20 | 6c 69 73 74 2e 20 20 41 |# empty |list. A|
|000062f0| 73 73 75 6d 65 73 20 74 | 68 65 20 4c 61 54 65 58 |ssumes t|he LaTeX|
|00006300| 20 64 6f 63 75 6d 65 6e | 74 20 69 73 20 73 79 6e | documen|t is syn|
|00006310| 74 61 63 74 69 63 61 6c | 6c 79 20 63 6f 72 72 65 |tactical|ly corre|
|00006320| 63 74 2e 20 20 20 0d 23 | 20 54 68 65 20 63 6f 6d |ct. .#| The com|
|00006330| 6d 61 6e 64 20 27 65 76 | 61 6c 20 73 65 6c 65 63 |mand 'ev|al selec|
|00006340| 74 20 5b 73 65 61 72 63 | 68 45 6e 76 69 72 6f 6e |t [searc|hEnviron|
|00006350| 6d 65 6e 74 5d 27 20 73 | 65 6c 65 63 74 73 20 74 |ment]' s|elects t|
|00006360| 68 65 20 22 5c 62 65 67 | 69 6e 22 20 0d 23 20 73 |he "\beg|in" .# s|
|00006370| 74 61 74 65 6d 65 6e 74 | 20 28 77 69 74 68 20 61 |tatement| (with a|
|00006380| 72 67 75 6d 65 6e 74 29 | 20 6f 66 20 74 68 65 20 |rgument)| of the |
|00006390| 73 75 72 72 6f 75 6e 64 | 69 6e 67 20 65 6e 76 69 |surround|ing envi|
|000063a0| 72 6f 6e 6d 65 6e 74 2e | 0d 70 72 6f 63 20 73 65 |ronment.|.proc se|
|000063b0| 61 72 63 68 45 6e 76 69 | 72 6f 6e 6d 65 6e 74 20 |archEnvi|ronment |
|000063c0| 7b 7d 20 7b 0d 09 77 61 | 74 63 68 43 75 72 73 6f |{} {..wa|tchCurso|
|000063d0| 72 0d 09 73 65 74 20 70 | 6f 73 20 5b 67 65 74 50 |r..set p|os [getP|
|000063e0| 6f 73 5d 0d 09 69 66 20 | 7b 24 70 6f 73 20 3d 3d |os]..if |{$pos ==|
|000063f0| 20 30 7d 20 7b 0d 09 09 | 72 65 74 75 72 6e 20 5b | 0} {...|return [|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.