Difference between revisions of "Macro file template"

From WeBWorK_wiki
Jump to navigation Jump to search
(#REDIRECT)
 
Line 1: Line 1:
 
<pre>
 
<pre>
 
 
 
 
 
# Put this in your course macros directory, define any custom subroutines you want and then use them in
 
# Put this in your course macros directory, define any custom subroutines you want and then use them in
 
# problems by including the file in loadMacros() calls.
 
# problems by including the file in loadMacros() calls.
 
 
 
   
 
# This particular file simply defines a new macros $BRED and $ERED which bracket a section of the
 
# This particular file simply defines a new macros $BRED and $ERED which bracket a section of the
 
 
# problem which should be printed in red.
 
# problem which should be printed in red.
   

Revision as of 14:58, 20 August 2012

# Put this in your course macros directory, define any custom subroutines you want and then use them in
# problems by including the file in loadMacros() calls.

# This particular file simply defines a new macros $BRED and $ERED which bracket a section of the 
# problem which should be printed in red.


sub _init_macro_template {

 #Possibly add initialization code here
 #sub routine is not required, but prevents the macro from being re-loaded

}

#Now defined your custom subroutines for use in problem authoring.
#At this level authors are restricted to using a 'safe' subset of perl. E.g. no system calls, printing, #importing libraries, etc. 
#Example subroutines for implementing colored text in problems:

sub BRED { 

  MODES(TeX => '{\\color{red} ', HTML => '<span style="color:red">'); 

};

sub ERED { 

  MODES( TeX => '}', HTML => '</span>'); 

};




# Now you can wrap text between these subroutines and it will come out red both in latex/pdf and in html.
# However, inside a BEGIN_TEXT/END_TEXT block the parser must be told that BRED() and ERED() are intended 
# to be perl functions and not literal text.  As with the ANS_RULE() subroutine, you can do it like so:
# \{ BRED() \} I want this text to be red. \{ ERED() \}. But to make display macros easier to use, the
# following syntactic sugar is used:


$main::BRED = BRED();
$main::ERED = ERED();

#The result of this is that you can now do it like so:
# $BRED I want this text to be red $ERED

1; #required at end of file - a perl thing