My custom class
The purpose of this class is to create a single PSTricks diagram in a tight paper size.
\ProvidesClass{pst-xport}[2011/07/23 v 0.01 class for creating a single PStricks diagram]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass[]{article}
\RequirePackage{pstricks}
\newcommand\LL{-1}
\newcommand\RR{1}
\newcommand\BB{-1}
\newcommand\TT{1}
\newlength\LPad\setlength{\LPad}{1cm}
\newlength\RPad\setlength{\RPad}{1cm}
\newlength\BPad\setlength{\BPad}{1cm}
\newlength\TPad\setlength{\TPad}{1cm}
\topmargin=\dimexpr\TPad-72.27pt\relax
\oddsidemargin=\dimexpr\LPad-72.27pt\relax
\paperwidth=\dimexpr\RR\psxunit-\LL\psxunit+\RPad+\LPad\relax
\paperheight=\dimexpr\TT\psyunit-\BB\psyunit+\TPad+\BPad\relax
\special{papersize=\the\paperwidth,\the\paperheight}
\headheight=0pt
\headsep=0pt
\parindent=0pt
\pagestyle{empty}
%%%%%%%%%%%%%%%%%%%
%%%% INTERFACE %%%%
%%%%%%%%%%%%%%%%%%%
\newcommand\SetCanvas[4]
{
\renewcommand\LL{#1}
\renewcommand\BB{#2}
\renewcommand\RR{#3}
\renewcommand\TT{#4}
}
\newcommand\SetCan[1]
{
\SetCanvas{-#1}{-#1}{#1}{#1}
}
\newcommand\SetPadding[4]
{
\setlength{\LPad}{#1}
\setlength{\BPad}{#2}
\setlength{\RPad}{#3}
\setlength{\TPad}{#4}
}
\newcommand\SetPad[1]
{
\SetPadding{#1}{#1}{#1}{#1}
}
\endinput
Consumer
The consumer uses pst-xport class as follows.
\documentclass{pst-xport}
%\SetCanvas{-2}{-2}{2}{2}
\SetCan{2}
%\SetPadding{1cm}{1cm}{1cm}{1cm}
\SetPad{1cm}
\psset
{
xunit=1cm,
yunit=2cm
}
\begin{document}
\begin{pspicture}[showgrid=true](\LL,\BB)(\RR,\TT)
\psframe[linecolor=red](\LL,\BB)(\RR,\TT)
\end{pspicture}
\end{document}
Problem
However, the consumer settings cannot affect because they come last. How to configure a custom class such that consumer settings must be loaded before the class settings?
Bonus question: How to translate those settings to key-value settings that are more sophisticated?

\AtBeginDocument– egreg Jul 22 '11 at 18:51