#!/usr/bin/perl use warnings; use strict; use Pandoc::Filter; use Pandoc::Elements; # FIXME: avoid eating content past tweaked headers pandoc_filter( \&frontmatter, \&mainmatter, \&backmatter, \&toc, ); # FIXME: use Header (not latex RawBlock) - why does it hang?!? sub header { my $label = shift; # Header( 1, attributes {}, [ Str $label ], ); RawBlock( 'latex', '\\chapter{'.$label.'}' ); }; sub frontmatter { my $self = shift; return [ RawBlock( 'latex', '\\frontmatter' ), header('About'), ] if ( $self->name eq 'Header' and $self->level >= 1 and stringify($self) eq 'About' ); return; } sub mainmatter { my $self = shift; return [ RawBlock( 'latex', '\\mainmatter' ), header(stringify($self)), ] if ( $self->name eq 'Header' and $self->level == 1 and stringify($self) =~ /^Scope/ ); return; } sub backmatter { my $self = shift; return [ RawBlock( 'latex', '\\backmatter' ), header('References'), ] if ( $self->name eq 'Header' and $self->level == 1 and stringify($self) =~ /^Notes/ ); return; } sub toc { my $self = shift; return RawBlock( 'latex', '{\\hypersetup{linkcolor=black}\\setcounter{tocdepth}{3}\\clearpage\\tableofcontents}' ) if ( $self->name eq 'Header' and $self->level == 1 and stringify($self) =~ /^Table/ ); return [] if ( $self->name eq 'Para' and stringify($self) =~ /__TOC__/ ); return; }