我的自定义课程
本课程的目的是创建紧凑纸张尺寸内的单个 PSTricks 图表。
\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
消费者
消费者使用pst-xport
类如下。
\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}
问题
但是,消费者设置不会产生影响,因为它们排在最后。如何配置自定义类,使得消费者设置必须在类设置之前加载?
附加问题:如何将这些设置转换为更复杂的键值设置?
答案1
您可以在序言末尾计算您的设置,以便用户更改生效。
\AtBeginDocument{%
\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}
}
或者提供一些\updatesettings
可以进行所有调整的宏。