[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[mgp-users 01175] MGP Preprocessor Details; release soon!
- To: mgp-users@mew.org
- Subject: [mgp-users 01175] MGP Preprocessor Details; release soon!
- From: Tim Maher <tim@consultix-inc.com>
- Date: Sun, 8 Jun 2003 20:53:43 -0700
- Delivered-to: mailing list mgp-users@mew.org
- Mailing-list: contact mgp-users-help@mew.org; run by ezmlm
- Organization: Consultix
- User-agent: Mutt/1.3.22.1i
MGP users,
As some of you know, I've been writing an MGP
"preprocessor" to make Magicpoint presentations easier
to compose, and to provide many additional features that
I wanted.
The code for the program is still changing hourly,
but I've attached the first draft of the documentation,
to let you see what shortcomings I found in MGP, and how
I've compensated for them with my program.
By the way, I've given several talks recently, prepared
using my program, and many of the audience members
(mostly Perl and Linux experts) ask me afterwards what
presentation software I'm using, and when I tell them,
they can't believe it's Magicpoint, because they've never
seen it look so good! I guess that means my improvements
are noticeable 8-}
So I think you'll like this program, and I look forward to
hearing your thoughts on the feature set and config file
format (the current one is included in the documentation),
while things are still in flux.
When I do release the mg2mgp script, it will run directly,
without any need for other Perl modules (but it will
need Perl, of course). I wrote it to be self contained,
because I suspect that many MGP users aren't high-tech
folks, and wouldn't know how to download modules. Am I
right about that, or not? (see 3-second survey below).
Anyway, it's more fun to write everything from scratch
sometimes ! 8-}
I'm interested in who's using Magicpoint, and what kinds
of backgrounds they have. So if you'll indulge me for
a moment, please answer these questions, in a reply to
the list, so we can all learn more about each other;
I've checked off my own responses already.
Computer Experience:
Just a User (no programming experience to speak of)
Beginner Programmer
Intermediate Programmer
x Advanced Programmer
Operating System(s) you Run Magicpoint On (more than one choice okay)
Don't Know
x UNIX or Linx (includes Solaris, Red Hat, etc.)
MSFT Windows
Other (specify)
Regards,
-Tim
*------------------------------------------------------------*
| Tim Maher (206) 781-UNIX (866) DOC-PERL (866) DOC-UNIX |
| CEO, JAWCAR ("Just Another White Camel Award Recipient") |
| tim(AT)Consultix-Inc.Com TeachMeUnix.Com TeachMePerl.Com |
*+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-*
| Watch for my Book: "Minimal Perl for Shell Programmers" |
*------------------------------------------------------------*
NAME
mg2mgp - Preprocessor for "Magicpoint" presentation viewer
VERSION
v0.01
DOCUMENTATION
The latest documentation on this module, which is changing constantly,
is always available at <http://teachmeperl.com/mg2mgp.html>.
SYNOPSIS
First convert the *.mg file to *.mgp using:
mg2mgp presentation.mg > presentation.mgp
Then run Magicpoint on the *.mgp file as usual:
mgp presentation.mgp
BACKGROUND
Magicpoint <http://www.mew.org/mgp> is great, and free, and open source,
all of which are wonderful properties. But for people who do lots of
text markup, it's cumbersome to use. This program alleviates that
problem.
Shameless Plug
The mg2mgp program is entirely self-contained, for the benefit of those
running Magicpoint who have or can get Perl but don't want to learn now
to download lots of CPAN modules (*we don't need no stinking modules!*).
It consists entirely of Perl, which is a great language, and I recommend
you learn it ASAP, by taking a class from me as thousands of other happy
and nice-smelling people have done (see <http://teachmeperl.com>).
BENEFITS
The mg2mgp program lets you create a Magicpoint presentation much more
easily, and with the option of using many powerful new features.
For instance, consider a page whose basic design is described in the
first section below. It's then expressed in mg2mgp markup notation using
the special tags shown in the second section (which can be freely
intermixed with normal Magicpoint codes), and then mg2mgp does its
transformations to produce what Magicpoint needs to see, shown in the
third section.
The *.mg file to describe the page only requires 291 characters, but the
*.mgp file for Magicpoint's use takes 708! *Somebody* has to do 143%
more work; *why should it be you?*
You should view the image of this page, to get the full appreciation for
how many stylistic changes are involved, and how nice it looks. It's
availabe at <http://teachmeperl.com/Page1.jpg>.
1. Basic Design for Page
Perl as a Better grep, sed, & awk
<PICTURE HERE>
Tim Maher
tim(AT)TeachMePerl.com
Complication: I want lots of color and font changes on this page!
2. Page Composed in *.mg file
Here's the mg2mgp file that creates the above page, complete (and
replete) with color and font changes.
NOTE: As detailed in "Sample .mg2mgprc file", style codes starting with
C_, F_, and S_ are respectively for color, font, and size changes.
%include "/Speeches/timji.mgprc"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
npage%
<F_XB><S_9.5><A_C><C_LGR>Perl as a Better
<C_DB>grep<C_W>, <C_MSG>sed<C_W>, <C_GR>& <C_TO><F_XB>awk
%newimage "cont1b.jpg"
<F_XB><C_ROD>Tim Maher
<F_I><C_LGR tim@TeachMePerl.com>
3. Output from mg2mgp that Creates Page
You may have thought the *.mg file looked complicated, but here's what
you would have had to type on your own (excluding comments) to get the
same result directly with Magicpoint.
%include "/Speeches/timji.mgprc"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%page
# Starting New Page
%center
## (BR-GAP
## BR-GAP)
%fore "white"
(C) 2003, Tim Maher 0-1 www.TeachMePerl.com
## START POST_HEADINGS
%leftfill
## (BR-GAP
## BR-GAP)
## POST_HEADINGS END
%font "expb"
%size 9.5
%center
%fore "lightgray"
Perl as a Better
%fore "dodgerblue"
grep
%fore "white"
%cont
,
%fore "mediumseagreen"
%cont
sed
%fore "white"
%cont
,
%fore "gray"
%cont
&
%fore "tomato"
%font "expb"
%cont
awk
%newimage "cont1b.jpg"
%font "expb"
%fore "goldenrod"
Tim Maher
%font "italic"
%fore "lightgray"
tim(AT)TeachMePerl.com
%fore "white", cont
DESCRIPTION
mg2mgp takes a file-name like presentation.mg as an argument, and writes
output for a presentation.mgp file, for viewing with Magicpoint (see
<http://www.mew.org/mgp>).
The purpose of this project is to make it *MUCH* easier for the user to
prepare magicpoint presentations. One major function of this program is
to provide a configurable preprocessor, that allows user-defined styles
to be easily applied to text. This is accomplished by placing style
definitions in the .mg2mgprc configuration file.
Other features make it easier to acquire and prepare text obtained from
operating system commands, and control how it's displayed.
For example, recursive file inclusion is provided by the "include%"
directive, line exclusion is provided by "skip%/""unskip%," special
formatting of computer programs is provided by the "code%" directive,
and execution of arbitrary commands and collection of their output is
provided by "command%."
In addition, "tpage%" provides support for sections started by "title
pages", and "npage%" for pages within those sections, with (adjustable)
default styles in effect and automatic two-part page numbering in the
heading.
To make it easier to proofread demonstrations, %pause directives can be
filtered out using the command mgp_nopause, so each page can be viewed
in one glance.
The program contains many subroutines. Those that start with the prefix
"mgp_" are Magicpoint-specific. The others (include, skip, code_command,
etc.) are of general text-processing applicability (and I'm using them
in other projects, such as my POD pre-processor).
Ultimately, this body of software will be distributed on the CPAN
(www.cpan.org), probably under the name Magicpoint::Preprocessor. This
is a preliminary version that is implemented as a single Perl script,
that can be invoked under the following names (if it's multiply linked
on installation):
skip, include, po2pod, process_command, process_code, mgp_force_gaps,
add_newlines, mgp_nopause, mg2mgp
Most importantly, the mg2mgp invocation implements the following
cascading filter, so you don't have to go to all the trouble of
indenting those lines correctly yourself: 8-}
<INPUT_HERE>
include
skip
code_command
mgp_rm_comment
mgp_pages
mgp_styles
mgp_tinygap
mgp_nopause
mgp_force_gaps
add_newlines
mgp_squeeze_gaps
<OUTPUT HERE>
FEATURES
Style Definitions
One major function of this program is to provide a configurable
preprocessor, that allows user-defined styles to be easily applied. This
is accomplished by placing style definitions in the .mg2mgprc
configuration file.
For example, the following is a style definition of the color-changing
(C_) variety, for switching to gold text:
C_G
%fore "gold"
A style definition of the alignment (A_C) variety, for line centering,
follows below. It is different, because in addition to specifying how to
apply the style (on the first line after the style name), it also shows
what style to change to afterwards (on the second following line).
A_C
%center
%leftfill
This facility is needed because there's no easy way to really *undo* a
style change, because only Magicpoint is fully aware of the current
settings -- and it's not telling!)
Style Tags
A style tag consists of angled-brackets, enclosing a predefined style
name, and optionally the text to be rendered in that style.
For example,
in the mgp view, all words will be <C_G>golden from here on
To request the automatic application of the "undo" style, you can embed
the text to be rendered *within* the style directive, so long as you
have provided the *undo* line in the definition.
(NOTE: This style usage is not quite mature; in particular, there's a
problem with extraneous blank lines appearing when two or more appear in
a row; I'll fix this later.)
For example, given the style definition for centering shown above,
you'll get the results shown below.
Input
<A_C These words are centeredE> and these will be on a separate line,
left-filled. And all following lines will be left-filled, until some
other directive changes that situation
Output
These words are centered
and these will be on a separate line, left-filled. And all
following lines will be left-filled, until some subsequent
directive changes that situation
User-Defined Variables
See the configuration file documentation for complete information on
defining your own variables, for use in style definitions.
DIRECTIVES
The mg2mgp program implements several *directives*, that enhance or
extend those provided already by Magicpoint.
Unlike style definitions, directives don't have *undo* information,
because their job is not to change, and then (optionally) change again
(for "undoing"), display parameters. Instead, they filter, collect,
generate, or reformat text, which may involve harvesting data and
applying formatting codes.
The mg2mgp directives are all of the same form: a word terminated by a
%. Yes, that's exactly backwards from the %word format used by
Magicpoint itself, so that if mg2mgp is unavailable, the presentation
can still be prepared using Magicpoint. In contrast, if this program
used additional directives of the %word form, each would trigger a fatal
error if Magicpoint were run directly on the *.mg file.
"hvgap%" & "qvgap%"
Example
Here's a line
halfgap%
I want this line pretty close to the previous one
quartergap%
# I want this image even closer to the line above
%newimage "pic.jgp"
Magicpoint doesn't provide any easy way to get a vertical gap that's
smaller than usual, and then return to the previous setting. And this
program can't really do that properly either, because only Magicpoint
itself knows what the current vgap size is. Nonetheless, these
directives have proven useful for producing vertical gaps of one-half
and one-quarter the size of the $DEFAULT_VGAP setting in the
configuration file.
Incidentally, the predefined vertical-gap styles, <V_30> through <V_95>,
also return the vgap setting to $DEFAULT_GAP, but those styles are meant
for controlling the vertical spacing within collections of text lines,
whereas these directives merely insert a blank space.
"include%"
Example
include% "filename"
File inclusion is provided by the "include%" directive. The contents of
the indicated file are read, and then recursively, its contents are
scanned for "include%" directives which are read, and so forth. The
resulting text is inserted into the *.mgp file in place of the
directive.
This is valuable for two reasons:
1. It allows file inclusions at arbitrary positions, unlike
Magicpoint's %include, which is only allowed in the preamble, and
2. it enhances the behavior of %filter, which needs to find literal
text in the document to provide as command input, by allowing the
data to be obtained from a file:
%filter "/bin/sort"
%include "input_lines.txt"
%endfilter
If the data don't reside in a file, but are available as command
output, then "command%" can provide a similar service,
%filter "/bin/sort"
command% "/bin/who"
%endfilter
which compensates for the fact that %filter doesn't allow
conventional shell command sequences, such as:
%filter "/bin/who | /bin/sort"
and
%filter "/bin/sort < /etc/passwd"
"skip%" & "unskip%"
Example
This line is in the presentation
skip%
This ones is NOT in today's presentation; maybe tomorrow!
unskip%
This line is in the presentation
skip%
The rest of the file is excluded, unless an C<unskip%> appears
"Line exclusion" is provided by "skip%/""unskip%," which allows a *.mg
document to retain lines that do not become part of the current
presentation. This allows multiple versions of the presentation to be
retained in a single file, by restricting the pages that will be shown
in a particular talk.
"code%"
Example
code% tail +1 perlgrep.plx
One problem with Magicpoint's %filter directive is that it doesn't
support the concept of formatting variations within the command's
output. Unless you edit the *.mgp file directly, there is no way to
apply any markup variations to the obtained data.
The syntax requirement is simply that at least one non-whitespace
character appears after the "code%" directive. All the rest will be
submitted verbatim to your OS's command interpreter, so you must also
supply any quotes that might be needed. (There are also security
concerns, which are covered in the next subheading.
As a first step in providing something more useful for the display of
computer programs, "code%" applies a fixed-width font and specified
color to the acquired program text, and renders #-prefixed comments in a
separately specified font and color (according to the variable settings
in the configuration file).
Security Alert!
Because this directive executes arbitrary commands submitted by the
user, the usual precautions are applicable if the program is running
with an ID other than that of the user executing it. (Later versions
might use Perl's "taint mode", to do some sanity checking on the
command. Until then, excercise caution with this directive!)
"command%"
Example
command% nl -ba perlgrep.plx
The syntax requirement is simply that at least one non-whitespace
character appears after the "command%" directive. All the rest will be
submitted verbatim to your OS's command interpreter, so you must also
supply any quotes that might be needed. (There are also security
concerns, which are covered in the next subheading.)
This directive is a variation on "code%," that simply imports the
command output into the presentation (without applying any formatting).
Unlike Magicpoint's %filter directive, pipelines and other complex
commands can be used (as they can also with "code%)." For example:
command% man mg2mgp | head -20 | col -bx
Security Alert!
Because this directive executes arbitrary commands submitted by the
user, the usual precautions are applicable if the program is running
with an ID other than that of the user executing it. (Later versions
might use Perl's "taint mode", to do some sanity checking on the
command. Until then, excercise caution with this directive!)
"tpage%"
Example
tpage%
The "tpage%" directive provides support for sections started by "title
pages", whose headings have individually specified default text formats
(TBD). It can be used anywhere the standard %page directive would be
allowed.
"npage%"
Example
npage%
The "npage%" directive makes pages that are endowed with a header line
containing the Author's name, the Copyright year (defaulting to the
current year), and a web-site URL, along with page-numbering in the
two-part section-page format.
The headings are governed by style specifications provided through
variable settings in the .mg2mgprc file (still under development).
The "npage%" directive can be used anywhere the standard %page directive
would be allowed. Note that "npage%" is designed for use with "tpage%."
If you use it without requesting a Title Page first, the section number
will show as zero. It's okay to intermix %page directives with these,
but generally undesirable. These directives do much more for you, and
you probably won't feel the need to use %page ever again.
"table%"
Example
table%
(table specificatons)
endtable%
Under construction.
ASSOCIATED COMMANDS
mgp_nopause
Examples
mg2mgp presentation.mg | mgp_nopause > presentation.mgp
OR
export MGP_NOPAUSE='on'; mg2mgp presentation.mg > presentation.mgp
To make it easier to proofread demonstrations, %pause directives can be
filtered out of your *.mg file using the command mgp_nopause. This
allows each page to be viewed in its entirety in one glance, which
speeds up proofreading considerably.
As an alternative to using mgp_nopause (which is just another name for
the mg2mgp program), you can set the environment variable MGP_NOPAUSE to
"enable", and run mg2mgp instead.
po2pod
Besides converting *.mg files to *.mgp files, this program can be used
to convert *.po files (not quite in POD format) to *.pod files, if
invoked under this alternate name.
FILES
The .mg2mgprc file can be used to define styles (STYLES) and variables
(VARS) that make it vastly easier to prepare Magicpoint presentations.
This program is distributed with a sample file, which you're free to
edit to your own tastes.
The configuration file is looked for under the following directory/name
combinations:
1. .mg2mgprc in the current directory,
2. .mg2mgprc in the HOME directory,
3. in a fully specified pathname (ending in any arbitrary filename)
provided in the (optional) $MG2MGPRC environment variable,
4. in /etc/mg2mgprc,
5. in mg2mgp.rc in the current directory
Sample .mg2mgprc file
# mg2mgprc: sample configuration file for mg2mgprc, v 0.01
# Tim Maher, tim@teachmeperl.com
# Sat Jun 7 08:18:08 PDT 2003
#
# Watch http://teachmeperl.com/mg2mgprc.html for further details on
# usage, and for the latest version of the program
# TODO: Allow include% directive to patch lines into this file->DONE!
# TODO: Provide support for style "aliases" so RED means C_R, or
# whatever
# There are two sections to this file; VARS and STYLES.
# The format for setting variables in the former is name=value No
# quotes encasing the value are required or allowed, and no
# terminating ";" is needed
# fore_color and back_color are special variables that should be
# set to the foreground/background color for the presentation.
# code_color, and comment_color are respectively the colors you
# want for code samples (imported via the code% directive) and
# the comments within them; if these variables are unset,
# reasonable default settings are used.
# author, year, and url show up on non-title pages along with the
# page number author should be set to the presentation's author,
# and url to his/hers web site, and year to the copyright year;
# it defaulst to the current year
# You can set any other variables you want, and include them in
# the style definitions that follow (although that feature is
# not heavily tested yet)
# If you want to disable sections of this file, you can put skip%
# before the first line to be ignored, and unskip% after the last
# to be ignored (or just omit that and ignore to the end of the
# file).
VARS
# VARS names are case sensitive, so <z> and <Z> refer to
# different variables. All special variables needed by the
# program are ALL CAPS. Please use mixed-case or lower case for
# your own variables
# The characters permitted in variable names are letters,
# digits, and _.
# The following settings are used in the header-line of the npgage% directive
AUTHOR=Tim Maher
URL=www.TeachMePerl.com
YEAR=2003
# The fore/back colors must match the ones used in the
# MGP-included config file
FORE_COLOR=white
BACK_COLOR=black
# These are only used by code% directive, and have defaults if
# not specified
# CODE_COLOR=yellow <- this one not implemented yet
COMMENT_COLOR=lightskyblue
# DEFAULT_VGAP is used to undo styles that change the vertical
# gap, such as <V_35 This>, and as the numeric base for halving
# and quartering for the halfgap% and quartergap% directives
DEFAULT_VGAP=20
# DEFAULT_SIZE is used to undo styles that change the point size, such as
# <S_3.5 This>.
DEFAULT_SIZE=5
# By default, the styles you create will have case-insensitive
# names, If you are willing to be more precise in your typing,
# set the variable CASE_SENSITIVE_STYLES to yes in the line below.
#
CASE_SENSITIVE_STYLES=no
#
# STYLES
# This section defines the styles, such as Z, you're allowed to
# use in the following two formats: <Z> and <Z more stuff> and
# <Z more
# stuff spanning lines>
# The first line defines the style name; the second the "on"
# value to turn it on, and the third, if present, the "off" value
# to turn it off. There must be a blank line before each
# style-definition line. The "off" value is only used with the
# "more stuff" syntax shown above, so if you're going to use that
# include an off-line, to avoid a fatal error.
# There's no need to insert a blank line to occupy the off-line's
# position if you don't want to make a setting, because the blank
# line before the next style-name will serve to indicate its
# absence.
#
# Style names are case sensitive, so <z> and <Z> refer
# to different styles. Any visible character can be used in
# a style name
# To help me keep things straight, I like to have special name
# formats for different classes of styles, as shown below.
#
# Sample Style Names
#
# Type Prefix Sample Definition Changes Effected
#
# Font F_ F_T %font "thick" font set to thick
# Size S_ S_6.5 %size 6.5 text size to 6.5 points
# Vgap V_ V_65 %vgap 65 vertical gap to 65
# Color C_ C_BL %fore "blue" foreground color to BLUE
# Bullet B_ B_2 (from config) set to bullet-level 2 style
# Headings H_ H_C (long) special heading inserted
# Align A_ A_C %center centering enabled
# I'm not sure how to classify the following style yet!
# Other (none) CHEAD (long) centered heading inserted
# STYLES can be defined in terms of user-defined VARS, with a $
# preceding the variable name, as shown for the sample style "C_A"
# below. This preliminary code release uses a very simple parser
# to process these variable requests, so only simple variables
# ($accent_color) are known to work so far; don't try other
# Perlish things like $accent_colors[3,4], etc.
# For example, the following definition is for changing the font to
# the "accent color" (both variables must be set in the VARS
# section of the mg2mgpr file):
# C_A
# %fore "$accent_color"
# %fore "$FORE_COLOR"
# To insert a blank line in the style definition, use \n. Because
# blank lines that seem to be extraneous are removed by mg2mgp,
# it's possible in some cases that the blank line signified by \n
# won't actually show up in the presentation. In such cases, use
# \nBR%\n instead, which will definitely work
# The Importance of "Undo-ing"
#
# Note that some of the sample styles shown above exist
# independently as MGP directives, and some of them aren't much
# harder to type. For example,
#
# <C_BL>this
#
# is equivalent to
#
# %fore "blue"
# this
#
# However, there's a distinct advantage to the style approach,
# because
#
# <C_BL this>
#
# can render "this" as blue and then *reset the color* to a
# reasonable default, which generates the following code,
#
# %fore "blue"
# this
# %fore "white" <- assuming FORE_COLOR set to "white" in .mg2mgprc
#
# -- assuming the following style definition :
#
# %fore "blue"
# this
# %fore "$FORE_COLOR"
#
# MGP could conceivably let the user request a reversion to the
# previous color (a I<real> "undo", which would be ideal), but
# that feature is not currently provided.
# The following keyword introduces the style definitions
STYLES
# COMMENTS ARE ALLOWED HERE, but must have blank lines before and after
# Alignment styles
A_L
%leftfill
A_C
%center
%leftfill
A_R
%right
%leftfill
# Miscellaneous styles
# A shell-prompt style
$
%leftfill, size 6, fore "lightsteelblue", font "tty"\n$\n%cont
BAR
\n%vgap 20, bar "gray" 10 15 70, cont\n
# Font-changing styles
F_B
%font "bold"
%font "default", fore "$FORE_COLOR"
# Courier font
F_C
%font "c"
F_BI
%font "bolditalic"
F_CB
%font "cb"
F_CBI
%font "cbi"
F_CI
%font "ci"
F_D
%font "default"
F_TTY
%font "tty"
F_WI
%font "wide"
F_WIB
%font "wideb"
F_X
%font "exp"
F_XB
%font "expb"
F_I
%font "italic"
F_IB
%font "bolditalic"
CHEAD
%font "title", size 6, center, fore "sandybrown"
%font "default", fore "$FORE_COLOR", leftfill
CHEAD+
%font "bull1", size 6.5, center, fore "dodgerblue"
%font "default", fore "$FORE_COLOR", leftfill
CHEAD-
%font "title", size 5.5, center, fore "sandybrown"
%font "default", fore "$FORE_COLOR", leftfill
CMD
%leftfill, size 5.5, fore "$FORE_COLOR", font "courierb"
CMD2
%leftfill, size 5.0, fore "$FORE_COLOR", font "courierb"
CMD2.5
%leftfill, size 5.0, fore "$FORE_COLOR", font "courierb"
CMD3
%leftfill, size 4.5, fore "$FORE_COLOR", font "courierb"
CMD4
%leftfill, size 4.0, fore "$FORE_COLOR", font "courierb"
CODE
%leftfill, size 5.5, fore "$CODE_COLOR", font "courierb"
CODE2
%leftfill, size 5.0, fore "$CODE_COLOR", font "courierb"
CODE3
%leftfill, size 4.5, fore "$CODE_COLOR", font "courierb"
C_B
%fore "black"
\n%fore "$FORE_COLOR", cont\n
C_BL
%fore "blue"
\n%fore "$FORE_COLOR", cont\n
C_CAB
%fore "cadetblue"
\n%fore "$FORE_COLOR", cont\n
C_CH
%fore "chocolate"
%fore "$FORE_COLOR", cont\n
C_CY
%fore "cyan"
\n%fore "$FORE_COLOR", cont\n
C_DB
%fore "dodgerblue"
\n%fore "$FORE_COLOR", cont\n
C_DGR
%fore "darkgray"
\n%fore "$FORE_COLOR", cont\n
C_DR
%fore "darkred"
\n%fore "$FORE_COLOR", cont\n
C_FU
%fore "#FF00FF"
\n%fore "$FORE_COLOR", cont\n
C_G
%fore "gold"
\n%fore "$FORE_COLOR", cont\n
C_GR
%fore "gray"
\n%fore "$FORE_COLOR", cont\n
C_GRE
%fore "green"
\n%fore "$FORE_COLOR", cont\n
C_HP
%fore "hotpink"
\n%fore "$FORE_COLOR", cont\n
C_LB
%fore "lightblue"
\n%fore "$FORE_COLOR", cont\n
C_LGN
%fore "lightgreen"
\n%fore "$FORE_COLOR", cont\n
C_LGR
%fore "lightgray"
\n%fore "$FORE_COLOR", cont\n
C_LI
%fore "#00FF00"
\n%fore "$FORE_COLOR", cont\n
C_LIN
%fore "linen"
\n%fore "$FORE_COLOR", cont\n
C_LSB
%fore "lightskyblue"
\n%fore "$FORE_COLOR", cont\n
C_LSG
%fore "lightslategray"
\n%fore "$FORE_COLOR", cont\n
C_LSTB
%fore "lightsteelblue"
\n%fore "$FORE_COLOR", cont\n
C_M
%fore "magenta"
\n%fore "$FORE_COLOR", cont\n
C_MA
%fore "maroon"
\n%fore "$FORE_COLOR", cont\n
C_MBL
%fore "mediumblue"
\n%fore "$FORE_COLOR", cont\n
C_MGR
%fore "mediumgreen"
\n%fore "$FORE_COLOR", cont\n
C_MSG
%fore "mediumseagreen"
\n%fore "$FORE_COLOR", cont\n
C_NA
%fore "navy"
\n%fore "$FORE_COLOR", cont\n
C_OL
%fore "#808000"
\n%fore "$FORE_COLOR", cont\n
C_OR
%fore "orchid"
\n%fore "$FORE_COLOR", cont\n
C_ORD
%fore "orangered"
\n%fore "$FORE_COLOR", cont\n
C_PA
%fore "papayawhip"
\n%fore "$FORE_COLOR", cont\n
C_PB
%fore "#B0E0E6"
\n%fore "$FORE_COLOR", cont\n
C_PG
%fore "palegreen"
\n%fore "$FORE_COLOR", cont\n
C_PI
%fore "pink"
\n%fore "$FORE_COLOR", cont\n
C_PU
%fore "purple"
\n%fore "$FORE_COLOR", cont\n
C_R
%fore "red"
\n%fore "$FORE_COLOR", cont\n
C_RB
%fore "rosybrown"
\n%fore "$FORE_COLOR", cont\n
C_ROD
%fore "goldenrod"
\n%fore "$FORE_COLOR", cont\n
C_SB
%fore "sandybrown"
\n%fore "$FORE_COLOR", cont\n
C_SBL
%fore "slateblue"
\n%fore "$FORE_COLOR", cont\n
C_SG
%fore "slategray"
\n%fore "$FORE_COLOR", cont\n
C_SI
%fore "#C0C0C0"
\n%fore "$FORE_COLOR", cont\n
C_SN
%fore "snow"
\n%fore "$FORE_COLOR", cont\n
C_STB
%fore "steelblue"
\n%fore "$FORE_COLOR", cont\n
C_TE
%fore "#008080"
\n%fore "$FORE_COLOR", cont\n
C_TO
%fore "tomato"
\n%fore "$FORE_COLOR", cont\n
C_W
%fore "white"
C_WS
%fore "whitesmoke"
\n%fore "$FORE_COLOR", cont\n
C_Y
%fore "yellow"
\n%fore "$FORE_COLOR", cont\n
# Styles for specific headings
# Input, Output headings
HIN
%font "title", size 6, leftfill, fore "sandybrown"\nInput\n%leftfill, font "default", fore "$FORE_COLOR"
HOU
%font "title", size 6, leftfill, fore "sandybrown"\nOutput\n%leftfill, font "default", fore "$FORE_COLOR"
LHEAD
%font "title", size 6, leftfill, fore "sandybrown"
%font "default", fore "$FORE_COLOR", leftfill
LHEAD+
%font "bull1", size 6.5, leftfill, fore "dodgerblue"
%font "default", fore "$FORE_COLOR", leftfill
LHEAD-
%font "title", size 5.5, leftfill, fore "sandybrown"
%font "default", fore "$FORE_COLOR", leftfill
# Styles for rendering command output
OUTPUT
%leftfill, size 5.5, fore "lightgray", font "tty"
OUTPUT2
%leftfill, size 5.0, fore "lightgray", font "tty"
OUTPUT3
%leftfill, size 4.0, fore "lightgray", font "tty"
# Style for heading of Problem
PROB
%font "title", size 6, center, fore "sandybrown"\nProblem\n%leftfill, font "default", fore "$FORE_COLOR"
# Title styles
T1
%font "title", size 7\n
T2
%font "title2", size 5\n
TITLEB
%font "bull1", size 6.0, fore "powderblue"
# Font styles
F_TTY
%font "tty"
F_WI
%font "wide"
F_WIB
%font "wideb"
F_X
%font "exp"
F_XB
%font "expb"
# Other experimental "Example" heading styles
XC
%center, fore "sandybrown"
XL
%center, fore "sandybrown"
# Special heading for Examples
XMP
%font "title", size 6, center, fore "sandybrown"\nExamples\n%leftfill, font "default", fore "$FORE_COLOR"
SUPPORT
I am using this program heavily in my own work, so it is improving by
leaps and bounds on a daily basis. Please let me know how you like it,
and if you find any bugs.
AUTHOR
Tim Maher, tim(AT)teachmeperl.com, yumpy(AT)cpan.org
COPYRIGHT & LICENSE
Copyright (C) 2003, Timothy F. Maher. All rights reserved.
This software is provided under the "3-clause BSD-style license", as is
Magicpoint itself, as documented at
<http://www.fsf.org/licenses/info/BSD_3Clause.html>.
Direct questions regarding fair-use to yumpy(AT)cpan.org.
AFFILIATION
Consultix, a division of Pacific Software Gurus, Inc.
www.teachmeperl.com
PROGRAM's WEB-SITE (coming soon)
http://www.teachmeperl.com/mg2mgp.html