FreeMarker is a template engine that has now been incorporated into PCGen's export system as an alternative to our venerable export syntax. The FreeMarker engine brings some important benefits:
Here's a simple example FreeMarker PCGen template
<!-- Produced on ${.now?date} at ${.now?time} using template ${.template_name} --> <h1>Freemarker Sheet for <@pcstring tag="NAME"/> - ${.now?date}</h1> <p> Character Name: <@pcstring tag="NAME"/> </p> <p> Player Name: <@pcstring tag="PLAYERNAME"/> </p> <p> Fighter: ${pcvar("CL=Fighter")} </p> <p> Rogue: ${pcvar("CL=Rogue")} </p> <p><@loop from=0 to=pcvar('countdistinct("CLASSES")')-1 ; class , class_has_next > <@pcstring tag="CLASSABB.${class}"/> <#t> <@pcstring tag="CLASS.${class}.LEVEL"/><#if class_has_next>,</#if><#t> </@loop></p>
which produces the output
<!-- Produced on 29/10/2013 at 9:44:47 PM using template csheet_test-html.ftl --> <h1>Freemarker Sheet for Ronald 'Surefingers' Millbridge - 29/10/2013</h1> <p> Character Name: Ronald 'Surefingers' Millbridge </p> <p> Player Name: James </p> <p> Fighter: 0 </p> <p> Rogue: 11 </p> <p>Rog 11,Wiz 2</p>