summaryrefslogtreecommitdiff
path: root/pandoc-memoir
blob: 8cf44a4cdac3eee1dd4246f336e836afde180bdc (plain)
  1. #!/usr/bin/perl
  2. use warnings;
  3. use strict;
  4. use Pandoc::Filter 0.05;
  5. use Pandoc::Elements;
  6. # FIXME: avoid eating content past tweaked headers
  7. pandoc_filter(
  8. \&frontmatter,
  9. \&mainmatter,
  10. \&backmatter,
  11. \&toc,
  12. );
  13. # FIXME: use Header (not latex RawBlock) - why does it hang?!?
  14. sub header {
  15. my $label = shift;
  16. # Header( 1, attributes {}, [ Str $label ], );
  17. RawBlock( 'latex', '\\chapter{'.$label.'}' );
  18. };
  19. sub frontmatter {
  20. my $self = shift;
  21. return [ RawBlock( 'latex', '\\frontmatter' ), header('About'), ]
  22. if ( $self->name eq 'Header' and $self->level >= 1
  23. and stringify($self) eq 'About' );
  24. return;
  25. }
  26. sub mainmatter {
  27. my $self = shift;
  28. return [ RawBlock( 'latex', '\\mainmatter' ), header(stringify($self)), ]
  29. if ( $self->name eq 'Header' and $self->level == 1
  30. and stringify($self) =~ /^Scope/ );
  31. return;
  32. }
  33. sub backmatter {
  34. my $self = shift;
  35. return [ RawBlock( 'latex', '\\backmatter' ), header('References'), ]
  36. if ( $self->name eq 'Header' and $self->level == 1
  37. and stringify($self) =~ /^Notes/ );
  38. return;
  39. }
  40. sub toc {
  41. my $self = shift;
  42. return RawBlock( 'latex',
  43. '{\\hypersetup{linkcolor=black}\\setcounter{tocdepth}{3}\\clearpage\\tableofcontents}'
  44. )
  45. if ( $self->name eq 'Header' and $self->level == 1
  46. and stringify($self) =~ /^Table/ );
  47. return []
  48. if ( $self->name eq 'Para' and stringify($self) =~ /__TOC__/ );
  49. return;
  50. }