%% $Source: /u/maple/research/tex/inputs/RCS/mapleenv.sty,v $

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%

\typeout%

{Maple Latex Environment Definitions -- $Revision: 3.7 $, February, 1994}

%

% Copyright (c) 1994 by Waterloo Maple Software, all rights reserved.

%

% Permission is granted to use this style without charge. It may

% also be redistributed providing that they are distributed as is

% and without charge.  You may modify these macros for your own use,

% and redistributed subject to the following condition:

%

% 1. The style name used for any modified version of this file is 

%    different from mapleenv.sty. 

%

% 2. You acknowledge this file as the source.

%

% 3. It is redistributed under the same terms and conditions 

%    as indicated here.

%

% Please send recommendations or requests for changes to:

%

% 	support@maplesoft.on.ca

% 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%

% This latex style file defines environments suitable for 

% processing the latex documents exported from Maple worksheets.

% In particular, it defines each of:

%

%   maple commands,   \begin{mapleinput}...\end{mapleinput}, 

%

%   maple text output, \begin{maplettyout}...\end{maplettyout}, 

%

%   maple generated latex, \begin{maplelatex}...\end{maplelatex}

% 

%   maple separator lines, \maplesepline

%

%   maple plots , \mapleplot{filename}

%

% The mapleinput, and maplettyout environments are similar to 

% \begin{verbatim}...\end{verbatim} in effect.  

% but there are several important differences.

%

% - the spacing relative to the surrounding environment is different.

%

% - page breaks are encourages before commands, or after results.

%

% - maplettyout and maplelatex environments are assumed to follow

% mapleinput regions and so have less space above.  This allows us to

% reduce the space between adjacent Maple regions without any

% elaborate mechanism to detect when there have been intervening

% paragraphs of text.

%

% - the size of the font for text regions is definable.

%

% - the  indentation of the environments can be indented by setting 

% the value of \LeftMapleSkip  .

%

% The current definition of \mapleplot is appropriate for use with 

% the psfig macros and has been tested with psfig Version 1.9. It

% assumes that the plot is in landscape mode, but parameters can be

% changed to deal with rotation, etc.

%%

% J. S. Devitt,  February, 1994.

%

% The User Definable parameters are

% \AboveMaplePlot	- space above a Maple Plot 

% \BelowMaplePlot	- space below a Maple Plot

% \MaplePlotHeight	- vertical space reserved for a plot

% \MaplePlotWidth	- width reserved for a plot

% \MaplePlotAngle	- angle of rotatation

% \AboveMapleSkip	- space above an environment

% \BelowMapleSkip	- space below an environment

% \LeftMapleSkip 	- the amount of left indentation

% \MapleFont 		- The Maple font 

% \MapleSize 		- The size of the Maple font 

% \MapleFirstLine	- controls ingoring first line feed

% \MaplePrompttrue 	- controls insertion of prompt char

% \MaplePromptString	- defines the prompt character

% \MapleSkip		- amount of glue before and after

%			displayed text

% \MapleTab		- number of spaces per tab (8)

% \MapleParCount	- counter used to detect adjacent Maple

%			regions.

%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Definitions of dimensions, etc.  Those which can be reset are "set" to 

% specific values in the following section.  CHANGE THEIR VALUES THERE.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newskip\AboveMaplePlot

\newskip\BelowMaplePlot

\newskip\AboveMapleSkip

\newskip\BelowMapleSkip

\newdimen\LeftMapleSkip 

\newdimen\MaplePlotHeight 

\newdimen\MaplePlotWidth 

% \newcount\MaplePlotAngle 

\newdimen\MapleSepLineWidth 

\newdimen\MapleSepLineHeight \MapleSepLineHeight = 0.01in

\newif\ifMaple		\Maplefalse

\newif\ifMapleFirstLine

\newif\ifMaplePrompt

\newcount\MapleTab	\MapleTab = 8

\newcount\MapleParCount   \MapleParCount=0 

\newtoks\MaplePromptString \MaplePromptString = {}

%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Set All User-Setable Parameters in this section 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%

\MaplePromptString = {\raise 1pt \hbox{$\scriptstyle>$\space}}

%

%  output environment spacing

\AboveMapleSkip = 1ex plus 2 pt minus 1 pt

\BelowMapleSkip = \AboveMapleSkip

\LeftMapleSkip  = 5ex		  % environment spacing

%

%  plot parameters

\AboveMaplePlot = 2\AboveMapleSkip

\BelowMaplePlot = 2\AboveMapleSkip

