Tcl Library Source Code

Check-in [fae3542632]
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to tclconference@googlegroups.com
or submit via the online form by Sep 9.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:doctools: - `text`: Sliced and diced internals for easier (re)comprehension of the parts. Going towards reuse for a new `markdown` format. Fixed various mis-formattings: - Missing newline at end of output - Superflous newlines at beginning of example sections. - Updated various formatters to not pass initial leading whitespace into the output (See testsuite change, added comments) - `latex`: Fixed handling of paragraph breaks, [nl]. - Extended testsuite, more manpage examples. Also added comments at top with short description. doctoc: - Syntax checker fix, items are allowed before toc end, after the last division. - `text`: Updated to make use of and match the reworked engine. - `html`: Fixed fixed mismanagement of items before first and after last division. Completely new state for tracking levels, items. - `nroff`: Fixed missing indenting of division title - `tmml`: Fixed variable name typo - Extended testsuite with examples for all the generators. docidx: - `nroff`: Fixed unsorted output - Extended testsuite with examples for all the generators.
Timelines: family | ancestors | descendants | both | doc-fixup-and-markdown
Files: files | file ages | folders
SHA3-256:fae35426325dae81bfd0dec73a571a88ed29cee291c81c495e615bcc54a814ca
User & Date: aku 2019-03-14 07:27:54
Context
2019-03-14
19:35
Shuffled the test support files for doctools around for a nicer hierarchy, with fmt, idx, and toc properly segregated. Updated the test suite to match the changes. Furthermore dropped superfluous checks for long-gone `CVS` directories. check-in: 7e7f01191f user: aku tags: doc-fixup-and-markdown
07:27
doctools: - `text`: Sliced and diced internals for easier (re)comprehension of the parts. Going towards reuse for a new `markdown` format. Fixed various mis-formattings: - Missing newline at end of output - Superflous newlines at beginning of example sections. - Updated various formatters to not pass initial leading whitespace into the output (See testsuite change, added comments) - `latex`: Fixed handling of paragraph breaks, [nl]. - Extended testsuite, more manpage examples. Also added comments at top with short description. doctoc: - Syntax checker fix, items are allowed before toc end, after the last division. - `text`: Updated to make use of and match the reworked engine. - `html`: Fixed fixed mismanagement of items before first and after last division. Completely new state for tracking levels, items. - `nroff`: Fixed missing indenting of division title - `tmml`: Fixed variable name typo - Extended testsuite with examples for all the generators. docidx: - `nroff`: Fixed unsorted output - Extended testsuite with examples for all the generators. check-in: fae3542632 user: aku tags: doc-fixup-and-markdown
2019-03-07
21:09
Squashed deprecated `nl` tags, using `para` instead check-in: 4a95b1eebb user: aku tags: trunk
Changes
Hide Diffs Unified Diffs Show Whitespace Changes Patch

Changes to modules/doctools/changelog.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# changelog.tcl --
#
#	Handling of ChangeLog's.
#
# Copyright (c) 2003-2008 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: changelog.tcl,v 1.8 2008/07/08 23:03:58 andreas_kupries Exp $


# FUTURE -- Expand pre-parsed log (nested lists) into flat structures
# FUTURE --  => date/author/file/cref + cref/text
# FUTURE -- I.e. relational/tabular structure, useable in table displays,
# FUTURE -- sort by date, author, file to see aggregated changes
# FUTURE --  => Connectivity to 'struct::matrix', Reports!





|



<
<
<







1
2
3
4
5
6
7
8



9
10
11
12
13
14
15
# changelog.tcl --
#
#	Handling of ChangeLog's.
#
# Copyright (c) 2003-2019 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.




# FUTURE -- Expand pre-parsed log (nested lists) into flat structures
# FUTURE --  => date/author/file/cref + cref/text
# FUTURE -- I.e. relational/tabular structure, useable in table displays,
# FUTURE -- sort by date, author, file to see aggregated changes
# FUTURE --  => Connectivity to 'struct::matrix', Reports!

Changes to modules/doctools/checker_toc.tcl.

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
...
108
109
110
111
112
113
114
115
116
117
118
119
120
121


122
123
124
125
126
127
128
129
130
131
132
...
173
174
175
176
177
178
179

180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
#		+-----------------------+-----------
#		| toc_end		| -> done
# --------------+-----------------------+----------------------
# division	| item			| -> division //
#		+-----------------------+-----------
#		| division_start	| -> division, PUSH division
#		+-----------------------+-----------
#		| division_end		| POP (-> division / -> end)
# --------------+-----------------------+----------------------
# end		| toc_end		| -> done
#		+-----------------------+-----------
#		| division_start	| PUSH division
# --------------+-----------------------+----------------------

# State machine, as above ... Command centered
................................................................................
    set msg [::msgcat::mc $code]
    dt_warning "TOC warning ($code): [join [split [format $msg $text] \n] "\nTOC warning ($code): "]"
    return
}

proc Is    {s} {global state ; return [string equal $state $s]}
proc IsNot {s} {global state ; return [expr {![string equal $state $s]}]}
proc Go    {s} {Log " >>\[$s\]" ; global state ; set state $s; return}
proc Push  {s} {Log " //\[$s\]" ; global state stack ; lappend stack $state ; set state $s; return}
proc Pop   {}  {Log* " pop" ;  global state stack ; set state [lindex $stack end] ; set stack [lrange $stack 0 end-1] ; Log " \\\\\[$state\]" ; return}
proc State {} {global state stack ; return "$stack || $state"}

proc Enter {cmd} {Log* "\[[State]\] $cmd"}



#proc Log* {text} {puts -nonewline $text}
#proc Log  {text} {puts            $text}
proc Log* {text} {}
proc Log  {text} {}

# -------------------------------------------------------------
# Framing
proc ck_initialize {} {
    global state   ; set state toc_begin
    global stack   ; set stack [list]
}
................................................................................
}

# -------------------------------------------------------------
# Formatting commands
proc toc_begin {label title} {
    Enter toc_begin
    if {[IsNot toc_begin]} {Error toc/begincmd}

    Go contents
    fmt_toc_begin $label $title
}
proc toc_end {} {
    Enter toc_end
    if {[IsNot end] && [IsNot contents]} {Error toc/endcmd}
    Go done
    fmt_toc_end
}
proc division_start {title {symfile {}}} {
    Enter division_start
    if {
	[IsNot contents] && [IsNot end] && [IsNot division]
    } {Error toc/sectcmd}
    if {[Is contents] || [Is end]} {Go end} else {Go division}
    Push division
    fmt_division_start $title $symfile
}
proc division_end {} {
    Enter division_end
    if {[IsNot division]} {Error toc/sectecmd [State]}
    Pop







|







 







|
|
|


|

>
>


<
<







 







>
|













<







49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
...
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125


126
127
128
129
130
131
132
...
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194

195
196
197
198
199
200
201
#		+-----------------------+-----------
#		| toc_end		| -> done
# --------------+-----------------------+----------------------
# division	| item			| -> division //
#		+-----------------------+-----------
#		| division_start	| -> division, PUSH division
#		+-----------------------+-----------
#		| division_end		| POP (-> division / -> contents)
# --------------+-----------------------+----------------------
# end		| toc_end		| -> done
#		+-----------------------+-----------
#		| division_start	| PUSH division
# --------------+-----------------------+----------------------

# State machine, as above ... Command centered
................................................................................
    set msg [::msgcat::mc $code]
    dt_warning "TOC warning ($code): [join [split [format $msg $text] \n] "\nTOC warning ($code): "]"
    return
}

proc Is    {s} {global state ; return [string equal $state $s]}
proc IsNot {s} {global state ; return [expr {![string equal $state $s]}]}
proc Go    {s} {Log " ==\[$s\]" ; global state ; set state $s; return}
proc Push  {s} {Log " >>\[$s\]" ; global state stack ; lappend stack $state ; set state $s; return}
proc Pop   {}  {Log* " <<"     ;  global state stack ; set state [lindex $stack end] ; set stack [lrange $stack 0 end-1] ; Log " \\\\\[$state\]" ; return}
proc State {} {global state stack ; return "$stack || $state"}

proc Enter {cmd} {Log* "\n\[[State]\] $cmd"}

proc Log* {args} {}
proc Log  {args} {}
#proc Log* {text} {puts -nonewline $text}
#proc Log  {text} {puts            $text}



# -------------------------------------------------------------
# Framing
proc ck_initialize {} {
    global state   ; set state toc_begin
    global stack   ; set stack [list]
}
................................................................................
}

