#delim ; prog def rtfsect; version 11.0; /* Start a new section in an open RTF file. *|Author: Roger Newson *!Date: 06 March 2012 */ syntax name [ , DEfault PAper(string) LAndscape MArgins(numlist >=0 integer min=4 max=4) ]; /* default specifies that section settings will be reset to the document default. paper() specifies paper width and height (in twips or as a keyword). landscape specifies that orientation is landscape. margins() specifies the margins (in twips: left, right, top, bottom). */ * Set default paper dimensions and margins and extract local dimension macros *; * Set paper orientation *; if "`landscape'"!="" {; local landscp "\lndscpsxn"; }; * Set paper dimensions *; local paper=lower(trim(`"`paper'"')); if `"`paper'"'=="us" {; local paper "12240 15840"; }; else if `"`paper'"'=="usland" {; local paper "15840 12240"; }; else if `"`paper'"'=="a4" {; local paper "11909 16834"; }; else if `"`paper'"'=="a4land" {; local paper "16834 11909"; }; * Set paper dimensions and margins parameters *; papermargins, paper(`paper') margins(`margins'); foreach LM in paperw paperh margl margr margt margb {; local `LM'="`r(`LM')'"; }; * Fill in RTF commands *; file write `namelist' _n "\sect" _n; if "`default'"!="" {; file write `namelist' "\sectd" _n; }; if `"`paper'"'!="" {; file write `namelist' "\pghsxn`paperh'\pgwsxn`paperw'" _n; }; if `"`landscp'"'!="" {; file write `namelist' "`landscp'" _n; }; if `"`margins'"'!="" {; file write `namelist' "\marglsxn`margl'\margrsxn`margr'\margtsxn`margt'\margbsxn`margb'" _n; }; end; prog def papermargins, rclass; version 11.0; /* Extract paper dimensions and margins from the provided options */ syntax , [ PAper(numlist >0 integer min=2 max=2) MArgins(numlist >=0 integer min=4 max=4) ]; /* paper() specifies paper width and height (in twips). margins specifies paper margins (in twips: left, right, top, bottom). */ local paperw: word 1 of `paper'; local paperh: word 2 of `paper'; local margl: word 1 of `margins'; local margr: word 2 of `margins'; local margt: word 3 of `margins'; local margb: word 4 of `margins'; retu local margb="`margb'"; retu local margt="`margt'"; retu local margr="`margr'"; retu local margl="`margl'"; retu local paperw="`paperw'"; retu local paperh="`paperh'"; end;