\MaplePlotHeight = 40ex 

\MaplePlotWidth = 60ex

\edef\MaplePlotAngle{270}		  % plots in landscape mode

%

% separator line parameters

\let\MapleSepLineWidth\linewidth  % \let so it will be redefined 

				  % properly for narrow environments.

\MapleSepLineHeight = 1pt

\let\MapleFont\tt

\let\MapleSize\small

\MapleFirstLinefalse  % Ignore first \cr after \begin{mapleinput}  

\MaplePrompttrue      % Include the prompt string for each input line.

\MapleTab = 8

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Utilities used to define the main environments

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%

\makeatletter

% Utilities for changing character codes

\def\MakeLetter#1{\catcode `#1 = 11 }

\def\MakeOther#1{\catcode `#1 = 12 }

\def\MakeActive#1{\catcode `#1 = \active\relax }

\def\MakeTabActive{\MakeActive{\^^I}}

\def\MakeEolActive{\MakeActive{\^^M}}

% Flag to control treatment of first new line char in maple envs

\newif\if@IgnoreNewLine

\@IgnoreNewLinetrue

%

% In a Maple tty environment every line is treated as a paragraph.

% The behavior at the end of every Maple paragraph (line) is given

% by, thereby inhibiting page breaks in such environments.

\def\@MaplePar{\nopagebreak[3]\par\@@par}%

%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Characters requiring special treatment

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Spaces

%%%%%%%%%%%%%%%%%%%%%%%

\def\MapleSpace{\ }

\def\@ObeySpaces{\MakeActive{\ }\@@ObeySpaces\relax}

{%

\MakeActive{\ }\gdef\@@ObeySpaces{\edef {\MapleSpace}}%

}%

%%%%%%%%%%%%%%%%%%%%%%%

% Tabs

%%%%%%%%%%%%%%%%%%%%%%%

\newdimen\@MapleTabSize

\def\@ObeyTabs{\MakeTabActive\@@ObeyTabs\relax}

{%

\MakeTabActive\gdef\@@ObeyTabs{\def^^I{\@MapleTab}}  

}%

\def\@MapleTab{%

  \leavevmode   % ensure that we are in horizontal mode

  \egroup      % Terminate box register 0

  \dimen0=\wd0 % store its length and round up to next stop

  \divide\dimen0 by \@MapleTabSize

  \advance\dimen0 by 1sp

  \multiply \dimen0 by \@MapleTabSize

  \wd0 = \dimen0

  \box0

  \setbox0 = \hbox\bgroup

}

%%%%%%%%%%%%%%%%%%%%%%%

% End of Line Character

%%%%%%%%%%%%%%%%%%%%%%%

\def\@ObeyEol{\MakeEolActive\@@ObeyEol\relax}%

{%

  \MakeEolActive %

  \gdef\@@ObeyEol{%

    \let^^M=\@MapleEol%

  }%

}

\def\@MapleEol{%

  \if@IgnoreNewLine

  \else

    \leavevmode%

    \egroup%

    \box 0%

    \@MaplePar%

  \fi

  \@IgnoreNewLinefalse

}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Definitions of Utilities for the Main Environments

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Macro for setting up the verbatim like environents

% This is executed in the preamble to the corresp latex environment.

% The spacing above and below the environment is done in the

% preamble instead of here to enable this to be used in a variety

% of such environments.

\def\@SetupMapleTty#1{%

\begingroup

  %%%  Compute and set tab positions

  \setbox 0 = \hbox{\MapleSize\MapleFont X}

  \@MapleTabSize = \wd0

  \multiply\@MapleTabSize by \MapleTab

  \setbox0 = \hbox{\relax}  % Clearing \box 0

  %

  %%% set paragraph dimensions and line spacing

  \rightskip = 0pt 

  \parindent=0pt

  \parskip = 0pt 

  \leftskip=\LeftMapleSkip

  \parfillskip = 0pt plus 1fil

  %

  %%%  The next two parameters could have been changed 

  %%%  by a \raggedright so they are reset here.

  \spaceskip = 0pt   \xspaceskip = 0pt

  %

%%%  Should the first new line of the environment

%%%  be ignored?  Allows \begin... to be on a separate line

\ifnum #1 = 0 \@IgnoreNewLinetrue\else\@IgnoreNewLinefalse\fi%

%

%%% Get ready to handle every paragraph (recall paragraph == line )

\everypar = {\EveryParZ}%