# -------------------------------------------------------------
# Formatting commands
proc toc_begin {label title} {
    Enter toc_begin
    if {[IsNot toc_begin]} {Error toc/begincmd}
    Go   end
    Push contents
    fmt_toc_begin $label $title
}
proc toc_end {} {
    Enter toc_end
    if {[IsNot end] && [IsNot contents]} {Error toc/endcmd}
    Go done
    fmt_toc_end
}
proc division_start {title {symfile {}}} {
    Enter division_start
    if {
	[IsNot contents] && [IsNot end] && [IsNot division]
    } {Error toc/sectcmd}

    Push division
    fmt_division_start $title $symfile
}
proc division_end {} {
    Enter division_end
    if {[IsNot division]} {Error toc/sectecmd [State]}
    Pop

Changes to modules/doctools/cvs.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# cvs.tcl --
#
#	Handling of various cvs output formats.
#
# Copyright (c) 2003-2008 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: cvs.tcl,v 1.10 2008/07/08 23:03:58 andreas_kupries Exp $

package require Tcl 8.2
package require textutil

namespace eval ::doctools {}
namespace eval ::doctools::cvs {
    namespace export scanLog toChangeLog




|



<
<







1
2
3
4
5
6
7
8


9
10
11
12
13
14
15
# cvs.tcl --
#
#	Handling of various cvs output formats.
#
# Copyright (c) 2003-2019 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.



package require Tcl 8.2
package require textutil

namespace eval ::doctools {}
namespace eval ::doctools::cvs {
    namespace export scanLog toChangeLog

Changes to modules/doctools/docidx.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# docidx.tcl --
#
#	Implementation of docidx objects for Tcl.
#
# Copyright (c) 2003-2018 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
# 
# RCS: @(#) $Id: docidx.tcl,v 1.22 2010/06/08 19:13:53 andreas_kupries Exp $

package require Tcl 8.2
package require textutil::expander

# @mdgen OWNER: api_idx.tcl
# @mdgen OWNER: checker_idx.tcl
# @mdgen OWNER: mpformats/*.tcl




|



<
<







1
2
3
4
5
6
7
8


9
10
11
12
13
14
15
# docidx.tcl --
#
#	Implementation of docidx objects for Tcl.
#
# Copyright (c) 2003-2019 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.



package require Tcl 8.2
package require textutil::expander

# @mdgen OWNER: api_idx.tcl
# @mdgen OWNER: checker_idx.tcl
# @mdgen OWNER: mpformats/*.tcl

Changes to modules/doctools/docidx.test.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

24
25
26
27
28
29
30
...
303
304
305
306
307
308
309














































310
311
312
313
314
315
316
# -*- tcl -*-
# docidx.test:  tests for the doctools::idx package.
#
# This file contains a collection of tests for one or more of the Tcl
# built-in commands.  Sourcing this file into Tcl runs the tests and
# generates output for errors.  No output means no errors were found.
#
# Copyright (c) 2003-2009 by Andreas Kupries <andreas_kupries@users.sourceforge.net>
# All rights reserved.
#
# RCS: @(#) $Id: docidx.test,v 1.15 2009/02/12 05:42:47 andreas_kupries Exp $

# -------------------------------------------------------------------------

source [file join \
	[file dirname [file dirname [file join [pwd] [info script]]]] \
	devtools testutilities.tcl]

testsNeedTcl     8.2
testsNeedTcltest 1.0

support {
    use textutil/expander.tcl textutil::expander

}
testing {
    useLocal docidx.tcl doctools::idx
}

# -------------------------------------------------------------------------

................................................................................
    catch {mydocidx format {[index_begin KWIC Test][key X][index_end]}} result
    mydocidx destroy
    set result
} {Docidx Error in macro at line 1, column 30:
[index_end]
--> (FmtError) IDX error (idx/endcmd), "index_end" : Command not allowed here..}
















































namespace forget ::doctools::idx::new

# -------------------------------------------------------------------------

testsuiteCleanup
return







|

<
<












>







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1
2
3
4
5
6
7
8
9


10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
...
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
# -*- tcl -*-
# docidx.test:  tests for the doctools::idx package.
#
# This file contains a collection of tests for one or more of the Tcl
# built-in commands.  Sourcing this file into Tcl runs the tests and
# generates output for errors.  No output means no errors were found.
#
# Copyright (c) 2003-2019 by Andreas Kupries <andreas_kupries@users.sourceforge.net>
# All rights reserved.



# -------------------------------------------------------------------------

source [file join \
	[file dirname [file dirname [file join [pwd] [info script]]]] \
	devtools testutilities.tcl]

testsNeedTcl     8.2
testsNeedTcltest 1.0

support {
    use textutil/expander.tcl textutil::expander
    use fileutil/fileutil.tcl fileutil
}
testing {
    useLocal docidx.tcl doctools::idx
}

# -------------------------------------------------------------------------

................................................................................
    catch {mydocidx format {[index_begin KWIC Test][key X][index_end]}} result
    mydocidx destroy
    set result
} {Docidx Error in macro at line 1, column 30:
[index_end]
--> (FmtError) IDX error (idx/endcmd), "index_end" : Command not allowed here..}


# -------------------------------------------------------------------------
## Series of tests for all available backends, check their formatting.

set k 11
foreach format {
    html nroff text
    wiki null
} {
    set n 0
    foreach src [TestFilesGlob tests/idx/idx/*] {
	if {[file tail $src] == "CVS"} continue

	# Get the expected result
	set dst [localPath [file join tests idx $format [file tail $src]]]
	set map {} ; lappend map @USR@ $tcl_platform(user)
	set rem {} ; lappend rem $tcl_platform(user) @USR@
	if {$format eq "nroff"} {
		lappend map ".so man.macros\n" [fileutil::cat [localPath mpformats/man.macros]]
	}
	if {[catch {
	    set expected [string map $map [fileutil::cat $dst]]
	}]} { set expected **missing** }

	test docidx-${format}-${k}.$n "docidx backends, $format/[file tail $src]" {
	    new mydocidx
	    mydocidx configure \
		-format    $format \
		-file      .FILE.
	    if {[catch {
		set res [mydocidx format [fileutil::cat $src]]
	    }]} {
		set res $::errorInfo
	    }
	    mydocidx destroy
	    #fileutil::writeFile ${dst}.actual [string map $rem $res]
	    set res
	} $expected

	#fileutil::writeFile ${dst}.expected $expected
	incr n
    }
    incr k
}

# -------------------------------------------------------------------------

namespace forget ::doctools::idx::new

# -------------------------------------------------------------------------

testsuiteCleanup
return

Changes to modules/doctools/doctoc.test.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

24
25
26
27
28
29
30
...
286
287
288
289
290
291
292
293
294
295
296







297
298
299
300
301
302
303
304
305
306
307

























308
309








310

311
312

313
314


315



316
317



318
319
# -*- tcl -*-
# doctoc.test:  tests for the doctools::toc package.
#
# This file contains a collection of tests for one or more of the Tcl
# built-in commands.  Sourcing this file into Tcl runs the tests and
# generates output for errors.  No output means no errors were found.
#
# Copyright (c) 2003-2009 by Andreas Kupries <andreas_kupries@users.sourceforge.net>
# All rights reserved.
#
# RCS: @(#) $Id: doctoc.test,v 1.14 2009/02/12 05:42:47 andreas_kupries Exp $

# -------------------------------------------------------------------------

source [file join \
	[file dirname [file dirname [file join [pwd] [info script]]]] \
	devtools testutilities.tcl]

testsNeedTcl     8.2
testsNeedTcltest 1.0

support {
    use textutil/expander.tcl textutil::expander

}
testing {
    useLocal doctoc.tcl doctools::toc
}

# -------------------------------------------------------------------------

................................................................................
    catch {mydoctoc format foo} result
    mydoctoc destroy
    set result
} {Doctoc Error in plain text at line 1, column 0:
[plain_text foo]
--> (FmtError) TOC error (toc/plaintext), "plain_text foo" : Plain text beyond whitespace is not allowed..}

test docidx-9.1 {doctoc syntax v1.1, empty toc, ok} {
    new mydocidx -format null
    set result [mydocidx format {[toc_begin TOC Test][toc_end]}]
    mydocidx destroy







    set result
} {}

test docidx-9.2 {doctoc syntax v1.1, mixing items and divisions, ok} {
    new mydocidx -format null
    set result [mydocidx format {[toc_begin TOC Test][item I1f i1 i1d][division_start D Df][item I2f i2 i2d][division_end][toc_end]}]
    mydocidx destroy
    set result
} {}

test docidx-9.3 {doctoc syntax v1.1, empty division, ok} {

























    new mydocidx -format null
    set result [mydocidx format {[toc_begin TOC Test][division_start D Df][division_end][toc_end]}]








    mydocidx destroy

    set result
} {}


namespace forget ::doctools::toc::new






# -------------------------------------------------------------------------




testsuiteCleanup
return







|

<
<












>







 







|
|
|
|
>
>
>
>
>
>
>



|
|
|
|



<
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
<
>
>
>
>
>
>
>
>
|
>
|
<
>

<
>
>
|
>
>
>


>
>
>


1
2
3
4
5
6
7
8
9


10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
...
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312

313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338

339
340
341
342
343
344
345
346
347
348
349

350
351

352
353
354
355
356
357
358
359
360
361
362
363
364
# -*- tcl -*-
# doctoc.test:  tests for the doctools::toc package.
#
# This file contains a collection of tests for one or more of the Tcl
# built-in commands.  Sourcing this file into Tcl runs the tests and
# generates output for errors.  No output means no errors were found.
#
# Copyright (c) 2003-2019 by Andreas Kupries <andreas_kupries@users.sourceforge.net>
# All rights reserved.



# -------------------------------------------------------------------------

source [file join \
	[file dirname [file dirname [file join [pwd] [info script]]]] \
	devtools testutilities.tcl]

testsNeedTcl     8.2
testsNeedTcltest 1.0

support {
    use textutil/expander.tcl textutil::expander
    use fileutil/fileutil.tcl fileutil
}
testing {
    useLocal doctoc.tcl doctools::toc
}

# -------------------------------------------------------------------------

................................................................................
    catch {mydoctoc format foo} result
    mydoctoc destroy
    set result
} {Doctoc Error in plain text at line 1, column 0:
[plain_text foo]
--> (FmtError) TOC error (toc/plaintext), "plain_text foo" : Plain text beyond whitespace is not allowed..}

test doctoc-9.1 {doctoc syntax v1.1, empty toc, ok} {
    new mydoctoc -format null
    set result [mydoctoc format {[toc_begin TOC Test][toc_end]}]
    mydoctoc destroy
    set result
} {}

test doctoc-9.2 {doctoc syntax v1.1, mixing items and divisions, ok} {
    new mydoctoc -format null
    set result [mydoctoc format {[toc_begin TOC Test][item I1f i1 i1d][division_start D Df][item I2f i2 i2d][division_end][toc_end]}]
    mydoctoc destroy
    set result
} {}

test doctoc-9.3 {doctoc syntax v1.1, empty division, ok} {
    new mydoctoc -format null
    set result [mydoctoc format {[toc_begin TOC Test][division_start D Df][division_end][toc_end]}]
    mydoctoc destroy
    set result
} {}



# -------------------------------------------------------------------------
## Series of tests for all available backends, check their formatting.

set k 11
foreach format {
    html tmml nroff
    text wiki null
} {
    set n 0
    foreach src [TestFilesGlob tests/toc/toc/*] {
	if {[file tail $src] == "CVS"} continue

	# Get the expected result
	set dst [localPath [file join tests toc $format [file tail $src]]]
	set map {} ; lappend map @USR@ $tcl_platform(user)
	set rem {} ; lappend rem $tcl_platform(user) @USR@
	if {$format eq "nroff"} {
		lappend map ".so man.macros\n" [fileutil::cat [localPath mpformats/man.macros]]
	}
	if {[catch {
	    set expected [string map $map [fileutil::cat $dst]]
	}]} { set expected **missing** }

	test doctoc-${format}-${k}.$n "doctoc backends, $format/[file tail $src]" {
	    new mydoctoc

	    mydoctoc configure \
		-format    $format \
		-file      .FILE.
	    if {[catch {
		set res [mydoctoc format [fileutil::cat $src]]
	    }]} {
		set res $::errorInfo
	    }
	    mydoctoc destroy
	    #fileutil::writeFile ${dst}.actual [string map $rem $res]
	    set res

	} $expected


	#fileutil::writeFile ${dst}.expected $expected
	incr n
    }
    incr k
}

# -------------------------------------------------------------------------

namespace forget ::doctools::toc::new

# -------------------------------------------------------------------------
testsuiteCleanup
return

Changes to modules/doctools/doctools.test.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
...
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
...
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
# -*- tcl -*-
# doctools.test:  tests for the doctools package.
#
# This file contains a collection of tests for one or more of the Tcl
# built-in commands.  Sourcing this file into Tcl runs the tests and
# generates output for errors.  No output means no errors were found.
#
# Copyright (c) 2003-2010 by Andreas Kupries <andreas_kupries@users.sourceforge.net>
# All rights reserved.
#
# RCS: @(#) $Id: doctools.test,v 1.28 2011/01/13 02:41:44 andreas_kupries Exp $

# -------------------------------------------------------------------------

source [file join \
	[file dirname [file dirname [file join [pwd] [info script]]]] \
	devtools testutilities.tcl]

................................................................................
--> (FmtError) Manpage error (body), "plain_text foo" : Plain text not allowed outside of the body of the manpage.}

# -------------------------------------------------------------------------
## Series of tests for all available backends, check their formatting.

set k 11
foreach format {
    html  tmml
    nroff latex
    text  wiki
    desc  list null
} {
    set n 0
    foreach src [TestFilesGlob tests/man/*] {
	if {[file tail $src] == "CVS"} continue

	# Get the expected result
	set dst [localPath [file join tests $format [file tail $src]]]
	set map @ID@   ; lappend map \$Id\$ ; lappend map @USR@ $tcl_platform(user)
	set rem \$Id\$ ; lappend rem @ID@   ; lappend $tcl_platform(user) @USR@
	if {$format eq "nroff"} {
		lappend map ".so man.macros\n" [fileutil::cat [localPath mpformats/man.macros]]
	}
	if {[catch {
	    set expected [string map $map [fileutil::cat $dst]]
	}]} { set expected **missing** }

................................................................................

set n 0
foreach src [TestFilesGlob tests/man/*] {
    if {[file tail $src] == "CVS"} continue

    # Get the expected result
    set dst [localPath [file join tests html [file tail $src]]]
    set map @ID@   ; lappend map \$Id\$ ; lappend map @USR@ $tcl_platform(user)
    set rem \$Id\$ ; lappend rem @ID@   ; lappend $tcl_platform(user) @USR@

    if {[catch {
	set expected [string map $map [fileutil::cat $dst]]
    }]} { set expected **missing** }

    # Transform regular output to contents of body/, i.e. raw output.
    regsub {</body>.*} $expected {} expected
    regsub {.*<body>}  $expected {} expected
    append expected \n
    if {$n == 5 || $n == 8} { set expected \n$expected }

    # Run the test ...
    test doctools-html-raw-11.$n "doctools backends, html-raw/[file tail $src]" {
	new mydoctools
	mydoctools configure \
	    -format    html \
	    -module    .MODULE. \







|

<
<







 







|
<
|








|
|







 







|
|









|







1
2
3
4
5
6
7
8
9


10
11
12
13
14
15
16
...
312
313
314
315
316
317
318
319

320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
...
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
# -*- tcl -*-
# doctools.test:  tests for the doctools package.
#
# This file contains a collection of tests for one or more of the Tcl
# built-in commands.  Sourcing this file into Tcl runs the tests and
# generates output for errors.  No output means no errors were found.
#
# Copyright (c) 2003-2019 by Andreas Kupries <andreas_kupries@users.sourceforge.net>
# All rights reserved.



# -------------------------------------------------------------------------

source [file join \
	[file dirname [file dirname [file join [pwd] [info script]]]] \
	devtools testutilities.tcl]

................................................................................
--> (FmtError) Manpage error (body), "plain_text foo" : Plain text not allowed outside of the body of the manpage.}

# -------------------------------------------------------------------------
## Series of tests for all available backends, check their formatting.

set k 11
foreach format {
    html  tmml nroff

    latex text wiki
    desc  list null
} {
    set n 0
    foreach src [TestFilesGlob tests/man/*] {
	if {[file tail $src] == "CVS"} continue

	# Get the expected result
	set dst [localPath [file join tests $format [file tail $src]]]
	set map {} ; lappend map @USR@ $tcl_platform(user)
	set rem {} ; lappend rem $tcl_platform(user) @USR@
	if {$format eq "nroff"} {
		lappend map ".so man.macros\n" [fileutil::cat [localPath mpformats/man.macros]]
	}
	if {[catch {
	    set expected [string map $map [fileutil::cat $dst]]
	}]} { set expected **missing** }

................................................................................

set n 0
foreach src [TestFilesGlob tests/man/*] {
    if {[file tail $src] == "CVS"} continue

    # Get the expected result
    set dst [localPath [file join tests html [file tail $src]]]
    set map {} ; lappend map @USR@ $tcl_platform(user)
    set rem {} ; lappend rem $tcl_platform(user) @USR@

    if {[catch {
	set expected [string map $map [fileutil::cat $dst]]
    }]} { set expected **missing** }

    # Transform regular output to contents of body/, i.e. raw output.
    regsub {</body>.*} $expected {} expected
    regsub {.*<body>}  $expected {} expected
    append expected \n
    #if {$n == 5 || $n == 8} { set expected \n$expected }

    # Run the test ...
    test doctools-html-raw-11.$n "doctools backends, html-raw/[file tail $src]" {
	new mydoctools
	mydoctools configure \
	    -format    html \
	    -module    .MODULE. \

Changes to modules/doctools/mpformats/_html.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
..
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# -*- tcl -*-
# Copyright (c) 2001-2008 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# Helper rules for the creation of the memchan website from the .exp files.
# General formatting instructions ...

# htmlEscape text --
#	Replaces HTML markup characters in $text with the
#	appropriate entity references.
#

global textMap;
set    textMap {
................................................................................

    if 0 {
	puts_stderr @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	puts_stderr $text
	puts_stderr @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    }

    return $text
}

# markup text --
#	Protect markup characters in $text with \1.
#	These will be stripped out in PostProcess.
#
proc markup {text} {

|



|







 







|







1
2
3
4
5
6
7
8
9
10
11
12
13
..
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# -*- tcl -*-
# Copyright (c) 2001-2019 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# Helper rules for the creation of the memchan website from the .exp files.
# General formatting instructions ...
#
# htmlEscape text --
#	Replaces HTML markup characters in $text with the
#	appropriate entity references.
#

global textMap;
set    textMap {
................................................................................

    if 0 {
	puts_stderr @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
	puts_stderr $text
	puts_stderr @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    }

    return [string trimleft $text]
}

# markup text --
#	Protect markup characters in $text with \1.
#	These will be stripped out in PostProcess.
#
proc markup {text} {

Changes to modules/doctools/mpformats/_nroff.tcl.

1
2
3
4
5
6
7
8
9
10
11
12
13
...
174
175
176
177
178
179
180
181
182
183
# -*- tcl -*-
#
# -- nroff commands
#
# Copyright (c) 2003-2005 Andreas Kupries <andreas_kupries@sourceforge.net>


################################################################
# nroff specific commands
#
# All dot-commands (f.e. .PP) are returned with a leading \n\1,
# enforcing that they are on a new line and will be protected as markup.
# Any empty line created because of this is filtered out in the 
................................................................................

    lappend map	\n\1.IP\n\1.\1.\n  \n\1.IP\n\1.\1.\n
    lappend map \n\1.IP\n\1.       \n\1.

    set lines [string map $map $lines]

    # Return the modified result buffer
    return [string map $finalMap $lines]
}





|
<







 







|


1
2
3
4
5

6
7
8
9
10
11
12
...
173
174
175
176
177
178
179
180
181
182
# -*- tcl -*-
#
# -- nroff commands
#
# Copyright (c) 2003-2019 Andreas Kupries <andreas_kupries@sourceforge.net>


################################################################
# nroff specific commands
#
# All dot-commands (f.e. .PP) are returned with a leading \n\1,
# enforcing that they are on a new line and will be protected as markup.
# Any empty line created because of this is filtered out in the 
................................................................................

    lappend map	\n\1.IP\n\1.\1.\n  \n\1.IP\n\1.\1.\n
    lappend map \n\1.IP\n\1.       \n\1.

    set lines [string map $map $lines]

    # Return the modified result buffer
    return [string trim [string map $finalMap $lines]]\n
}

Changes to modules/doctools/mpformats/_text.tcl.

1
2
3
4


5
6
7
8
9
10
11
..
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
...
423
424
425
426
427
428
429
430












































































































# -*- tcl -*-
#
# _text.tcl -- Core support for text engines.




################################################################

if {0} {
    catch {rename proc proc__} msg ; puts_stderr >>$msg
    proc__ proc {cmd argl body} {
	puts_stderr "proc $cmd $argl ..."
................................................................................
    puts_stderr ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    rename proc {}
    rename proc__ proc
    puts_stderr ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}


################################################################
# Formatting constants ... Might be engine variables in the future.

global lmarginIncrement ; set lmarginIncrement 4
global rmarginThreshold ; set rmarginThreshold 20
global bulleting        ; set bulleting        {* - # @ ~ %}
global enumeration      ; set enumeration      {[%] (%) <%>}

proc Bullet {ivar} {
    global bulleting ; upvar $ivar i
    set res [lindex $bulleting $i]
    set i [expr {($i + 1) % [llength $bulleting]}]
    return $res
}

proc EnumBullet {ivar} {
    global enumeration ; upvar $ivar i
    set res [lindex $enumeration $i]
    set i [expr {($i + 1) % [llength $enumeration]}]
    return $res
}

################################################################

#
# The engine maintains several data structures per document and pass.
# Most important is an internal representation of the text better
# suited to perform the final layouting, the display list. Elements of
# the display list are lists containing 2 elements, an operation, and
# its arguments, in this order. The arguments are a list again, its
# contents are specific to the operation.
#
# The operations are:
#
# - SECT	Section.    Title.
# - SUBSECT     Subsection. Title.
# - PARA	Paragraph.  Environment reference and text.
#
# The PARA operation is the workhorse of the engine, dooing all the
# formatting, using the information in an "environment" as the guide
# for doing so. The environments themselves are generated during the
# second pass through the contents. They contain the information about
# nesting (i.e. indentation), bulleting and the like.
#

global cmds ; set cmds [list]   ; # Display list
global pEnv ; array set pEnv {} ; # Defined paragraph environments (bulleting, indentation, other).
global para ; set para ""       ; # Text buffer for paragraphs.

global nextId     ; set       nextId     0      ; # Counter for environment generation.
global currentId  ; set       currentId  {}     ; # Id of current environment in 'pEnv'
global currentEnv ; array set currentEnv {}     ; # Current environment, expanded form.
global contexts   ; set       contexts   [list] ; # Stack of saved environments.
global off        ; set off   1                 ; # Suppression of plain text in some places.

################################################################
# Management of the current context.

proc Text  {text}    {global para ; append para $text ; return}
proc Store {op args} {global cmds ; lappend cmds [list $op $args] ; return}
proc Off   {}        {global off ; set off 1 ; return}
proc On    {}        {global off para ; set off 0 ; set para "" ; return}
proc IsOff {}        {global off ; return [expr {$off == 1}]}

# Debugging ...
#proc Text  {text}    {puts_stderr "TXT \{$text\}"; global para; append para $text ; return}
#proc Store {op args} {puts_stderr "STO $op $args"; global cmds; lappend cmds [list $op $args]; return}
#proc Off   {}        {puts_stderr OFF ; global off ; set off 1 ; return}
#proc On    {}        {puts_stderr ON_ ; global off para ; set off 0 ; set para "" ; return}


proc NewEnv {name script} {
    global currentId  nextId currentEnv

    #puts_stderr "NewEnv ($name)"

    set    parentId  $currentId
    set    currentId $nextId
    incr              nextId

    append currentEnv(NAME) -$parentId-$name
    set currentEnv(parent) $parentId
    set currentEnv(id)     $currentId

    # Always squash a verbatim environment inherited from the previous
    # environment ...
    catch {unset currentEnv(verbenv)}

    uplevel $script
    SaveEnv
    return $currentId
}

################################################################

proc TextInitialize {} {
    global off  ; set off 1
    global cmds ; set cmds [list]   ; # Display list
    global pEnv ; array set pEnv {} ; # Defined paragraph environments (bulleting, indentation, other).
    global para ; set para ""       ; # Text buffer for paragraphs.

    global nextId     ; set       nextId     0      ; # Counter for environment generation.
    global currentId  ; set       currentId  {}     ; # Id of current environment in 'pEnv'
    global currentEnv ; array set currentEnv {}     ; # Current environment, expanded form.
    global contexts   ; set       contexts   [list] ; # Stack of saved environments.

    # lmargin  = location of left margin for text.
    # prefix   = prefix string to use for all lines.
    # wspfx    = whitespace prefix for all but the first line
    # listtype = type of list, if any
    # bullet   = bullet to use for unordered, bullet template for ordered.
    # verbatim = flag if verbatim formatting requested.
    # next     = if present the environment to use after closing the paragraph using this one.

    NewEnv Base {
	array set currentEnv {
	    lmargin     0
	    prefix      {}
	    wspfx       {}
	    listtype    {}
	    bullet      {}
	    verbatim    0
	    bulleting   0
	    enumeration 0
	}
    }
    return
}

################################################################

proc Section    {name} {Store SECT    $name ; return}
proc Subsection {name} {Store SUBSECT $name ; return}

proc CloseParagraph {{id {}}} {
    global para currentId
    if {$para != {}} {
	if {$id == {}} {set id $currentId}
	Store PARA $id $para
	#puts_stderr "CloseParagraph $id"
    }
    set para ""
    return
} 

proc SaveContext {} {
    global  contexts  currentId
    lappend contexts $currentId

    #global currentEnv ; puts_stderr "Save>> $currentId ($currentEnv(NAME))"
    return
}

proc RestoreContext {} {
    global                contexts
    SetContext   [lindex $contexts end]
    set contexts [lrange $contexts 0 end-1]

    #global currentId currentEnv ; puts_stderr "<<Restored $currentId ($currentEnv(NAME))"
    return
}

proc SetContext {id} {
    global    currentId currentEnv pEnv
    set       currentId $id

    # Ensure that array is clean before setting hte new block of
    # information.
    unset     currentEnv
    array set currentEnv $pEnv($currentId)

    #puts_stderr "--Set $currentId ($currentEnv(NAME))"
    return
}

proc SaveEnv {} {
    global pEnv  currentId             currentEnv
    set    pEnv($currentId) [array get currentEnv]
    return
}

################################################################

proc NewVerbatim {} {
    global currentEnv
    return [NewEnv Verbatim {set currentEnv(verbatim) 1}]
}

proc Verbatim {} {
    global currentEnv
    if {![info exists currentEnv(verbenv)]} {
	SaveContext
	set verb [NewVerbatim]
	RestoreContext

	# Remember verbatim mode in the base environment
	set currentEnv(verbenv) $verb
	SaveEnv
    }
    return $currentEnv(verbenv)
}

################################################################

proc text_plain_text {text} {
    #puts_stderr "<<text_plain_text>>"

    if  {[IsOff]} {return}

    # Note: Whenever we get plain text it is possible that a macro for
    # visual markup actually generated output before the expander got
    # to the current text. This output was captured by the expander in
    # its current context. Given the current organization of the
    # engine we have to retrieve this formatted text from the expander
    # or it will be lost. This is the purpose of the 'ctopandclear',
    # which retrieves the data and also clears the capture buffer. The
    # latter to prevent us from retrieving it again later, after the
    # next macro added more data.

    set text [ex_ctopandclear]$text

    # ... TODO ... Handling of example => verbatim

    if {[string length [string trim $text]] == 0} return

    Text $text
    return
}

################################################################

proc text_postprocess {text} {

    #puts_stderr XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    #puts_stderr <<$text>>
    #puts_stderr XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    global cmds
    # The argument is not relevant. Access the display list, perform
    # the final layouting and return its result.

    set linebuffer [list]
    array set state {lmargin 0 rmargin 0}
    foreach cmd $cmds {
	foreach {op arguments} $cmd break
	$op $arguments
    }

    #puts_stderr XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    return [join $linebuffer \n]
}


proc SECT {text} {
    upvar linebuffer linebuffer

    # text is actually the list of arguments, having one element, the text.
    set text [lindex $text 0]
    #puts_stderr "SECT $text"
    #puts_stderr ""

    # Write section title, underline it

    lappend linebuffer ""
    lappend linebuffer $text
    lappend linebuffer [textutil::repeat::strRepeat = [string length $text]]
    return
}

proc SUBSECT {text} {
    upvar linebuffer linebuffer

    # text is actually the list of arguments, having one element, the text.
    set text [lindex $text 0]
    #puts_stderr "SUBSECT $text"
    #puts_stderr ""

    # Write subsection title, underline it (with less emphasis)

    lappend linebuffer ""
    lappend linebuffer $text
    lappend linebuffer [textutil::repeat::strRepeat - [string length $text]]
    return
}

proc PARA {arguments} {
    global pEnv
    upvar linebuffer linebuffer

    foreach {env text} $arguments break
    array set para $pEnv($env)

    #puts_stderr "PARA $env"
    #parray_stderr para
    #puts_stderr "     \{$text\}"
    #puts_stderr ""

    # Use the information in the referenced environment to format the paragraph.

    if {$para(verbatim)} {
	set text [textutil::adjust::undent $text]
    } else {
	# The size is determined through the set left and right margins
	# right margin is fixed at 80, left margin is variable. Size
	# is at least 20. I.e. when left margin > 60 right margin is
	# shifted out to the right.

	set size [expr {80 - $para(lmargin)}]
	if {$size < 20} {set size 20}

	set text [textutil::adjust::adjust $text -length $size]
    }

    # Now apply prefixes, (ws prefixes bulleting), at last indentation.

    if {[string length $para(prefix)] > 0} {
	set text [textutil::adjust::indent $text $para(prefix)]
    }

    if {$para(listtype) != {}} {
	switch -exact $para(listtype) {
	    bullet {
		# Indent for bullet, but not the first line. This is
		# prefixed by the bullet itself.

		set thebullet $para(bullet)
	    }
	    enum {
		# Handling the enumeration counter. Special case: An
		# example as first paragraph in an item has to use the
		# counter in environment it is derived from to prevent
		# miscounting.

		if {[info exists para(example)]} {
		    set parent $para(parent)
		    array set __ $pEnv($parent)
		    if {![info exists __(counter)]} {
			set __(counter) 1
		    } else {
			incr __(counter)
		    }
		    set pEnv($parent) [array get __] ; # Save context change ...
		    set n $__(counter)
		} else {
		    if {![info exists para(counter)]} {
			set para(counter) 1
		    } else {
			incr para(counter)
		    }
		    set pEnv($env) [array get para] ; # Save context change ...
		    set n $para(counter)
		}

		set thebullet [string map [list % $n] $para(bullet)]
	    }
	}

	set blen [string length $thebullet]
	if {$blen >= [string length $para(wspfx)]} {
	    set text    "$thebullet\n[textutil::adjust::indent $text $para(wspfx)]"
	} else {
	    set fprefix $thebullet[string range $para(wspfx) $blen end]
	    set text    "${fprefix}[textutil::adjust::indent $text $para(wspfx) 1]"
	}
    }

    if {$para(lmargin) > 0} {
	set text [textutil::adjust::indent $text \
		      [textutil::repeat::strRepeat " " $para(lmargin)]]
    }

    lappend linebuffer ""
    lappend linebuffer $text
    return
}

################################################################

proc strong      {text} {return *${text}*}
proc em          {text} {return _${text}_}

################################################################

proc parray_stderr {a {pattern *}} {
    upvar 1 $a array
    if {![array exists array]} {
        error "\"$a\" isn't an array"
    }
    set maxl 0
    foreach name [lsort [array names array $pattern]] {
................................................................................
    set maxl [expr {$maxl + [string length $a] + 2}]
    foreach name [lsort [array names array $pattern]] {
        set nameString [format %s(%s) $a $name]
        puts_stderr "    [format "%-*s = {%s}" $maxl $nameString $array($name)]"
    }
}

################################################################














































































































|
|
>
>







 







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







 







|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
..
23
24
25
26
27
28
29
































































































































































































































































































































































































30
31
32
33
34
35
36
..
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# -*- tcl -*-
#
# -- Core support for text engines.
#
# Copyright (c) 2003-2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.

################################################################

if {0} {
    catch {rename proc proc__} msg ; puts_stderr >>$msg
    proc__ proc {cmd argl body} {
	puts_stderr "proc $cmd $argl ..."
................................................................................
    puts_stderr ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    rename proc {}
    rename proc__ proc
    puts_stderr ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}


































































































































































































































































































































































































proc parray_stderr {a {pattern *}} {
    upvar 1 $a array
    if {![array exists array]} {
        error "\"$a\" isn't an array"
    }
    set maxl 0
    foreach name [lsort [array names array $pattern]] {
................................................................................
    set maxl [expr {$maxl + [string length $a] + 2}]
    foreach name [lsort [array names array $pattern]] {
        set nameString [format %s(%s) $a $name]
        puts_stderr "    [format "%-*s = {%s}" $maxl $nameString $array($name)]"
    }
}

# # ## ### ##### ########
##

dt_source _text_utils.tcl
# Formatting utilities

dt_source _text_margin.tcl
# RMargin, LMI

dt_source _text_state.tcl
# On, Off, IsOff

dt_source _text_para.tcl
# Text, Text?, TextClear, TextPlain (-> IsOff)

dt_source _text_cstack.tcl
# ContextReset, ContextPush, ContextPop (-> CAttrCurrent, ContextSet)

dt_source _text_ccore.tcl
# ContextSetup, ContextSet, ContextNew, ContextCommit, CAttrName, CAttrCurrent,
# CAttrRef, CAttrUnset, CAttrSet, CAttrAppend, CAttrIncr, CAttrGet, CAttrHas

dt_source _text_bullets.tcl
# DIB, IBullet (-> CAttrRef)
# DEB, EBullet (-> CAttrRef)

dt_source _text_dlist.tcl
# DListClear, Section, Subsection, CloseParagraph (-> Text?, TextClear, CAttrCurrent)
# PostProcess
# - SECT    (-> SectTitle)
# - SUBSECT (-> SubsectTitle)
# - PARA (-> TEXT context accessors)

# # ## ### ##### ########
##

proc TextInitialize {} {
    DListClear
    TextClear
    ContextReset
    Off
    ContextSetup
    
    # Root context
    ContextNew Base {
	MarginReset
	PrefixReset
	WPrefixReset
	VerbatimOff
	ListNone
	BulletReset
	ItemReset
	EnumReset
    }
    return
}

# # ## ### ##### ########
## `text` formatting

proc SectTitle {lb title} {
    upvar 1 $lb lines
    #lappend lines ""
    lappend lines $title
    lappend lines [RepeatM = $title]
    return
}

proc SubsectTitle {lb title} {
    upvar 1 $lb lines
    #lappend lines ""
    lappend lines $title
    lappend lines [RepeatM - $title]
    return
}

proc Strong {text} { return *${text}* }
proc Em     {text} { return _${text}_ }

# # ## ### ##### ########
## Bulleting
#
# itembullet  = index of the bullet to use in the next itemized list
# enumbullet  = index of the bullet to use in the next enumerated list

proc EnumReset {} { CAttrSet enumbullet 0 }
proc ItemReset {} { CAttrSet itembullet 0 }

# # ## ### ##### ########
##

proc text_plain_text  {text} { TextPlain   $text }
proc text_postprocess {text} { PostProcess $text }

#return

# Debugging
proc text_postprocess {text} {
    if {[set code [catch {
	PostProcess $text
    } res]]} {
	global errorInfo errorCode
	puts_stderr
	puts_stderr $errorCode
	puts_stderr $errorInfo
	return -code $code -errorinfo $errorInfo -errorcode $errorCode $msg
    }
    return $res
}

Added modules/doctools/mpformats/_text_bullets.tcl.





























































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# -*- tcl -*-
#
# Copyright (c) 2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
# _text_bullets.tcl -- Bulleting configuration and use.

global itembullets      ; set itembullets      {* - # @ ~ %}
global enumbullets      ; set enumbullets      {[%] (%) <%>}

proc IB  {}        { global itembullets ; return $itembullets      }
proc EB  {}        { global enumbullets ; return $enumbullets      }
proc DIB {bullets} { global itembullets ; set itembullets $bullets }
proc DEB {bullets} { global enumbullets ; set enumbullets $bullets }

proc NB {bullets countervar} {
    upvar 1 $countervar counter
    set bullet  [lindex $bullets $counter]
    set counter [expr {($counter + 1) % [llength $bullets]}]
    return $bullet
}

proc ItemBullet {countervar} { upvar 1 $countervar counter ; NB [IB] counter }
proc EnumBullet {countervar} { upvar 1 $countervar counter ; NB [EB] counter }

# xref current content
proc IBullet {} { ItemBullet [CAttrRef itembullet] }
proc EBullet {} { EnumBullet [CAttrRef enumbullet] }

return

Added modules/doctools/mpformats/_text_ccore.tcl.













































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# -*- tcl -*-
#
# Copyright (c) 2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
# _text_ccore.tcl -- Management of current context, and database of all contexts

global nextId      ; # Counter for context generation.
global contextData ; # In-memory database of known contexts.
global contextName ; # Map context handles to name.

global currentHandle  ; # Handle of context in 'currentContext'.
global currentContext ; # Current context, for direct access of all attributes

# # ## ### ##### ########
## Internals

proc ContextCommit {} {
    global contextData  currentHandle             currentContext
    set    contextData($currentHandle) [array get currentContext]
    return
}

proc NextId {} {
    global nextId
    set new $nextId
    incr     nextId
    return $new
}

# # ## ### ##### ########
## Basic management

proc ContextSetup {} {
    global contextData ; unset -nocomplain contextData ; array set contextData {}
    global contextName ; unset -nocomplain contextName ; array set contextName {}
    global nextId ; set                                            nextId 0
    
    global currentHandle  ; set       currentHandle  {}
    global currentContext ; array set currentContext {}
    return
}

proc ContextSet {id} {
    global    currentHandle currentContext contextData
    set       currentHandle $id

    #puts_stderr "--Set ($id) ([CAttrName $id])"

    # Ensure that array is clean before setting hte new block of
    # information.
    unset     currentContext
    array set currentContext $contextData($currentHandle)
    return
}

proc ContextNew {name script} {
    global currentHandle contextName currentContext
    set in [array get currentContext]
    
    set parentId  $currentHandle
    set currentHandle [NextId]

    #puts_stderr "ContextNew ${currentHandle}:($name) in ${parentId}:[CAttrName $parentId]"

    CAttrAppend NAME   /${name}:$currentHandle
    CAttrSet    parent $parentId
    CAttrSet    id     $currentHandle
    CAttrUnset  verbenv ;# Each context must have its own verbatim variant.
    
    # Customize the context - modifier commands
    uplevel $script

    # ContextCommit state for future use.
    ContextCommit
    set contextName($currentHandle) [CAttrGet NAME]
    
    return $currentHandle
}

# # ## ### ##### ########
## Generic accessors

proc CAttrName {{id {}}} {
    global contextName
    if {$id == {}} { global currentHandle ; set id $currentHandle }
    if {![info exists contextName($id)]} { return <$id> }
    return $contextName($id)
}

proc CAttrCurrent {} { global currentHandle ; return $currentHandle }

proc CAttrSet    {key value}     { global currentContext ; set    currentContext($key) $value }
proc CAttrAppend {key value}     { global currentContext ; append currentContext($key) $value }
proc CAttrIncr   {key {value 1}} { global currentContext ; incr   currentContext($key) $value }
proc CAttrGet    {key}           { global currentContext ; set currentContext($key) }
proc CAttrHas    {key}           { global currentContext ; info exists currentContext($key) }
proc CAttrUnset  {key}           { global currentContext ; catch { unset currentContext($key) } }
proc CAttrRef    {key}           { return "::currentContext($key)" }

# # ## ### ##### ########
## Verbatim
#
# Attributes:
# - verbatim    = flag if verbatim formatting requested, i.e. no paragraph reflow.
# - verbenv     = if present, id of verbatim variant of this environment

proc NewVerbatim {} {
    return [ContextNew Verbatim { VerbatimOn }]
}

proc Verbatim {} {
    if {![CAttrHas verbenv]} {
	ContextPush
	set verbenv [NewVerbatim]
	ContextPop
	# Remember the associated verbatim mode in the base
	# environment and database.
	CAttrSet verbenv $verbenv
	ContextCommit
    }
    return [CAttrGet verbenv]
}

proc VerbatimOff {} { CAttrSet verbatim 0 }
proc VerbatimOn  {} { CAttrSet verbatim 1 }
proc Verbatim?   {} { CAttrGet verbatim }

# # ## ### ##### ########

proc Parent? {} { CAttrGet parent }

# # ## ### ##### ########
return

Added modules/doctools/mpformats/_text_cstack.tcl.































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# -*- tcl -*-
#
# Copyright (c) 2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
# _text_cstack.tcl -- Stack of contexts and accessors

global contexts ; set contexts {}

################################################################
# Management of the stack

proc ContextReset {} { global contexts ; set contexts {} ; return }

proc ContextPush {} {
    global  contexts
    lappend contexts [set id [CAttrCurrent]]

    #puts_stderr "Push:[llength $contexts]>> [CAttrName $id]"
    return
}

proc ContextPop {} {
    global contexts
    set id       [lindex $contexts end]
    set contexts [lrange $contexts 0 end-1]

    #puts_stderr "<<Pop:[llength $contexts]  [CAttrName $id]"
    ContextSet   $id
    return
}

Added modules/doctools/mpformats/_text_dlist.tcl.





























































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
# -*- tcl -*-
#
# Copyright (c) 2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
# _text_dlist.tcl -- Display list variables and accessors

#
# The engine maintains several data structures per document and pass.
# Most important is an internal representation of the text better
# suited to perform the final layouting, the display list. Elements of
# the display list are lists containing 2 elements, an operation, and
# its arguments, in this order. The arguments are a list again, its
# contents are specific to the operation.
#
# The operations are:
#
# - SECT	Section.    Title.
# - SUBSECT     Subsection. Title.
# - PARA	Paragraph.  Context reference and text.
#
# The PARA operation is the workhorse of the engine, dooing all the
# formatting, using the information in an "context" as the guide
# for doing so. The contexts themselves are generated during the
# second pass through the contents. They contain the information about
# nesting (i.e. indentation), bulleting and the like.
#

# # ## ### ##### ########
## State: Display list

global __dlist

# # ## ### ##### ########
## Internal: Extend

proc Store {op args} { global __dlist ; lappend __dlist [list $op $args] ; return}

# Debugging ...
#proc Store {op args} {puts_stderr "STO $op $args"; global __dlist; lappend __dlist [list $op $args]; return}

# # ## ### ##### ########
## API
#
# API Section		Add section
# API Subsection	Add subsection
# API CloseParagraph	Add paragraph using text and (current) env
#                       Boolean result indicates if something was added, or not

proc DListClear {} { global __dlist ; unset -nocomplain __dlist ; set __dlist {} }

proc Section    {name} {Store SECT    $name ; return}
proc Subsection {name} {Store SUBSECT $name ; return}

proc CloseParagraph {{id {}}} {
    set para [Text?]
    if {$para == {}} { return 0 }
    if {$id == {}} { set id [CAttrCurrent] }
    Store PARA $id $para
    #puts_stderr "CloseParagraph $id [CAttrName $id]"
    TextClear
    return 1
} 

proc PostProcess {text} {
    #puts_stderr XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    #puts_stderr <<$text>>
    #puts_stderr XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    global __dlist
    # The argument is not relevant. Access the display list, perform
    # the final layouting and return its result.

    set lines {}
    array set state {lmargin 0 rmargin 0}
    foreach cmd $__dlist {
	lappend lines ""
	foreach {op arguments} $cmd break
	$op $arguments
    }

    #puts_stderr XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    return [Compose lines]\n
}

# # ## ### ##### ########
## PARA attributes
#
# Attributes
# - bullet      = bullet (template) to use for (un)ordered lists.
# - counter     = if present, item counter for enumeration list.
# - listtype    = type of list, if any.
# - lmargin     = left-indent, location of left margin for text.
# - prefix      = prefix to use for all lines of the parapgraph.
# - wspfx       = whitespace prefix for all but the first line of the paragraph.

proc BulletReset  {} { CAttrSet bullet {} }
proc ListNone     {} { CAttrSet listtype {} }
proc MarginIn     {} { CAttrIncr lmargin [LMI] }
proc MarginReset  {} { CAttrSet lmargin 0 }
proc PrefixReset  {} { CAttrSet prefix {} }
proc WPrefixReset {} { CAttrSet wspfx {} }

proc Prefix!   {p} { CAttrSet prefix $p }
proc WPrefix!  {p} { CAttrSet wspfx  $p }

proc Bullet?   {} { CAttrGet bullet }
proc ListType? {} { CAttrGet listtype }
proc Margin?   {} { CAttrGet lmargin }
proc Prefix?   {} { CAttrGet prefix }
proc WPrefix?  {} { CAttrGet wspfx }

proc List! {type bullet wprefix} {
    CAttrSet listtype $type
    CAttrSet bullet   $bullet
    CAttrSet wspfx    $wprefix
}

proc EnumCounter {} {
    if {![CAttrHas counter]} {
	CAttrSet counter 1
    } else {
	CAttrIncr counter
    }
    ContextCommit	
    #puts_stderr "Counter ... [CAttrName] => [CAttrGet counter]"
    return [CAttrGet counter]
}

proc EnumId {} {
    # Handling the enumeration counter.
    #
    # Special case: An example as first paragraph in an item has to
    # use the counter in the context it is derived from to prevent
    # miscounting.

    #puts_stderr "EnumId: [CAttrName] | [CAttrName [Parent?]]"
    
    if {[Example?]} {
	ContextPush
	ContextSet [Parent?]
	set n [EnumCounter]
	ContextPop
    } else {
	set n [EnumCounter]
    }
    return $n
}

# # ## ### ##### ########
## Hooks

proc SECT {text} {
    #puts_stderr "SECT $text"
    #puts_stderr ""
    # text is actually the list of arguments, having one element, the text.
    upvar 1 lines lines
    set text [lindex $text 0]
    SectTitle lines $text
    return
}

proc SUBSECT {text} {
    #puts_stderr "SUBSECT $text"
    #puts_stderr ""
    # text is actually the list of arguments, having one element, the text.
    upvar 1 lines lines
    set text [lindex $text 0]
    SubsectTitle lines $text
    return
}

proc PARA {arguments} {
    upvar lines lines

    # Note. As the display list is processed at the very end we can
    # reuse the current context and accessors to hold and query the
    # context of each paragraph.
    
    foreach {env text} $arguments break
    ContextSet $env

    #puts_stderr "PARA $env"
    #parray_stderr ::currentEnv
    #puts_stderr "     \{$text\}"
    #puts_stderr ""

    # Use the information in the referenced context to format the
    # paragraph.

    set lm    [Margin?]
    set lt    [ListType?]
    set blank [WPrefix?]
    
    if {[Verbatim?]} {
	set text [Undent $text]
    } else {
	set  plm $lm
	incr plm [string length $blank]
	set text [Reflow $text [RMargin $plm]]
    }

    # Now apply prefixes, (ws prefixes bulleting), at last indentation.

    set p [Prefix?]
    if {[string length $p]} {
	set text [Indent $text $p]
    }

    if {$lt != {}} {
	switch -exact $lt {
	    bullet {
		# Indent for bullet, but not the first line. This is
		# prefixed by the bullet itself.
		set thebullet [Bullet?]
	    }
	    enum {
		#puts_stderr EB

		set n [EnumId]
		set thebullet [string map [list % $n] [Bullet?]]

		#puts_stderr "E $n | $thebullet |"
	    }
	}

	set blank [WPrefix?]

	if {[string length $thebullet] >= [string length $blank]} {
	    # The item's bullet is longer than the space for indenting.
	    # Put bullet and text on separate lines, indent text in full.

	    set text "$thebullet\n[Indent $text $blank]"
	} else {
	    # The item's bullet fits into the space for
	    # indenting. Make hanging indent of text and place the
	    # bullet in front of the first line, with suitable partial
	    # spacing.

	    set text [Indent1 $text [ReHead $blank $thebullet] $blank]
	}
    }

    if {$lm} {
	set text [Indent $text [Blank $lm]]
    }

    lappend lines $text
    return
}

# # ## ### ##### ########
return

Added modules/doctools/mpformats/_text_margin.tcl.











































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# -*- tcl -*-
#
# Copyright (c) 2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
# _text_margin.tcl -- Margin control

global lmarginIncrement ; set lmarginIncrement 4
global rmarginThreshold ; set rmarginThreshold 20

proc LMI {} { global lmarginIncrement ; return $lmarginIncrement }
proc RMT {} { global rmarginThreshold ; return $rmarginThreshold }

proc RMargin {indent} {
    set rmt [RMT]
    set rmargin [expr {80 - $indent}]
    if {$rmargin < $rmt} { set rmargin $rmt }
    return $rmargin
}

return

Added modules/doctools/mpformats/_text_para.tcl.

























































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# -*- tcl -*-
#
# Copyright (c) 2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
# _text_para.tcl -- Paragraph variables and accessors - Text accumulator

# # ## ### ##### ########
## State: Text buffer for paragraphs.

global __currentp

# # ## ### ##### ########
## API

proc Text      {text} { global __currentp ; append __currentp $text ; return }
proc Text?     {}     { global __currentp ; return $__currentp }
proc TextClear {}     { global __currentp ; set __currentp "" }

proc TextTrimLeadingSpace {} {
    global __currentp
    regsub {^([ \t\v\f]*\n)*} $__currentp {} __currentp
    return
}

proc TextPlain {text} {
    #puts_stderr "<<text_plain_text>>"

    if  {[IsOff]} {return}

    # Note: Whenever we get plain text it is possible that a macro for
    # visual markup actually generated output before the expander got
    # to the current text. This output was captured by the expander in
    # its current context. Given the current organization of the
    # engine we have to retrieve this formatted text from the expander
    # or it will be lost. This is the purpose of the 'ctopandclear',
    # which retrieves the data and also clears the capture buffer. The
    # latter to prevent us from retrieving it again later, after the
    # next macro added more data.

    set text [ex_ctopandclear]$text

    # ... TODO ... Handling of example => verbatim

    if {[string length [string trim $text]] == 0} return

    Text $text
    return
}

#return
# # ## ### ##### ########
## Debugging

proc Text {text} {
    #puts_stderr "T++ (($text))"
    global __currentp
    append __currentp $text
    return
}

Added modules/doctools/mpformats/_text_state.tcl.













































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# -*- tcl -*-
#
# Copyright (c) 2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
# _text_state.tcl -- State variables and accessors

# # ## ### ##### ########
# State: Flag to suppress of plain text in some places.

global __off

# # ## ### ##### ########
# API

proc Off   {} { global __off ; set __off 1 ; return}
proc On    {} { global __off ; set __off 0 ; TextClear ; return}
proc IsOff {} { global __off ; return $__off }

# Debugging ...
#proc Off   {}        {puts_stderr OFF ; global __off ; set __off 1 ; return}
#proc On    {}        {puts_stderr ON_ ; global __off ; set __off 0 ; TextClear ; return}

Added modules/doctools/mpformats/_text_utils.tcl.

















































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# -*- tcl -*-
#
# Copyright (c) 2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
# _text_utils.tcl -- Text formatting utilities

# # ## ### ##### ########
## API

proc Compose {lb} {
    upvar 1 $lb linebuffer
    return [string trimright [join $linebuffer \n]]
}

proc ReHead {line prefix} {
    set n [string length $prefix]
    incr n -1
    string replace $line 0 $n $prefix
}

proc MaxLen {v s} {
    upvar 1 $v max
    set n [string length $s]
    if {$n <= $max} return
    set max $n
}

proc BlankMargin {} { global lmarginIncrement ; Blank $lmarginIncrement }

proc Repeat  {char n}      { textutil::repeat::strRepeat $char $n }
proc Blank   {n}           { textutil::repeat::blank $n }
proc RepeatM {char text}   { Repeat $char [string length $text] }
proc BlankM  {text}        { Blank        [string length $text] }
proc Undent  {text}        { textutil::adjust::undent $text }
proc Reflow  {text maxlen} { textutil::adjust::adjust $text -length $maxlen }
proc Indent  {text prefix} { textutil::adjust::indent $text $prefix }
proc Indent1 {text p1 p}   { return "${p1}[textutil::adjust::indent $text $p 1]" }
proc InFlow {text maxlen prefix1 prefix} {
    # Reformats the paragraph `text` to keep line length under
    # `maxlen` and then indents the result using `prefix1` and
    # `prefix`.  `prefix1` is applied to the first line, and `prefix`
    # to the remainder. The caller is responsible for ensuring that
    # both prefixes have the same length.
    Indent1 [Reflow $text $maxlen] $prefix1 $prefix
}

proc Provenance {} {
    textutil::string::uncap [c_provenance]
}

# # ## ### ##### ########
# Internals

# # ## ### ##### ########
return

Changes to modules/doctools/mpformats/_xml.tcl.

1
2
3
4
5
6
7
8
9

10
11
12
13
14
15
16
17
18
..
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# -*- tcl -*-
#
# $Id: _xml.tcl,v 1.9 2004/04/22 21:16:46 jenglish Exp $
#
# [expand] utilities for generating XML.
#
# Copyright (C) 2001 Joe English <jenglish@sourceforge.net>.
# Freely redistributable.
#

######################################################################


# Handling XML delimiters in content:
#
# Plain text is initially passed through unescaped;
# internally-generated markup is protected by preceding it with \1.
# The final PostProcess step strips the escape character from
# real markup and replaces markup characters from content
................................................................................
variable attvalMap { {&} &amp;  {<} &lt;  {>} &gt; {"} &quot; {'} &apos; } ; # "
variable markupMap { {&} {\1&}  {<} {\1<}  {>} {\1>} }
variable finalMap  { {\1&} {&}  {\1<} {<}  {\1>} {>}
		     {&} &amp;  {<} &lt;   {>} &gt; }

proc fmt_postprocess {text}	{
    variable finalMap
    return [string map $finalMap $text]
}

# markup text --
#	Protect markup characters in $text with \1.
#	These will be stripped out in PostProcess.
#
proc markup {text} {

<
<
<





>

<







 







|







1



2
3
4
5
6
7
8

9
10
11
12
13
14
15
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# -*- tcl -*-



# [expand] utilities for generating XML.
#
# Copyright (C) 2001 Joe English <jenglish@sourceforge.net>.
# Freely redistributable.
#
# Copyright (C) 2019 Andreas Kupries <andreas_kupries@sourceforge.net>
######################################################################


# Handling XML delimiters in content:
#
# Plain text is initially passed through unescaped;
# internally-generated markup is protected by preceding it with \1.
# The final PostProcess step strips the escape character from
# real markup and replaces markup characters from content
................................................................................
variable attvalMap { {&} &amp;  {<} &lt;  {>} &gt; {"} &quot; {'} &apos; } ; # "
variable markupMap { {&} {\1&}  {<} {\1<}  {>} {\1>} }
variable finalMap  { {\1&} {&}  {\1<} {<}  {\1>} {>}
		     {&} &amp;  {<} &lt;   {>} &gt; }

proc fmt_postprocess {text} {
    variable finalMap
    return [string trim [string map $finalMap $text]]\n
}

# markup text --
#	Protect markup characters in $text with \1.
#	These will be stripped out in PostProcess.
#
proc markup {text} {

Changes to modules/doctools/mpformats/fmt.latex.

1
2
3
4
5
6
7
8
9
10
11
12
..
32
33
34
35
36
37
38



39






40
41
42
43
44
45
46
47
..
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
...
127
128
129
130
131
132
133

134

135
136
137
138
139
140
141
...
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
...
389
390
391
392
393
394
395
396








397
398
399
400
401
402
403
404
# -*- tcl -*-
#
# fmt.latex
#
# (c) 2001 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# [mpexpand] definitions to convert a tcl based manpage definition into
# a manpage based upon LaTeX markup.
#
################################################################

##
................................................................................
}

proc Year {} {clock format [clock seconds] -format %Y}

c_holdBuffers require

proc fmt_postprocess {text} {



    regsub -all -- "\n+" $text "\n" text






    return [string map {\1\\ \\ \1$ $} $text]
    #return $text
}

################################################################
## Backend for LaTeX markup

c_pass 1 fmt_manpage_begin {title section version} NOP
................................................................................
    set copyright   [c_get_copyright]

    set     hdr ""
    append  hdr [Comment [c_provenance]] \n
    if {$copyright != {}} {
	append  hdr [Comment $copyright] \n
    }
    append  hdr [Comment "CVS: \$Id\$ $title.$section"] \n
    append  hdr \n
    append  hdr "\1\\documentclass\{article\}" \n

    if {$_has_images} {
	append hdr "\1\\usepackage{epsfig}" \n
	append hdr "\1\\usepackage{epstopdf}" \n
    }
................................................................................
    }
    append  res "\1\\end\{document\}"
    return $res
}

proc fmt_section    {name id} {return    "\1\\section\{[texEscape $name]\}\1\\label\{$id\}"}
proc fmt_subsection {name id} {return "\1\\subsection\{[texEscape $name]\}\1\\label\{$id\}"}

proc fmt_para    {}        {return \n\n}


c_pass 2 fmt_require {pkg {version {}}} NOP
c_pass 1 fmt_require {pkg {version {}}} {
    if {$version != {}} {
	set res "package require [Bold "$pkg $version"]\n"
    } else {
	set res "package require [Bold $pkg]\n"
................................................................................
    global _in_example
    set    _in_example 0
    return {\end{verbatim}}
}
# No mapping of special characters
proc fmt_example {code} { return "\1\\begin\{verbatim\}\n${code}\n\1\\end\{verbatim\}\n" }

proc fmt_nl     {}     {return}
proc fmt_arg    {text} {Underline $text}
proc fmt_cmd    {text} {Bold      $text}
proc fmt_emph   {text} {Italic    $text}
proc fmt_opt    {text} {return   ?$text?}

proc fmt_comment {text} {
    set res [list]
................................................................................
	\1\\_ \1\\_
	\1\\% \1\\%
	\1\\^ \1\\^
	\1\\$ \1\\$
	\1\\# \1\\#
	\1\\& \1\\&
	\1\\ \1\\
	\\ \1$\\backslash$ _ \1\\_ % \1\\% ^ \1\\^ $ \1\\$ < \1$<$ > \1$>$ # \1\\# & \1\\&








    } $text]
    if {$x} {
	#puts_stderr "==> '$text'"
    }
    return $text
}

################################################################

<
<
<
|







 







>
>
>

>
>
>
>
>
>
|







 







|







 







>
|
>







 







<







 







|
>
>
>
>
>
>
>
>








1



2
3
4
5
6
7
8
9
..
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
..
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
...
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
...
310
311
312
313
314
315
316

317
318
319
320
321
322
323
...
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
# -*- tcl -*-



# (c) 2001-2019 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# [mpexpand] definitions to convert a tcl based manpage definition into
# a manpage based upon LaTeX markup.
#
################################################################

##
................................................................................
}

proc Year {} {clock format [clock seconds] -format %Y}

c_holdBuffers require

proc fmt_postprocess {text} {
    # Trim trailing whitespace, for all lines.
    regsub -all -- "\[ \t]+\n" $text "\n" text
    # Strip superfluous line breaks
    regsub -all -- "\n+" $text "\n" text
    # Normalize paragraph breaks (subsume leading and traling whitespace)
    regsub -all -- "\[\t \n]+\1@P" $text "\1@P" text
    regsub -all -- "\1@P\[\t \n]+" $text "\1@P" text
    # Insert the paragraph breaks, unify multiple adjacent breaks
    regsub -all -- "(\1@P)+" $text "\n\n" text
    # Finalize the protected special characters
    return [string trimleft [string map {\1\\ \\ \1$ $} $text]]
    #return $text
}

################################################################
## Backend for LaTeX markup

c_pass 1 fmt_manpage_begin {title section version} NOP
................................................................................
    set copyright   [c_get_copyright]

    set     hdr ""
    append  hdr [Comment [c_provenance]] \n
    if {$copyright != {}} {
	append  hdr [Comment $copyright] \n
    }
    append  hdr [Comment "$title.$section"] \n
    append  hdr \n
    append  hdr "\1\\documentclass\{article\}" \n

    if {$_has_images} {
	append hdr "\1\\usepackage{epsfig}" \n
	append hdr "\1\\usepackage{epstopdf}" \n
    }
................................................................................
    }
    append  res "\1\\end\{document\}"
    return $res
}

proc fmt_section    {name id} {return    "\1\\section\{[texEscape $name]\}\1\\label\{$id\}"}
proc fmt_subsection {name id} {return "\1\\subsection\{[texEscape $name]\}\1\\label\{$id\}"}

proc fmt_para   {} { return \1@P }
proc fmt_nl     {} { return \1@P }

c_pass 2 fmt_require {pkg {version {}}} NOP
c_pass 1 fmt_require {pkg {version {}}} {
    if {$version != {}} {
	set res "package require [Bold "$pkg $version"]\n"
    } else {
	set res "package require [Bold $pkg]\n"
................................................................................
    global _in_example
    set    _in_example 0
    return {\end{verbatim}}
}
# No mapping of special characters
proc fmt_example {code} { return "\1\\begin\{verbatim\}\n${code}\n\1\\end\{verbatim\}\n" }


proc fmt_arg    {text} {Underline $text}
proc fmt_cmd    {text} {Bold      $text}
proc fmt_emph   {text} {Italic    $text}
proc fmt_opt    {text} {return   ?$text?}

proc fmt_comment {text} {
    set res [list]
................................................................................
	\1\\_ \1\\_
	\1\\% \1\\%
	\1\\^ \1\\^
	\1\\$ \1\\$
	\1\\# \1\\#
	\1\\& \1\\&
	\1\\ \1\\
	\\ \1$\\backslash$
	_ \1\\_
	% \1\\%
	^ \1\\^
	$ \1\\$
	< \1$<$
	> \1$>$
	# \1\\#
	& \1\\&
    } $text]
    if {$x} {
	#puts_stderr "==> '$text'"
    }
    return $text
}

################################################################

Changes to modules/doctools/mpformats/fmt.nroff.

1
2
3
4
5
6
7
8
9
10
11
12
..
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# -*- tcl -*-
#
# -- doctools NROFF formatting engine.
#
# Copyright (c) 2001-2011 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# [expand] definitions to convert a tcl based manpage definition into
# a manpage based upon *roff markup. Additional definition files allow
# the conversion into HTML and TMML.


################################################################
................................................................................
	append nroff [nr_nofill] \n
	append nroff $ct \n
	append nroff [nr_fill]
    }
    return $nroff
}

proc fmt_postprocess {nroff} {return [nroff_postprocess $nroff]}

proc fmt_section    {name {id {}}} {return [nr_section    $name]}
proc fmt_subsection {name {id {}}} {return [nr_subsection $name]}
proc fmt_para {} {
    if {[dt_lnesting]} { return [nr_item] }
    nr_p
}




|







 







|







1
2
3
4
5
6
7
8
9
10
11
12
..
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# -*- tcl -*-
#
# -- doctools NROFF formatting engine.
#
# Copyright (c) 2001-2019 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# [expand] definitions to convert a tcl based manpage definition into
# a manpage based upon *roff markup. Additional definition files allow
# the conversion into HTML and TMML.


################################################################
................................................................................
	append nroff [nr_nofill] \n
	append nroff $ct \n
	append nroff [nr_fill]
    }
    return $nroff
}

proc fmt_postprocess {nroff} { nroff_postprocess $nroff }

proc fmt_section    {name {id {}}} {return [nr_section    $name]}
proc fmt_subsection {name {id {}}} {return [nr_subsection $name]}
proc fmt_para {} {
    if {[dt_lnesting]} { return [nr_item] }
    nr_p
}

Changes to modules/doctools/mpformats/fmt.text.

1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17

18
19
20

21



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36


37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126

127

128
129
130

131
132
133
134
135
136
137
138
139


















140
141

















































142
143
144
145
146
147



148
149
150


151

152
153

154
155
156
157
158
159
160
161
...
205
206
207
208
209
210
211
212





213
214
215
216
217
218
219
...
243
244
245
246
247
248
249
250

251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315

316
317
318
319
320
321
322
323
324
325

326
327
328
329
330
331
332
...
345
346
347
348
349
350
351
352
353
354
355
356
357

358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385

386

387
388
389
390
391



392
393
394
395
396

397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434

435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
...
461
462
463
464
465
466
467

468
469
470
471
472
473

# -*- tcl -*-
#
# fmt.text -- Engine to convert a doctools document into plain text.
#
# Copyright (c) 2003 Andreas Kupries <andreas_kupries@sourceforge.net>
#
################################################################
################################################################

# Load shared code and modify it to our needs.

dt_source _common.tcl
dt_source _text.tcl

proc c_copyrightsymbol {} {return "(c)"}

rename fmt_initialize     BaseInitialize
proc   fmt_initialize {} {BaseInitialize ; TextInitialize ; return}


################################################################
# Special manpage environments





proc NewExample {} {
    global currentEnv
    return [NewEnv Example {
	set    currentEnv(verbatim) 1
	append currentEnv(prefix)   "| "
	set    currentEnv(example) .
    }] ; # {}
}

proc Example {} {
    global currentEnv
    if {![info exists currentEnv(exenv)]} {
	SaveContext
	set verb [NewExample]
	RestoreContext



	# Remember verbatim mode in the base environment
	set currentEnv(exenv) $verb
	SaveEnv
    }
    return $currentEnv(exenv)
}

proc NewList {what} {
    # List environments
    # Per list several environments are required.

    switch -exact -- $what {
	enumerated {NewOrderedList}
	itemized   {NewUnorderedList}
	arguments -
	commands  -
	options   -
	tkoptions -
	definitions {NewDefinitionList}
    }

}

proc NewUnorderedList {} {
    global currentEnv lmarginIncrement

    # Itemized list - unordered list - bullet
    # 1. Base environment provides indentation.
    # 2. First paragraph in a list item.
    # 3. All other paragraphs.

    set base [NewEnv Itemized {
	incr currentEnv(lmargin)   $lmarginIncrement

	set bullet [Bullet currentEnv(bulleting)]
    }] ; # {}
    set first [NewEnv First {
	set currentEnv(wspfx) [::textutil::repeat::blank $lmarginIncrement]
	set currentEnv(listtype)  bullet
	set currentEnv(bullet) $bullet
    }] ; SetContext $base ; # {}

    set next [NewEnv Next {
	incr currentEnv(lmargin)   $lmarginIncrement
    }] ; SetContext $base ; # {}

    set currentEnv(_first) $first
    set currentEnv(_next)  $next
    set currentEnv(pcount) 0
    SaveEnv
    return
}

proc NewOrderedList {} {
    global currentEnv lmarginIncrement

    # Ordered list - enumeration - enum
    # 1. Base environment provides indentation.
    # 2. First paragraph in a list item.
    # 3. All other paragraphs.

    set base [NewEnv Enumerated {
	incr currentEnv(lmargin)   $lmarginIncrement

	set bullet [EnumBullet currentEnv(enumeration)]
    }] ; # {}
    set first [NewEnv First {
	set currentEnv(wspfx)  [::textutil::repeat::blank $lmarginIncrement]
	set currentEnv(listtype)  enum
	set currentEnv(bullet) $bullet
    }] ; SetContext $base ; # {}

    set next [NewEnv Next {
	incr currentEnv(lmargin)   $lmarginIncrement
    }] ; SetContext $base ; # {}

    set currentEnv(_first) $first
    set currentEnv(_next)  $next
    set currentEnv(pcount) 0
    SaveEnv
    return
}

proc NewDefinitionList {} {
    global currentEnv lmarginIncrement

    # Definition list - terms & definitions
    # 1. Base environment provides indentation.
    # 2. Term environment
    # 3. Definition environment



    set base [NewEnv DefL {
	incr currentEnv(lmargin)   $lmarginIncrement
    }] ; # {}

    set term [NewEnv Term {
	set currentEnv(verbatim) 1
    }] ; SetContext $base ; # {}

    set def [NewEnv Def {
	incr currentEnv(lmargin) $lmarginIncrement
    }] ; SetContext $base ; # {}

    set currentEnv(_term)       $term


















    set currentEnv(_definition) $def
    SaveEnv

















































    return
}

################################################################
# Final layouting.




c_holdBuffers require

proc fmt_postprocess {text} {text_postprocess $text}





################################################################

# Implementations of the formatting commands.

c_pass 1 fmt_plain_text {text} NOP
c_pass 2 fmt_plain_text {text} {text_plain_text $text}

c_pass 1 fmt_manpage_begin {title section version} NOP
c_pass 2 fmt_manpage_begin {title section version} {
    Off
................................................................................
c_pass 1 fmt_section     {name {id {}}} NOP
c_pass 2 fmt_section     {name {id {}}} {CloseParagraph ; Section $name ; return}

c_pass 1 fmt_subsection  {name {id {}}} NOP
c_pass 2 fmt_subsection  {name {id {}}} {CloseParagraph ; Subsection $name ; return}

c_pass 1 fmt_para {} NOP
c_pass 2 fmt_para {} {CloseParagraph ; return}






c_pass 2 fmt_require {pkg {version {}}} NOP
c_pass 1 fmt_require {pkg {version {}}} {
    set result "package require $pkg"
    if {$version != {}} {append result " $version"}
    c_hold require $result
    return
................................................................................
	CloseParagraph [Verbatim]
    }

    Section DESCRIPTION
    return
}

################################################################


c_pass 1 fmt_list_begin {what {hint {}}} NOP
c_pass 2 fmt_list_begin {what {hint {}}} {
    #puts_stderr "<<fmt_list_begin $what>>"

    global currentEnv
    if {[info exists currentEnv(_definition)]} {
	CloseParagraph $currentEnv(_definition)
    } elseif {[info exists currentEnv(pcount)]} {
	if {$currentEnv(pcount) == 0} {CloseParagraph $currentEnv(_first)}
	if {$currentEnv(pcount) >  0} {CloseParagraph $currentEnv(_next)}
	incr currentEnv(pcount)
    } else {
	CloseParagraph
    }
    SaveContext
    NewList $what
    Off

    #puts_stderr "<<fmt_list_begin _____>>"
    return
}

c_pass 1 fmt_list_end {} NOP
c_pass 2 fmt_list_end {} {
    #puts_stderr "<<fmt_list_end>>"

    global currentEnv
    if {[info exists currentEnv(_definition)]} {
	CloseParagraph $currentEnv(_definition)
    } else {
	if {$currentEnv(pcount) == 0} {CloseParagraph $currentEnv(_first)}
	if {$currentEnv(pcount) >  0} {CloseParagraph $currentEnv(_next)}
    }
    RestoreContext

    #puts_stderr "<<fmt_list_end ____>>"
    return
}

c_pass 1 fmt_lst_item {text} NOP
c_pass 2 fmt_lst_item {text} {
    global currentEnv

    #puts_stderr "<<fmt_lst_item \{$text\}>>"

    if {[IsOff]} {
	On
    } else {
	CloseParagraph $currentEnv(_definition)
    }
    Text $text
    CloseParagraph $currentEnv(_term)

    #puts_stderr "<<fmt_lst_item _____>>"
    return
}

c_pass 1 fmt_bullet {} NOP
c_pass 2 fmt_bullet {} {
    global currentEnv
    if {[IsOff]} {On ; return}
    if {$currentEnv(pcount) == 0} {CloseParagraph $currentEnv(_first)}
    if {$currentEnv(pcount) >  0} {CloseParagraph $currentEnv(_next)}
    set  currentEnv(pcount) 0

    return
}

c_pass 1 fmt_enum {} NOP
c_pass 2 fmt_enum {} {
    global currentEnv
    if {[IsOff]} {On ; return}
    if {$currentEnv(pcount) == 0} {CloseParagraph $currentEnv(_first)}
    if {$currentEnv(pcount) >  0} {CloseParagraph $currentEnv(_next)}
    set  currentEnv(pcount) 0

    return
}

c_pass 1 fmt_cmd_def  {command} NOP
c_pass 2 fmt_cmd_def  {command} {fmt_lst_item [fmt_cmd $command]}

c_pass 1 fmt_arg_def {type name {mode {}}} NOP
................................................................................
    return
}

c_pass 1 fmt_tkoption_def {name dbname dbclass} NOP
c_pass 2 fmt_tkoption_def {name dbname dbclass} {
    set    text ""
    append text "Command-Line Switch:\t[fmt_option $name]\n"
    append text "Database Name:\t[strong $dbname]\n"
    append text "Database Class:\t[strong $dbclass]\n"
    fmt_lst_item $text
}

################################################################


c_pass 1 fmt_example_begin {} NOP
c_pass 2 fmt_example_begin {} {
    global currentEnv para
    if {[info exists currentEnv(_definition)]} {
	CloseParagraph $currentEnv(_definition)
    } elseif {[info exists currentEnv(pcount)]} {
	if {$para != {}} {
	    if {$currentEnv(pcount) == 0} {CloseParagraph $currentEnv(_first)}
	    if {$currentEnv(pcount) >  0} {CloseParagraph $currentEnv(_next)}
	    incr currentEnv(pcount)
	}
    } else {
	CloseParagraph
    }
    return
}

c_pass 1 fmt_example_end {} NOP
c_pass 2 fmt_example_end {} {
    global currentEnv para
    set penv {}
    if {[info exists currentEnv(_definition)]} {
	set penv $currentEnv(_definition)
    } elseif {[info exists currentEnv(pcount)]} {
	if {$currentEnv(pcount) == 0} {set penv $currentEnv(_first)}
	if {$currentEnv(pcount) >  0} {set penv $currentEnv(_next)}
	incr currentEnv(pcount)

    }

    if {$penv != {}} {
	# Save current list context, get chosen paragraph context and
	# then create an example context form this. After closing the
	# paragraph we get back our main list context.




	SaveContext
	SetContext $penv
	CloseParagraph [Example]
	RestoreContext
    } else {

	CloseParagraph [Example]
    }
    return
}

c_pass 1 fmt_example {code} NOP
c_pass 2 fmt_example {code} {
    fmt_example_begin
    fmt_plain_text $code
    fmt_example_end
    return
}

c_pass 1 fmt_nl {} NOP
c_pass 2 fmt_nl {} {
    global currentEnv
    if {[info exists currentEnv(_definition)]} {
	CloseParagraph $currentEnv(_definition)
    } else {
	if {$currentEnv(pcount) == 0} {CloseParagraph $currentEnv(_first)}
	if {$currentEnv(pcount) >  0} {CloseParagraph $currentEnv(_next)}
	incr currentEnv(pcount)
    }
    return
}

################################################################
# Visual markup of words and phrases.

proc fmt_arg     {text} {return $text}
proc fmt_cmd     {text} {return $text}
proc fmt_emph	 {text} {em     $text }
proc fmt_opt     {text} {return "?$text?" }
proc fmt_comment {text} {return}
proc fmt_sectref {text {label {}}} {
    if {![string length $label]} {set label $text}
    return "-> $text"
}

proc fmt_syscmd  {text} {strong $text}
proc fmt_method  {text} {return $text}
proc fmt_option  {text} {return $text}
proc fmt_widget  {text} {strong $text}
proc fmt_fun     {text} {strong $text}
proc fmt_type    {text} {strong $text}
proc fmt_package {text} {strong $text}
proc fmt_class   {text} {strong $text}
proc fmt_var     {text} {strong $text}
proc fmt_file    {text} {return "\"$text\""}
proc fmt_namespace     {text} {strong $text}
proc fmt_uri     {text {label {}}} {
    if {$label == {}} {
	# Without label we use the link directly as part of the text.
	return "<URL:$text>"
    } else {
	return "[em $label] <URL:$text>"
    }
}
proc fmt_image {text {label {}}} {
    # text = symbolic name of the image.

    set img [dt_imgdata $text {txt}]
    if {$img eq {}} {
................................................................................
	} else {
	    return "IMAGE: $text $label"
	}
    }

    return $img
}

proc fmt_term    {text} {em     $text}
proc fmt_const   {text} {strong $text}
proc fmt_mdash {} { return " --- " }
proc fmt_ndash {} { return " -- " }

################################################################



|

|
|
|
<
<
|



>


<
|
>

<
|
>

>
>
>

<
<
<
<
|
<



|
<
|
|
|
>
>
|
<
|
<
<
<



|
|
<









>



|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<
<




|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
<




<
<

|
|
|
>

>
|
<

>
|
|
|

|
|
|

|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
<
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
|
<
<

>
>
>


<
>
>

>

<
>
|







 







|
>
>
>
>
>







 







|
>





|
<
<
<
<
<
<
<
<
<
|











|
<
<
<
<
<
<
|







<
<


|
<
<
<
<

|







<

<
<
<
>





<

<
<
<
>







 







|
|



|
>


|
<
<
<
<
<
<
<
<
|
<
<
<
<
<
<


<
<
<
<
<
<
<
<
>
|
>

|
<
<
<
>
>
>
|
|

|

>













|
<
<
<
<
<
<
<
<
<
<
<
<
<
|



|






>
|
|
|
|
|
|
|
|
|
|
|





|







 







>
|
|



|
>
1
2
3
4
5
6
7


8
9
10
11
12
13
14

15
16
17

18
19
20
21
22
23
24




25

26
27
28
29

30
31
32
33
34
35

36



37
38
39
40
41

42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105


106
107
108
109


110
111
112
113
114
115
116
117

118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147

148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199


200
201
202
203
204
205

206
207
208
209
210

211
212
213
214
215
216
217
218
219
...
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
...
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320









321
322
323
324
325
326
327
328
329
330
331
332
333






334
335
336
337
338
339
340
341


342
343
344




345
346
347
348
349
350
351
352
353

354



355
356
357
358
359
360

361



362
363
364
365
366
367
368
369
...
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398








399






400
401








402
403
404
405
406



407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429













430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
...
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
# -*- tcl -*-
#
# -- Engine to convert a doctools document into plain text.
#
# Copyright (c) 2003-2019 Andreas Kupries <andreas_kupries@sourceforge.net>

# # ## ### ##### ######## #############


## Load shared code and modify it to our needs.

dt_source _common.tcl
dt_source _text.tcl

proc c_copyrightsymbol {} {return "(c)"}


# # ## ### ##### ########
## Special manpage contexts


# example     = if present, context is for an example
# exenv       = if present, reference to example variant of current context

proc Example!     {} { CAttrSet example . }
proc Example?  {} { CAttrHas example }

proc NewExample {} {




    return [ContextNew Example { VerbatimOn ; Example! ; Prefix! "| " }] ; # {}

}

proc Example {} {
    if {![CAttrHas exenv]} {

	ContextPush
	set exenv [NewExample]
	ContextPop
	CAttrSet exenv $exenv
	ContextCommit
    }

    return [CAttrGet exenv]



}

proc NewList {what} {
    # List contexts
    # Per list several contexts are required.

    switch -exact -- $what {
	enumerated {NewOrderedList}
	itemized   {NewUnorderedList}
	arguments -
	commands  -
	options   -
	tkoptions -
	definitions {NewDefinitionList}
    }
    return
}

proc NewUnorderedList {} {
    # Itemized list - unordered list - bullet
    # 1. Base context provides indentation.
    # 2. First paragraph in a list item.
    # 3. All other paragraphs.
    ContextPush
    set base [ContextNew Itemized {
	MarginIn
	set bullet [IBullet]
    }] ; # {}

    set first [ContextNew First {
	List! bullet $bullet [BlankMargin]
    }] ; ContextSet $base ; # {}

    set next [ContextNew Next {
	MarginIn
    }] ; ContextSet $base ; # {}

    OUL $first $next
    ContextCommit

    ContextPop
    ContextSet $base



    return
}

proc NewOrderedList {} {
    # Ordered list - enumeration - enum
    # 1. Base context provides indentation.
    # 2. First paragraph in a list item.
    # 3. All other paragraphs.
    ContextPush
    
    set base [ContextNew Enumerated {
	MarginIn
	set bullet [EBullet]
    }] ; # {}

    set first [ContextNew First {
	List! enum $bullet [BlankMargin]
    }] ; ContextSet $base ; # {}

    set next [ContextNew Next {
	MarginIn
    }] ; ContextSet $base ; # {}

    OUL $first $next
    ContextCommit

    ContextPop
    ContextSet $base


    return
}

proc NewDefinitionList {} {


    # Definition list - terms & definitions
    # 1. Base context provides indentation.
    # 2. Term context
    # 3. Definition context
    ContextPush

    set base [ContextNew Definitions {
	MarginIn

    }] ; # {}

    set term [ContextNew Term {
	VerbatimOn
    }] ; ContextSet $base ; # {}

    set def [ContextNew Def {
	MarginIn
    }] ; ContextSet $base ; # {}

    TD $term $def
    ContextCommit
    
    ContextPop
    ContextSet $base
    return
}

# # ## ### ##### ########
##

proc OUL {f n} {
    CAttrSet _first $f
    CAttrSet _next  $n
    CAttrSet pcount 0
}

proc TD {t d} {
    CAttrSet _term       $t
    CAttrSet _definition $d

}

proc IsPara   {} { CAttrHas pcount }
proc Paras    {} { CAttrGet pcount }
proc PAdvance {} { CAttrIncr pcount 1 }
proc PReset   {} { CAttrSet pcount 0 }
proc First    {} { CAttrGet _first }
proc Other    {} { CAttrGet _next }
proc Term     {} { CAttrGet _term }
proc Def      {} { CAttrGet _definition }
proc IsDef    {} { CAttrHas _definition }

# # ## ### ##### ########
##

proc CloseCurrent {{op PAdvance}} {
    if {[IsDef]} {
	# Currently in a definition list.
	CloseParagraph [Def]
    } elseif {[IsPara]} {
	# Currently in an (un)ordered list.
	if {![Paras]} {
	    # No paragraphs yet, this is first in the item
	    if {[CloseParagraph [First]]} $op
	} else {
	    # More paragraphs in the item
	    if {[CloseParagraph [Other]]} $op
	}
    } else {
	# Currently in a regular paragraph
	CloseParagraph
    }
}

proc GetCurrent {{op PAdvance}} {
    if {[IsDef]} {
	# Currently in a definition list.
	return [Def]
    } elseif {[IsPara]} {
	# Currently in an (un)ordered list.
	if {![Paras]} {
	    set res [First]
	} else {
	    set res [Other]
	}
	$op
	return $res
    } else {
	# Currently in a regular paragraph
	return {}
    }
}



# # ## ### ##### ########
##

c_holdBuffers require


rename fmt_initialize   BaseInitialize
proc fmt_initialize {} {BaseInitialize ; TextInitialize ; return}

proc fmt_postprocess {text} { text_postprocess $text }


# # ## ### ##### ########
## Implementations of the formatting commands.

c_pass 1 fmt_plain_text {text} NOP
c_pass 2 fmt_plain_text {text} { text_plain_text $text }

c_pass 1 fmt_manpage_begin {title section version} NOP
c_pass 2 fmt_manpage_begin {title section version} {
    Off
................................................................................
c_pass 1 fmt_section     {name {id {}}} NOP
c_pass 2 fmt_section     {name {id {}}} {CloseParagraph ; Section $name ; return}

c_pass 1 fmt_subsection  {name {id {}}} NOP
c_pass 2 fmt_subsection  {name {id {}}} {CloseParagraph ; Subsection $name ; return}

c_pass 1 fmt_para {} NOP
c_pass 2 fmt_para {} {CloseCurrent ; return}

# NL is an alias of PARA
# See also fmt_example_begin
c_pass 1 fmt_nl {} NOP
c_pass 2 fmt_nl {} {CloseCurrent ; return }

c_pass 2 fmt_require {pkg {version {}}} NOP
c_pass 1 fmt_require {pkg {version {}}} {
    set result "package require $pkg"
    if {$version != {}} {append result " $version"}
    c_hold require $result
    return
................................................................................
	CloseParagraph [Verbatim]
    }

    Section DESCRIPTION
    return
}

# # ## ### ##### ########
##

c_pass 1 fmt_list_begin {what {hint {}}} NOP
c_pass 2 fmt_list_begin {what {hint {}}} {
    #puts_stderr "<<fmt_list_begin $what>>"

    CloseCurrent









    ContextPush
    NewList $what
    Off

    #puts_stderr "<<fmt_list_begin _____>>"
    return
}

c_pass 1 fmt_list_end {} NOP
c_pass 2 fmt_list_end {} {
    #puts_stderr "<<fmt_list_end>>"

    CloseCurrent






    ContextPop

    #puts_stderr "<<fmt_list_end ____>>"
    return
}

c_pass 1 fmt_lst_item {text} NOP
c_pass 2 fmt_lst_item {text} {


    #puts_stderr "<<fmt_lst_item \{$text\}>>"

    if {[IsOff]} { On } else { CloseParagraph [Def] }




    Text $text
    CloseParagraph [Term]

    #puts_stderr "<<fmt_lst_item _____>>"
    return
}

c_pass 1 fmt_bullet {} NOP
c_pass 2 fmt_bullet {} {

    if {[IsOff]} {On ; return}



    CloseCurrent PReset
    return
}

c_pass 1 fmt_enum {} NOP
c_pass 2 fmt_enum {} {

    if {[IsOff]} {On ; return}



    CloseCurrent PReset
    return
}

c_pass 1 fmt_cmd_def  {command} NOP
c_pass 2 fmt_cmd_def  {command} {fmt_lst_item [fmt_cmd $command]}

c_pass 1 fmt_arg_def {type name {mode {}}} NOP
................................................................................
    return
}

c_pass 1 fmt_tkoption_def {name dbname dbclass} NOP
c_pass 2 fmt_tkoption_def {name dbname dbclass} {
    set    text ""
    append text "Command-Line Switch:\t[fmt_option $name]\n"
    append text "Database Name:\t[Strong $dbname]\n"
    append text "Database Class:\t[Strong $dbclass]\n"
    fmt_lst_item $text
}

# # ## ### ##### ########
##

c_pass 1 fmt_example_begin {} NOP
c_pass 2 fmt_example_begin {} { CloseCurrent ; return }















c_pass 1 fmt_example_end {} NOP
c_pass 2 fmt_example_end {} {








    TextTrimLeadingSpace
    
    set penv [GetCurrent]
    if {$penv != {}} {
	# In a list we save the current list context, activate the



	# proper paragraph context and create its example
	# variant. After closing the paragraph using the example we
	# restore and reactivate the list context.
	ContextPush
	ContextSet $penv
	CloseParagraph [Example]
	ContextPop
    } else {
	# In a regular paragraph we simple close the example
	CloseParagraph [Example]
    }
    return
}

c_pass 1 fmt_example {code} NOP
c_pass 2 fmt_example {code} {
    fmt_example_begin
    fmt_plain_text $code
    fmt_example_end
    return
}

# # ## ### ##### ########













## Visual markup of words and phrases.

proc fmt_arg     {text} { return $text }
proc fmt_cmd     {text} { return $text }
proc fmt_emph	 {text} { Em     $text }
proc fmt_opt     {text} { return "?$text?" }
proc fmt_comment {text} { return }
proc fmt_sectref {text {label {}}} {
    if {![string length $label]} {set label $text}
    return "-> $text"
}

proc fmt_syscmd  {text} { Strong $text }
proc fmt_method  {text} { return $text }
proc fmt_option  {text} { return $text }
proc fmt_widget  {text} { Strong $text }
proc fmt_fun     {text} { Strong $text }
proc fmt_type    {text} { Strong $text }
proc fmt_package {text} { Strong $text }
proc fmt_class   {text} { Strong $text }
proc fmt_var     {text} { Strong $text }
proc fmt_file    {text} { return "\"$text\"" }
proc fmt_namespace     {text} { Strong $text }
proc fmt_uri     {text {label {}}} {
    if {$label == {}} {
	# Without label we use the link directly as part of the text.
	return "<URL:$text>"
    } else {
	return "[Em $label] <URL:$text>"
    }
}
proc fmt_image {text {label {}}} {
    # text = symbolic name of the image.

    set img [dt_imgdata $text {txt}]
    if {$img eq {}} {
................................................................................
	} else {
	    return "IMAGE: $text $label"
	}
    }

    return $img
}

proc fmt_term    {text} { Em     $text }
proc fmt_const   {text} { Strong $text }
proc fmt_mdash {} { return " --- " }
proc fmt_ndash {} { return " -- " }

# # ## ### ##### ########
return

Changes to modules/doctools/mpformats/fmt.wiki.

1
2
3
4
5
6
7
8
9
10
11
12
..
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
...
120
121
122
123
124
125
126

127

128
129
130
131
132
133
134
...
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# -*- tcl -*-
#
# fmt.nroff
#
# (c) 2002 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# [expand] definitions to convert a tcl based manpage definition into
# Wiki markup.
#
################################################################

dt_source _common.tcl   ; # Shared code
................................................................................
		lappend lines [string map {[ [[ ] ]]} [string trim $line]]
	    } else {
		# Everything else
		lappend lines [string map {[ [[ ] ]]} [string trimright $line]]
	    }
	}
    }
    set wiki [join $lines \n]\n

    regsub {^[ ]+} $wiki {} wiki
    return $wiki
}


################################################################
## Backend for *roff markup

c_pass 1 fmt_manpage_begin {title section version} NOP
................................................................................
    }
    return $wiki
}

proc fmt_section    {name {id {}}} {return "\n\n**$name**\n\n"}
proc fmt_subsection {name {id {}}} {return "\n\n***$name***\n\n"}


proc fmt_para    {}     {return \n}


c_pass 2 fmt_require {pkg {version {}}} NOP
c_pass 1 fmt_require {pkg {version {}}} {
    if {$version != {}} {set version " $version"}
    # @mdgen NODEP: '''
    c_hold synopsis "package require '''$pkg$version'''\n"
}
................................................................................
proc fmt_example {code} {
    return "$code"
}

proc emph    {text} {return ''$text''}
proc strong  {text} {return '''$text'''}

proc fmt_nl      {}     {return ""}
proc fmt_arg     {text} {return ''$text''}
proc fmt_cmd     {text} {return '''$text'''}
proc fmt_emph    {text} {return ''$text''}
proc fmt_opt     {text} {return ?$text?}
proc fmt_comment {text} {return {}}
proc fmt_sectref {text {label {}}} {
    if {![string length $label]} {set label $text}

<
<
<
|







 







|


|







 







>

>







 







<







1



2
3
4
5
6
7
8
9
..
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
...
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
...
218
219
220
221
222
223
224

225
226
227
228
229
230
231
# -*- tcl -*-



# (c) 2002-2019 Andreas Kupries <andreas_kupries@sourceforge.net>
#
# [expand] definitions to convert a tcl based manpage definition into
# Wiki markup.
#
################################################################

dt_source _common.tcl   ; # Shared code
................................................................................
		lappend lines [string map {[ [[ ] ]]} [string trim $line]]
	    } else {
		# Everything else
		lappend lines [string map {[ [[ ] ]]} [string trimright $line]]
	    }
	}
    }
    set wiki [join $lines \n]

    regsub {^[ ]+} $wiki {} wiki
    return [string trim $wiki]\n
}


################################################################
## Backend for *roff markup

c_pass 1 fmt_manpage_begin {title section version} NOP
................................................................................
    }
    return $wiki
}

proc fmt_section    {name {id {}}} {return "\n\n**$name**\n\n"}
proc fmt_subsection {name {id {}}} {return "\n\n***$name***\n\n"}

# TODO: Modify behaviour depending on context (normal vs list)
proc fmt_para    {}     {return \n}
proc fmt_nl      {}     {return \n}

c_pass 2 fmt_require {pkg {version {}}} NOP
c_pass 1 fmt_require {pkg {version {}}} {
    if {$version != {}} {set version " $version"}
    # @mdgen NODEP: '''
    c_hold synopsis "package require '''$pkg$version'''\n"
}
................................................................................
proc fmt_example {code} {
    return "$code"
}

proc emph    {text} {return ''$text''}
proc strong  {text} {return '''$text'''}


proc fmt_arg     {text} {return ''$text''}
proc fmt_cmd     {text} {return '''$text'''}
proc fmt_emph    {text} {return ''$text''}
proc fmt_opt     {text} {return ?$text?}
proc fmt_comment {text} {return {}}
proc fmt_sectref {text {label {}}} {
    if {![string length $label]} {set label $text}

Changes to modules/doctools/mpformats/idx.nroff.

1
2
3
4
5
6
7
8
9
10
11
..
35
36
37
38
39
40
41




42
43
44
45
46
47
48
..
55
56
57
58
59
60
61

62
63



















64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# -*- tcl -*-
#
# $Id: idx.nroff,v 1.7 2009/01/30 04:56:47 andreas_kupries Exp $
#
# Engine to convert a docidx document into nroff.
#
# Copyright (c) 2003 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
######################################################################

................................................................................

#proc fmt_plain_text {text} {if {$text != {}} {return \n} else {return {}}}
proc fmt_plain_text {text} {return {}}

################################################################
## Backend for NROFF markup





global prec ok haskey
set    prec   ""
set    ok     0
set    haskey 0

proc fmt_index_begin     {label title}      {
    global prec ok
................................................................................
    append  hdr [nr_title "\"[string trimleft $label :]\" n"]\n
    append  hdr [nr_read man.macros]\n
    append  hdr [nr_bolds]\n
    append  hdr [nr_section INDEX]\n
    append  hdr $title[nr_in]\n
    return $hdr
}

proc fmt_index_end {}          {return [nr_out]}
proc fmt_key       {text}      {



















    global haskey
    set res ""
    if {$haskey} {append res [nr_out]\n}
    append res $text[nr_in]\n
    set haskey 1
    return $res
}
proc fmt_manpage   {file label} {return [nr_blt [nr_bld]$file[nr_rst]]\n$label\n}
proc fmt_url       {url label}  {return [nr_blt [nr_bld]$url[nr_rst]]\n$label\n}

proc fmt_comment {text} {
    global prec ok
    if {$ok} {return [nr_comment $text]}
    append prec $text \n
    return {}
}

################################################################

<
<
<







 







>
>
>
>







 







>
|
<
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







|
|





|



1



2
3
4
5
6
7
8
..
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
..
56
57
58
59
60
61
62
63
64

65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# -*- tcl -*-



# Engine to convert a docidx document into nroff.
#
# Copyright (c) 2003 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
######################################################################

................................................................................

#proc fmt_plain_text {text} {if {$text != {}} {return \n} else {return {}}}
proc fmt_plain_text {text} {return {}}

################################################################
## Backend for NROFF markup

global map ; array set map {}
global key ; set key {}
global max ; set max 0

global prec ok haskey
set    prec   ""
set    ok     0
set    haskey 0

proc fmt_index_begin     {label title}      {
    global prec ok
................................................................................
    append  hdr [nr_title "\"[string trimleft $label :]\" n"]\n
    append  hdr [nr_read man.macros]\n
    append  hdr [nr_bolds]\n
    append  hdr [nr_section INDEX]\n
    append  hdr $title[nr_in]\n
    return $hdr
}

proc fmt_index_end {} {

    global map
    foreach key [lsort [array names map]] {
	append r $key [nr_in] \n
	foreach ref  $map($key) {
	foreach {file label} $ref break
	    append r [Man $file $label]
	}
	append r [nr_out] \n
    }
    
    append r [nr_out]
    return $r
}

proc fmt_key     {text}       { global key     ; set key $text ; return }
proc fmt_manpage {file label} { global map key ; lappend map($key) [list $file $label] ; return }
proc fmt_url     {url  label} { global map key ; lappend map($key) [list $url  $label] ; return }

proc Key {text} {
    global haskey
    set res ""
    if {$haskey} {append res [nr_out]\n}
    append res $text[nr_in]\n
    set haskey 1
    return $res
}

proc Man {file label} {return [nr_blt [nr_bld]$file[nr_rst]]\n$label\n}

proc fmt_comment {text} {
    global prec ok
    if {$ok} { return [nr_comment $text] }
    append prec $text \n
    return
}

################################################################

Changes to modules/doctools/mpformats/idx.text.

1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
..
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50



51
52
53

54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

70
71
72

73
74

75
76
77
78
79
# -*- tcl -*-
#
# $Id: idx.text,v 1.4 2010/06/08 19:32:36 andreas_kupries Exp $
#
# Engine to convert a docidx document into plain text.
#
# Copyright (c) 2003 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
######################################################################

dt_source _idx_common.tcl
dt_source _text.tcl

proc c_copyrightsymbol {} {return "(c)"}

######################################################################
# Conversion specification.
# One-pass processing.

rename idx_postprocess {}
................................................................................
## Backend for plain text markup

global map ; array set map {}
global key ; set key {}
global max ; set max 0

proc fmt_index_begin {label title} {
    TextInitialize

    global map ; unset map ; array set map {}
    global key ; set key {}
    global max ; set max 0

    set hdr ""
    append hdr "Index [textutil::string::uncap [c_provenance]]\n\n"

    if {($label != {}) && ($title != {})} {
	set title "$label -- $title"
    } elseif {$label != {}} {
	set title $label
    } elseif {$title != {}} {
	 # title is set
    }
    append hdr $title \n
    append hdr [textutil::repeat::strRepeat = [string length $title]]
    Text  $hdr



    CloseParagraph [Verbatim]
    return
}

proc fmt_index_end {} {
    global map max

    set break 0
    set rmargin [expr {80 - $max}]
    if {$rmargin < 20} {set rmargin 20}
    incr max
    set pfx [textutil::repeat::blank $max]

    foreach key [lsort [array names map]] {
	set   opfx $key[string range $pfx [string length $key] end]
	Text $opfx[textutil::adjust::indent [textutil::adjust::adjust [join $map($key) ", "] -length $rmargin] $pfx 1]
	CloseParagraph [Verbatim]
    }
    return
}

proc fmt_key {text} {
    global key max ; set key $text
    if {[string length $text] > $max} {set max [string length $text]}

    return
}

proc fmt_manpage {file label} {global map key ; lappend map($key) $file ; return}
proc fmt_url     {url label}  {global map key ; lappend map($key) $url ; return}
proc fmt_comment {text}       {return}

################################################################

<
<
<


|






>







 







<
<




<
<
<







|
|
|
>
>
>



>



|
|
|
|
|
|
|
|
<




>


<
>


>





1



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
..
23
24
25
26
27
28
29


30
31
32
33



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

62
63
64
65
66
67
68

69
70
71
72
73
74
75
76
77
# -*- tcl -*-



# Engine to convert a docidx document into plain text.
#
# Copyright (c) 2003-2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
######################################################################

dt_source _idx_common.tcl
dt_source _text.tcl

proc c_copyrightsymbol {} {return "(c)"}

######################################################################
# Conversion specification.
# One-pass processing.

rename idx_postprocess {}
................................................................................
## Backend for plain text markup

global map ; array set map {}
global key ; set key {}
global max ; set max 0

proc fmt_index_begin {label title} {


    global map ; unset map ; array set map {}
    global key ; set key {}
    global max ; set max 0




    if {($label != {}) && ($title != {})} {
	set title "$label -- $title"
    } elseif {$label != {}} {
	set title $label
    } elseif {$title != {}} {
	 # title is set
    }

    TextInitialize

    lappend   hdr "Index [Provenance]"
    SectTitle hdr $title
    Text [Compose hdr]
    CloseParagraph [Verbatim]
    return
}

proc fmt_index_end {} {
    global map max

    set rmargin [RMargin $max]

    incr max
    set blank [Blank $max] ;# indent

    foreach key [lsort [array names map]] {
	set keys [join $map($key) ", "]
	Text [InFlow $keys $rmargin [ReHead $blank $key] $blank]

	CloseParagraph [Verbatim]
    }
    return
}

proc fmt_key {text} {
    global key max ; set key $text

    MaxLen max $text
    return
}

proc fmt_manpage {file label} {global map key ; lappend map($key) $file ; return}
proc fmt_url     {url label}  {global map key ; lappend map($key) $url  ; return}
proc fmt_comment {text}       {return}

################################################################

Changes to modules/doctools/mpformats/toc.html.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
..
49
50
51
52
53
54
55
56


57




58
59

60
61
62

63
64
65
66
67
68
69
70
71
72
73



74
75
76
























































77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# -*- tcl -*-
#
# $Id: toc.html,v 1.6 2005/09/28 04:51:19 andreas_kupries Exp $
#
# Engine to convert a doctoc document into HTML.
#
# Copyright (c) 2003-2018 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
######################################################################

dt_source _toc_common.tcl
dt_source _html.tcl

................................................................................

rename toc_postprocess {}
rename fmt_postprocess toc_postprocess

proc fmt_plain_text {text} {return {}}

################################################################
## Backend for TMML markup

global firstitem   ; set firstitem   1
global maintable   ; set maintable   1
global even        ; set even        1

proc fmt_toc_begin     {label title}      {
    set hdr ""
    if {![Get raw]} {
	append  hdr "[markup {<!DOCTYPE html>}]"
	append  hdr "[markup <html><head>]\n"
	append  hdr "[markup <title>] $label [markup </title>]\n"
................................................................................
    # Engine parameter - insert 'header'
    if {[set header [Get header]] != {}} {
	lappend map @TITLE@ $label
	set header [string map $map $header]
	append hdr [markup $header]\n
    }

    append  hdr "[markup <h3>] $label [markup </h3>]\n"


    append  hdr "[markup <hr><dl><dt><h2>] $title [markup </h2><dd>]\n"




    return $hdr
}

proc fmt_toc_end       {}           {
    global maintable
    set text "\n"

    if {$maintable} {append text [tag/ table]\n}

    # Engine parameter - insert 'footer'
    set footer [Get footer]
    if {$footer != {}} {set footer \n[markup ${footer}]\n}

    append text [tag /dl][tag hr]${footer}

    if {![Get raw]} {
	append text [tag/ body][tag/ html]\n
    }



    return $text
}

























































proc Anchor {text} {
    set anchor [regsub -all {[^a-zA-Z0-9]} [string tolower $text] {_}]
    set anchor [regsub -all {__+} $anchor _]
    return $anchor
}

proc fmt_division_start {title symfile} {
    global maintable ; set maintable 0
    
    if {$symfile ne ""} {
	set title [markup "<a href=\"[dt_fmap $symfile]\">"]$title[markup </a>]
    }

    return \n[markup "<dl><dt><a name='[Anchor $title]'>"]$title[markup <dd>]
}
proc fmt_division_end   {}           {
    global firstitem ; set firstitem 1
    global even      ; set even 1
    return [markup </table></dl>]
}
proc fmt_item          {file label desc} {
    global firstitem even
    set text ""

    if {$firstitem} {
	set firstitem 0
	append text \n[markup "<table class=\"#doctools_toc\">"]\n
    }

    if {$even} {
	append text [markup "<tr class=\"#doctools_toceven\" >"]\n
    } else {
	append text [markup "<tr class=\"#doctools_tocodd\"  >"]\n
    }
    set even [expr {1-$even}]
    append text [markup "<td class=\"#doctools_tocleft\" >"][markup "<a name='[Anchor $label]'><a href=\"[dt_fmap $file]\">"]$label[tag/ a][tag/ td]\n
    append text [markup "<td class=\"#doctools_tocright\">"]${desc}[tag /td]\n
    append text [tag/ tr]\n
    return $text
}
proc fmt_comment       {text}       {ht_comment $text}

################################################################

global    __var
array set __var {
    meta   {}
    header {}

<
<
<


|







 







|
<
<
<
<







 







|
>
>
|
>
>
>
>


>
|
<

>
|



|

|


|

>
>
>



>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>






|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|







1



2
3
4
5
6
7
8
9
10
11
..
16
17
18
19
20
21
22
23




24
25
26
27
28
29
30
..
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# -*- tcl -*-



# Engine to convert a doctoc document into HTML.
#
# Copyright (c) 2003-2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
######################################################################

dt_source _toc_common.tcl
dt_source _html.tcl

................................................................................

rename toc_postprocess {}
rename fmt_postprocess toc_postprocess

proc fmt_plain_text {text} {return {}}

################################################################
## Backend for HTML markup





proc fmt_toc_begin {label title} {
    set hdr ""
    if {![Get raw]} {
	append  hdr "[markup {<!DOCTYPE html>}]"
	append  hdr "[markup <html><head>]\n"
	append  hdr "[markup <title>] $label [markup </title>]\n"
................................................................................
    # Engine parameter - insert 'header'
    if {[set header [Get header]] != {}} {
	lappend map @TITLE@ $label
	set header [string map $map $header]
	append hdr [markup $header]\n
    }

    append hdr [markup <h3>]
    append hdr $label
    append hdr [markup </h3>] \n
    append hdr [markup <hr><dl><dt><h2>]
    append hdr $title
    append hdr [markup </h2></dt><dd>] \n
    LSetup
    IPush
    return $hdr
}

proc fmt_toc_end {} {

    set text "\n"
    # Close table of items since last division
    if {[Items]} { append text [tag/ table] \n }

    # Engine parameter - insert 'footer'
    set footer [Get footer]
    if {$footer != {}} {set footer \n[markup $footer]\n}

    append text [tag /dd] [tag /dl] [tag hr] $footer

    if {![Get raw]} {
	append text [tag/ body] [tag/ html] \n
    }

    IPop ; # Assert items == {}
    LOut ; # Assert level == 0
    return $text
}

proc fmt_division_start {title symfile} {
    # Close table of items before the division.  Reset counter for
    # items between end of this and following division.
    if {[Items]} { append r [tag/ table] \n ; IReset }
        
    if {$symfile ne ""} {
	append t [markup "<a href=\"[dt_fmap $symfile]\">"]
	append t $title
	append t [markup </a>]
	set title $t
    }

    append r \n [markup "<dl><dt><a name='[Anchor $title]'>"]
    append r $title
    append r [markup </dt><dd>]

    LIn
    IPush
    return $r
}

proc fmt_division_end {} {
    if {[Items]} { append t [tag/ table] }
    append t [tag /dl]
    Even!
    IPop
    LOut
    return $t
}

proc fmt_item {file label desc} {
    if {[IFirst]} { append text \n[markup "<table class=\"#doctools_toc\">"]\n }
    INext

    if {[Even]} {
	append text [markup "<tr class=\"#doctools_toceven\" >"]\n
    } else {
	append text [markup "<tr class=\"#doctools_tocodd\"  >"]\n
    }
    EFlip
    append text [markup "<td class=\"#doctools_tocleft\" >"]
    append text [markup "<a name='[Anchor $label]'><a href=\"[dt_fmap $file]\">"]
    append text $label
    append text [tag/ a][tag/ td]\n
    append text [markup "<td class=\"#doctools_tocright\">"]${desc}[tag /td]\n
    append text [tag/ tr]\n
    return $text
}

proc fmt_comment {text} {ht_comment $text}

################################################################

proc Term {text} { return [tag dt]${text}[tag /dt] }
proc Def  {text} { return [tag dd]${text}[tag /dd] }

proc Anchor {text} {
    set anchor [regsub -all {[^a-zA-Z0-9]} [string tolower $text] {_}]
    set anchor [regsub -all {__+} $anchor _]
    return $anchor
}

################################################################

global __level
global __items  ; set __items  {}
global __istack ; set __istack {}
global __even   ; set __even   1

proc Even! {} { global __even ; set __even 1 }
proc Even  {} { global __even ; set __even }
proc EFlip {} { global __even ; set __even [expr {1 - $__even}] }
    

proc LSetup {} { global __level ; set  __level  0 }
proc LIn    {} { global __level ; incr __level  1 }
proc LOut   {} { global __level ; incr __level -1 }
proc LTop   {} { global __level ; expr {!$__level } }

proc IReset {} { global __items ; set  __items 0 }
proc INext  {} { global __items ; incr __items }
proc IFirst {} { global __items ; expr {!$__items} }
proc Items  {} { global __items ; set __items }

proc IPush {} {
    global  __istack  __items
    lappend __istack $__items
    set __items 0
    return
}

proc IPop {} {
    global __items __istack
    set __items  [lindex   $__istack end]
    set __istack [lreplace $__istack end end]
    return
}

################################################################

global    __var
array set __var {
    meta   {}
    header {}

Changes to modules/doctools/mpformats/toc.nroff.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# -*- tcl -*-
#
# $Id: toc.nroff,v 1.7 2009/01/30 04:56:47 andreas_kupries Exp $
#
# Engine to convert a doctoc document into nroff.
#
# Copyright (c) 2003 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
######################################################################

dt_source _toc_common.tcl
dt_source _nroff.tcl

................................................................................
    append  hdr [nr_read man.macros]\n
    append  hdr [nr_bolds]\n
    append  hdr [nr_section CONTENTS]\n
    append  hdr $title[nr_in]\n
    return $hdr
}
proc fmt_toc_end        {}           {}
proc fmt_division_start {title symfile} {return $title[nr_in]\n}
proc fmt_division_end   {}              {return [nr_out]\n}
proc fmt_item           {file label desc} {return "[nr_blt [nr_bld]$label[nr_rst]]\n[nr_ul]$file[nr_rst]: $desc\n"}

proc fmt_comment {text} {
    global prec ok
    if {$ok} {return [nr_comment $text]}
    append prec $text \n
    return {}
}

################################################################

<
<
<


|







 







|











1



2
3
4
5
6
7
8
9
10
11
..
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# -*- tcl -*-



# Engine to convert a doctoc document into nroff.
#
# Copyright (c) 2003-2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
######################################################################

dt_source _toc_common.tcl
dt_source _nroff.tcl

................................................................................
    append  hdr [nr_read man.macros]\n
    append  hdr [nr_bolds]\n
    append  hdr [nr_section CONTENTS]\n
    append  hdr $title[nr_in]\n
    return $hdr
}
proc fmt_toc_end        {}           {}
proc fmt_division_start {title symfile} {return [nr_blt $title][nr_in]\n}
proc fmt_division_end   {}              {return [nr_out]\n}
proc fmt_item           {file label desc} {return "[nr_blt [nr_bld]$label[nr_rst]]\n[nr_ul]$file[nr_rst]: $desc\n"}

proc fmt_comment {text} {
    global prec ok
    if {$ok} {return [nr_comment $text]}
    append prec $text \n
    return {}
}

################################################################

Changes to modules/doctools/mpformats/toc.text.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

36
37
38

39
40
41














42
43
44
45

46
47

48







49
50

51
52
53
54

55



56
57
58
59
60
61
62
63
64
65
66
67
68



69
70
71
72



73
74
75



76
77


78
79
80

81
82
83
84
85
86
87


88
# -*- tcl -*-
#
# $Id: toc.text,v 1.8 2010/06/08 19:13:53 andreas_kupries Exp $
#
# Engine to convert a doctoc document into plain text.
#
# Copyright (c) 2003 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
######################################################################

dt_source _toc_common.tcl
dt_source _text.tcl

................................................................................

rename toc_postprocess {}
rename text_postprocess toc_postprocess

proc fmt_plain_text {text} {return {}}

################################################################
## Backend for TMML markup

global seclist ; set seclist {}
global max     ; set max 0

proc fmt_comment       {text}        {return}
proc fmt_toc_end       {}            {return}
proc fmt_toc_begin     {label title} {
    TextInitialize

    set     title "$label -- $title"

    set     hdr ""
    append  hdr "Table of contents [textutil::string::uncap [c_provenance]]\n"
    append  hdr \n

    append  hdr $title \n
    append  hdr [textutil::repeat::strRepeat = [string length $title]]
    Text   $hdr














    CloseParagraph [Verbatim]
}
proc fmt_division_start {title symfile} {
    global lmarginIncrement currentEnv

    global seclist ; set seclist {}
    global max     ; set max 0









    Text $title\n
    Text [textutil::repeat::strRepeat - [string length $title]]

    CloseParagraph [Verbatim]
    SaveContext
    NewEnv Division {
	incr currentEnv(lmargin) $lmarginIncrement

    }



    return
}
proc fmt_division_end   {}      {
    global seclist max

    if {[llength $seclist] > 0} {
	set break 0
	incr max 2
	set  rmargin [expr {80 - $max}]
	if {$rmargin < 20} {set rmargin 20}
	set pfx [textutil::blank $max]
	incr max -1
	set fpfx "[textutil::repeat::strRepeat . $max] "




	foreach {file desc} $seclist {
	    set   opfx "$file [string range $fpfx [string length $file] end]"
	    Text $opfx[textutil::adjust::indent [textutil::adjust::adjust $desc -length $rmargin] $pfx 1]



	    CloseParagraph [Verbatim]
	}
	set seclist {}



    }



    RestoreContext
    return
}

proc fmt_item {file label desc} {
    global seclist max
    lappend seclist $file $desc
    if {[string length $file] > $max} {set max [string length $file]}
    return
}



################################################################

<
<
<


|







 







|




|
|
|
|
|
<
>
|
|
<
>
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
<
<
>
|
<
>
|
>
>
>
>
>
>
>
|
<
>

<
<
<
>
|
>
>
>


<
<

<
<
<
<
<
<
<
<
>
>
>

<
<
<
>
>
>
|
|
<
>
>
>
|

>
>
|


>



|



>
>

1



2
3
4
5
6
7
8
9
10
11
..
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

32
33
34

35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54


55
56

57
58
59
60
61
62
63
64
65
66

67
68



69
70
71
72
73
74
75


76








77
78
79
80



81
82
83
84
85

86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# -*- tcl -*-



# Engine to convert a doctoc document into plain text.
#
# Copyright (c) 2003-2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
######################################################################

dt_source _toc_common.tcl
dt_source _text.tcl

................................................................................

rename toc_postprocess {}
rename text_postprocess toc_postprocess

proc fmt_plain_text {text} {return {}}

################################################################
## Backend for TEXT markup

global seclist ; set seclist {}
global max     ; set max 0

proc InitSections {} {
    global seclist ; set seclist {} ;# list of items in this division
    global max     ; set max 0      ;# length of longest file path in the division
    return
}


proc ProcessSections {} {
    global seclist max

    
    if {![llength $seclist]} {
	# Division is empty, nothing to do
	return
    }

    incr max 2  ; set rmargin [RMargin  $max]
    incr max -1 ; set blank   [Blank    $max]
    incr max -1 ; set dots   "[Repeat . $max] "

    # Example wrt max handling, blank, and dots:
    #
    # string = "longest",  max = 7 +2 => max = lmargin = 9
    # blank  = "________" (max = 8, using _ as visible placeholder)
    # dots   = "......._" (max = 7 (dots))
    
    foreach {file desc} $seclist {
	Text [InFlow $desc $rmargin [ReHead $dots "$file "] $blank]
	CloseParagraph [Verbatim]
    }



    set seclist {}

    return
}

proc fmt_toc_begin {label title} {
    set title "$label -- $title"
    
    TextInitialize
    lappend   hdr "Table of contents [Provenance]"
    lappend   hdr ""
    SectTitle hdr $title

    Text [Compose hdr]    
    CloseParagraph [Verbatim]



    return
}

proc fmt_toc_end {} {
    ProcessSections
    return
}











proc fmt_division_start {title symfile} {
    # We may have sections before the new division
    ProcessSections




    InitSections
    SubsectTitle hdr $title
    Text [Compose hdr]
    CloseParagraph [Verbatim]


    ContextPush ;# Ref (a)
    ContextNew Division { MarginIn }
    return
}

proc fmt_division_end   {}      {
    ProcessSections
    ContextPop ;# Ref (a)
    return
}

proc fmt_item {file label desc} {
    global  seclist max
    lappend seclist $file $desc
    MaxLen max $file
    return
}

proc fmt_comment {text} {return}

################################################################

Changes to modules/doctools/mpformats/toc.tmml.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
25
26
27
28
29
30
31
32
33
34
35
36
37
# -*- tcl -*-
#
# $Id: toc.tmml,v 1.6 2005/09/28 04:51:19 andreas_kupries Exp $
#
# Engine to convert a doctoc document into TMML.
#
# Copyright (c) 2003 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
# See also <URL: http://tmml.sourceforge.net>
#
######################################################################

dt_source _toc_common.tcl
................................................................................
proc fmt_plain_text {text} {if {$text != {}} {return \n} else {return {}}}

################################################################
## Backend for TMML markup

proc fmt_toc_begin      {label title}     {sequence [start manual package $label] [wrap $title title]}
proc fmt_toc_end        {}                {end manual}
proc fmt_division_start {title symfile}   {sequence [start division] [wrap $text title]}
proc fmt_division_end   {}                {end   division}
proc fmt_item           {file label desc} {emptyElement subdoc href [dt_fmap $file]}
proc fmt_comment        {text}            {xmlComment $text}

################################################################

<
<
<


|







 







|





1



2
3
4
5
6
7
8
9
10
11
..
22
23
24
25
26
27
28
29
30
31
32
33
34
# -*- tcl -*-



# Engine to convert a doctoc document into TMML.
#
# Copyright (c) 2003-2019 Andreas Kupries <andreas_kupries@sourceforge.net>
# Freely redistributable.
#
# See also <URL: http://tmml.sourceforge.net>
#
######################################################################

dt_source _toc_common.tcl
................................................................................
proc fmt_plain_text {text} {if {$text != {}} {return \n} else {return {}}}

################################################################
## Backend for TMML markup

proc fmt_toc_begin      {label title}     {sequence [start manual package $label] [wrap $title title]}
proc fmt_toc_end        {}                {end manual}
proc fmt_division_start {title symfile}   {sequence [start division] [wrap $title title]}
proc fmt_division_end   {}                {end   division}
proc fmt_item           {file label desc} {emptyElement subdoc href [dt_fmap $file]}
proc fmt_comment        {text}            {xmlComment $text}

################################################################

Added modules/doctools/tests/desc/09.

Added modules/doctools/tests/desc/10.

Added modules/doctools/tests/desc/11.

Added modules/doctools/tests/desc/12.

Added modules/doctools/tests/desc/13.

Added modules/doctools/tests/desc/14.

Added modules/doctools/tests/desc/15.

Changes to modules/doctools/tests/html/05.

1
2
3
4
5
6
7
8

<!DOCTYPE html><html><head>
<title>BASIC - </title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
<








1
2
3
4
5
6
7

<!DOCTYPE html><html><head>
<title>BASIC - </title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }

Changes to modules/doctools/tests/html/08.

1
2
3
4
5
6
7
8

<!DOCTYPE html><html><head>
<title>ALL - ..THE_MODULE..</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
<








1
2
3
4
5
6
7

<!DOCTYPE html><html><head>
<title>ALL - ..THE_MODULE..</title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }

Added modules/doctools/tests/html/09.













































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<!DOCTYPE html><html><head>
<title>TEST - </title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
	color:	 	black;
    }
    DIV.doctools {
	margin-left:	10%;
	margin-right:	10%;
    }
    DIV.doctools H1,DIV.doctools H2 {
	margin-left:	-5%;
    }
    H1, H2, H3, H4 {
	margin-top: 	1em;
	font-family:	sans-serif;
	font-size:	large;
	color:		#005A9C;
	background: 	transparent;
	text-align:		left;
    }
    H1.doctools_title {
	text-align: center;
    }
    UL,OL {
	margin-right: 0em;
	margin-top: 3pt;
	margin-bottom: 3pt;
    }
    UL LI {
	list-style: disc;
    }
    OL LI {
	list-style: decimal;
    }
    DT {
	padding-top: 	1ex;
    }
    UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
	font:		normal 12pt/14pt sans-serif;
	list-style:	none;
    }
    LI.doctools_section, LI.doctools_subsection {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding: 	0em;
    }
    PRE {
	display: 	block;
	font-family:	monospace;
	white-space:	pre;
	margin:		0%;
	padding-top:	0.5ex;
	padding-bottom:	0.5ex;
	padding-left:	1ex;
	padding-right:	1ex;
	width:		100%;
    }
    PRE.doctools_example {
	color: 		black;
	background: 	#f5dcb3;
	border:		1px solid black;
    }
    UL.doctools_requirements LI, UL.doctools_syntax LI {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding:	0em;
    }
    DIV.doctools_synopsis {
	color: 		black;
	background: 	#80ffff;
	border:		1px solid black;
	font-family:	serif;
	margin-top: 	1em;
	margin-bottom: 	1em;
    }
    UL.doctools_syntax {
	margin-top: 	1em;
	border-top:	1px solid black;
    }
    UL.doctools_requirements {
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'html'
   -->
<!-- Copyright &amp;copy; .COPYRIGHT.
   -->
<!-- TEST.z
   -->
<body><div class="doctools">
<h1 class="doctools_title">TEST(z) 3.14.15.926 .MODULE. &quot;&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>TEST -</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>lorem</p>
<pre class="doctools_example">
1 lorem ipsum dolores
</pre>
<p>ipsum</p>
<pre class="doctools_example"> 2 lorem ipsum dolores </pre>
<p>dolores</p>
<pre class="doctools_example">
3 lorem ipsum dolores
</pre>
<p>lorem</p>
<pre class="doctools_example"> 4 lorem ipsum dolores
</pre>
<p>ipsum</p>
<pre class="doctools_example">
5 lorem ipsum dolores </pre>
<p>dolores</p>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; .COPYRIGHT.</p>
</div>
</div></body></html>

Added modules/doctools/tests/html/10.





























































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<!DOCTYPE html><html><head>
<title>test-itemized - </title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
	color:	 	black;
    }
    DIV.doctools {
	margin-left:	10%;
	margin-right:	10%;
    }
    DIV.doctools H1,DIV.doctools H2 {
	margin-left:	-5%;
    }
    H1, H2, H3, H4 {
	margin-top: 	1em;
	font-family:	sans-serif;
	font-size:	large;
	color:		#005A9C;
	background: 	transparent;
	text-align:		left;
    }
    H1.doctools_title {
	text-align: center;
    }
    UL,OL {
	margin-right: 0em;
	margin-top: 3pt;
	margin-bottom: 3pt;
    }
    UL LI {
	list-style: disc;
    }
    OL LI {
	list-style: decimal;
    }
    DT {
	padding-top: 	1ex;
    }
    UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
	font:		normal 12pt/14pt sans-serif;
	list-style:	none;
    }
    LI.doctools_section, LI.doctools_subsection {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding: 	0em;
    }
    PRE {
	display: 	block;
	font-family:	monospace;
	white-space:	pre;
	margin:		0%;
	padding-top:	0.5ex;
	padding-bottom:	0.5ex;
	padding-left:	1ex;
	padding-right:	1ex;
	width:		100%;
    }
    PRE.doctools_example {
	color: 		black;
	background: 	#f5dcb3;
	border:		1px solid black;
    }
    UL.doctools_requirements LI, UL.doctools_syntax LI {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding:	0em;
    }
    DIV.doctools_synopsis {
	color: 		black;
	background: 	#80ffff;
	border:		1px solid black;
	font-family:	serif;
	margin-top: 	1em;
	margin-bottom: 	1em;
    }
    UL.doctools_syntax {
	margin-top: 	1em;
	border-top:	1px solid black;
    }
    UL.doctools_requirements {
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'html'
   -->
<!-- Copyright &amp;copy; .COPYRIGHT.
   -->
<!-- test-itemized.1
   -->
<body><div class="doctools">
<h1 class="doctools_title">test-itemized(1) n .MODULE. &quot;&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>test-itemized -</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>lorem ipsum dolores</p>
<ul class="doctools_itemized">
<li><p>lorem ipsum dolores</p></li>
<li><p>lorem ipsum dolores</p>
<p>lorem ipsum dolores</p></li>
<li><p>lorem ipsum dolores</p>
<p>lorem ipsum dolores</p>
<p>lorem ipsum dolores</p></li>
</ul>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; .COPYRIGHT.</p>
</div>
</div></body></html>

Added modules/doctools/tests/html/11.





























































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<!DOCTYPE html><html><head>
<title>test-enumerated - </title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
	color:	 	black;
    }
    DIV.doctools {
	margin-left:	10%;
	margin-right:	10%;
    }
    DIV.doctools H1,DIV.doctools H2 {
	margin-left:	-5%;
    }
    H1, H2, H3, H4 {
	margin-top: 	1em;
	font-family:	sans-serif;
	font-size:	large;
	color:		#005A9C;
	background: 	transparent;
	text-align:		left;
    }
    H1.doctools_title {
	text-align: center;
    }
    UL,OL {
	margin-right: 0em;
	margin-top: 3pt;
	margin-bottom: 3pt;
    }
    UL LI {
	list-style: disc;
    }
    OL LI {
	list-style: decimal;
    }
    DT {
	padding-top: 	1ex;
    }
    UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
	font:		normal 12pt/14pt sans-serif;
	list-style:	none;
    }
    LI.doctools_section, LI.doctools_subsection {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding: 	0em;
    }
    PRE {
	display: 	block;
	font-family:	monospace;
	white-space:	pre;
	margin:		0%;
	padding-top:	0.5ex;
	padding-bottom:	0.5ex;
	padding-left:	1ex;
	padding-right:	1ex;
	width:		100%;
    }
    PRE.doctools_example {
	color: 		black;
	background: 	#f5dcb3;
	border:		1px solid black;
    }
    UL.doctools_requirements LI, UL.doctools_syntax LI {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding:	0em;
    }
    DIV.doctools_synopsis {
	color: 		black;
	background: 	#80ffff;
	border:		1px solid black;
	font-family:	serif;
	margin-top: 	1em;
	margin-bottom: 	1em;
    }
    UL.doctools_syntax {
	margin-top: 	1em;
	border-top:	1px solid black;
    }
    UL.doctools_requirements {
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'html'
   -->
<!-- Copyright &amp;copy; .COPYRIGHT.
   -->
<!-- test-enumerated.1
   -->
<body><div class="doctools">
<h1 class="doctools_title">test-enumerated(1) n .MODULE. &quot;&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>test-enumerated -</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>lorem ipsum dolores</p>
<ol class="doctools_enumerated">
<li><p>lorem ipsum dolores</p></li>
<li><p>lorem ipsum dolores</p>
<p>lorem ipsum dolores</p></li>
<li><p>lorem ipsum dolores</p>
<p>lorem ipsum dolores</p>
<p>lorem ipsum dolores</p></li>
</ol>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; .COPYRIGHT.</p>
</div>
</div></body></html>

Added modules/doctools/tests/html/12.



































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE html><html><head>
<title>test-definitions - </title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
	color:	 	black;
    }
    DIV.doctools {
	margin-left:	10%;
	margin-right:	10%;
    }
    DIV.doctools H1,DIV.doctools H2 {
	margin-left:	-5%;
    }
    H1, H2, H3, H4 {
	margin-top: 	1em;
	font-family:	sans-serif;
	font-size:	large;
	color:		#005A9C;
	background: 	transparent;
	text-align:		left;
    }
    H1.doctools_title {
	text-align: center;
    }
    UL,OL {
	margin-right: 0em;
	margin-top: 3pt;
	margin-bottom: 3pt;
    }
    UL LI {
	list-style: disc;
    }
    OL LI {
	list-style: decimal;
    }
    DT {
	padding-top: 	1ex;
    }
    UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
	font:		normal 12pt/14pt sans-serif;
	list-style:	none;
    }
    LI.doctools_section, LI.doctools_subsection {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding: 	0em;
    }
    PRE {
	display: 	block;
	font-family:	monospace;
	white-space:	pre;
	margin:		0%;
	padding-top:	0.5ex;
	padding-bottom:	0.5ex;
	padding-left:	1ex;
	padding-right:	1ex;
	width:		100%;
    }
    PRE.doctools_example {
	color: 		black;
	background: 	#f5dcb3;
	border:		1px solid black;
    }
    UL.doctools_requirements LI, UL.doctools_syntax LI {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding:	0em;
    }
    DIV.doctools_synopsis {
	color: 		black;
	background: 	#80ffff;
	border:		1px solid black;
	font-family:	serif;
	margin-top: 	1em;
	margin-bottom: 	1em;
    }
    UL.doctools_syntax {
	margin-top: 	1em;
	border-top:	1px solid black;
    }
    UL.doctools_requirements {
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'html'
   -->
<!-- Copyright &amp;copy; .COPYRIGHT.
   -->
<!-- test-definitions.1
   -->
<body><div class="doctools">
<h1 class="doctools_title">test-definitions(1) n .MODULE. &quot;&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>test-definitions -</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>lorem ipsum dolores</p>
<dl class="doctools_definitions">
<dt>lorem</dt>
<dd><p>ipsum dolores</p></dd>
<dt>lorem</dt>
<dd><p>ipsum dolores</p>
<p>lorem ipsum dolores</p></dd>
<dt>lorem</dt>
<dd><p>ipsum dolores</p>
<p>lorem ipsum dolores</p>
<p>lorem ipsum dolores</p></dd>
</dl>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; .COPYRIGHT.</p>
</div>
</div></body></html>

Added modules/doctools/tests/html/13.





































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<!DOCTYPE html><html><head>
<title>test-itemized-examples - </title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
	color:	 	black;
    }
    DIV.doctools {
	margin-left:	10%;
	margin-right:	10%;
    }
    DIV.doctools H1,DIV.doctools H2 {
	margin-left:	-5%;
    }
    H1, H2, H3, H4 {
	margin-top: 	1em;
	font-family:	sans-serif;
	font-size:	large;
	color:		#005A9C;
	background: 	transparent;
	text-align:		left;
    }
    H1.doctools_title {
	text-align: center;
    }
    UL,OL {
	margin-right: 0em;
	margin-top: 3pt;
	margin-bottom: 3pt;
    }
    UL LI {
	list-style: disc;
    }
    OL LI {
	list-style: decimal;
    }
    DT {
	padding-top: 	1ex;
    }
    UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
	font:		normal 12pt/14pt sans-serif;
	list-style:	none;
    }
    LI.doctools_section, LI.doctools_subsection {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding: 	0em;
    }
    PRE {
	display: 	block;
	font-family:	monospace;
	white-space:	pre;
	margin:		0%;
	padding-top:	0.5ex;
	padding-bottom:	0.5ex;
	padding-left:	1ex;
	padding-right:	1ex;
	width:		100%;
    }
    PRE.doctools_example {
	color: 		black;
	background: 	#f5dcb3;
	border:		1px solid black;
    }
    UL.doctools_requirements LI, UL.doctools_syntax LI {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding:	0em;
    }
    DIV.doctools_synopsis {
	color: 		black;
	background: 	#80ffff;
	border:		1px solid black;
	font-family:	serif;
	margin-top: 	1em;
	margin-bottom: 	1em;
    }
    UL.doctools_syntax {
	margin-top: 	1em;
	border-top:	1px solid black;
    }
    UL.doctools_requirements {
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'html'
   -->
<!-- Copyright &amp;copy; .COPYRIGHT.
   -->
<!-- test-itemized-examples.1
   -->
<body><div class="doctools">
<h1 class="doctools_title">test-itemized-examples(1) n .MODULE. &quot;&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>test-itemized-examples -</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>lorem ipsum dolores</p>
<ul class="doctools_itemized">
<li>
<pre class="doctools_example"> A lorem ipsum dolores </pre>
</li>
<li><p>lorem ipsum dolores</p>
<pre class="doctools_example"> B lorem ipsum dolores </pre>
<p>lorem ipsum dolores</p></li>
<li><p>lorem ipsum dolores</p>
<pre class="doctools_example"> C lorem ipsum dolores </pre>
</li>
<li><p>lorem ipsum dolores</p></li>
</ul>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; .COPYRIGHT.</p>
</div>
</div></body></html>

Added modules/doctools/tests/html/14.





































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<!DOCTYPE html><html><head>
<title>test-enumerated-examples - </title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
	color:	 	black;
    }
    DIV.doctools {
	margin-left:	10%;
	margin-right:	10%;
    }
    DIV.doctools H1,DIV.doctools H2 {
	margin-left:	-5%;
    }
    H1, H2, H3, H4 {
	margin-top: 	1em;
	font-family:	sans-serif;
	font-size:	large;
	color:		#005A9C;
	background: 	transparent;
	text-align:		left;
    }
    H1.doctools_title {
	text-align: center;
    }
    UL,OL {
	margin-right: 0em;
	margin-top: 3pt;
	margin-bottom: 3pt;
    }
    UL LI {
	list-style: disc;
    }
    OL LI {
	list-style: decimal;
    }
    DT {
	padding-top: 	1ex;
    }
    UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
	font:		normal 12pt/14pt sans-serif;
	list-style:	none;
    }
    LI.doctools_section, LI.doctools_subsection {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding: 	0em;
    }
    PRE {
	display: 	block;
	font-family:	monospace;
	white-space:	pre;
	margin:		0%;
	padding-top:	0.5ex;
	padding-bottom:	0.5ex;
	padding-left:	1ex;
	padding-right:	1ex;
	width:		100%;
    }
    PRE.doctools_example {
	color: 		black;
	background: 	#f5dcb3;
	border:		1px solid black;
    }
    UL.doctools_requirements LI, UL.doctools_syntax LI {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding:	0em;
    }
    DIV.doctools_synopsis {
	color: 		black;
	background: 	#80ffff;
	border:		1px solid black;
	font-family:	serif;
	margin-top: 	1em;
	margin-bottom: 	1em;
    }
    UL.doctools_syntax {
	margin-top: 	1em;
	border-top:	1px solid black;
    }
    UL.doctools_requirements {
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'html'
   -->
<!-- Copyright &amp;copy; .COPYRIGHT.
   -->
<!-- test-enumerated-examples.1
   -->
<body><div class="doctools">
<h1 class="doctools_title">test-enumerated-examples(1) n .MODULE. &quot;&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>test-enumerated-examples -</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>lorem ipsum dolores</p>
<ol class="doctools_enumerated">
<li>
<pre class="doctools_example"> A1 lorem ipsum dolores </pre>
</li>
<li><p>lorem ipsum dolores</p>
<pre class="doctools_example"> B2 lorem ipsum dolores </pre>
<p>lorem ipsum dolores</p></li>
<li><p>lorem ipsum dolores</p>
<pre class="doctools_example"> C3 lorem ipsum dolores </pre>
</li>
<li><p>lorem ipsum dolores</p></li>
</ol>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; .COPYRIGHT.</p>
</div>
</div></body></html>

Added modules/doctools/tests/html/15.













































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<!DOCTYPE html><html><head>
<title>test-definition-examples - </title>
<style type="text/css"><!--
    HTML {
	background: 	#FFFFFF;
	color: 		black;
    }
    BODY {
	background: 	#FFFFFF;
	color:	 	black;
    }
    DIV.doctools {
	margin-left:	10%;
	margin-right:	10%;
    }
    DIV.doctools H1,DIV.doctools H2 {
	margin-left:	-5%;
    }
    H1, H2, H3, H4 {
	margin-top: 	1em;
	font-family:	sans-serif;
	font-size:	large;
	color:		#005A9C;
	background: 	transparent;
	text-align:		left;
    }
    H1.doctools_title {
	text-align: center;
    }
    UL,OL {
	margin-right: 0em;
	margin-top: 3pt;
	margin-bottom: 3pt;
    }
    UL LI {
	list-style: disc;
    }
    OL LI {
	list-style: decimal;
    }
    DT {
	padding-top: 	1ex;
    }
    UL.doctools_toc,UL.doctools_toc UL, UL.doctools_toc UL UL {
	font:		normal 12pt/14pt sans-serif;
	list-style:	none;
    }
    LI.doctools_section, LI.doctools_subsection {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding: 	0em;
    }
    PRE {
	display: 	block;
	font-family:	monospace;
	white-space:	pre;
	margin:		0%;
	padding-top:	0.5ex;
	padding-bottom:	0.5ex;
	padding-left:	1ex;
	padding-right:	1ex;
	width:		100%;
    }
    PRE.doctools_example {
	color: 		black;
	background: 	#f5dcb3;
	border:		1px solid black;
    }
    UL.doctools_requirements LI, UL.doctools_syntax LI {
	list-style: 	none;
	margin-left: 	0em;
	text-indent:	0em;
	padding:	0em;
    }
    DIV.doctools_synopsis {
	color: 		black;
	background: 	#80ffff;
	border:		1px solid black;
	font-family:	serif;
	margin-top: 	1em;
	margin-bottom: 	1em;
    }
    UL.doctools_syntax {
	margin-top: 	1em;
	border-top:	1px solid black;
    }
    UL.doctools_requirements {
	margin-bottom: 	1em;
	border-bottom:	1px solid black;
    }
--></style>
</head>
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'html'
   -->
<!-- Copyright &amp;copy; .COPYRIGHT.
   -->
<!-- test-definition-examples.1
   -->
<body><div class="doctools">
<h1 class="doctools_title">test-definition-examples(1) n .MODULE. &quot;&quot;</h1>
<div id="name" class="doctools_section"><h2><a name="name">Name</a></h2>
<p>test-definition-examples -</p>
</div>
<div id="toc" class="doctools_section"><h2><a name="toc">Table Of Contents</a></h2>
<ul class="doctools_toc">
<li class="doctools_section"><a href="#toc">Table Of Contents</a></li>
<li class="doctools_section"><a href="#section1">Description</a></li>
<li class="doctools_section"><a href="#copyright">Copyright</a></li>
</ul>
</div>
<div id="section1" class="doctools_section"><h2><a name="section1">Description</a></h2>
<p>lorem ipsum dolores</p>
<dl class="doctools_definitions">
<dt>lorem</dt>
<dd>
<pre class="doctools_example"> A1 lorem ipsum dolores </pre>
</dd>
<dt>lorem</dt>
<dd><p>ipsum dolores</p>
<pre class="doctools_example"> B2 lorem ipsum dolores </pre>
<p>lorem ipsum dolores</p></dd>
<dt>lorem</dt>
<dd><p>ipsum dolores</p>
<pre class="doctools_example"> C3 lorem ipsum dolores </pre>
</dd>
<dt>lorem</dt>
<dd><p>ipsum dolores</p></dd>
</dl>
</div>
<div id="copyright" class="doctools_section"><h2><a name="copyright">Copyright</a></h2>
<p>Copyright &copy; .COPYRIGHT.</p>
</div>
</div></body></html>

Added modules/doctools/tests/idx/html/00.

































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<!-- Generated by tcllib/doctools/idx with format 'html'
   -->
<!-- KWIC
   -->
<head>
<title> KWIC </title>
</head>
<body>
<h3> KWIC -- Test </h3>
<hr><div class="#doctools_idxnav">
</div>
<hr><table class="#doctools_idx" width="100%">
</table>
</body></html>

Added modules/doctools/tests/idx/html/01.



















































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html>
<!-- Generated by tcllib/doctools/idx with format 'html'
   -->
<!-- KWIC
   -->
<head>
<title> KWIC </title>
</head>
<body>
<h3> KWIC -- Test </h3>
<hr><div class="#doctools_idxnav">
<a href="#cL"> L </a>
</div>
<hr><table class="#doctools_idx" width="100%">
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cL">Keywords: L</a>
</th></tr>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="lorem"> lorem </a></td>
<td class="#doctools_idxright" width="65%">
<a href="ipsum"> dolores </a>
</td></tr>
</table>
</body></html>

Added modules/doctools/tests/idx/html/02.



































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html>
<!-- Generated by tcllib/doctools/idx with format 'html'
   -->
<!-- KWIC
   -->
<head>
<title> KWIC </title>
</head>
<body>
<h3> KWIC -- Test </h3>
<hr><div class="#doctools_idxnav">
<a href="#cD"> D </a> &#183; <a href="#cL"> L </a>
</div>
<hr><table class="#doctools_idx" width="100%">
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cD">Keywords: D</a>
</th></tr>
<tr class="#doctools_idxeven" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="dolores"> dolores </a></td>
<td class="#doctools_idxright" width="65%">
<a href="lorem"> ipsum </a> &#183; <a href="dolores"> lorem </a> &#183; <a href="ipsum"> dolores </a>
</td></tr>
<tr class="#doctools_idxheader"><th colspan="2">
<a name="cL">Keywords: L</a>
</th></tr>
<tr class="#doctools_idxodd" valign=top>
<td class="#doctools_idxleft" width="35%"><a name="lorem"> lorem </a></td>
<td class="#doctools_idxright" width="65%">
<a href="ipsum"> dolores </a> &#183; <a href="lorem"> ipsum </a>
</td></tr>
</table>
</body></html>

Added modules/doctools/tests/idx/idx/00.







>
>
>
1
2
3
[comment { -- basic empty }]
[index_begin KWIC Test]
[index_end]

Added modules/doctools/tests/idx/idx/01.











>
>
>
>
>
1
2
3
4
5
[comment { -- basic key }]
[index_begin KWIC Test]
[key lorem]
[manpage ipsum dolores]
[index_end]

Added modules/doctools/tests/idx/idx/02.





















>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
[comment { -- multiple keys }]
[index_begin KWIC Test]
[key lorem]
[manpage ipsum dolores]
[manpage lorem ipsum]
[key dolores]
[manpage lorem ipsum]
[manpage dolores lorem]
[manpage ipsum dolores]
[index_end]

Added modules/doctools/tests/idx/nroff/00.



















>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
'\"
'\" Generated by tcllib/doctools/idx with format 'nroff'
.TH "KWIC" n
.so man.macros
.BS
.SH INDEX
Test
.RS
.RE

Added modules/doctools/tests/idx/nroff/01.































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'\"
'\" Generated by tcllib/doctools/idx with format 'nroff'
.TH "KWIC" n
.so man.macros
.BS
.SH INDEX
Test
.RS
lorem
.RS
.TP
\fBipsum\fR
dolores
.RE
.RE

Added modules/doctools/tests/idx/nroff/02.

















































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
'\"
'\" Generated by tcllib/doctools/idx with format 'nroff'
.TH "KWIC" n
.\" The -*- nroff -*- definitions below are for supplemental macros used
.\" in Tcl/Tk manual entries.
.\"
.\" .AP type name in/out ?indent?
.\"	Start paragraph describing an argument to a library procedure.
.\"	type is type of argument (int, etc.), in/out is either "in", "out",
.\"	or "in/out" to describe whether procedure reads or modifies arg,
.\"	and indent is equivalent to second arg of .IP (shouldn't ever be
.\"	needed;  use .AS below instead)
.\"
.\" .AS ?type? ?name?
.\"	Give maximum sizes of arguments for setting tab stops.  Type and
.\"	name are examples of largest possible arguments that will be passed
.\"	to .AP later.  If args are omitted, default tab stops are used.
.\"
.\" .BS
.\"	Start box enclosure.  From here until next .BE, everything will be
.\"	enclosed in one large box.
.\"
.\" .BE
.\"	End of box enclosure.
.\"
.\" .CS
.\"	Begin code excerpt.
.\"
.\" .CE
.\"	End code excerpt.
.\"
.\" .VS ?version? ?br?
.\"	Begin vertical sidebar, for use in marking newly-changed parts
.\"	of man pages.  The first argument is ignored and used for recording
.\"	the version when the .VS was added, so that the sidebars can be
.\"	found and removed when they reach a certain age.  If another argument
.\"	is present, then a line break is forced before starting the sidebar.
.\"
.\" .VE
.\"	End of vertical sidebar.
.\"
.\" .DS
.\"	Begin an indented unfilled display.
.\"
.\" .DE
.\"	End of indented unfilled display.
.\"
.\" .SO ?manpage?
.\"	Start of list of standard options for a Tk widget. The manpage
.\"	argument defines where to look up the standard options; if
.\"	omitted, defaults to "options". The options follow on successive
.\"	lines, in three columns separated by tabs.
.\"
.\" .SE
.\"	End of list of standard options for a Tk widget.
.\"
.\" .OP cmdName dbName dbClass
.\"	Start of description of a specific option.  cmdName gives the
.\"	option's name as specified in the class command, dbName gives
.\"	the option's name in the option database, and dbClass gives
.\"	the option's class in the option database.
.\"
.\" .UL arg1 arg2
.\"	Print arg1 underlined, then print arg2 normally.
.\"
.\" .QW arg1 ?arg2?
.\"	Print arg1 in quotes, then arg2 normally (for trailing punctuation).
.\"
.\" .PQ arg1 ?arg2?
.\"	Print an open parenthesis, arg1 in quotes, then arg2 normally
.\"	(for trailing punctuation) and then a closing parenthesis.
.\"
.\"	# Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
.if t .wh -1.3i ^B
.nr ^l \n(.l
.ad b
.\"	# Start an argument description
.de AP
.ie !"\\$4"" .TP \\$4
.el \{\
.   ie !"\\$2"" .TP \\n()Cu
.   el          .TP 15
.\}
.ta \\n()Au \\n()Bu
.ie !"\\$3"" \{\
\&\\$1 \\fI\\$2\\fP (\\$3)
.\".b
.\}
.el \{\
.br
.ie !"\\$2"" \{\
\&\\$1	\\fI\\$2\\fP
.\}
.el \{\
\&\\fI\\$1\\fP
.\}
.\}
..
.\"	# define tabbing values for .AP
.de AS
.nr )A 10n
.if !"\\$1"" .nr )A \\w'\\$1'u+3n
.nr )B \\n()Au+15n
.\"
.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
.nr )C \\n()Bu+\\w'(in/out)'u+2n
..
.AS Tcl_Interp Tcl_CreateInterp in/out
.\"	# BS - start boxed text
.\"	# ^y = starting y location
.\"	# ^b = 1
.de BS
.br
.mk ^y
.nr ^b 1u
.if n .nf
.if n .ti 0
.if n \l'\\n(.lu\(ul'
.if n .fi
..
.\"	# BE - end boxed text (draw box now)
.de BE
.nf
.ti 0
.mk ^t
.ie n \l'\\n(^lu\(ul'
.el \{\
.\"	Draw four-sided box normally, but don't draw top of
.\"	box if the box started on an earlier page.
.ie !\\n(^b-1 \{\
\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.el \}\
\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
.\}
.\}
.fi
.br
.nr ^b 0
..
.\"	# VS - start vertical sidebar
.\"	# ^Y = starting y location
.\"	# ^v = 1 (for troff;  for nroff this doesn't matter)
.de VS
.if !"\\$2"" .br
.mk ^Y
.ie n 'mc \s12\(br\s0
.el .nr ^v 1u
..
.\"	# VE - end of vertical sidebar
.de VE
.ie n 'mc
.el \{\
.ev 2
.nf
.ti 0
.mk ^t
\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
.sp -1
.fi
.ev
.\}
.nr ^v 0
..
.\"	# Special macro to handle page bottom:  finish off current
.\"	# box/sidebar if in box/sidebar mode, then invoked standard
.\"	# page bottom macro.
.de ^B
.ev 2
'ti 0
'nf
.mk ^t
.if \\n(^b \{\
.\"	Draw three-sided box if this is the box's first page,
.\"	draw two sides but no top otherwise.
.ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
.\}
.if \\n(^v \{\
.nr ^x \\n(^tu+1v-\\n(^Yu
\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
.\}
.bp
'fi
.ev
.if \\n(^b \{\
.mk ^y
.nr ^b 2
.\}
.if \\n(^v \{\
.mk ^Y
.\}
..
.\"	# DS - begin display
.de DS
.RS
.nf
.sp
..
.\"	# DE - end display
.de DE
.fi
.RE
.sp
..
.\"	# SO - start of list of standard options
.de SO
'ie '\\$1'' .ds So \\fBoptions\\fR
'el .ds So \\fB\\$1\\fR
.SH "STANDARD OPTIONS"
.LP
.nf
.ta 5.5c 11c
.ft B
..
.\"	# SE - end of list of standard options
.de SE
.fi
.ft R
.LP
See the \\*(So manual entry for details on the standard options.
..
.\"	# OP - start of full description for a single option
.de OP
.LP
.nf
.ta 4c
Command-Line Name:	\\fB\\$1\\fR
Database Name:	\\fB\\$2\\fR
Database Class:	\\fB\\$3\\fR
.fi
.IP
..
.\"	# CS - begin code excerpt
.de CS
.RS
.nf
.ta .25i .5i .75i 1i
..
.\"	# CE - end code excerpt
.de CE
.fi
.RE
..
.\"	# UL - underline word
.de UL
\\$1\l'|0\(ul'\\$2
..
.\"	# QW - apply quotation marks to word
.de QW
.ie '\\*(lq'"' ``\\$1''\\$2
.\"" fix emacs highlighting
.el \\*(lq\\$1\\*(rq\\$2
..
.\"	# PQ - apply parens and quotation marks to word
.de PQ
.ie '\\*(lq'"' (``\\$1''\\$2)\\$3
.\"" fix emacs highlighting
.el (\\*(lq\\$1\\*(rq\\$2)\\$3
..
.\"	# QR - quoted range
.de QR
.ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3
.\"" fix emacs highlighting
.el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3
..
.\"	# MT - "empty" string
.de MT
.QW ""
..
.BS
.SH INDEX
Test
.RS
dolores
.RS
.TP
\fBlorem\fR
ipsum
.TP
\fBdolores\fR
lorem
.TP
\fBipsum\fR
dolores
.RE
lorem
.RS
.TP
\fBipsum\fR
dolores
.TP
\fBlorem\fR
ipsum
.RE
.RE

Added modules/doctools/tests/idx/null/00.

Added modules/doctools/tests/idx/null/01.

Added modules/doctools/tests/idx/null/02.

Added modules/doctools/tests/idx/text/00.









>
>
>
>
1
2
3
4

Index generated by tcllib/doctools/idx with format 'text'
KWIC -- Test
============

Added modules/doctools/tests/idx/text/01.













>
>
>
>
>
>
1
2
3
4
5
6

Index generated by tcllib/doctools/idx with format 'text'
KWIC -- Test
============

lorem ipsum

Added modules/doctools/tests/idx/text/02.

















>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8

Index generated by tcllib/doctools/idx with format 'text'
KWIC -- Test
============

dolores lorem, dolores, ipsum

lorem   ipsum, lorem

Added modules/doctools/tests/idx/wiki/00.







>
>
>
1
2
3
Index '''KWIC'''
'''Test'''

Added modules/doctools/tests/idx/wiki/01.









>
>
>
>
1
2
3
4
Index '''KWIC'''
'''Test'''

   '''lorem''':   ipsum

Added modules/doctools/tests/idx/wiki/02.











>
>
>
>
>
1
2
3
4
5
Index '''KWIC'''
'''Test'''

   '''lorem''':   ipsum lorem
   '''dolores''':   lorem dolores ipsum

Changes to modules/doctools/tests/latex/00.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% CVS: @ID@ TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST --  : }
\maketitle
\section{Description}\label{section1}
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}


|











1
2
3
4
5
6
7
8
9
10
11
12
13
14
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST --  : }
\maketitle
\section{Description}\label{section1}
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}

Changes to modules/doctools/tests/latex/01.

1
2
3
4
5
6
7
8
9
10
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) **Copyright**
% CVS: @ID@ TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST --  : }
\maketitle
\section{Description}\label{section1}
Argument	::\underline{Argument}::


|







1
2
3
4
5
6
7
8
9
10
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) **Copyright**
% TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST --  : }
\maketitle
\section{Description}\label{section1}
Argument	::\underline{Argument}::

Changes to modules/doctools/tests/latex/02.

1
2
3
4
5
6
7
8
9
10
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% CVS: @ID@ TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST -- ..THE\_MODULE.. : ..THE\_TITLE..}
\maketitle
\section{Synopsis}\label{synopsis}
\begin{flushleft}


|







1
2
3
4
5
6
7
8
9
10
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST -- ..THE\_MODULE.. : ..THE\_TITLE..}
\maketitle
\section{Synopsis}\label{synopsis}
\begin{flushleft}

Changes to modules/doctools/tests/latex/03.

1
2
3
4
5
6
7
8
9
10
..
13
14
15
16
17
18
19

20

21
22
23
24
25
26
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% CVS: @ID@ TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST --  : }
\maketitle
\section{Description}\label{section1}
\section{AaA}\label{section2}
................................................................................
22
\subsection{BbB.cCc}\label{subsection1}
333
\subsection{BbB.dDd}\label{subsection2}
4444
\section{EeE}\label{section4}
5555

At {\bf AaA (\ref{section2})}.

At {\bf \_\_undefined\_\_ (\ref{\_\_undefined\_\_})}.
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}


|







 







>

>






1
2
3
4
5
6
7
8
9
10
..
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST --  : }
\maketitle
\section{Description}\label{section1}
\section{AaA}\label{section2}
................................................................................
22
\subsection{BbB.cCc}\label{subsection1}
333
\subsection{BbB.dDd}\label{subsection2}
4444
\section{EeE}\label{section4}
5555

At {\bf AaA (\ref{section2})}.

At {\bf \_\_undefined\_\_ (\ref{\_\_undefined\_\_})}.
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}

Changes to modules/doctools/tests/latex/04.

1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
21
22
23
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% CVS: @ID@ TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST --  : }
\maketitle
\section{Description}\label{section1}
BEGINNE HIER
\begin{verbatim}
	 Example Block  More Lines
\end{verbatim}

\begin{verbatim}
Inlined Example \
Next Line
\end{verbatim}
FERTIG
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}


|










>










1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST --  : }
\maketitle
\section{Description}\label{section1}
BEGINNE HIER
\begin{verbatim}
	 Example Block  More Lines
\end{verbatim}

\begin{verbatim}
Inlined Example \
Next Line
\end{verbatim}
FERTIG
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}

Changes to modules/doctools/tests/latex/05.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

16
17
18
19
20
21
22
23
24
25

26
27
28
29
30
31
32
33
34
35

36
37
38
39
40
41
42
43
44
45

46
47
48
49
50
51
52
53
54
55

56

57

58
59
60
61
62
63
64
65
66

67

68
69

70
71
72
73
74
75
76
77
78
79

80
81
82
83
84
85
86
..
87
88
89
90
91
92
93

94
95
96
97
98
99

% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% CVS: @ID@ BASIC.a
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / BASIC --  : }
\maketitle
\section{Synopsis}\label{synopsis}
\begin{itemize}
\item[] a-command 
\end{itemize}
\section{Description}\label{section1}
OK

\begin{itemize}
%
\item[] \underline{argument-1} integer
%
verification
%
\item[] \underline{argument-2} string (out)
%
 mogrification
\end{itemize}

\begin{itemize}
%
\item[] {\bf command-a}
%
 explanation
%
\item[] {\bf command-b}
%
elucidation
\end{itemize}

\begin{itemize}
%
\item[] term
%
 definition
%
\item[] a-command 
%
semantic
\end{itemize}

\begin{enumerate}
%
\item
%
A
%
\item
%
 B
C

D

\end{enumerate}

\begin{itemize}
%
\item
%
1
%
\item
%
 2

2a

2b
\end{itemize}

\begin{itemize}
%
\item[] {\bf option-1}
%
 meaning
%
\item[] {\bf option-2} value
%
elaboration
\end{itemize}

\begin{itemize}
%
\item[] Command-Line Switch:	{\bf background}\\
Database Name:	{\bf Background}\\
Database Class:	{\bf Color}\\
%
 candy
................................................................................
%
\item[] Command-Line Switch:	{\bf foreground}\\
Database Name:	{\bf Foreground}\\
Database Class:	{\bf Color}\\
%
caramel
\end{itemize}

KO
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}
<


|











>










>










>










>









|
>
|
>

>









>

>


>










>







 







>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
..
97
98
99
100
101
102
103
104
105
106
107
108
109
110

% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% BASIC.a
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / BASIC --  : }
\maketitle
\section{Synopsis}\label{synopsis}
\begin{itemize}
\item[] a-command
\end{itemize}
\section{Description}\label{section1}
OK

\begin{itemize}
%
\item[] \underline{argument-1} integer
%
verification
%
\item[] \underline{argument-2} string (out)
%
 mogrification
\end{itemize}

\begin{itemize}
%
\item[] {\bf command-a}
%
 explanation
%
\item[] {\bf command-b}
%
elucidation
\end{itemize}

\begin{itemize}
%
\item[] term
%
 definition
%
\item[] a-command
%
semantic
\end{itemize}

\begin{enumerate}
%
\item
%
A
%
\item
%
 B

C

D
\end{enumerate}

\begin{itemize}
%
\item
%
1
%
\item
%
 2

2a

2b
\end{itemize}

\begin{itemize}
%
\item[] {\bf option-1}
%
 meaning
%
\item[] {\bf option-2} value
%
elaboration
\end{itemize}

\begin{itemize}
%
\item[] Command-Line Switch:	{\bf background}\\
Database Name:	{\bf Background}\\
Database Class:	{\bf Color}\\
%
 candy
................................................................................
%
\item[] Command-Line Switch:	{\bf foreground}\\
Database Name:	{\bf Foreground}\\
Database Class:	{\bf Color}\\
%
caramel
\end{itemize}

KO
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}

Changes to modules/doctools/tests/latex/06.

1
2
3
4
5
6
7
8
9
10
11
12
13
14





15
16
17
18
19
20
21
22





23
24
25
26
27
28
29
..
36
37
38
39
40
41
42
43





44
45
46
47
48





49
50
51
52
53
54
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% CVS: @ID@ TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST --  : }
\maketitle
\section{Description}\label{section1}
\begin{itemize}
%
\item
%
 1  2  3





%
\item
%
\begin{enumerate}
%
\item
%
 a  b  c





%
\item
%
\begin{itemize}
%
\item[] foo
%
................................................................................
\item[] roo
%
 gork
\end{itemize}
%
\item
%
 a  b  c





\end{enumerate}
%
\item
%
 4  5  6





\end{itemize}
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}


|










<
>
>
>
>
>







<
>
>
>
>
>







 







<
>
>
>
>
>




<
>
>
>
>
>






1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
21
22
23
24
25

26
27
28
29
30
31
32
33
34
35
36
37
..
44
45
46
47
48
49
50

51
52
53
54
55
56
57
58
59

60
61
62
63
64
65
66
67
68
69
70
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST --  : }
\maketitle
\section{Description}\label{section1}
\begin{itemize}
%
\item
%

 1

2

3
%
\item
%
\begin{enumerate}
%
\item
%

 a

b

c
%
\item
%
\begin{itemize}
%
\item[] foo
%
................................................................................
\item[] roo
%
 gork
\end{itemize}
%
\item
%

 a

b

c
\end{enumerate}
%
\item
%

 4

5

6
\end{itemize}
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}

Changes to modules/doctools/tests/latex/07.

1
2
3
4
5
6
7
8
9
10
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% CVS: @ID@ TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST --  : }
\maketitle
\section{Description}\label{section1}
\begin{itemize}


|







1
2
3
4
5
6
7
8
9
10
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% TEST.z
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / TEST --  : }
\maketitle
\section{Description}\label{section1}
\begin{itemize}

Changes to modules/doctools/tests/latex/08.

1
2
3
4
5
6
7
8
9
10
11

% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) **Copyright**
% CVS: @ID@ ALL.a
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / ALL -- ..THE\_MODULE.. : ..THE\_TITLE..}
\maketitle
\section{Synopsis}\label{synopsis}
\begin{flushleft}
<


|








1
2
3
4
5
6
7
8
9
10

% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) **Copyright**
% ALL.a
\documentclass{article}
\begin{document}
\author{@USR@}
\title{.MODULE. / ALL -- ..THE\_MODULE.. : ..THE\_TITLE..}
\maketitle
\section{Synopsis}\label{synopsis}
\begin{flushleft}

Added modules/doctools/tests/latex/09.































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% TEST.z
\documentclass{article}
\begin{document}
\author{aku}
\title{.MODULE. / TEST --  : }
\maketitle
\section{Description}\label{section1}
lorem
\begin{verbatim}
1 lorem ipsum dolores
\end{verbatim}
ipsum
\begin{verbatim} 2 lorem ipsum dolores \end{verbatim}
dolores
\begin{verbatim}
3 lorem ipsum dolores
\end{verbatim}
lorem
\begin{verbatim} 4 lorem ipsum dolores
\end{verbatim}
ipsum
\begin{verbatim}
5 lorem ipsum dolores \end{verbatim}
dolores
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}

Added modules/doctools/tests/latex/10.







































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% test-itemized.1
\documentclass{article}
\begin{document}
\author{aku}
\title{.MODULE. / test-itemized --  : }
\maketitle
\section{Description}\label{section1}
lorem ipsum dolores
\begin{itemize}
%
\item
%
 lorem ipsum dolores
%
\item
%
 lorem ipsum dolores

lorem ipsum dolores
%
\item
%
 lorem ipsum dolores

lorem ipsum dolores

lorem ipsum dolores
\end{itemize}
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}

Added modules/doctools/tests/latex/11.







































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% test-enumerated.1
\documentclass{article}
\begin{document}
\author{aku}
\title{.MODULE. / test-enumerated --  : }
\maketitle
\section{Description}\label{section1}
lorem ipsum dolores
\begin{enumerate}
%
\item
%
 lorem ipsum dolores
%
\item
%
 lorem ipsum dolores

lorem ipsum dolores
%
\item
%
 lorem ipsum dolores

lorem ipsum dolores

lorem ipsum dolores
\end{enumerate}
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}

Added modules/doctools/tests/latex/12.







































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% test-definitions.1
\documentclass{article}
\begin{document}
\author{aku}
\title{.MODULE. / test-definitions --  : }
\maketitle
\section{Description}\label{section1}
lorem ipsum dolores
\begin{itemize}
%
\item[] lorem
%
 ipsum dolores
%
\item[] lorem
%
 ipsum dolores

lorem ipsum dolores
%
\item[] lorem
%
 ipsum dolores

lorem ipsum dolores

lorem ipsum dolores
\end{itemize}
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}

Added modules/doctools/tests/latex/13.









































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% test-itemized-examples.1
\documentclass{article}
\begin{document}
\author{aku}
\title{.MODULE. / test-itemized-examples --  : }
\maketitle
\section{Description}\label{section1}
lorem ipsum dolores
\begin{itemize}
%
\item
%
\begin{verbatim} A lorem ipsum dolores \end{verbatim}
%
\item
%
 lorem ipsum dolores
\begin{verbatim} B lorem ipsum dolores \end{verbatim}
lorem ipsum dolores
%
\item
%
 lorem ipsum dolores
\begin{verbatim} C lorem ipsum dolores \end{verbatim}
%
\item
%
 lorem ipsum dolores
\end{itemize}
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}

Added modules/doctools/tests/latex/14.









































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% test-enumerated-examples.1
\documentclass{article}
\begin{document}
\author{aku}
\title{.MODULE. / test-enumerated-examples --  : }
\maketitle
\section{Description}\label{section1}
lorem ipsum dolores
\begin{enumerate}
%
\item
%
\begin{verbatim} A1 lorem ipsum dolores \end{verbatim}
%
\item
%
 lorem ipsum dolores
\begin{verbatim} B2 lorem ipsum dolores \end{verbatim}
lorem ipsum dolores
%
\item
%
 lorem ipsum dolores
\begin{verbatim} C3 lorem ipsum dolores \end{verbatim}
%
\item
%
 lorem ipsum dolores
\end{enumerate}
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}

Added modules/doctools/tests/latex/15.









































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
% Generated from file '.FILE.' by tcllib/doctools with format 'latex'
% Copyright (c) .COPYRIGHT.
% test-definition-examples.1
\documentclass{article}
\begin{document}
\author{aku}
\title{.MODULE. / test-definition-examples --  : }
\maketitle
\section{Description}\label{section1}
lorem ipsum dolores
\begin{itemize}
%
\item[] lorem
%
\begin{verbatim} A1 lorem ipsum dolores \end{verbatim}
%
\item[] lorem
%
 ipsum dolores
\begin{verbatim} B2 lorem ipsum dolores \end{verbatim}
lorem ipsum dolores
%
\item[] lorem
%
 ipsum dolores
\begin{verbatim} C3 lorem ipsum dolores \end{verbatim}
%
\item[] lorem
%
 ipsum dolores
\end{itemize}
\section{Copyright}\label{copyright}
\begin{flushleft}
Copyright (c) .COPYRIGHT.\linebreak
\end{flushleft}
\end{document}

Added modules/doctools/tests/list/09.



>
1
manpage {seealso {} keywords {} file .FILE. section z category {} module .MODULE. version 3.14.15.926 title TEST shortdesc {} desc {} fid .FILE}

Added modules/doctools/tests/list/10.



>
1
manpage {seealso {} keywords {} file .FILE. section 1 category {} module .MODULE. version n title test-itemized shortdesc {} desc {} fid .FILE}

Added modules/doctools/tests/list/11.



>
1
manpage {seealso {} keywords {} file .FILE. section 1 category {} module .MODULE. version n title test-enumerated shortdesc {} desc {} fid .FILE}

Added modules/doctools/tests/list/12.



>
1
manpage {seealso {} keywords {} file .FILE. section 1 category {} module .MODULE. version n title test-definitions shortdesc {} desc {} fid .FILE}

Added modules/doctools/tests/list/13.



>
1
manpage {seealso {} keywords {} file .FILE. section 1 category {} module .MODULE. version n title test-itemized-examples shortdesc {} desc {} fid .FILE}

Added modules/doctools/tests/list/14.



>
1
manpage {seealso {} keywords {} file .FILE. section 1 category {} module .MODULE. version n title test-enumerated-examples shortdesc {} desc {} fid .FILE}

Added modules/doctools/tests/list/15.



>
1
manpage {seealso {} keywords {} file .FILE. section 1 category {} module .MODULE. version n title test-definition-examples shortdesc {} desc {} fid .FILE}

Changes to modules/doctools/tests/man/00.


1
2
3

[manpage_begin TEST z 3.14.15.926]
[description]
[manpage_end]
>



1
2
3
4
[comment { -- Basic structure }]
[manpage_begin TEST z 3.14.15.926]
[description]
[manpage_end]

Changes to modules/doctools/tests/man/01.


1
2
3
4
5
6
7

[manpage_begin TEST z 3.14.15.926]
[copyright **Copyright**]
[description]
Argument	::[arg Argument]::
Class		::[class Class]::
Command		::[cmd Command]::
Comment		::[comment Comment]::
>







1
2
3
4
5
6
7
8
[comment { -- Inline markup }]
[manpage_begin TEST z 3.14.15.926]
[copyright **Copyright**]
[description]
Argument	::[arg Argument]::
Class		::[class Class]::
Command		::[cmd Command]::
Comment		::[comment Comment]::

Changes to modules/doctools/tests/man/02.


1
2
3
4
5
6
7
8
9

[manpage_begin TEST z 3.14.15.926]
[moddesc ..THE_MODULE..]
[titledesc ..THE_TITLE..]
[require AAA]
[require BBB VVV]
[keywords KEYA KEYZ]
[see_also OTHER ELSE]
[description]
[manpage_end]
>









1
2
3
4
5
6
7
8
9
10
[comment { -- Meta markup }]
[manpage_begin TEST z 3.14.15.926]
[moddesc ..THE_MODULE..]
[titledesc ..THE_TITLE..]
[require AAA]
[require BBB VVV]
[keywords KEYA KEYZ]
[see_also OTHER ELSE]
[description]
[manpage_end]

Changes to modules/doctools/tests/man/03.


1
2
3
4
5
6
7

[manpage_begin TEST z 3.14.15.926]
[description]
[section AaA]
1
[section BbB]
22
[subsection BbB.cCc]
>







1
2
3
4
5
6
7
8
[comment { -- Sectioning }]
[manpage_begin TEST z 3.14.15.926]
[description]
[section AaA]
1
[section BbB]
22
[subsection BbB.cCc]

Changes to modules/doctools/tests/man/04.


1
2
3
4
5
6
7
.
9
10
11
12
13
14
15
16

[manpage_begin TEST z 3.14.15.926]
[description]
BEGINNE HIER
[example {
	 Example Block \
	 More Lines
}]
................................................................................
[para]
[example_begin]
Inlined Example \
Next Line
[example_end]
FERTIG
[manpage_end]

>







 







<
1
2
3
4
5
6
7
8
..
10
11
12
13
14
15
16

[comment { -- Example 1 }]
[manpage_begin TEST z 3.14.15.926]
[description]
BEGINNE HIER
[example {
	 Example Block \
	 More Lines
}]
................................................................................
[para]
[example_begin]
Inlined Example \
Next Line
[example_end]
FERTIG
[manpage_end]

Changes to modules/doctools/tests/man/05.

1
2
3
4
5
6
7
8
[comment {LISTS, BASIC}]
[manpage_begin BASIC a 5]
[description]
OK
[para]
[list_begin arguments]
[arg_def integer argument-1]
verification
|







1
2
3
4
5
6
7
8
[comment { -- Lists 1 }]
[manpage_begin BASIC a 5]
[description]
OK
[para]
[list_begin arguments]
[arg_def integer argument-1]
verification

Changes to modules/doctools/tests/man/06.


1
2
3
4
5
6
7

[manpage_begin TEST z 3.14.15.926]
[description]
[comment {
    nested lists, same and different types, examples have examples at
    least three levels deep, for a proper inner level, i.e. not only
    first/last level, but something truly in the middle. Also three
    list items of the relevant on each level, see the proper handling
>







1
2
3
4
5
6
7
8
[comment { -- Lists 2 }]
[manpage_begin TEST z 3.14.15.926]
[description]
[comment {
    nested lists, same and different types, examples have examples at
    least three levels deep, for a proper inner level, i.e. not only
    first/last level, but something truly in the middle. Also three
    list items of the relevant on each level, see the proper handling

Added modules/doctools/tests/man/09.













































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[comment { -- Example 2 }]
[manpage_begin TEST z 3.14.15.926]
[description]
lorem
[example {
1 lorem ipsum dolores
}]
ipsum
[example { 2 lorem ipsum dolores }]
dolores
[example_begin]
3 lorem ipsum dolores
[example_end]
lorem
[example { 4 lorem ipsum dolores
}]
ipsum
[example {
5 lorem ipsum dolores }]
dolores
[manpage_end]

Added modules/doctools/tests/man/10.



























>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
[comment { -- List 3 - itemized }]
[manpage_begin test-itemized 1 n]
[description]
lorem ipsum dolores
[list_begin itemized]
[item] lorem ipsum dolores
[item] lorem ipsum dolores
[para] lorem ipsum dolores
[item] lorem ipsum dolores
[para] lorem ipsum dolores
[para] lorem ipsum dolores
[list_end]
[manpage_end]

Added modules/doctools/tests/man/11.



























>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
[comment { -- List 4 - enumerated }]
[manpage_begin test-enumerated 1 n]
[description]
lorem ipsum dolores
[list_begin enumerated]
[enum] lorem ipsum dolores
[enum] lorem ipsum dolores
[para] lorem ipsum dolores
[enum] lorem ipsum dolores
[para] lorem ipsum dolores
[para] lorem ipsum dolores
[list_end]
[manpage_end]

Added modules/doctools/tests/man/12.



























>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
[comment { -- List 5 - definitions }]
[manpage_begin test-definitions 1 n]
[description]
lorem ipsum dolores
[list_begin definitions]
[def lorem] ipsum dolores
[def lorem] ipsum dolores
[para] lorem ipsum dolores
[def lorem] ipsum dolores
[para] lorem ipsum dolores
[para] lorem ipsum dolores
[list_end]
[manpage_end]

Added modules/doctools/tests/man/13.































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment { -- List 6 - itemized examples }]
[manpage_begin test-itemized-examples 1 n]
[description]
lorem ipsum dolores
[list_begin itemized]
[item]
[example { A lorem ipsum dolores }]
[item] lorem ipsum dolores
[example { B lorem ipsum dolores }]
lorem ipsum dolores
[item] lorem ipsum dolores
[example { C lorem ipsum dolores }]
[item] lorem ipsum dolores
[list_end]
[manpage_end]

Added modules/doctools/tests/man/14.































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment { -- List 7 - enumerated examples }]
[manpage_begin test-enumerated-examples 1 n]
[description]
lorem ipsum dolores
[list_begin enumerated]
[enum]
[example { A1 lorem ipsum dolores }]
[enum] lorem ipsum dolores
[example { B2 lorem ipsum dolores }]
lorem ipsum dolores
[enum] lorem ipsum dolores
[example { C3 lorem ipsum dolores }]
[enum] lorem ipsum dolores
[list_end]
[manpage_end]

Added modules/doctools/tests/man/15.































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[comment { -- List 8 - definition examples }]
[manpage_begin test-definition-examples 1 n]
[description]
lorem ipsum dolores
[list_begin definitions]
[def lorem]
[example { A1 lorem ipsum dolores }]
[def lorem] ipsum dolores
[example { B2 lorem ipsum dolores }]
lorem ipsum dolores
[def lorem] ipsum dolores
[example { C3 lorem ipsum dolores }]
[def lorem] ipsum dolores
[list_end]
[manpage_end]

Changes to modules/doctools/tests/nroff/00.

whitespace changes only

Changes to modules/doctools/tests/nroff/01.

whitespace changes only

Changes to modules/doctools/tests/nroff/02.

whitespace changes only

Changes to modules/doctools/tests/nroff/03.

whitespace changes only

Changes to modules/doctools/tests/nroff/04.

whitespace changes only

Changes to modules/doctools/tests/nroff/05.

whitespace changes only

Changes to modules/doctools/tests/nroff/06.

whitespace changes only

Changes to modules/doctools/tests/nroff/07.

whitespace changes only

Changes to modules/doctools/tests/nroff/08.

whitespace changes only

Added modules/doctools/tests/nroff/09.































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
'\"
'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
'\" Copyright (c) \&.COPYRIGHT\&.
'\"
.TH "TEST" z 3\&.14\&.15\&.926 \&.MODULE\&. ""
.so man.macros
.BS
.SH NAME
TEST \-
.SH DESCRIPTION
lorem
.CS


1 lorem ipsum dolores

.CE
ipsum
.CS

 2 lorem ipsum dolores
.CE
dolores
.CS


3 lorem ipsum dolores

.CE
lorem
.CS

 4 lorem ipsum dolores

.CE
ipsum
.CS


5 lorem ipsum dolores
.CE
dolores
.SH COPYRIGHT
.nf
Copyright (c) \&.COPYRIGHT\&.

.fi

Added modules/doctools/tests/nroff/10.



























































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
'\"
'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
'\" Copyright (c) \&.COPYRIGHT\&.
'\"
.TH "test-itemized" 1 n \&.MODULE\&. ""
.so man.macros
.BS
.SH NAME
test-itemized \-
.SH DESCRIPTION
lorem ipsum dolores
.IP \(bu
lorem ipsum dolores
.IP \(bu
lorem ipsum dolores
.sp
lorem ipsum dolores
.IP \(bu
lorem ipsum dolores
.sp
lorem ipsum dolores
.sp
lorem ipsum dolores
.PP
.SH COPYRIGHT
.nf
Copyright (c) \&.COPYRIGHT\&.

.fi

Added modules/doctools/tests/nroff/11.



























































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
'\"
'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
'\" Copyright (c) \&.COPYRIGHT\&.
'\"
.TH "test-enumerated" 1 n \&.MODULE\&. ""
.so man.macros
.BS
.SH NAME
test-enumerated \-
.SH DESCRIPTION
lorem ipsum dolores
.IP [1]
lorem ipsum dolores
.IP [2]
lorem ipsum dolores
.sp
lorem ipsum dolores
.IP [3]
lorem ipsum dolores
.sp
lorem ipsum dolores
.sp
lorem ipsum dolores
.PP
.SH COPYRIGHT
.nf
Copyright (c) \&.COPYRIGHT\&.

.fi

Added modules/doctools/tests/nroff/12.

































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
'\"
'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
'\" Copyright (c) \&.COPYRIGHT\&.
'\"
.TH "test-definitions" 1 n \&.MODULE\&. ""
.so man.macros
.BS
.SH NAME
test-definitions \-
.SH DESCRIPTION
lorem ipsum dolores
.TP
lorem
ipsum dolores
.TP
lorem
ipsum dolores
.sp
lorem ipsum dolores
.TP
lorem
ipsum dolores
.sp
lorem ipsum dolores
.sp
lorem ipsum dolores
.PP
.SH COPYRIGHT
.nf
Copyright (c) \&.COPYRIGHT\&.

.fi

Added modules/doctools/tests/nroff/13.













































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
'\"
'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
'\" Copyright (c) \&.COPYRIGHT\&.
'\"
.TH "test-itemized-examples" 1 n \&.MODULE\&. ""
.so man.macros
.BS
.SH NAME
test-itemized-examples \-
.SH DESCRIPTION
lorem ipsum dolores
.IP \(bu
.CS

 A lorem ipsum dolores
.CE
.IP \(bu
lorem ipsum dolores
.CS

 B lorem ipsum dolores
.CE
.IP
lorem ipsum dolores
.IP \(bu
lorem ipsum dolores
.CS

 C lorem ipsum dolores
.CE
.IP \(bu
lorem ipsum dolores
.PP
.SH COPYRIGHT
.nf
Copyright (c) \&.COPYRIGHT\&.

.fi

Added modules/doctools/tests/nroff/14.













































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
'\"
'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
'\" Copyright (c) \&.COPYRIGHT\&.
'\"
.TH "test-enumerated-examples" 1 n \&.MODULE\&. ""
.so man.macros
.BS
.SH NAME
test-enumerated-examples \-
.SH DESCRIPTION
lorem ipsum dolores
.IP [1]
.CS

 A1 lorem ipsum dolores
.CE
.IP [2]
lorem ipsum dolores
.CS

 B2 lorem ipsum dolores
.CE
.IP
lorem ipsum dolores
.IP [3]
lorem ipsum dolores
.CS

 C3 lorem ipsum dolores
.CE
.IP [4]
lorem ipsum dolores
.PP
.SH COPYRIGHT
.nf
Copyright (c) \&.COPYRIGHT\&.

.fi

Added modules/doctools/tests/nroff/15.





















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
'\"
'\" Generated from file '\&.FILE\&.' by tcllib/doctools with format 'nroff'
'\" Copyright (c) \&.COPYRIGHT\&.
'\"
.TH "test-definition-examples" 1 n \&.MODULE\&. ""
.so man.macros
.BS
.SH NAME
test-definition-examples \-
.SH DESCRIPTION
lorem ipsum dolores
.TP
lorem
.CS

 A1 lorem ipsum dolores
.CE
.TP
lorem
ipsum dolores
.CS

 B2 lorem ipsum dolores
.CE
.IP
lorem ipsum dolores
.TP
lorem
ipsum dolores
.CS

 C3 lorem ipsum dolores
.CE
.TP
lorem
ipsum dolores
.PP
.SH COPYRIGHT
.nf
Copyright (c) \&.COPYRIGHT\&.

.fi

Added modules/doctools/tests/null/09.

Added modules/doctools/tests/null/10.

Added modules/doctools/tests/null/11.

Added modules/doctools/tests/null/12.

Added modules/doctools/tests/null/13.

Added modules/doctools/tests/null/14.

Added modules/doctools/tests/null/15.

Changes to modules/doctools/tests/text/00.

whitespace changes only

Changes to modules/doctools/tests/text/01.

whitespace changes only

Changes to modules/doctools/tests/text/02.

whitespace changes only

Changes to modules/doctools/tests/text/03.

whitespace changes only

Changes to modules/doctools/tests/text/04.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
TEST -

DESCRIPTION
===========

BEGINNE HIER


| Example Block  More Lines


| Inlined Example \
| Next Line

FERTIG

COPYRIGHT
=========

Copyright (c) .COPYRIGHT.







<

<










9
10
11
12
13
14
15

16

17
18
19
20
21
22
23
24
25
26
TEST -

DESCRIPTION
===========

BEGINNE HIER


| Example Block  More Lines


| Inlined Example \
| Next Line

FERTIG

COPYRIGHT
=========

Copyright (c) .COPYRIGHT.

Changes to modules/doctools/tests/text/05.

whitespace changes only

Changes to modules/doctools/tests/text/06.

whitespace changes only

Changes to modules/doctools/tests/text/07.

whitespace changes only

Changes to modules/doctools/tests/text/08.

78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
        TYPE NAME

            DESCRIPTION ::Option::

        TYPE NAME (MODE)

            DESCRIPTION ::?Optional?::


            | THE ARGUMENT IS USED IN THIS
            | AND/OR THAT MANNER

    CMDNAME ...

        DESCRIPTION ::*Package*::







<







78
79
80
81
82
83
84

85
86
87
88
89
90
91
        TYPE NAME

            DESCRIPTION ::Option::

        TYPE NAME (MODE)

            DESCRIPTION ::?Optional?::


            | THE ARGUMENT IS USED IN THIS
            | AND/OR THAT MANNER

    CMDNAME ...

        DESCRIPTION ::*Package*::

Added modules/doctools/tests/text/09.















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

TEST - 
Generated from file '.FILE.' by tcllib/doctools with format 'text'
TEST(z) 3.14.15.926 .MODULE. ""

NAME
====

TEST -

DESCRIPTION
===========

lorem

| 1 lorem ipsum dolores

ipsum

| 2 lorem ipsum dolores

dolores

| 3 lorem ipsum dolores

lorem

| 4 lorem ipsum dolores

ipsum

| 5 lorem ipsum dolores

dolores

COPYRIGHT
=========

Copyright (c) .COPYRIGHT.

Added modules/doctools/tests/text/10.































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

test-itemized - 
Generated from file '.FILE.' by tcllib/doctools with format 'text'
test-itemized(1) n .MODULE. ""

NAME
====

test-itemized -

DESCRIPTION
===========

lorem ipsum dolores

    *   lorem ipsum dolores

    *   lorem ipsum dolores

        lorem ipsum dolores

    *   lorem ipsum dolores

        lorem ipsum dolores

        lorem ipsum dolores

COPYRIGHT
=========

Copyright (c) .COPYRIGHT.

Added modules/doctools/tests/text/11.































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

test-enumerated - 
Generated from file '.FILE.' by tcllib/doctools with format 'text'
test-enumerated(1) n .MODULE. ""

NAME
====

test-enumerated -

DESCRIPTION
===========

lorem ipsum dolores

    [1] lorem ipsum dolores

    [2] lorem ipsum dolores

        lorem ipsum dolores

    [3] lorem ipsum dolores

        lorem ipsum dolores

        lorem ipsum dolores

COPYRIGHT
=========

Copyright (c) .COPYRIGHT.

Added modules/doctools/tests/text/12.











































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

test-definitions - 
Generated from file '.FILE.' by tcllib/doctools with format 'text'
test-definitions(1) n .MODULE. ""

NAME
====

test-definitions -

DESCRIPTION
===========

lorem ipsum dolores

    lorem

        ipsum dolores

    lorem

        ipsum dolores

        lorem ipsum dolores

    lorem

        ipsum dolores

        lorem ipsum dolores

        lorem ipsum dolores

COPYRIGHT
=========

Copyright (c) .COPYRIGHT.

Added modules/doctools/tests/text/13.



































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

test-itemized-examples - 
Generated from file '.FILE.' by tcllib/doctools with format 'text'
test-itemized-examples(1) n .MODULE. ""

NAME
====

test-itemized-examples -

DESCRIPTION
===========

lorem ipsum dolores

    *   | A lorem ipsum dolores

    *   lorem ipsum dolores

        | B lorem ipsum dolores

    *   lorem ipsum dolores

    *   lorem ipsum dolores

        | C lorem ipsum dolores

    *   lorem ipsum dolores

COPYRIGHT
=========

Copyright (c) .COPYRIGHT.

Added modules/doctools/tests/text/14.



































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

test-enumerated-examples - 
Generated from file '.FILE.' by tcllib/doctools with format 'text'
test-enumerated-examples(1) n .MODULE. ""

NAME
====

test-enumerated-examples -

DESCRIPTION
===========

lorem ipsum dolores

    [1] | A1 lorem ipsum dolores

    [2] lorem ipsum dolores

        | B2 lorem ipsum dolores

    [3] lorem ipsum dolores

    [4] lorem ipsum dolores

        | C3 lorem ipsum dolores

    [5] lorem ipsum dolores

COPYRIGHT
=========

Copyright (c) .COPYRIGHT.

Added modules/doctools/tests/text/15.



















































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

test-definition-examples - 
Generated from file '.FILE.' by tcllib/doctools with format 'text'
test-definition-examples(1) n .MODULE. ""

NAME
====

test-definition-examples -

DESCRIPTION
===========

lorem ipsum dolores

    lorem

        | A1 lorem ipsum dolores

    lorem

        ipsum dolores

        | B2 lorem ipsum dolores

        lorem ipsum dolores

    lorem

        ipsum dolores

        | C3 lorem ipsum dolores

    lorem

        ipsum dolores

COPYRIGHT
=========

Copyright (c) .COPYRIGHT.

Changes to modules/doctools/tests/tmml/03.

42
43
44
45
46
47
48
49
At <emph>__undefined__</emph>.
</p>
</section>



</manpage>








<
42
43
44
45
46
47
48

At <emph>__undefined__</emph>.
</p>
</section>



</manpage>

Changes to modules/doctools/tests/tmml/04.

30
31
32
33
34
35
36
37
</example>
FERTIG
</section>



</manpage>








<
30
31
32
33
34
35
36

</example>
FERTIG
</section>



</manpage>

Changes to modules/doctools/tests/tmml/05.

1
2
3
4
5
6
7
8

<!-- Generated from file '.FILE.' by tcllib/doctools with format 'tmml' -->
<manpage id='.FILE' cat='cmd' title='BASIC' version='5' package='.MODULE.'>
<head>
<info key='copyright' value='Copyright (c) .COPYRIGHT.'/>
</head>
<namesection>
<name>BASIC</name>
<








1
2
3
4
5
6
7

<!-- Generated from file '.FILE.' by tcllib/doctools with format 'tmml' -->
<manpage id='.FILE' cat='cmd' title='BASIC' version='5' package='.MODULE.'>
<head>
<info key='copyright' value='Copyright (c) .COPYRIGHT.'/>
</head>
<namesection>
<name>BASIC</name>

Changes to modules/doctools/tests/tmml/08.

1
2
3
4
5
6
7
8

<!-- Generated from file '.FILE.' by tcllib/doctools with format 'tmml' -->
<manpage id='.FILE' cat='cmd' title='ALL' version='5' package='.MODULE.'>
<head>
<info key='copyright' value='Copyright (c) **Copyright**'/>
</head>
<namesection>
<name>ALL</name>
<








1
2
3
4
5
6
7

<!-- Generated from file '.FILE.' by tcllib/doctools with format 'tmml' -->
<manpage id='.FILE' cat='cmd' title='ALL' version='5' package='.MODULE.'>
<head>
<info key='copyright' value='Copyright (c) **Copyright**'/>
</head>
<namesection>
<name>ALL</name>

Added modules/doctools/tests/tmml/09.





























































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'tmml' -->
<manpage id='.FILE' cat='cmd' title='TEST' version='3.14.15.926' package='.MODULE.'>
<head>
<info key='copyright' value='Copyright (c) .COPYRIGHT.'/>
</head>
<namesection>
<name>TEST</name>
<desc></desc>

</namesection>


<section id='section1'>
<title>DESCRIPTION</title>
lorem

<example>
1 lorem ipsum dolores

</example>
ipsum

<example> 2 lorem ipsum dolores 
</example>
dolores

<example>
3 lorem ipsum dolores

</example>
lorem

<example> 4 lorem ipsum dolores

</example>
ipsum

<example>
5 lorem ipsum dolores 
</example>
dolores
</section>



</manpage>

Added modules/doctools/tests/tmml/10.





































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'tmml' -->
<manpage id='.FILE' cat='cmd' title='test-itemized' version='n' package='.MODULE.'>
<head>
<info key='copyright' value='Copyright (c) .COPYRIGHT.'/>
</head>
<namesection>
<name>test-itemized</name>
<desc></desc>

</namesection>


<section id='section1'>
<title>DESCRIPTION</title>
lorem ipsum dolores

<ul>

<li> lorem ipsum dolores
</li>
<li> lorem ipsum dolores
<br/> lorem ipsum dolores
</li>
<li> lorem ipsum dolores
<br/> lorem ipsum dolores
<br/> lorem ipsum dolores
</li>

</ul>
</section>



</manpage>

Added modules/doctools/tests/tmml/11.





































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'tmml' -->
<manpage id='.FILE' cat='cmd' title='test-enumerated' version='n' package='.MODULE.'>
<head>
<info key='copyright' value='Copyright (c) .COPYRIGHT.'/>
</head>
<namesection>
<name>test-enumerated</name>
<desc></desc>

</namesection>


<section id='section1'>
<title>DESCRIPTION</title>
lorem ipsum dolores

<ol>

<li> lorem ipsum dolores
</li>
<li> lorem ipsum dolores
<br/> lorem ipsum dolores
</li>
<li> lorem ipsum dolores
<br/> lorem ipsum dolores
<br/> lorem ipsum dolores
</li>

</ol>
</section>



</manpage>

Added modules/doctools/tests/tmml/12.























































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'tmml' -->
<manpage id='.FILE' cat='cmd' title='test-definitions' version='n' package='.MODULE.'>
<head>
<info key='copyright' value='Copyright (c) .COPYRIGHT.'/>
</head>
<namesection>
<name>test-definitions</name>
<desc></desc>

</namesection>


<section id='section1'>
<title>DESCRIPTION</title>
lorem ipsum dolores

<dl>

<dle>
<dt>lorem</dt>
<dd> ipsum dolores
</dd>
</dle>
<dle>
<dt>lorem</dt>
<dd> ipsum dolores
<br/> lorem ipsum dolores
</dd>
</dle>
<dle>
<dt>lorem</dt>
<dd> ipsum dolores
<br/> lorem ipsum dolores
<br/> lorem ipsum dolores
</dd>
</dle>

</dl>
</section>



</manpage>

Added modules/doctools/tests/tmml/13.























































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'tmml' -->
<manpage id='.FILE' cat='cmd' title='test-itemized-examples' version='n' package='.MODULE.'>
<head>
<info key='copyright' value='Copyright (c) .COPYRIGHT.'/>
</head>
<namesection>
<name>test-itemized-examples</name>
<desc></desc>

</namesection>


<section id='section1'>
<title>DESCRIPTION</title>
lorem ipsum dolores

<ul>

<li>

<example> A lorem ipsum dolores 
</example>
</li>
<li> lorem ipsum dolores

<example> B lorem ipsum dolores 
</example>
lorem ipsum dolores
</li>
<li> lorem ipsum dolores

<example> C lorem ipsum dolores 
</example>
</li>
<li> lorem ipsum dolores
</li>

</ul>
</section>



</manpage>

Added modules/doctools/tests/tmml/14.























































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'tmml' -->
<manpage id='.FILE' cat='cmd' title='test-enumerated-examples' version='n' package='.MODULE.'>
<head>
<info key='copyright' value='Copyright (c) .COPYRIGHT.'/>
</head>
<namesection>
<name>test-enumerated-examples</name>
<desc></desc>

</namesection>


<section id='section1'>
<title>DESCRIPTION</title>
lorem ipsum dolores

<ol>

<li>

<example> A1 lorem ipsum dolores 
</example>
</li>
<li> lorem ipsum dolores

<example> B2 lorem ipsum dolores 
</example>
lorem ipsum dolores
</li>
<li> lorem ipsum dolores

<example> C3 lorem ipsum dolores 
</example>
</li>
<li> lorem ipsum dolores
</li>

</ol>
</section>



</manpage>

Added modules/doctools/tests/tmml/15.















































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<!-- Generated from file '.FILE.' by tcllib/doctools with format 'tmml' -->
<manpage id='.FILE' cat='cmd' title='test-definition-examples' version='n' package='.MODULE.'>
<head>
<info key='copyright' value='Copyright (c) .COPYRIGHT.'/>
</head>
<namesection>
<name>test-definition-examples</name>
<desc></desc>

</namesection>


<section id='section1'>
<title>DESCRIPTION</title>
lorem ipsum dolores

<dl>

<dle>
<dt>lorem</dt>
<dd>

<example> A1 lorem ipsum dolores 
</example>
</dd>
</dle>
<dle>
<dt>lorem</dt>
<dd> ipsum dolores

<example> B2 lorem ipsum dolores 
</example>
lorem ipsum dolores
</dd>
</dle>
<dle>
<dt>lorem</dt>
<dd> ipsum dolores

<example> C3 lorem ipsum dolores 
</example>
</dd>
</dle>
<dle>
<dt>lorem</dt>
<dd> ipsum dolores
</dd>
</dle>

</dl>
</section>



</manpage>

Added modules/doctools/tests/toc/html/00.























>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
<!DOCTYPE html><html><head>
<title> TOC </title>
</head>
<!-- Generated by tcllib/doctools/toc with format 'html'
   -->
<!-- TOC
   -->
<body>
<h3>TOC</h3>
<hr><dl><dt><h2>Test</h2></dt><dd>
</dd></dl><hr></body></html>

Added modules/doctools/tests/toc/html/01.











































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html><html><head>
<title> TOC </title>
</head>
<!-- Generated by tcllib/doctools/toc with format 'html'
   -->
<!-- TOC
   -->
<body>
<h3>TOC</h3>
<hr><dl><dt><h2>Test</h2></dt><dd>
<table class="#doctools_toc">
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='i1'><a href="I1f">i1</a></td>
<td class="#doctools_tocright">i1d</td>
</tr>
<tr class="#doctools_tocodd"  >
<td class="#doctools_tocleft" ><a name='i2'><a href="I2f">i2</a></td>
<td class="#doctools_tocright">i2d</td>
</tr>
</table>
</dd></dl><hr></body></html>

Added modules/doctools/tests/toc/html/02.





































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!DOCTYPE html><html><head>
<title> TOC </title>
</head>
<!-- Generated by tcllib/doctools/toc with format 'html'
   -->
<!-- TOC
   -->
<body>
<h3>TOC</h3>
<hr><dl><dt><h2>Test</h2></dt><dd>
<table class="#doctools_toc">
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='i1'><a href="I1f">i1</a></td>
<td class="#doctools_tocright">i1d</td>
</tr>
</table>
<dl><dt><a name='_1_a_href_1_df_1_1_d_1_a_1_'><a href="Df">D</a></dt><dd>
<table class="#doctools_toc">
<tr class="#doctools_tocodd"  >
<td class="#doctools_tocleft" ><a name='i2'><a href="I2f">i2</a></td>
<td class="#doctools_tocright">i2d</td>
</tr>
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='i3'><a href="I3f">i3</a></td>
<td class="#doctools_tocright">i3d</td>
</tr>
</table></dl>
<table class="#doctools_toc">
<tr class="#doctools_toceven" >
<td class="#doctools_tocleft" ><a name='i4'><a href="I4f">i4</a></td>
<td class="#doctools_tocright">i4d</td>
</tr>
</table>
</dd></dl><hr></body></html>

Added modules/doctools/tests/toc/nroff/00.

















>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
'\"
'\" Generated by tcllib/doctools/toc with format 'nroff'
.TH "TOC" n
.so man.macros
.BS
.SH CONTENTS
Test
.RS

Added modules/doctools/tests/toc/nroff/01.





























>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
'\"
'\" Generated by tcllib/doctools/toc with format 'nroff'
.TH "TOC" n
.so man.macros
.BS
.SH CONTENTS
Test
.RS
.TP
\fBi1\fR
\fII1f\fR: i1d
.TP
\fBi2\fR
\fII2f\fR: i2d

Added modules/doctools/tests/toc/nroff/02.

















































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
'\"
'\" Generated by tcllib/doctools/toc with format 'nroff'
.TH "TOC" n
.so man.macros
.BS
.SH CONTENTS
Test
.RS
.TP
\fBi1\fR
\fII1f\fR: i1d
.TP
D
.RS
.TP
\fBi2\fR
\fII2f\fR: i2d
.TP
\fBi3\fR
\fII3f\fR: i3d
.RE
.TP
\fBi4\fR
\fII4f\fR: i4d

Added modules/doctools/tests/toc/null/00.

Added modules/doctools/tests/toc/null/01.

Added modules/doctools/tests/toc/null/02.

Added modules/doctools/tests/toc/text/00.











>
>
>
>
>
1
2
3
4
5

Table of contents generated by tcllib/doctools/toc with format 'text'

TOC -- Test
===========

Added modules/doctools/tests/toc/text/01.



















>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9

Table of contents generated by tcllib/doctools/toc with format 'text'

TOC -- Test
===========

I1f i1d

I2f i2d

Added modules/doctools/tests/toc/text/02.

































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Table of contents generated by tcllib/doctools/toc with format 'text'

TOC -- Test
===========

I1f i1d

D
-

    I2f i2d

    I3f i3d

I4f i4d

Added modules/doctools/tests/toc/tmml/00.









>
>
>
>
1
2
3
4
<manual package='TOC'>
<title>Test</title>

</manual>

Added modules/doctools/tests/toc/tmml/01.













>
>
>
>
>
>
1
2
3
4
5
6
<manual package='TOC'>
<title>Test</title>
<subdoc href='I1f'/>
<subdoc href='I2f'/>

</manual>

Added modules/doctools/tests/toc/tmml/02.

























>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
<manual package='TOC'>
<title>Test</title>
<subdoc href='I1f'/>
<division>
<title>D</title>
<subdoc href='I2f'/>
<subdoc href='I3f'/>

</division>
<subdoc href='I4f'/>

</manual>

Added modules/doctools/tests/toc/toc/00.







>
>
>
1
2
3
[comment { -- empty toc }]
[toc_begin TOC Test]
[toc_end]

Added modules/doctools/tests/toc/toc/01.











>
>
>
>
>
1
2
3
4
5
[comment { -- just items }]
[toc_begin TOC Test]
[item I1f i1 i1d]
[item I2f i2 i2d]
[toc_end]

Added modules/doctools/tests/toc/toc/02.



















>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
[comment { -- item + division mix }]
[toc_begin TOC Test]
[item I1f i1 i1d]
[division_start D Df]
[item I2f i2 i2d]
[item I3f i3 i3d]
[division_end]
[item I4f i4 i4d]
[toc_end]

Added modules/doctools/tests/toc/wiki/00.











>
>
>
>
>
1
2
3
4
5

Table of Contents '''TOC'''
'''Test'''


Added modules/doctools/tests/toc/wiki/01.















>
>
>
>
>
>
>
1
2
3
4
5
6
7

Table of Contents '''TOC'''
'''Test'''
   [[i1]]:   I1f -- i1d
   [[i2]]:   I2f -- i2d


Added modules/doctools/tests/toc/wiki/02.























>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11

Table of Contents '''TOC'''
'''Test'''
   [[i1]]:   I1f -- i1d
'''D'''
   [[i2]]:   I2f -- i2d
   [[i3]]:   I3f -- i3d

   [[i4]]:   I4f -- i4d


Changes to modules/doctools/tests/wiki/00.

6
7
8
9
10
11
12
13
**DESCRIPTION**



**COPYRIGHT**

 Copyright (c) .COPYRIGHT.








<
6
7
8
9
10
11
12

**DESCRIPTION**



**COPYRIGHT**

 Copyright (c) .COPYRIGHT.

Changes to modules/doctools/tests/wiki/01.

6
7
8
9
10
11
12
13
**DESCRIPTION**

Argument ::''Argument'':: Class ::'''Class''':: Command ::'''Command''':: Comment :::: Const ::'''Constant''':: Emphasis ::''Emphasis'':: File ::"''File/Path''":: Function ::'''Function''':: Method ::'''Method''':: Namespace ::'''Namespace''':: Option ::'''Option''':: Optional ::?Optional?:: Package ::'''Package''':: Syscmd ::'''SystemCommand''':: Term ::''Term'':: Type ::'''Type''':: Uri ::Uri:: Variable ::'''Variable''':: Widget ::'''Widget'''::

**COPYRIGHT**

 Copyright (c) **Copyright**








<
6
7
8
9
10
11
12

**DESCRIPTION**

Argument ::''Argument'':: Class ::'''Class''':: Command ::'''Command''':: Comment :::: Const ::'''Constant''':: Emphasis ::''Emphasis'':: File ::"''File/Path''":: Function ::'''Function''':: Method ::'''Method''':: Namespace ::'''Namespace''':: Option ::'''Option''':: Optional ::?Optional?:: Package ::'''Package''':: Syscmd ::'''SystemCommand''':: Term ::''Term'':: Type ::'''Type''':: Uri ::Uri:: Variable ::'''Variable''':: Widget ::'''Widget'''::

**COPYRIGHT**

 Copyright (c) **Copyright**

Changes to modules/doctools/tests/wiki/02.

28
29
30
31
32
33
34
35

KEYA, KEYZ


**COPYRIGHT**

 Copyright (c) .COPYRIGHT.








<
28
29
30
31
32
33
34


KEYA, KEYZ


**COPYRIGHT**

 Copyright (c) .COPYRIGHT.

Changes to modules/doctools/tests/wiki/03.

28
29
30
31
32
33
34
35
5555
At '''AaA'''.
At '''__undefined__'''.

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.








<
28
29
30
31
32
33
34

5555
At '''AaA'''.
At '''__undefined__'''.

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.

Changes to modules/doctools/tests/wiki/04.

21
22
23
24
25
26
27
28

======
FERTIG

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.








<
21
22
23
24
25
26
27


======
FERTIG

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.

Changes to modules/doctools/tests/wiki/05.

32
33
34
35
36
37
38
39


40
41
42
43
44


45
46
47
48
49
50
51
..
59
60
61
62
63
64
65
66
   term:    definition 

   a-command :    semantic  


   1.  A

   1.  B  C  D




   *  1

   *  2  2a  2b




   '''option-1''':    meaning 

   '''option-2''' value:    elaboration  


................................................................................
Database Class:	'''Color'''
   *  caramel
KO

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.








|
>
>




|
>
>







 







<
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
..
63
64
65
66
67
68
69

   term:    definition 

   a-command :    semantic  


   1.  A

   1.  B
C
D


   *  1

   *  2
2a
2b


   '''option-1''':    meaning 

   '''option-2''' value:    elaboration  


................................................................................
Database Class:	'''Color'''
   *  caramel
KO

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.

Changes to modules/doctools/tests/wiki/06.

3
4
5
6
7
8
9
10


11
12
13
14


15
16
17
18
19
20
21
22
23
24
25


26


27
28
29
30
31



**DESCRIPTION**



   *  1  2  3



   *

   1.  a  b  c



   1.

   foo:    snafu 

   bar:    barf 

   roo:    gork  

   1.  a  b  c



   *  4  5  6



**COPYRIGHT**

 Copyright (c) .COPYRIGHT.








|
>
>



|
>
>









|
|
>
>
|
>
>




<
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38




**DESCRIPTION**



   *  1
2
3

   *

   1.  a
b
c

   1.

   foo:    snafu 

   bar:    barf 

   roo:    gork  

   1.  a
b
c

   *  4
5
6

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.

Changes to modules/doctools/tests/wiki/07.

24
25
26
27
28
29
30
31
   1.  a  22

   *  3

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.








<
24
25
26
27
28
29
30

   1.  a  22

   *  3

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.

Changes to modules/doctools/tests/wiki/08.

110
111
112
113
114
115
116
117

KEYA, KEYZ


**COPYRIGHT**

 Copyright (c) **Copyright**








<
110
111
112
113
114
115
116


KEYA, KEYZ


**COPYRIGHT**

 Copyright (c) **Copyright**

Added modules/doctools/tests/wiki/09.













































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
'''TEST 3.14.15.926''' '''.MODULE.'''




**DESCRIPTION**

lorem
======

1 lorem ipsum dolores

======
ipsum
======
 2 lorem ipsum dolores 
======
dolores
======

3 lorem ipsum dolores

======
lorem
======
 4 lorem ipsum dolores

======
ipsum
======

5 lorem ipsum dolores 
======
dolores

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.

Added modules/doctools/tests/wiki/10.











































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
'''test-itemized n''' '''.MODULE.'''




**DESCRIPTION**

lorem ipsum dolores

   *  lorem ipsum dolores

   *  lorem ipsum dolores
lorem ipsum dolores

   *  lorem ipsum dolores
lorem ipsum dolores
lorem ipsum dolores

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.

Added modules/doctools/tests/wiki/11.











































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
'''test-enumerated n''' '''.MODULE.'''




**DESCRIPTION**

lorem ipsum dolores

   1.  lorem ipsum dolores

   1.  lorem ipsum dolores
lorem ipsum dolores

   1.  lorem ipsum dolores
lorem ipsum dolores
lorem ipsum dolores

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.

Added modules/doctools/tests/wiki/12.











































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
'''test-definitions n''' '''.MODULE.'''




**DESCRIPTION**

lorem ipsum dolores

   lorem:    ipsum dolores 

   lorem:    ipsum dolores 
lorem ipsum dolores

   lorem:    ipsum dolores 
lorem ipsum dolores
lorem ipsum dolores

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.

Added modules/doctools/tests/wiki/13.

































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
'''test-itemized-examples n''' '''.MODULE.'''




**DESCRIPTION**

lorem ipsum dolores

   *
======
 A lorem ipsum dolores 
======


   *  lorem ipsum dolores
======
 B lorem ipsum dolores 
======
lorem ipsum dolores

   *  lorem ipsum dolores
======
 C lorem ipsum dolores 
======


   *  lorem ipsum dolores

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.

Added modules/doctools/tests/wiki/14.

































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
'''test-enumerated-examples n''' '''.MODULE.'''




**DESCRIPTION**

lorem ipsum dolores

   1.
======
 A1 lorem ipsum dolores 
======


   1.  lorem ipsum dolores
======
 B2 lorem ipsum dolores 
======
lorem ipsum dolores

   1.  lorem ipsum dolores
======
 C3 lorem ipsum dolores 
======


   1.  lorem ipsum dolores

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.

Added modules/doctools/tests/wiki/15.

































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
'''test-definition-examples n''' '''.MODULE.'''




**DESCRIPTION**

lorem ipsum dolores

   lorem:    
======
 A1 lorem ipsum dolores 
======


   lorem:    ipsum dolores 
======
 B2 lorem ipsum dolores 
======
lorem ipsum dolores

   lorem:    ipsum dolores 
======
 C3 lorem ipsum dolores 
======


   lorem:    ipsum dolores  

**COPYRIGHT**

 Copyright (c) .COPYRIGHT.