toc: Add startlevel parameter. (kerravonsen)

master
Joey Hess 2009-12-25 15:28:18 -05:00
parent 7cf435b678
commit ffc9f25e73
3 changed files with 15 additions and 3 deletions

View File

@ -53,8 +53,8 @@ sub format (@) {
my $page="";
my $index="";
my %anchors;
my $curlevel;
my $startlevel=0;
my $startlevel=($params{startlevel} ? $params{startlevel} : 0);
my $curlevel=$startlevel-1;
my $liststarted=0;
my $indent=sub { "\t" x $curlevel };
$p->handler(start => sub {
@ -65,12 +65,17 @@ sub format (@) {
my $anchor="index".++$anchors{$level}."h$level";
$page.="$text<a name=\"$anchor\"></a>";
# Take the first header level seen as the topmost level,
# Unless we're given startlevel as a parameter,
# take the first header level seen as the topmost level,
# even if there are higher levels seen later on.
if (! $startlevel) {
$startlevel=$level;
$curlevel=$startlevel-1;
}
elsif (defined $params{startlevel} &&
$level < $params{startlevel}) {
return;
}
elsif ($level < $startlevel) {
$level=$startlevel;
}

1
debian/changelog vendored
View File

@ -1,6 +1,7 @@
ikiwiki (3.20091219) UNRELEASED; urgency=low
* pagestats: Add show parameter. Closes: #562129 (David Paleino)
* toc: Add startlevel parameter. (kerravonsen)
-- Joey Hess <joeyh@debian.org> Fri, 25 Dec 2009 14:31:22 -0500

View File

@ -14,6 +14,12 @@ the `levels` parameter:
The toc directive will take the level of the first header as the topmost
level, even if there are higher levels seen later in the file.
To create a table of contents that only shows headers starting with a given
level, use the `startlevel` parameter. For example, to show only h2 and
smaller headers:
\[[!toc startlevel=2]]
The table of contents will be created as an ordered list. If you want
an unordered list instead, you can change the list-style in your local
style sheet.