\def\EveryParZ{%

  \ifMaplePrompt

    \the\MaplePromptString

  \fi

    \setbox0 = \hbox \bgroup

}%

%

%%%  Choose the type size and font - order is important

\MapleSize\MapleFont%

\lineskiplimit=0\normalbaselineskip

\baselineskip=0.8\normalbaselineskip

\@noligs%

%\MakeAllActive%

\let\do\@makeother \dospecials

\catcode ``=\active

\frenchspacing%

\@ObeySpaces% 

\@ObeyTabs%

\@ObeyEol%

}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Behavior on exiting of special environments

\def\@EndMapleInput{%

  \endgroup  %% matches the \begingroup inside of @SetupMapleInput

}

%

\let\@EndMapleTtyout\@EndMapleInput

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 

% Macros executed to start Verbatim like environments

% for special Maple regions.  These calls do all the work

% of scanning for the environment terminator.

\begingroup

  \catcode`| = 0  % becomes the escape character

  \catcode`( = 1  % becomes a begin group

  \catcode`) = 2  % becomes an end group

  \catcode`@ = 11 % becomes a regular character (for macro names)

  \catcode`\{ = 12 % becomes an other character

  \catcode`\} = 12 % becomes a other character

  \catcode`\\ = 12 % becomes a other character

  |gdef|@BeginMapleInput#1\end{mapleinput}(#1|end(mapleinput))%

  |gdef|@BeginMapleTtyout#1\end{maplettyout}(#1|end(maplettyout))%

|endgroup

%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Definition of actual mapleinput environment.

% \begin{mapleinput} ...\end{mapleinput}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Page breaks are inhibited immediately following the input

% environment.  This assumes that no extra space is 

% required below the region as it is followed by some

% form of Maple output region.

%

\def\mapleinput{

%%%  Include Extra Spacing at top of display

\@MaplePar%

\if@minipage\removelastskip\vskip-1.3ex

\else\vskip\AboveMapleSkip\fi%

\@SetupMapleTty{0}% The 0 indicates ignore first new line

\@BeginMapleInput

}

%%%

\def\endmapleinput{

  \@EndMapleInput

  %\vskip\BelowMapleSkip

  \nopagebreak[3]

}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Definition of the actual \maplettyout environment

% usage: \begin{maplettyout} ... \end{maplettyout}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% This can use almost exactly the same setup and exit as for input. 

% The main difference is the treatment of prompts, and in page breaking

% Page breaks are inhibited before, and encouraged after.

\def\maplettyout{

  \MaplePromptfalse	  % No prompt is required in this environment.

  \nopagebreak[3]\@MaplePar

  \removelastskip

  \@SetupMapleTty{0}   % A 1 would indicate "respect first new line"

  \@BeginMapleTtyout

}

%%%

\def\endmaplettyout{

  \@EndMapleTtyout	

  \vskip\BelowMapleSkip

  \pagebreak[3]

  \par

}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Maple Latex Environment

% \begin{maplelatex} ....\end{maplelatex}

% This environment is basically a wrapper around a display

% math environment.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Spacing is slightly different in a minipage, page breaks are

% encourages after the region, and inhibited before.

\newenvironment{maplelatex}{

  % \if@minipage\fi% 

  \parindent=0pt

  \parskip = 0pt 

  \parfillskip = 0pt plus 1fil

  \lineskiplimit=0\normalbaselineskip

  \baselineskip=0.6\normalbaselineskip

  \abovedisplayskip=.4\AboveMapleSkip

  \belowdisplayskip=.4\AboveMapleSkip

  \def\arraystretch{1.5}

  \removelastskip

  \nopagebreak[3]\@@par

}{%

\baselineskip=\normalbaselineskip%

\pagebreak[3]\relax}

%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Separator Lines

% \maplesepLine

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% The %'s at the end of the lines are important here to

% avoid inserting uwanted newlines in the output stream.

\newcommand{\maplesepline}{\vskip \parskip%

\hrule\@height\MapleSepLineHeight\@width\MapleSepLineWidth%

\vskip \parskip\relax}

%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Plots

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% The following assumes you have already installed the psfig 

% macros on your system.  These are available without charge 

% from:

%

\input psfig.sty

\psrotatefirst

\def\mapleplot#1{

\vskip\AboveMaplePlot

\centerline{\vbox{\psfig{figure=#1,%

height=\MaplePlotHeight,%

width=\MaplePlotWidth,%

angle=\MaplePlotAngle}}}

\vskip\BelowMaplePlot

}

%

\makeatother

%%%%%% The End %%%%%

