Headers may now have automatic numbering if header.numbering is set.

master
kts 2014-11-28 05:21:24 -08:00
parent 3b0f23dfb8
commit 4a6d614d3c
3 changed files with 22 additions and 6 deletions

Binary file not shown.

View File

@ -1,6 +1,6 @@
.imply(header.ids) .imply(header.ids)
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
kettext Rules Syntax
```````````````````````````````` ````````````````````````````````
As is the case with most any syntax, the best way to learn is to view the end product and the syntax used to generate it. As is the case with most any syntax, the best way to learn is to view the end product and the syntax used to generate it.
@ -10,7 +10,7 @@ However, so as to avoid creating examples of every syntax permutation possible,
* Special rules * Special rules
* Example(s) and Source(s) * Example(s) and Source(s)
,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,
Formatting rules 1. Formatting rules
```````````````````````` ````````````````````````
,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,
.imply .imply
@ -25,6 +25,7 @@ This line must start at the end and/or the beginning of the document and contain
* //header.ids// -- create ids for every header from header text. Replaces spaces with underscores. * //header.ids// -- create ids for every header from header text. Replaces spaces with underscores.
* //header.depth// -- set the starting depth of headers. Defaults to 0. * //header.depth// -- set the starting depth of headers. Defaults to 0.
* //header.reverse// -- sets smaller headers to be considered as greater, e.g., "==== header ====" is greater than "====== header ======" * //header.reverse// -- sets smaller headers to be considered as greater, e.g., "==== header ====" is greater than "====== header ======"
* //header.numbering// -- automatically number headers relative to a parent header and prepend this value to the header content.
* //version.hide// -- embeds the version of kettext used to create the document in a hidden format. Otherwise is added as a footer. * //version.hide// -- embeds the version of kettext used to create the document in a hidden format. Otherwise is added as a footer.
* //version.none// -- completely removes version information from the output. * //version.none// -- completely removes version information from the output.
@ -42,7 +43,7 @@ The placement of formatters varies between the elements, but the general syntax
# .some_option(some_value).other_option(other_value) # .some_option(some_value).other_option(other_value)
,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,
Font styling and anchors 2. Font styling and anchors
```````````````````````` ````````````````````````
Font may be styled in any of the following manners: Font may be styled in any of the following manners:
@ -80,7 +81,7 @@ If using an HTML convertor, you can pass CSS styling directly:
[[link]].href(http://kettek.exoss.net).style(border:1px solid red) [[link]].href(http://kettek.exoss.net).style(border:1px solid red)
,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,
Headers 3. Headers
```````````````````````` ````````````````````````
A header is some prominently formatted text that precedes a larger section of text and acts as a demarker. Headers are sized in order of precedence, with larger visual headers being considered the parent of smaller headers contained within. A header is some prominently formatted text that precedes a larger section of text and acts as a demarker. Headers are sized in order of precedence, with larger visual headers being considered the parent of smaller headers contained within.
@ -152,7 +153,7 @@ Formatters are placed at the end of the content line:
Big Header .class(big_alt) Big Header .class(big_alt)
```````````` ````````````
,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,
Text Blocks 4. Text Blocks
```````````````````````` ````````````````````````
Text blocks are a larger collection of text that may or may not span multiple lines. kettext uses 4 unique text blocks: **paragraph**, **preformatted**, **code**, and **block quote**. Text blocks are a larger collection of text that may or may not span multiple lines. kettext uses 4 unique text blocks: **paragraph**, **preformatted**, **code**, and **block quote**.
,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,

View File

@ -320,6 +320,13 @@ for (my $h_i = 0; $h_i < scalar @headers; $h_i++) {
} }
} }
# set up our array for header numbering. The first element
my @header_numbers;
for (my $h_i = 0; $h_i < scalar @headers; $h_i++) {
$header_numbers[$h_i] = 0;
}
my $header_number = 0; # at which numbering depth are we
# print 'em out # print 'em out
if ($settings{'toc'}) { if ($settings{'toc'}) {
foreach (@elements) { foreach (@elements) {
@ -334,9 +341,17 @@ if ($settings{'toc'}) {
if ($_->{type} == TYPE_HEADER) { if ($_->{type} == TYPE_HEADER) {
my $hsize = $header_map{$_->{size}}; my $hsize = $header_map{$_->{size}};
my $htext = $_->{text}; my $htext = $_->{text};
if ($settings{"header.numbering"}) {
$header_number = $hsize;
for (my $h_i = $header_number+1; $h_i < scalar @headers; $h_i++) {
$header_numbers[$h_i] = 0;
}
$header_numbers[$header_number]++;
$htext = ($settings{"header.numbering"} ? $header_numbers[$header_number].'. ' : '') . $htext;
}
my $hid = $_->{text}; my $hid = $_->{text};
$hid =~ s/ /_/g; $hid =~ s/ /_/g;
print("<h$hsize".($_->{opts} ? $_->{opts} : '').($settings{'header.ids'} ? " id=\"".$hid."\"" : '').">$_->{text}</h$hsize>\n"); print("<h$hsize".($_->{opts} ? $_->{opts} : '').($settings{'header.ids'} ? " id=\"".$hid."\"" : '').">$htext</h$hsize>\n");
} elsif ($_->{type} == TYPE_BREAK) { } elsif ($_->{type} == TYPE_BREAK) {
if ($previous_type == TYPE_BREAK) { if ($previous_type == TYPE_BREAK) {
print("<br />\n"); print("<br />\n");