PerlPoint-Converters

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

   \\BOXCOLORS{bg=backgroundcolor fg=foregroundcolor}
   which replaces \\BOXCOLR<backgroundcolor> and \\BOXTEXT<foregroundcolor>

*  bugfix: escapes in code-blocks were inactive after embedded code

*  bugfix: URLs in pp2html were doubled in the output

*  workaround for TreeApplet Bug: Headers which contain a / are not allowed.
   Therefore all slashes are replaced with commas ...

*  Language parameter in \\EMBED{lang=html ...} is now caseinsensitive

*  Version information clarified: pp2html and pp2latex have individual version
   numbers (build numbers) and belong to a certain version of the 
   PerlPoint-Converters package.

*  Individual colors (foreground and background) for table of contents, index
   and normal slides, top and bottom templates: --bgcolor, --fgcolor, 
   --toc_bgcolor, --toc_fgcolor, --idx_bgcolor --idx_fgcolor
   --top_bgcolor, --top_fgcolor, --bot_bgcolor, --bot_fgcolor
   --top_linkcolor, --bot_linkcolor, --toc_linkcolor, --idx_linkcolor, ...

Changes  view on Meta::CPAN

   to `PerlPoint-Package' when being moved to the CPAN. To make it clear that the
   two packages are closely related, I decided to use the new name.

*  require 5.6.0 (because PerlPoint-Package-0.27 needs it, too)

*  Option "--safe_opcodes"


=Version 0.006   10/27/2000

*  \\EMBED  \\END_EMBED supported in pp2html

*  Templates changed (usage of karawane-50.gif)

*  Activated embedded perl code (use Safe)

*  pp2latex: rudimentary support of eps files:
   when you use \\IMAGE{src="filename.gif"} a file named "filename.eps" will be
   included in the tex file (if it exists ... :-)

*  ppdoc.pp updated (\\INCLUDE parser-paragraphs, parser-tags and parser-active-contents

doc/doc-functions.pp  view on Meta::CPAN


// process a directory, insert all files found
\EMBED{lang=perl}

use strict;

sub includeDirectoryFiles
 {
  # get and check parameters
  my ($dir)=@_;
  die qq([Error] Missing directory option.\n) unless $dir;
  die qq([Error] Directory "$dir" does not exist.\n) unless -d $dir;

doc/doc-functions.pp  view on Meta::CPAN

       {
        # pass the file(s) to PerlPoint
        $perlPoint.=qq(\n\n\\INCLUDE{file="$dir/$_" type=pp headlinebase=CURRENT_LEVEL}\n\n) foreach @{$headlines{$headline}};
       }
    }

  # supply generated PerlPoint
  $perlPoint;
 }

\END_EMBED

doc/faq-pp2html/Layout/faq-q11.pp  view on Meta::CPAN


// vim: set filetype=PerlPoint:

+ONCOLOR:\EMBED{lang=HTML}<span style="background-color:__c__">__body__</span>\END_EMBED

+ONBLUE:\ONCOLOR{c=blue}<__body__>

=Text Background Colors

\QST

How can I achieve colored background for some words?

\ANS

Define the following macros:

<<MAC
 +ONCOLOR:\EMBED{lang=HTML}<span style="background-color:__c__">__body__</span>\END_EMBED

 +ONBLUE:\ONCOLOR{c=blue}<__body__>
MAC

Then you can use them like: The next words appear on a red background: \\ONCOLOR{c=red}<black on red>

The result is: \ONCOLOR{c=red}<black on red>

\\ONBLUE<\\F{color=white}<white on blue>> yields: \ONBLUE<\F{color=white}<white on blue>>

doc/faq-pp2html/Layout/faq-q3.pp  view on Meta::CPAN

=Center Paragraphs and Images

\QST

How can I \X<center> a paragraph or an image?

\ANS

Define macros which use embeded HTML to do the job:

 +CENTER_ON:\\EMBED{lang=HTML}<CENTER>\\END_EMBED

 +CENTER_OFF:\\EMBED{lang=HTML}</CENTER>\\END_EMBED

\DSC


Define the macros in a spceial file which can be included with the
\\INCLUDE tag or define them just at the beginning of your main PerlPoint
file. Then you can use them in the following way:

 \\CENTER_ON

 some text

 \\IMAGE{src="cool_img.gif"}

 \\CENTER_OFF

+CENTER_ON:\EMBED{lang=HTML}<CENTER>\END_EMBED

+CENTER_OFF:\EMBED{lang=HTML}</CENTER>\END_EMBED

\CENTER_ON

This text should be centered ...

\CENTER_OFF

doc/parser-active-contents.pp  view on Meta::CPAN


=Active contents

Document parts can be generated \I<dynamically>. This is done by evaluating a \I<condition>,
\I<embedded> or \I<included> \B<Perl> code \I<at translation time>.

@|
active part       | description | example
condition         | A paragraph type to control inclusion of all subsequent source parts before the next condition. | \C<\B<?> \$PerlPoint-\>{targetLanguage} eq "HTML">
\I<tag> condition | A special tag option available for all tags which accept options which flags whether the tag should take effect or not.  If Active Contents is \REF{name=Security type=linked}<disabled>, the condition defaults to be false. | \C<\\I...
embedded Perl     | Perl code embedded into \C<\\EMBED> and \C<\\END_EMBED> tags, marked as Perl by tag option \C<lang> set to \C<"perl">. The code is expected to return a string which will be interpreted as \B<PerlPoint>. | \C<This document was gene...
included Perl     | Perl code read from a file via an \C<\\INCLUDE> tag, marked as Perl by tag option \C<type> set to \C<"perl">. File contents is evaluated like embedded Perl. | \C<\B<\\INCLUDE{type=perl file="included.pl"}>>

  As an introduction example of the active contents feature,
  here is a report about this document: it was generated
  at \EMBED{lang=perl}my @t=(localtime)[3, 4, 5]; sprintf("%d.%d.%d", $t[0], $t[1]+1, $t[2]+1900); \END_EMBED.


==What it is for

Well, honestly spoken, I'm looking forward to the usage people will make of this feature.
But I can already imagine things like

* document parts included depending on the target language (an article could
  possibly provide more informations than presentation sheets), the time of
  presentation generation (informations may be confidental until a certain

doc/parser-active-contents.pp  view on Meta::CPAN

* and more ...

As for conditions, they can be used to generate various different documents from
one and the same source, depending on decisions based on evaluated Perl code.


==An example

The following files were found in the source directory of this documentation part when this presentation was built:

\EMBED{lang=perl}

# read /tmp
opendir(D, '.');
my @snapshot=map {my $size=(stat($_))[7]; [$_, defined $size ? $size : 0]} sort readdir(D);
closedir(D);

# supply the listing as a table
join(
     # row separator
     "\n",

doc/parser-active-contents.pp  view on Meta::CPAN

     # headline
     "filename | file size",

     # data, sorted
     map {join(' | ', @$_)} @snapshot,

     # closing empty line
     '',
    );

\END_EMBED


==Security

Security is kept by running active contents in a safe environment via a \B<Safe>
object if requested. This way every translator can implement its own grade of security,
allowing only such operations which seem to be uncritical to the author.

Nevertheless, the necessary security grade may vary. Imagine a downloaded presentation source
and a self written document. But even with own presentations it seems to be good

doc/parser-active-contents.pp  view on Meta::CPAN


All active contents shares the same \B<Safe> object which means that it is executed \I<in
the same Perl namespace> (which usually happens to appear as \C<main::>, please see the
translators documentation for details). As a consequece, several parts can interact with
each other by variables and functions.

Note that the active parts are evaluated in the order they appear in the PerlPoint source.

<<EOE

   \EMBED{lang=perl}

   sub fileCount
     {
      # get number of files
      opendir(D, '.');
      my @fileNr=readdir(D);
      my $fileNr=@fileNr;
      closedir(D);

      # supply result
      $fileNr;
     }

   # scan directory
   $filesFound=fileCount;

   '';

   \END_EMBED

EOE

The following condition evaluates the number of files found by the previously
executed code, using a variable set there:

  // conditional hints
  ? \B<$filesFound>>10000000000

... and includes more informations if appropriate:

doc/parser-active-contents.pp  view on Meta::CPAN


  The number of files in your directory let us add additional suggestions:

  ...

  // back to main document
  ? 1

Now we can use the previously declared function again:

  There are \\EMBED{lang=perl}\B<fileCount>\\END_EMBED files
  in the current directory.


==Using document variables

PerlPoint variables are \I<no> active contents. Even when active contents is
disabled completely, variables will still work. Nevertheless, their \I<values>
are \I<copied> into the namespace of active contents.

That means you can read every PerlPoint variable in active parts.

<<EOE

  $var=10

  The variables value on PerlPoint side is $var. On Perl side,
  it is \EMBED{lang=perl}$main::var\END_EMBED as well.

EOE

Note that the variables are only \I<copied>. They may be modified on Perl side
but without effect to PerlPoint.

<<EOE

  $var=10

  The variables value on PerlPoint side is $var. On Perl side,
  it is \EMBED{lang=perl}$main::var*=100\END_EMBED now. But this does not
  affect PerlPoint which still sees a value of $var.

EOE

Further more, whenever a variable is set on PerlPoint side, the Perl side
value is updated which overwrites all modifications eventually made.

You may have noticed that the variables were accessed by their fully qualified names
in the examples above. This was done because PerlPoint variables are evaluated \I<first>
- before the code is passed to perl. By using the fully qualified name which is unknown

doc/parser-active-contents.pp  view on Meta::CPAN


  // include the following depending on command
  ? flagSet('special')

Active contents can modify the provided data but changes will \I<expire> when a code
snippet is executed completely.

<<EOE

  // active contents modifying base data
  \EMBED{lang=perl}
     $PerlPoint->{targetLanguage}='modified';
  \END_EMBED

  // base data is automatically restored now,
  // so the condition checks the original value
  ? $PerlPoint->{targetLanguage} eq 'HTML'

EOE


==Known problems

doc/parser-faq.pp  view on Meta::CPAN

+QST:\BU<Question:>

+ANS:\BU<Answer:>

+DSC:\BU<Discussion:>

// general headline
=FAQ

// process all articles dynamically
\EMBED{lang=perl}

{
 # declare variables
 my $perlPoint='';

 # get all subdirectories
 opendir(D, 'faq') or die qq([Fatal] Cannot open directory "faq"\n);
 my @categories=grep((-d "faq/$_" and !/^\./ and !/^CVS$/), readdir(D));
 closedir(D);

doc/parser-faq.pp  view on Meta::CPAN

          # pass the file(s) to PerlPoint
          $perlPoint.=qq(\n\n\\INCLUDE{file="faq/$category/$_" type=pp headlinebase=CURRENT_LEVEL}\n\n) foreach @{$questions{$question}};
         }
      }
   }

 # supply generated PerlPoint
 $perlPoint;
}

\END_EMBED

doc/parser-paragraphs.pp  view on Meta::CPAN

  $var=var

  This variable is set to $var.

All variables are made available to \I<embedded> and \I<included> Perl code as well as to
\I<conditions> and can be accessed there as package variables of "main::". Because a
variable is already replaced by the parser if possible, you have to use the fully
qualified name or to guard the variables "$" prefix character to do so:

<<EOE
  \EMBED{lang=perl}join(' ', $main::var, \$var)\END_EMBED
EOE

Variable modifications by embedded or included Perl \I<do not> affect the variables
visible to the parser. (This includes condition paragraphs.) This means that

<<EOE
  $var=10
  \EMBED{lang=perl}$main::var*=2;\END_EMBED
EOE

causes \C<\$var> to be different on parser and code side - the parser will still use a
value of 10, while embedded code works on with a value of 20.

Translator software \I<can> make additional use of variables, especially predeclare
certain settings (such variables are usually capitalized). Please see your converters
documentation for details.


doc/parser-paragraphs.pp  view on Meta::CPAN

  +F:\FONT{color=__c__}<__body__>

  +IB:\B<\I<__body__>>

  This \IB<text> is \RED<colored>.

  +TEXT:Macros can be used to abbreviate longer
  texts as well as other tags
  or tag combinations.

  +HTML:\EMBED{lang=html}

  Tags can be \RED<\I<nested>> into macros. And \I<\F{c=blue}<vice versa>>.
  \IB<\RED<This>> is formatted by nested macros.
  \HTML This is <i>embedded HTML</i>\END_EMBED.

  Please note: \TEXT

EOE


===Option defaults

If an option is declared but unused, it defaults to an empty string unless
the definition declared a default value itself by using an assignment list

doc/parser-tags.pp  view on Meta::CPAN

=Special purpose tags

* provide additional source control and

* allow target format specific source parts and

* implement structured formatting;

* can be used whereever tags in general are valid;

* currently are \C<\\INCLUDE>, \C<\\EMBED> and \C<\\END_EMBED>, \C<\\TABLE> and \C<\\END_TABLE>;

==File inclusion

It is possible to include another file by \B<\\INCLUDE{file=\<filename\> type=\<type\>}>.

The mandatory base options are

@|
option | description
file   | names the source to be included (should exist)

doc/parser-tags.pp  view on Meta::CPAN


Including external scripts can accelerate PerlPoint authoring significantly,
especially if the included files are still subject to changes.



==Embedded code

Target format code does not necessarily need to be imported by file - it can be
directly \I<embedded> as well. This means that one can write target language
code within the input stream using \C<\\EMBED>, maybe because you miss a certain
feature in the current translator version:

<<EOE

  \EMBED{lang=HTML}
  This is <i><b>embedded</b> HTML</i>. The parser detects <i>no</i>
  Perl Point tag here, except of <b>END_EMBED</b>.
  \END_EMBED

EOE

The mandatory \I<lang> option specifies which language the embedded code is of.
Usually a translator only supports its own target format to be embedded.
(You will not be surprised that language values of \C<"perl"> and \C<"pp"> are special
cases - see the related subsections.)

Please note that the \C<\\EMBED> tag does not accept a tag body to avoid
ambiguities. Use \C<\\END_EMBED> to flag where the embedded code is completed.
\I<It is the only recognized tag therein.>

Because embedding is not implemented by a paragraph but by a \I<tag>, \\EMBED
can be placed \I<directly> in a text like this:

<<EOE
  These \EMBED{lang=HTML}<i>italics</i>\END_EMBED are formatted
  by HTML code.
EOE

===Embedding PerlPoint into PerlPoint

This is just for fun. Set the \C<"lang"> option to \C<"pp"> to try it:

<<EOE
  Perl Point \EMBED{lang=pp}can \EMBED{lang=pp}be
  \EMBED{lang=pp}nested\END_EMBED\END_EMBED\END_EMBED.
EOE

===Embedding Perl

This feature offers dynamic PerlPoint generation at \I<translation time>.

  \\EMBED{lang=perl}hello\\END_EMBED

\B<Embedded Perl is \I<active contents> - see the special chapter about it.>

\I<If> active contents is enabled, embedded Perl code is evaluated. The code is
expected to produce a PerlPoint string which then replaces the inclusion tag and
is read like static PerlPoint.

If the included code fails, an error message is displayed and the result is
ignored.

Here's another example:

<<EOE

  \EMBED{lang=PERL}

  # build a message
  my $msg="Perl may be embedded as well.";

  # and supply it
  $msg;

  \END_EMBED

EOE

The feature is of course more powerful. You may generate images at translation
time and include them, scan the disk and include a formatted listing, download
data from a webserver and make it part of your presentation, autoformat complex
data, include formatted source code, keep your presentation up to date in any
way and so on.


doc/pp2html-faq.pp  view on Meta::CPAN

+QST:\BU<Question:>

+ANS:\BU<Answer:>

+DSC:\BU<Discussion:>

// general headline
=FAQ for pp2html

// process all articles dynamically
\EMBED{lang=perl}

{
 # declare variables
 my $perlPoint='';
 my $faq = "faq-pp2html";

 # get all subdirectories
 opendir(D, $faq) or die "[Fatal] Cannot open directory \"$faq\"\n";
 my @categories=grep((-d "$faq/$_" and !/^\./ and !/^CVS$/), readdir(D));
 closedir(D);

doc/pp2html-faq.pp  view on Meta::CPAN

          # pass the file(s) to PerlPoint
          $perlPoint.=qq(\n\n\\INCLUDE{file="$faq/$category/$_" type=pp headlinebase=CURRENT_LEVEL}\n\n) foreach @{$questions{$question}};
         }
      }
   }

 # supply generated PerlPoint
 $perlPoint;
}

\END_EMBED

doc/tagdoc-example.pp  view on Meta::CPAN

// load function definition
\INCLUDE{file="doc-functions.pp" type=pp}


// open tag doc chapter
=Supported tags

This chapter documents all tags supported by pp2html.

// call the function to process the docs in chapter "tags".
\EMBED{lang=perl}includeDirectoryFiles('tags');\END_EMBED

doc/tagdoc-supported.pp  view on Meta::CPAN

// load function definition
\INCLUDE{file="doc-functions.pp" type=pp}


// open tag doc chapter
=Supported tags

This chapter documents all tags supported by pp2html.

// call the function to process the docs in chapter "tags".
\EMBED{lang=perl}includeDirectoryFiles('tags');\END_EMBED

doc/tags/basic-tag-macros.pp  view on Meta::CPAN

// This macro is used to display a final hint usually used in
// a basic tags PerlPoint documentation. It uses Active Content.

// The trick is to list all tag names except of the one documented
// in the current section, which is passed by option "current".

// If there is a documentation of a mentioned tag as well, a
// reference will be generated, otherwise the tagname is just
// formatted boldly.

+OTHER_BASIC_TAGS:\EMBED{lang=perl}
                  {
                   my @list=map
                             {"\\B<\\REF{occasion=1 name=$main::_ type=linked}<$main::_>>"}
                                grep(uc($main::_) ne '__current__', qw(
                                                                       B
                                                                       C
                                                                       EMBED
                                                                       FORMAT
                                                                       HIDE
                                                                       I
                                                                       IMAGE
                                                                       INCLUDE
                                                                       LOCALTOC
                                                                       READY
                                                                       REF
                                                                       SEQ
                                                                       STOP
                                                                       TABLE
                                                                      )
                                    );
                   join(' ', join(', ', @list[0..($#list-1)]), 'and', $list[-1]);
                  }
                  \END_EMBED

doc/writing-converters.pp  view on Meta::CPAN



==Finding tag names

New tag names can be freely chosen, with two exceptions: first, certain tag names are already used (and therefore reserved) by the base system:

@|
tag                                                      | description
\BC<\\B>, \BC<\\C>, \BC<\\HIDE>, \BC<\\I>, \BC<\\IMAGE>, \BC<\\READY>, \BC<\\REF>, \BC<\\SEQ> | Base tags defined by \BC<\PP::Tags::Basic>. By convention, \I<all> converters support these tags. (The list might be incomplete, please look at the latest...
\BC<\\TABLE>, \BC<\\END_TABLE>                           | construct tables
\BC<\\EMBED>, \BC<\\END_EMBED>                           | embed other languages into a \PP source, e.g. to directly include parts in the target format, or to call Perl code which produces \PP on the fly
\BC<\\INCLUDE>                                           | loads additional files which are made part of the source (in various ways)

Second, please have a look at existing converters and \I<their> tags. It might confuse users if one and the same tag name has completely different meanings in different converters. So if your prefered name is already used, please invent another one. ...

All tag names are made of uppercased letters. Underscores and digits are allowed as well. The parser does not recognize a tag if its name does not match these rules.


==Tag option conventions

You are free to invent whatever option names you prefer. Well, almost. There are a few

pp2html  view on Meta::CPAN

      push_page $page_ref, "<TD$table_hl_bgcolor$align>";
    } else {
      if ($td_was_empty) {
        push_page $page_ref, "\&nbsp;";
      }
      push_page $page_ref, "</TD>";
    }
    return;
  } # 

  if ($_[2] eq "EMBED") { # embeded HTML 
    flush;
    if ($_[1]==DIRECTIVE_START) {
      if ( !defined $_[3]->{'lang'}) {
        pp_warn "*** ERROR: EMBED without 'lang' parameter\n";
      }
      elsif ($_[3]->{'lang'} =~ /HTML/i){
        $embedded_html = 1;
      }
    } else {
      $embedded_html = 0;
    }
    @BUFFER=();
    return;
  } # 

pp2html  view on Meta::CPAN


  \304 &Auml;
  \344 &auml;

  \337 &szlig;


=item --filter=regexp

This specifies a regular expression C<regexp> which should match
all allowed languages for EMBEDed code. The expression is evaluated
caseinsensitively.

Example: --filter="perl|html"

=item --nocopyright

suppresses the copyright message;

=item --noinfo

pp2html.patched.30.05.03  view on Meta::CPAN

      push_page $page_ref, "<TD$table_hl_bgcolor$align>";
    } else {
      if ($td_was_empty) {
        push_page $page_ref, "\&nbsp;";
      }
      push_page $page_ref, "</TD>";
    }
    return;
  } # }}}2

  if ($_[2] eq "EMBED") { # embeded HTML {{{2
    flush;
    if ($_[1]==DIRECTIVE_START) {
      if ( !defined $_[3]->{'lang'}) {
        pp_warn "*** ERROR: EMBED without 'lang' parameter\n";
      }
      elsif ($_[3]->{'lang'} =~ /HTML/i){
        $embedded_html = 1;
      }
    } else {
      $embedded_html = 0;
    }
    @BUFFER=();
    return;
  } # }}}2

pp2html.patched.30.05.03  view on Meta::CPAN


  \304 &Auml;
  \344 &auml;

  \337 &szlig;


=item --filter=regexp

This specifies a regular expression C<regexp> which should match
all allowed languages for EMBEDed code. The expression is evaluated
caseinsensitively.

Example: --filter="perl|html"

=item --nocopyright

suppresses the copyright message;

=item --noinfo

pp2latex  view on Meta::CPAN

    flush;
    if ($_[1]==DIRECTIVE_START) {
      push_page $page_ref, "";
    } else {
      push_page $page_ref, " & "; # &
    }
    return;
  }


  if ($_[2] eq "EMBED") {                                       # embeded LaTeX
    flush;
    if ($_[1]==DIRECTIVE_START) {
      if ( !defined $_[3]->{'lang'}) {
        pp_warn "ERROR: EMBED without 'lang' parameter\n";
      }
      elsif ($_[3]->{'lang'} =~ /latex/i){
        $embedded_latex = 1;
      }
    } else {
      $embedded_latex = 0;
    }
    @BUFFER=();
    return;
  }

pp2latex  view on Meta::CPAN

 ==Healine Level 1            --->  \subsection{Headline Level 1}
 ===Healine Level 2           --->  \subsubsection{Headline Level 2}
 ====Healine Level 3          --->  \paragraph{Headline Level 3}
 =====Healine Level 4, 5, ... --->  \textbf{Headline Level 4, 5, ...}

B<Note:> --section-sequence=chapter can only be use if the document class is report or book.

=item --filter=regexp

This specifies a regular expression C<regexp> which should match
all allowed languages for EMBEDed code. The expression is evaluated
caseinsensitively.

Example: --filter="perl|latex"

=item --prolog=filename

Specifies a file which must contain the LaTeX Declarations for the document.
C<\documentclass> and C<\begin{document}> must be defined there.

=item --activeContents

t/d_changes/changes0006.ref  view on Meta::CPAN

</HEAD>

<!-- ************************************************************** -->
<BODY bgcolor="#FFFFFF" text="#000000" link="#0000CC" vlink="#AAAAAA" alink="#FF0000">
<a name="Version 0.006   10/27/2000"></a>

<H1>Version 0.006   10/27/2000
</H1>

<UL>
<LI>\EMBED  \END_EMBED supported in pp2html</LI>
<LI>Templates changed (usage of karawane-50.gif)</LI>
<LI>Activated embedded perl code (use Safe)</LI>
<LI>pp2latex: rudimentary support of eps files: when you use \IMAGE{src=&quot;filename.gif&quot;} a file named &quot;filename.eps&quot; will be included in the tex file (if it exists ... :-)</LI>
<LI>ppdoc.pp updated (\INCLUDE parser-paragraphs, parser-tags and parser-active-contents from Jochen Stenzel)</LI>
<LI>create the slide directory specified by --slide_dir as necessary</LI>
<LI>pp2latex: included first version of TABLE support (from Alexander Sigel)</LI>
<LI>--block_indent option for pp2html</LI>
<LI>--no_index option for pp2html</LI>
</UL>
</BODY>

t/d_changes/changes0009.ref  view on Meta::CPAN

<LI>URL_INDEX did point to last page, not to index (bug reported by Jeffrey Haemer)</LI>
<LI>Index entries format changed. Now they look like text ref1 [, ref2, ref3 ...] with &quot;text&quot; beeing the (multiple) index entry and ref1, ref2 ... beeing Hyperlinks as references. The text for the references is either the page number or the...
<LI>Cleanup with templates. It has not been quite clear, what has to go to the HTML templates and what is generated by pp2html. For example the &lt;BODY&gt; line and the &lt;HTML&gt; tag. There were cases where the &lt;HTML&gt; header and the &lt;BOD...
<LI>templates adapted</LI>
<LI>Continued numbered lists ( the ## paragraphs are now supported)</LI>
<LI>Shiftlevels are handled correctly</LI>
<LI>the \BOXCOLOR and \BOXTEXT Tags are obsolete now. Their syntax was not consistent: \BOXCOLOR&lt;green&gt; has formerly been used to set the box color for code blocks. But normally all text in the tag body (between &lt; and &gt;) is part of the ou...
<LI>bugfix: escapes in code-blocks were inactive after embedded code</LI>
<LI>bugfix: URLs in pp2html were doubled in the output</LI>
<LI>workaround for TreeApplet Bug: Headers which contain a / are not allowed. Therefore all slashes are replaced with commas ...</LI>
<LI>Language parameter in \EMBED{lang=html ...} is now caseinsensitive</LI>
<LI>Version information clarified: pp2html and pp2latex have individual version numbers (build numbers) and belong to a certain version of the PerlPoint-Converters package.</LI>
<LI>Individual colors (foreground and background) for table of contents, index and normal slides, top and bottom templates: --bgcolor, --fgcolor, --toc_bgcolor, --toc_fgcolor, --idx_bgcolor --idx_fgcolor --top_bgcolor, --top_fgcolor, --bot_bgcolor, -...
<LI>new options: --no_contents_indent, --no_contents_bullets This will prevent the table of contents from beeing indented by &lt;UL&gt; &lt;/UL&gt; tags and the second option avoids bullets in front of each entry in the table of contents.</LI>
<LI>optional background images for normal slides, index and table of contents: --back_image, --toc_back_image, --idx_back_image --top_back_image, --bot_back_image</LI>
<LI>use Cwd instead of `pwd`</LI>
<LI>Images can now be part of an \XREF tag!</LI>
<LI>\IMAGE tag now supports BORDER=m option</LI>
<LI>XREF, PAGEREF and SECTIONREF now consider javascript navigation</LI>
<LI>--trans_table option re-implemented (had been part of an ancient version of pp2html)</LI>
<LI>different bullet images for different indentation levels --bullet option can be used more than once!</LI>

t/test_txt_bgcolor.pp  view on Meta::CPAN


? flagSet(latex)

//+ONCOLOR:__body__ %%__c__

+ONCOLOR:\EMBED{lang=latex}__body__ %%__c__\END_EMBED

+ONBLUE:__body__

? flagSet(html)

+ONCOLOR:\EMBED{lang=HTML}<span style="background-color:__c__">__body__</span>\END_EMBED

+ONBLUE:\ONCOLOR{c=blue}<__body__>

? 1

=Text Background Colors

Black on red: \ONCOLOR{c=red}<black on red> is beautiful




( run in 1.205 second using v1.01-cache-2.11-cpan-71847e10f99 )