%% File rmpgen.cfg 10/10/97 %% derived from: %% File rmplocal.cfg 11/9/96 %% File rmpagelocal.cfg 23/8/96 %% %% Copyright 1996 and 1997 R.J.M. McDonnell %% email: rebecca@astrid.u-net.com %% %% Before modifying this file, you might like to make a back-up copy. %% %% This file is meant to be modified at each installation. So that %% you don't end up with a mess that's hideously incompatible with %% other installations and versions of the rmpage package, do this: %% when you change this file, add a comment on the top line identifying %% it as yours, and change the comment after the version number to do %% the same thing (e.g., [1923/09/17 v0.carrot Gertrude Stein's config %% file for the rmpage package]). %% %% Please don't make any other changes above the line: `LOCAL CODE BELOW %% HERE PLEASE', aside from commenting out or uncommenting whole %% options; you're best off not deleting them, honest. %% %% My current idea is that the contents of this file below the `LOCAL %% CODE BELOW HERE PLEASE' line can be cut and pasted wholesale into %% a later version of this file; the code that's there is my local %% configuration code, and I expect that its only use to you is as %% examples. My intention is that future versions of this file won't %% have essential code below the line `LOCAL CODE BELOW HERE PLEASE' %% either. %% %% I suggest the first thing you do is hunt down the \ExecuteOptions %% statements and change them to whatever you think suits you best. %% %% \NeedsTeXFormat{LaTeX2e}[1996/06/01] \ProvidesFile{rmpgen.cfg}[1997/10/10 v1.0 general configuration file for the rmpage package.] % % 1997/10/10 v1.0 Made this the first released version of rmpgen.cfg % 1996/11/01 v0.36 Changed the typesetting tightness the loadpsfount % options change to (now looseish). % Goes with rmpage-v0.90.sty % 1996/11/01 v0.35 Played about with ltxdoc stuff. Still no joy. % Goes with rmpage-v0.89.2.sty % 1996/10/31 v0.34 Added the three beton options, just after the % loadfount stuff. Belongs here because not everyone uses the % concrete founts. % Goes with rmpage-v0.89.sty % 1996/10/29 v0.33 Put \RM@notinexecuteoptions back in t@uch options; % put ljmeepex options into class file. Perhaps change rmpage so % t@uch options can be used; tricky. % Goes with rmpage-v0.88.sty % 1996/10/28 v0.32 Added \RM@AfterInitialTextwidthSetting hook; % added book class default options % Goes with rmpage-v0.88.sty % 1996/10/28 v0.31 Added foils defaults. % Goes with rmpage-v0.87.sty % 1996/10/25 v0.30 Added stuff about \RM@LocalClassReport hook. % Goes with rmpage-v0.85.sty % 1996/10/25 v0.29 Changed nastydate option to othernicedate. :-). % Goes with rmpage-v0.84.1.sty % 1996/10/21 v0.28 Changed slides options a bit; rmpwslid.pko is now % used. % Goes with rmpage-v0.84.sty % 1996/10/21 v0.27 Uncommented another t@uchoption; allowed all t@uch % options in \ExecuteOptions; added support for ljmeepex class % (options are declared here, and it's given the same number as % ljmueepexam. Is Bill Gates the Antichrist?) % Goes with rmpage-v0.83.sty % 1996/10/19 v0.26 Added ringbinding option which uses new % \RM@DefLengthAtLeast command. Changed bithesis settings to use % this command to define minmargins. % Goes with rmpage-v0.83.sty % 1996/10/17 v0.25 Changed loadpsfount stuff to use new command to % set looseness, which requests sloppiest \if@twocolum. % Goes with rmpage-v0.82.sty % 1996/10/14 v0.24 Added errorshow, warningshow, infoshow, and debugshow % options (asleep); these are used by tracefnt---someone might % like them. % Goes with rmpage-v0.81.1.sty % 1996/10/09 v0.23 Confirmed lj4printer limits by measuring MS works % output. Not great, but it'll do for now. % Goes with rmpage-v0.81.1.sty % 1996/10/06 v0.22 Fixed loadbookman option % Goes with rmpage-v0.81.1.sty % 1996/10/04 v0.21 Changed an errant \RM@ocltype to \RM@ocl % Goes with rmpage-v0.81.1.sty % 1996/10/01 v0.20 Changed loadconcrete option so it uses the beton % package; goes with changes in rmpage. Changed generalprinter so % it works with HP inkjets. % Goes with rmpage-v0.81.sty % 1996/09/30 v0.19.1 Changed c76paper option to c7/6paper; binned a % redundant asleepoption. % Goes with rmpage-v0.80.1.sty % 1996/09/29 v0.19 replaced smallbase things with normalbase things. % Goes with rmpage-v0.80.sty % 1996/09/28 v0.18 added noheaders and notstdmargins to default % \ExecuteOptions; to counteract changed default flag settings. % 1996/09/27 v0.17 Downcased the RA and SRA paper size names; changed % luccasua to lucasual. % Goes with rmpage-v0.78.sty % 1996/09/26 v0.16 Changed some comments; changed % \RM@ClassExecuteOptions to \RM@OnClassExecuteOptions % Goes with rmpage-v0.76.sty % 1996/09/24 v0.15 Added printer/paper settings from rmpage.sty to % the \RM@PrinterPaperSettings hook. Put loadcourier and % loadconcrete to bed. Commented out rmcv, rmletter, and bithesis % options; they should be redundant by now. Delete them later if % there's no problems. % Goes with rmpage-v0.74.sty % 1996/09/23 v0.14 Changed R+Rdw520printer option so \RM@printertype % is set to 11 (new 500 series value), rather than 2 (old DW520 % value). Foolish child. Added the thisfontwidth option, % commented out. % Goes with rmpage-v0.73.sty % 1996/09/22 v0.13 basemaxmparwidth and basemparclearance options % commented out. I mean, really, why not? Added the letter4paper % size: an unholy alliance between US letter and ISO A4. Avoid % like the plague; but I can almost see a use for it. % Goes with rmpage-v0.72.sty % 1996/09/18 v0.12.1 Changed some comments. % Goes with rmpage-v0.71.2.sty % 1996/09/16 v0.12 Added fulllength and stdlength options from % rmpage, because they need executing after the touchlength options. % Goes with rmpage-v0.71.sty % 1996/09/13 v0.11.1 minor doc change % 1996/09/13 v0.11 Not much really: added the center and notcenter % options to match the documentation. % Goes with rmpage-v0.69.sty % 1996/09/11 v0.10.1 Made a line a comment line again (oops) % Goes with rmpage-v0.67.sty % 1996/09/11 v0.10 Added some more options, and changed the name from % rmpagelocal.cfg (as it would be in a world free from Bill % Gates's malign influence) to the rather silly rmplocal.cfg. It % might have been ratlocal, but I decided in favour of utility % against character. Apologies to those who use the % abreviation RMP in a different context. Added lots and lots of % option declarations from rmpage.sty. Changed default option % setting and played around with class detection rather a lot; % it's relatively elegant now. % Goes with rmpage-v0.66.sty % 1996/09/10 v0.9 Turned a few %% lines into % lines % Goes with rmpage-v0.65.sty % 1996/09/10 v0.8 Played about with commented-out options % Goes with rmpage-v0.64.sty % 1996/09/09 v0.7 Played around with class detection and changed % class type numbers % Goes with rmpage-v0.63.sty % 1996/09/04 v0.6 Erm, some stuff. Changed printer option to % dw520-ours. % Goes with rmpage-v0.61.sty % 1996/09/03 v0.5 Played about a bit; can't remember the details. % Goes with rmpage-v0.60.sty % 1996/09/02 v0.4 added hook stuff, and included ltxdoc code in one % of them. % 1996/08/25 v0.3 added rarely used paper size definitions. % Goes with rmpagenew v0.56 % 1996/08/24 v0.2 changed name and stuff; goes with rmpagenew v0.55 % 1996/08/23 v0.1 Here we go... Goes with rmpagenew v0.54 % %% %% %% OPTION DECLARATION %% ================== %% %% This section contains the standard options for rmpage. I suggest %% you don't add or delete anything from this section: just comment %% options out to speed rmpage up or uncomment them if you need to %% use them. %% %% If you want to add options, add them at the end of this section %% in between the places marked. %% %% %% PAPER SIZES %% ----------- %% \DeclareOption{undefinedpaper}{\def\RM@papertype{0}} \DeclareOption{letter4paper}{\def\RM@papertype{9} \setlength\paperheight{8.5in} \setlength\paperwidth{210mm} } \DeclareOption{a0paper}{\def\RM@papertype{10} \setlength\paperheight{1189mm} \setlength\paperwidth{841mm} } \DeclareOption{a1paper}{\def\RM@papertype{11} \setlength\paperheight{841mm} \setlength\paperwidth{594mm} } \DeclareOption{a2paper}{\def\RM@papertype{12} \setlength\paperheight{594mm} \setlength\paperwidth{420mm} } \DeclareOption{a3paper}{\def\RM@papertype{13}% \setlength\paperheight{420mm}% \setlength\paperwidth{297mm}% } \DeclareOption{a6paper}{\def\RM@papertype{16}% \setlength\paperheight{148mm}% \setlength\paperwidth{105mm}% } \DeclareOption{a7paper}{\def\RM@papertype{17} \setlength\paperheight{105mm} \setlength\paperwidth{74mm} } \DeclareOption{a8paper}{\def\RM@papertype{18} \setlength\paperheight{74mm} \setlength\paperwidth{52mm} } \DeclareOption{a9paper}{\def\RM@papertype{19} \setlength\paperheight{52mm} \setlength\paperwidth{37mm} } \DeclareOption{a10paper}{\def\RM@papertype{20} \setlength\paperheight{37mm} \setlength\paperwidth{26mm} } \DeclareOption{b0paper}{\def\RM@papertype{30} \setlength\paperheight{1414mm} \setlength\paperwidth{1000mm} } \DeclareOption{b1paper}{\def\RM@papertype{31} \setlength\paperheight{1000mm} \setlength\paperwidth{707mm} } \DeclareOption{b2paper}{\def\RM@papertype{32} \setlength\paperheight{707mm} \setlength\paperwidth{500mm} } \DeclareOption{b3paper}{\def\RM@papertype{33} \setlength\paperheight{500mm} \setlength\paperwidth{353mm} } \DeclareOption{b4paper}{\def\RM@papertype{34}% \setlength\paperheight{353mm}% \setlength\paperwidth{250mm}% } \DeclareOption{b6paper}{\def\RM@papertype{36}% \setlength\paperheight{176mm}% \setlength\paperwidth{125mm}% } \DeclareOption{b7paper}{\def\RM@papertype{37}% \setlength\paperheight{125mm}% \setlength\paperwidth{88mm}% } \DeclareOption{b8paper}{\def\RM@papertype{38} \setlength\paperheight{88mm} \setlength\paperwidth{62mm} } \DeclareOption{b9paper}{\def\RM@papertype{39} \setlength\paperheight{62mm} \setlength\paperwidth{44mm} } \DeclareOption{b10paper}{\def\RM@papertype{40} \setlength\paperheight{44mm} \setlength\paperwidth{31mm} } \DeclareOption{c0paper}{\def\RM@papertype{50} \setlength\paperheight{1297mm} \setlength\paperwidth{917mm} } \DeclareOption{c1paper}{\def\RM@papertype{51} \setlength\paperheight{917mm} \setlength\paperwidth{648mm} } \DeclareOption{c2paper}{\def\RM@papertype{52} \setlength\paperheight{648mm} \setlength\paperwidth{458mm} } \DeclareOption{c3paper}{\def\RM@papertype{53} \setlength\paperheight{458mm} \setlength\paperwidth{324mm} } \DeclareOption{c4paper}{\def\RM@papertype{54} \setlength\paperheight{324mm} \setlength\paperwidth{229mm} } \DeclareOption{c5paper}{\def\RM@papertype{55}% \setlength\paperheight{229mm}% \setlength\paperwidth{162mm}% } \DeclareOption{c7paper}{\def\RM@papertype{57} \setlength\paperheight{114mm} \setlength\paperwidth{81mm} } \DeclareOption{c7/6paper}{\def\RM@papertype{59}% c7/6 paper \setlength\paperheight{162mm} \setlength\paperwidth{81mm} } % Note that the BS4264 envelope sizes have names I invented % BS4264 Post office preferred envelope: seed packets, wage slips, gen pack \DeclareOption{bspopseedenvelopepaper}{\def\RM@papertype{60} \setlength\paperheight{152mm} \setlength\paperwidth{102mm} } % BS4264 Post office preferred envelope: gen commercial, non iso sizes \DeclareOption{bspopnonisoenvelopepaper}{\def\RM@papertype{61} \setlength\paperheight{229mm} \setlength\paperwidth{102mm} } % BS4264 envelope; bulky A5, catalogues, brochures. \DeclareOption{bsbrochureenvelopepaper}{\def\RM@papertype{62} \setlength\paperheight{254mm} \setlength\paperwidth{178mm} } % BS4264 envelope; legal docs, catalogues, photos \DeclareOption{bslegalenvelopepaper}{\def\RM@papertype{63} \setlength\paperheight{270mm} \setlength\paperwidth{216mm} } % BS4264 envelope; insurance policies, legal docs \DeclareOption{bslargelegalenvelopepaper}{\def\RM@papertype{64} \setlength\paperheight{305mm} \setlength\paperwidth{127mm} } % BS4264 envelope; bulky docs, calendars \DeclareOption{bscalendarenvelopepaper}{\def\RM@papertype{65} \setlength\paperheight{381mm} \setlength\paperwidth{254mm} } \DeclareOption{foolscapfoliopaper}{\def\RM@papertype{70}% \setlength\paperheight{13.5in}% \setlength\paperwidth{8.5in}% } \DeclareOption{foolscappaper}{\def\RM@papertype{70}% foolscap option gives foolscap \setlength\paperheight{13.5in}% folio paper \setlength\paperwidth{8.5in} } \DeclareOption{foolscapquartopaper}{\def\RM@papertype{71} \setlength\paperheight{8.5in} \setlength\paperwidth{6.75in} } \DeclareOption{foolscapoctavopaper}{\def\RM@papertype{72} \setlength\paperheight{6.75in} \setlength\paperwidth{4.25in} } \DeclareOption{crownfoliopaper}{\def\RM@papertype{73} \setlength\paperheight{15in} \setlength\paperwidth{10in} } \DeclareOption{crownquartopaper}{\def\RM@papertype{74} \setlength\paperheight{10in} \setlength\paperwidth{7.5in} } \DeclareOption{crownoctavopaper}{\def\RM@papertype{75} \setlength\paperheight{7.5in} \setlength\paperwidth{5in} } \DeclareOption{royalfoliopaper}{\def\RM@papertype{76} \setlength\paperheight{20in} \setlength\paperwidth{12.5in} } \DeclareOption{royalquartopaper}{\def\RM@papertype{77} \setlength\paperheight{12.5in} \setlength\paperwidth{10in} } \DeclareOption{royaloctavopaper}{\def\RM@papertype{78} \setlength\paperheight{10in} \setlength\paperwidth{6.25in} } \DeclareOption{imperialfoliopaper}{\def\RM@papertype{79} \setlength\paperheight{22in} \setlength\paperwidth{15.5in} } \DeclareOption{imperialquartopaper}{\def\RM@papertype{80} \setlength\paperheight{15in} \setlength\paperwidth{11in} } \DeclareOption{imperialoctavopaper}{\def\RM@papertype{81} \setlength\paperheight{11in} \setlength\paperwidth{7.5in} } \DeclareOption{largecrownoctavopaper}{\def\RM@papertype{82} \setlength\paperheight{8in} \setlength\paperwidth{5.25in} } \DeclareOption{demyoquartopaper}{\def\RM@papertype{83} \setlength\paperheight{11.25in} \setlength\paperwidth{8.75in} } \DeclareOption{demyoctavopaper}{\def\RM@papertype{84} \setlength\paperheight{8.75in} \setlength\paperwidth{5.625in} } \DeclareOption{mediumquartopaper}{\def\RM@papertype{85} \setlength\paperheight{12in} \setlength\paperwidth{9.5in} } \DeclareOption{mediumoctavopaper}{\def\RM@papertype{86} \setlength\paperheight{9.5in} \setlength\paperwidth{6in} } \DeclareOption{ra0paper}{\def\RM@papertype{90} \setlength\paperheight{1270mm} \setlength\paperwidth{960mm} } \DeclareOption{ra1paper}{\def\RM@papertype{91} \setlength\paperheight{1270mm} \setlength\paperwidth{960mm} } \DeclareOption{ra2paper}{\def\RM@papertype{92} \setlength\paperheight{1270mm} \setlength\paperwidth{960mm} } \DeclareOption{sra0paper}{\def\RM@papertype{93} \setlength\paperheight{1280mm} \setlength\paperwidth{900mm} } \DeclareOption{sra1paper}{\def\RM@papertype{94} \setlength\paperheight{900mm} \setlength\paperwidth{840mm} } \DeclareOption{sra2paper}{\def\RM@papertype{95} \setlength\paperheight{640mm} \setlength\paperwidth{450mm} } \DeclareOption{metricdoublecrownpaper}{\def\RM@papertype{96} \setlength\paperheight{770mm} \setlength\paperwidth{505mm} } \DeclareOption{metricquadcrownpaper}{\def\RM@papertype{97} \setlength\paperheight{1010mm} \setlength\paperwidth{770mm} } \DeclareOption{metriclargequadcrownpaper}{\def\RM@papertype{98} \setlength\paperheight{1060mm} \setlength\paperwidth{820mm} } \DeclareOption{metricquaddemypaper}{\def\RM@papertype{99} \setlength\paperheight{1030mm} \setlength\paperwidth{890mm} } \DeclareOption{metricsmallquadroyalpaper}{\def\RM@papertype{100} \setlength\paperheight{1270mm} \setlength\paperwidth{960mm} } %% %% %% LONG PAPER TYPES %% ---------------- %% %% 0 = not long (or 1) %% 1 = 7/8 2 = 3/4 3 = 2/3 4 = 5/8 5 = 1/2 %% 6 = 3/8 7 = 1/3 8 = 1/4 9 = 1/8 %% \DeclareOption{notlongpaper}{\def\RM@longpapertype{0}} \DeclareOption{7/8longpaper}{\def\RM@longpapertype{1}} \DeclareOption{3/4longpaper}{\def\RM@longpapertype{2}} \DeclareOption{2/3longpaper}{\def\RM@longpapertype{3}} \DeclareOption{5/8longpaper}{\def\RM@longpapertype{4}} \DeclareOption{1/2longpaper}{\def\RM@longpapertype{5}} \DeclareOption{3/8longpaper}{\def\RM@longpapertype{6}} \DeclareOption{1/3longpaper}{\def\RM@longpapertype{7}} \DeclareOption{1/4longpaper}{\def\RM@longpapertype{8}} \DeclareOption{1/8longpaper}{\def\RM@longpapertype{9}} %% %% %% OPTIONS TO CHANGE MARGINPARS %% ---------------------------- %% %% marginparsep is scaled by option \DeclareOption{leastmparsep}{\RM@mparsepoption=3} \DeclareOption{lessmparsep}{\RM@mparsepoption=6} \DeclareOption{lessishmparsep}{\RM@mparsepoption=9} \DeclareOption{normalmparsep}{\RM@mparsepoption=12} \DeclareOption{moreishmparsep}{\RM@mparsepoption=15} \DeclareOption{moremparsep}{\RM@mparsepoption=18} \DeclareOption{mostmparsep}{\RM@mparsepoption=21} %% %% The basemparclear options need to be executed after paperwidth has %% been set. Easily done with \ProcessOptions rather than %% \ProcessOptions*, and the papersize setting options declared above %% rather than below. The normalbasemparclear value is set after option %% processing if no other value has been set. If \RM@mparclearance is %% -666pt, the normalbasemparclear value is set; if it's -667pt, the %% largebaselinemparclear value is set (both just after %% \RM@PrinterPaperSettings hook is executed, which is well after %% \paperwidth is set). This value is scaled by option just before it's %% used, so one can use the \RM@BeforeWidthSetting hook to change things. \DeclareOption{normalbasemparclear}{\setlength\RM@mparclearance{-666pt}} \DeclareOption{largebasemparclear}{\setlength\RM@mparclearance{-667pt}} \DeclareOption{normalbasemaxmparwidth}{\setlength\RM@maxmparwidth{-666pt}} \DeclareOption{largebasemaxmparwidth}{\setlength\RM@maxmparwidth{-667pt}} %% %% the gap between the edge of the paper and the edge of a marginpar %% is 0.4in (10.16mm) with standard article/report class settings. %% The mparclearance options change this. %% %% mparclearance for A4 portrait paper: %% least=3.95mm less=5.37mm lessish=7.28mm norm=9.88 %% moreish=13.41mm more=18.20mm most=24.71mm %% %% (norm=0.4in with US letter paper). Note that there are no touch %% options for mparclearance or maxmparwidth. There's no particular %% reason why they shouldn't be added. So I did, but left them %% commented out. \DeclareOption{leastmparclearance}{\RM@mparclearoption=3} \DeclareOption{lessmparclearance}{\RM@mparclearoption=6} \DeclareOption{lessishmparclearance}{\RM@mparclearoption=9} \DeclareOption{normalmparclearance}{\RM@mparclearoption=12}% norm \DeclareOption{moreishmparclearance}{\RM@mparclearoption=15} \DeclareOption{moremparclearance}{\RM@mparclearoption=18} \DeclareOption{mostmparclearance}{\RM@mparclearoption=21} %% %% maxmparwidth is now set as a fraction of paperwidth, such that with %% portrait US letter paper, you get 2in as standard (or maybe with A4; I %% really ought to check this.. It's scale by option just like %% everything else. If you want to change the default base value of %% maxmparwidth, the \RM@BeforeWidthSetting hook is an ideal place to do %% it. \DeclareOption{leastmaxmparwidth}{\RM@maxmparwidthoption=3} \DeclareOption{lessmaxmparwidth}{\RM@maxmparwidthoption=6} \DeclareOption{lessishmaxmparwidth}{\RM@maxmparwidthoption=9} \DeclareOption{normalmaxmparwidth}{\RM@maxmparwidthoption=12}% norm \DeclareOption{moreishmaxmparwidth}{\RM@maxmparwidthoption=15} \DeclareOption{moremaxmparwidth}{\RM@maxmparwidthoption=18} \DeclareOption{mostmaxmparwidth}{\RM@maxmparwidthoption=21} %% %% %% TOUCH OPTIONS %% ------------- %% %% Note that all the touch options need to be executed after their %% corresponding `straight' options. This is inevitable if they are %% left here and \ProcessOptions is used rather than the star form, %% because rmplocal.cfg is loaded after all of rmpage's \DeclareOptions %% statements. %% \DeclareOption{t@uchlonger} {\RM@notinexecuteoptions\advance\RM@lengthoption by 1} \DeclareOption{t@uchshorter}{\RM@notinexecuteoptions\advance\RM@lengthoption by -1} \DeclareOption{touchlonger}{\RM@notinexecuteoptions\advance\RM@lengthoption by 1} \DeclareOption{touchshorter}{\RM@notinexecuteoptions\advance\RM@lengthoption by -1} %% \DeclareOption{touchmorecolsep}{\RM@notinexecuteoptions\advance\RM@columnsepoption by1} \DeclareOption{touchlesscolsep}{\RM@notinexecuteoptions\advance\RM@columnsepoption by-1} \DeclareOption{t@uchmorecolsep}{\RM@notinexecuteoptions\advance\RM@columnsepoption by1} \DeclareOption{t@uchlesscolsep}{\RM@notinexecuteoptions\advance\RM@columnsepoption by-1} %% \DeclareOption{touchmoremparsep}{\RM@notinexecuteoptions\advance\RM@mparsepoption by1} \DeclareOption{touchlessmparsep}{\RM@notinexecuteoptions\advance\RM@mparsepoption by-1} \DeclareOption{t@uchmoremparsep}{\RM@notinexecuteoptions\advance\RM@mparsepoption by1} \DeclareOption{t@uchlessmparsep}{\RM@notinexecuteoptions\advance\RM@mparsepoption by-1} %% \DeclareOption{touchmorefootskip}{\RM@notinexecuteoptions\advance\RM@footskipoption by1} \DeclareOption{touchlessfootskip}{\RM@notinexecuteoptions\advance\RM@footskipoption by-1} \DeclareOption{t@uchmorefootskip}{\RM@notinexecuteoptions\advance\RM@footskipoption by1} \DeclareOption{t@uchlessfootskip}{\RM@notinexecuteoptions\advance\RM@footskipoption by-1} %% \DeclareOption{touchmoreheadsep}{\RM@notinexecuteoptions\advance\RM@headsepoption by1} \DeclareOption{touchlessheadsep}{\RM@notinexecuteoptions\advance\RM@headsepoption by-1} \DeclareOption{t@uchmoreheadsep}{\advance\RM@headsepoption by1} \DeclareOption{t@uchlessheadsep}{\advance\RM@headsepoption by-1} %% \DeclareOption{t@uchwider}{\RM@notinexecuteoptions\advance\RM@widthoption by1} \DeclareOption{t@uchnarrower}{\RM@notinexecuteoptions\advance\RM@widthoption by-1} \DeclareOption{touchwider}{\RM@notinexecuteoptions\advance\RM@widthoption by1} \DeclareOption{touchnarrower}{\RM@notinexecuteoptions\advance\RM@widthoption by-1} %% \DeclareOption{t@uchmoreoffset}{\RM@notinexecuteoptions\advance\RM@offsetoption by1} \DeclareOption{t@uchlessoffset}{\RM@notinexecuteoptions\advance\RM@offsetoption by-1} \DeclareOption{touchmoreoffset}{\RM@notinexecuteoptions\advance\RM@offsetoption by1} \DeclareOption{touchlessoffset}{\RM@notinexecuteoptions\advance\RM@offsetoption by-1} %% \DeclareOption{t@uchhigher}{\RM@notinexecuteoptions\advance\RM@headfootbalance by -1} \DeclareOption{t@uchlower} {\RM@notinexecuteoptions\advance\RM@headfootbalance by 1} \DeclareOption{touchhigher}{\RM@notinexecuteoptions\advance\RM@headfootbalance by -1} \DeclareOption{touchlower} {\RM@notinexecuteoptions\advance\RM@headfootbalance by 1} %% \DeclareOption{t@uchlessmparclearance}{\RM@notinexecuteoptions\advance\RM@mparclearoption by -1} \DeclareOption{t@uchmoremparclearance}{\RM@notinexecuteoptions\advance\RM@mparclearoption by 1} \DeclareOption{touchlessmparclearance}{\RM@notinexecuteoptions\advance\RM@mparclearoption by -1} \DeclareOption{touchmoremparclearance}{\RM@notinexecuteoptions\advance\RM@mparclearoption by 1} \DeclareOption{t@uchlessmaxmparwidth}{\RM@notinexecuteoptions\advance\RM@maxmparwidthoption by -1} \DeclareOption{t@uchmoremaxmparwidth}{\RM@notinexecuteoptions\advance\RM@maxmparwidthoption by 1} \DeclareOption{touchlessmaxmparwidth}{\RM@notinexecuteoptions\advance\RM@maxmparwidthoption by -1} \DeclareOption{touchmoremaxmparwidth}{\RM@notinexecuteoptions\advance\RM@maxmparwidthoption by 1} %% %% %% RANDOM LENGTH OPTIONS %% --------------------- %% %% These need to be executed after the touchlength options; but for %% that, they'd be in rmpage.sty %% \DeclareOption{fulllength}{\RM@lengthoption=30} \DeclareOption{stdlength}{\RM@lengthoption=0} %% %% %% NUMBER OF COLUMNS %% ----------------- %% %% onecolumn and twocolumn are both in rmpage. These options only %% affect \textwidth; use a package like multicols to set you text in %% multiple columns. %% \DeclareOption{onecolumnwidth}{\def\RM@textcols{1}} \DeclareOption{twocolumnwidth}{\def\RM@textcols{2}} \DeclareOption{threecolumnwidth}{\def\RM@textcols{3}} \DeclareOption{fourcolumnwidth}{\def\RM@textcols{4}} \DeclareOption{fivecolumnwidth}{\def\RM@textcols{5}} \DeclareOption{sixcolumnwidth}{\def\RM@textcols{6}} \DeclareOption{sevencolumnwidth}{\def\RM@textcols{7}} \DeclareOption{eightcolumnwidth}{\def\RM@textcols{8}} \DeclareOption{ninecolumnwidth}{\def\RM@textcols{9}} \DeclareOption{tencolumnwidth}{\def\RM@textcols{10}} %% %% %% LOADING FOUNTS %% -------------- %% %% The fount options work like this: a fount family is set, and if the %% \RM@loadfount flag is set true, the appropriate fount is loaded, %% mainly with one of the standard PSNFSS packages. %% Fount families are set like this: %% 1=avant garde 2=bookman 3=zapf chancery 4=helvetica %% 5=new century schoolbook 6=palatino 7=times 8=utopia %% 9=lucida casual 10=courier 11=concrete 12=this fount width %% 13=lucida casual dirty trick %% %% The dirty trick works like this: if you ask for lucida casual %% (\RM@fountfamily 13), the fount loading code later on does a %% \RequirePackage{lucida-casual}, and then sets \RM@fountfamily %% to 9. The option to do this is in Rowland's curious option %% section. %% %% The command below is used to ask for a particular set of %% typesetting parameters if you've not explicitly requested any with %% the looseness option set. You get loose if you've asked for %% onecolumn, or sloppy if you've asked for twocolumn. Ncolumnwidth %% is treated as onecolumn; the multicol package makes its own %% arrangements. But this shouldn't be done any more because the %% metrics have changed (S. Rahtz, psnfss2e.tex, 5/11/95). I wish %% there was an up-to-date version of fontinst with docs available. %% %% This command's defined here so its meaning is clear; it's cleared %% at the end of rmpage.sty. %% %% So, this is the command that used to do the dirty. And still does: %% the PSNFSS founts \emph{are} still much tighter than cmr, and you %% get more bad line breaks. But looseish seems enough for now; keep %% the twocolumn extra super dooper very slack indeed looseness as is %% for now. (I wish I had a television so I could find out exactly %% what it is that Mutley says when he's annoyed). Maybe the thing %% to do is to change the sloppiness command: see rmpage.sty for more %% comments (yes, you, you fool, me! bloody well read it [don't %% complain: I'm swearing at myself]). %% %% The thing is, the PSNFSS founts are a little tighter than cmr (it %% seems). looseish over-compensates, but it's not all that much %% looser than tight. Grumbledon diwn. \def\RM@setpsloose{ \ifnum\RM@looseoption=205 \if@twocolumn \def\RM@looseoption{5} \else \def\RM@looseoption{1} \fi \fi } % \def\RM@setpsloose{\relax} % % Don't change the options below; just change the loosening command % % in case I want to use it later. %% %% %% Computer modern roman; redundant options \DeclareOption{cmrwidth}{\def\RM@fountfamily{0}} \DeclareOption{loadcmr}{\def\RM@fountfamily{0}\RM@loadfounttrue} %% Avant Garde \DeclareOption{avantwidth}{\def\RM@fountfamily{1}} \DeclareOption{loadavant}{\def\RM@fountfamily{1} \RM@loadfounttrue\RM@setpsloose} %% Bookman \DeclareOption{bookmanwidth}{\def\RM@fountfamily{2}} \DeclareOption{loadbookman}{\def\RM@fountfamily{2} \RM@loadfounttrue\RM@setpsloose} %% Zapf Chancery \DeclareOption{chancerywidth}{\def\RM@fountfamily{3}} \DeclareOption{loadchancery}{\def\RM@fountfamily{3} \RM@loadfounttrue\RM@setpsloose} %% Helvetica \DeclareOption{helvetwidth}{\def\RM@fountfamily{4}} \DeclareOption{loadhelvet}{\def\RM@fountfamily{4} \RM@loadfounttrue\RM@setpsloose} %% New Century Schoolbook \DeclareOption{newcentwidth}{\def\RM@fountfamily{5}} \DeclareOption{loadnewcent}{\def\RM@fountfamily{5} \RM@loadfounttrue\RM@setpsloose} %% Palatino \DeclareOption{palatinowidth}{\def\RM@fountfamily{6}} \DeclareOption{loadpalatino}{\def\RM@fountfamily{6} \RM@loadfounttrue\RM@setpsloose} %% Times \DeclareOption{timeswidth}{\def\RM@fountfamily{7}} \DeclareOption{loadtimes}{\def\RM@fountfamily{7} \RM@loadfounttrue\RM@setpsloose} %% Utopia \DeclareOption{utopiawidth}{\def\RM@fountfamily{8}} \DeclareOption{loadutopia}{\def\RM@fountfamily{8} \RM@loadfounttrue\RM@setpsloose} %% Lucida casual \DeclareOption{lucasualwidth}{\def\RM@fountfamily{9}} \DeclareOption{loadlucasual}{\def\RM@fountfamily{9} \RM@loadfounttrue\RM@setpsloose} %% lucida-casual option is now in rmplocal.cfg %% Courier \DeclareOption{courierwidth}{\def\RM@fountfamily{10}} \DeclareOption{loadcourier}{\def\RM@fountfamily{10}\RM@loadfounttrue \RM@setpsloose} %% Concrete %% Concrete doesn't need loose typesetting \DeclareOption{concretewidth}{\def\RM@fountfamily{11}} \DeclareOption{loadconcrete}{\def\RM@fountfamily{11}\RM@loadfounttrue \ExecuteOptions{beton}} %% Bases \textwidth on current fount \DeclareOption{thisfountwidth}{\def\RM@fountfamily{12}} %% %% %% Stuff for beton support %% ----------------------- %% %% I need to pass the standard-baselineskips option to beton %% explicitly so I can detect whether beton's been loaded with this %% option later. I might as well prepare to pass the other two %% options, just in case I need to know about them someday. \DeclareOption{standard-baselineskips} {\PassOptionsToPackage{\CurrentOption}{beton}} \DeclareOption{oldstyle-equation-numbers} {\PassOptionsToPackage{\CurrentOption}{beton}} \DeclareOption{concrete-math} {\PassOptionsToPackage{\CurrentOption}{beton}} %% %% %% %% Synonyms for other options %% -------------------------- %% %% Now I like this. \DeclareOption{othernicedate}{\RM@nicedatefalse}% usdate \DeclareOption{nicedate}{\RM@nicedatetrue}% ukdate %% %% Other packages use these options to change the amount of %% information displayed; I might as well pay attention. %% \DeclareOption{verbose}{\def\RM@chatlevel{1}}% chatty \DeclareOption{silent}{\def\RM@chatlevel{3}}% yorkshire \DeclareOption{errorshow}{\def\RM@chatlevel{3}}% yorkshire \DeclareOption{warningshow}{\def\RM@chatlevel{2}}% taciturn \DeclareOption{infoshow}{\def\RM@chatlevel{1}}% chatty \DeclareOption{debugshow}{\def\RM@chatlevel{0}}% garrulous %% %% And I object to this, I really do. Why can't people learn to %% spell properly? %% \DeclareOption{center}{\RM@centretrue} \DeclareOption{notcenter}{\RM@centrefalse} %% %% %% MARGIN OPTIONS %% -------------- %% %% What the ringbinding option does is ensure that there's enough space %% in the inside margin to punch holes. It does not make a binding %% correction after the fashion of the Koma-script packages. This option %% assumes that you'll be punching holes in the inside margin, so don't %% expect it to work properly with landscape printing---I couldn't work %% out a way of predicting which margin will get the holes in landscape %% printing, so I decided to make no attempt to support it. If you have %% any thoughts on this, please email me. %% \DeclareOption{ringbinding} {\ifRM@portrait \RM@DefLengthAtLeast{\RM@mininsidemargin}{15mm} \else \RM@Warn{The ringbinding option does nothing in landscape mode} \fi} %% %% PRINTER OPTIONS %% --------------- %% %% Printer types are: %% 0=fullbleed, 1=general, 2=pessimistic, 3=optimistic %% 10=dw300 11=dw500 12=dw600 (HP deskwriter inkjet series) %% 20=lj2 21=lj3 22=lj4 (HP laserjet laser printer series) %% 30=canonbjx bubblejet something (Canon bubblejet inkjet series) %% 40+ whatever else comes up %% %% The idea is that printer types < 10 are not locally configured; %% these numbers are reserved for mythical general types that should %% be the same on all systems. Feel free to add your own mythical %% general types; please keep the printer number > 1000. %% %% The figures for all these printers are guesses, except for the DW500 %% and DW600: any data on printing margins for the printers above or %% other commonly-used printers would be gratefully received. I need to %% know about printing limits at the top, bottom, left, and right for %% portrait and landscape modes, and whether the data is what the book %% says or what you measured (preferrably both, but anything'll help). %% If anyone really uses LaTeX with an A3 printer, do tell: it's %% something I've been wondering about. %% %% \RM@ptrpostol generally set to 1mm (paper sizes are to $\pm2$mm), %% except for our dw520 which I keep a careful eye on. %% \DeclareOption{fullbleedprinter}{ \def\RM@printertype{0} \def\RM@ptrrportclear{0mm} \def\RM@ptrlportclear{0mm} \def\RM@ptrtportclear{0mm} \def\RM@ptrbportclear{0mm} \def\RM@ptrrlandclear{0mm} \def\RM@ptrllandclear{0mm} \def\RM@ptrtlandclear{0mm} \def\RM@ptrblandclear{0mm} \def\RM@ptrpostol{0mm}% Seems best } % %% Quite arbitrary settings, \DeclareOption{generalprinter}{% arbitrary \def\RM@printertype{1} \def\RM@ptrrportclear{8mm} \def\RM@ptrlportclear{8mm} \def\RM@ptrtportclear{8mm} \def\RM@ptrbportclear{15mm} \def\RM@ptrrlandclear{15mm} \def\RM@ptrllandclear{8mm} \def\RM@ptrtlandclear{8mm} \def\RM@ptrblandclear{8mm} \def\RM@ptrpostol{1mm}% Guess } %% This uses the worst limits I can remember meeting: \DeclareOption{pessimisticprinter}{ \def\RM@printertype{2} \def\RM@ptrrportclear{10mm} \def\RM@ptrlportclear{10mm} \def\RM@ptrtportclear{10mm} \def\RM@ptrbportclear{19mm} \def\RM@ptrrlandclear{19mm} \def\RM@ptrllandclear{10mm} \def\RM@ptrtlandclear{10mm} \def\RM@ptrblandclear{10mm} \def\RM@ptrpostol{1mm}% Guess } % This uses the best limits I'd expect \DeclareOption{optimisticprinter}{ \def\RM@printertype{3} \def\RM@ptrrportclear{3mm} \def\RM@ptrlportclear{3mm} \def\RM@ptrtportclear{3mm} \def\RM@ptrbportclear{3mm} \def\RM@ptrrlandclear{3mm} \def\RM@ptrllandclear{3mm} \def\RM@ptrtlandclear{3mm} \def\RM@ptrblandclear{3mm} \def\RM@ptrpostol{0.5mm}% Guess } \DeclareOption{dw300printer}{% Guess \def\RM@printertype{11} \def\RM@ptrrportclear{6mm} \def\RM@ptrlportclear{6mm} \def\RM@ptrtportclear{7mm} \def\RM@ptrbportclear{15mm} \def\RM@ptrrlandclear{15mm} \def\RM@ptrllandclear{7mm} \def\RM@ptrtlandclear{6mm} \def\RM@ptrblandclear{6mm} \def\RM@ptrpostol{1mm} } \DeclareOption{dw500printer}{% HP spec \def\RM@printertype{11} \def\RM@ptrrportclear{6mm} \def\RM@ptrlportclear{6mm} \def\RM@ptrtportclear{7mm} \def\RM@ptrbportclear{15mm} \def\RM@ptrrlandclear{15mm} \def\RM@ptrllandclear{7mm} \def\RM@ptrtlandclear{6mm} \def\RM@ptrblandclear{6mm} \def\RM@ptrpostol{1mm} } \DeclareOption{dw600printer}{% Measured from Rebecca's at work+1mm. \def\RM@printertype{12} \def\RM@ptrrportclear{5mm} \def\RM@ptrlportclear{5mm} \def\RM@ptrtportclear{2mm} \def\RM@ptrbportclear{15mm} \def\RM@ptrrlandclear{15mm} \def\RM@ptrllandclear{2mm} \def\RM@ptrtlandclear{5mm} \def\RM@ptrblandclear{5mm} \def\RM@ptrpostol{1mm}% Guess } \DeclareOption{lj2printer}{% an arbitrary guess \def\RM@printertype{20} \def\RM@ptrrportclear{7mm} \def\RM@ptrlportclear{7mm} \def\RM@ptrtportclear{7mm} \def\RM@ptrbportclear{7mm} \def\RM@ptrrlandclear{7mm} \def\RM@ptrllandclear{7mm} \def\RM@ptrtlandclear{7mm} \def\RM@ptrblandclear{7mm} \def\RM@ptrpostol{1mm}% Guess } \DeclareOption{lj3printer}{% an arbitrary guess \def\RM@printertype{21} \def\RM@ptrrportclear{6mm} \def\RM@ptrlportclear{6mm} \def\RM@ptrtportclear{6mm} \def\RM@ptrbportclear{6mm} \def\RM@ptrrlandclear{6mm} \def\RM@ptrllandclear{6mm} \def\RM@ptrtlandclear{6mm} \def\RM@ptrblandclear{6mm} \def\RM@ptrpostol{1mm}% Guess } \DeclareOption{lj4printer}{% measured from MS Works output \def\RM@printertype{22} \def\RM@ptrrportclear{5mm} \def\RM@ptrlportclear{5mm} \def\RM@ptrtportclear{5mm} \def\RM@ptrbportclear{5mm} \def\RM@ptrrlandclear{5mm} \def\RM@ptrllandclear{5mm} \def\RM@ptrtlandclear{5mm} \def\RM@ptrblandclear{5mm} \def\RM@ptrpostol{0.5mm}% Guess } \DeclareOption{canonbjxprinter}{% an arbitrary guess \def\RM@printertype{22} \def\RM@ptrrportclear{7mm} \def\RM@ptrlportclear{7mm} \def\RM@ptrtportclear{7mm} \def\RM@ptrbportclear{12mm} \def\RM@ptrrlandclear{12mm} \def\RM@ptrllandclear{7mm} \def\RM@ptrtlandclear{7mm} \def\RM@ptrblandclear{7mm} \def\RM@ptrpostol{1mm}% Guess } %% %% ROWLAND'S CURIOUS OPTIONS %% ------------------------- %% %% These are curious options, defined by me (RJMM) to perform dark and %% eldritch deeds. These aren't intended for hoi polloi, mainly 'cos %% they're a bit iffy in places, but I like them and they might give %% you some ideas. %% %% %% Our DW520 isn't quite to spec. %% \DeclareOption{R+R-dw520printer}{ \def\RM@printertype{11} \def\RM@ptrrportclear{7mm}% spec 6mm \def\RM@ptrlportclear{6mm} \def\RM@ptrtportclear{7mm} \def\RM@ptrbportclear{15mm} \def\RM@ptrrlandclear{15mm} \def\RM@ptrllandclear{7mm} \def\RM@ptrtlandclear{7mm}% spec 6mm \def\RM@ptrblandclear{6mm} \def\RM@ptrpostol{0.5mm}% Guess } %% %% A dirty trick to load my .fd version of lucida casual rather than %% the PSNFSS version. If you loadlucidacasual, \RM@fountfamily is set %% to 9 after the lucida-casual package has been \RequirePackaged. %% That's done by code further on in rmpage, specially written for %% this dirty trick. %% %% Lucida casual \DeclareOption{lucidacasualwidth}{\def\RM@fountfamily{9}} \DeclareOption{loadlucidacasual}{\def\RM@fountfamily{13} \RM@loadfounttrue\RM@setpsloose} %% %% These class options ought to be redundant now. %%\DeclareOption{rmcv}{\def\RM@classtype{20}} %%\DeclareOption{rmletter}{\def\RM@classtype{21}} %%\DeclareOption{bithesis}{\def\RM@classtype{22}} %% for ltx guide docs; maybe use in ltxguide.cfg? %%\DeclareOption{ltxguide}{\def\RM@classtype{7}}% redundant %% for typesetting .dtx files only; used by ltxdoc.cfg %%\DeclareOption{ltxdoc}{\def\RM@classtype{6}}% redundant %% for Liverpool J.Moore's EEP exams %%\DeclareOption{ljmueepexam}{\def\RM@classtype{23}}% redundant %% %% \RM@ptsize is set to the requested point size if an rmsizeN package has %% not already been recognised by another package. %% %% These point size options need another package file which really %% isn't ready to be released yet - so don't expect them to work. %% %% If you really, really, really want to use these extra point sizes, %% I'll send you the extra files if you ask nicely. %% \providecommand{\RM@ptsize}{666} \DeclareOption{14pt}{\ifnum\RM@ptsize=666\def\RM@ptsize{14}\def\@ptsize{2}\fi} \DeclareOption{24pt}{\ifnum\RM@ptsize=666\def\RM@ptsize{24}\def\@ptsize{2}\fi} \DeclareOption{36pt}{\ifnum\RM@ptsize=666\def\RM@ptsize{36}\def\@ptsize{2}\fi} %% %% Don't do anything to the file above this point except these things: %% comment out whole options, %% uncomment out whole options, %% and change the identifying comments and commands at the start of the file. %% Disobeying this order will result in a squadron of highly-trained %% killer gerbils attacking your toenails each night; the cost in %% pedicurist bills will be crippling. %% %% %% LOCAL CODE BELOW HERE PLEASE %% ============================ %% %% %% Add your options in the section marked out below. %% %% %% BEGIN LOCAL OPTION DECLARATION %% ============================== %% %% %% %% END LOCAL OPTION DECLARATION %% ============================ %% %% %% DEFAULT OPTION SETTING %% ====================== %% %% Default options for any class---the \ExecuteOptions statement below %% should contain the default settings you want for all documents. %% Remember these options can always be over-ridden by class-specific %% code and options used in a document. %% %% Check the statement below about default option settings; things %% change, y'know. %% %% rmpage sets things up so that these options are used by default: %% %% noheaders,footers,notcentre,oneside,portrait,onecolumn,normalaltitude, %% normalcolumnsep,normalheadsep,normalfootskip,normalmparsep, %% normallength,normalwidth,normaloffset,generalprinter, %% noadaptivecolumnsep,nastydate,taciturn %% %% The (USA) letterpaper option is specified by the standard classes; %% rmpage defaults to undefinedpaper (a real papertype in my %% book, which I wouldn't recommend unless you like error messages). %% %% Either the stdmargins or notstdmargins option should be executed, to %% avoid (admittedly unlikely) mis-understandings over the placement of %% marginal notes. I think I've changed rmpage so there shouldn't be %% a problem with this; notstdmargins is the default setting. %% %% If no config file is found by rmpagenew, the notstdmargins option %% is executed using \ExecuteOptions. %% %% %% CHANGE THE COMMAND BELOW TO MATCH YOUR LOCAL PREFERENCES %% -------------------------------------------------------- %% % \ExecuteOptions{R+R-dw520printer,a4paper,notstdmargins,nicedate,noheaders} \ExecuteOptions{generalprinter,letterpaper,stdmargins,usdate,noheaders} %% %% -------------------------------------------------------- %% %% %% DEFAULT OPTIONS FOR PARTICULAR CLASSES. %% ====================================== %% %% Don't set default options in local classes using %% \PassOptionsToPackage{rmpage}{...} in your class file unless you have %% a good reason to; read the note below. %% %% If you need to have rmpage \ExecuteOptions for particular classes, %% use the \RM@OnClassExecuteOptions statement in the block below. %% %% \RM@ClassExecuteOption{<class name>}{<option list>} performs %% \ExecuteOptions{<option list>} if the class called <class name> has %% been loaded. %% %% Note that if you are building one class upon another (say, nuthesis %% based on report), both classes might have been by this stage, so it is %% best to have the \RM@OnClassExecuteOptions statement for the base class %% *before* the \RM@OnClassExecuteOptions statement for the loading class. %% E.g., for nuthesis based on report, have: %% \RM@OnClassExecuteOptions{report}{...} *before* %% \RM@OnClassExecuteOptions{nuthesis}{...} %% %% Example default options for book class %% % \RM@OnClassExecuteOptions{book} % {ukdate,R+R-dw520printer,a4paper,headers,footers} %% %% Example default options for slides class %% % \RM@OnClassExecuteOptions{slides} % {centre,ukdate,R+R-dw520printer,a4paper} %% %% %% Example default options for foils class %% % \RM@OnClassExecuteOptions{foils} % {centre,ukdate,R+R-dw520printer,a4paper} %% %% Default options for ljmeepex class; ljmueepexam as was and damn %% Bill Gates. All these options are executed here so they can all %% be over-ridden by options passed by the document. Had they been %% passed from the class file by \PassOptionsToPackage, options from %% the document that are declared in rmpage after these options would %% over-ride these, and those declared before would not. Do it this %% way for consistency. %% % \RM@OnClassExecuteOptions{ljmeepex} % {centre,yorkshire,a4paper,noheaders,footers,wide,t@uchnarrower,longish} %% %% %% END DEFAULT OPTION SETTING FOR PARTICULAR CLASSES %% ================================================= %% %% %% HOOKS %% ===== %% %% The commands defined below: \RM@BeforeProcessOptions, %% \RM@DefineNewClasses, \RM@AfterProcessOptions, %% \RM@PrinterPaperSettings, \RM@BeforeTextheightSetting, and %% \RM@AfterWidthSetting are hooks: they are commands which %% you can define yourself, which are executed later somewhere in rmpage. %% You hang code from them, which is used later; hence hook. LaTeX2e has %% hooks like \AtBeginDocument{}, which saves its argument every time %% it's executed, so all the code ever passed to it is executed at the %% begin document command. The hooks below are just ordinary LaTeX %% commands which you define in the usual way. If you re-define them, %% the original contents are lost forever. So add stuff to the %% definitions here, don't re-define them later unless you have a good %% reason to do so. By the way, these hooks don't have to be defined: %% rmpage can work without them quite happily. %% %% %% Use this one for playing about if you have to. \newcommand{\RM@BeforeProcessOptions}{}% end\RM@BeforeProcessOptions %% %% %% Use this one for setting up things for particular classes; classes %% that are based on other classes should appear in this list %% \emph{after} the classes they are based on. That is, the class %% bithesis (which is based on report), comes after report. This is %% easily arranged, because all the standard classes have their class %% type number defined before the \RM@DefineNewClasses hook is executed. %% You can define your own class types; the current list of class type %% numbers is: %% %% 0=unknown, 1=article, 2=report, 3=letter, 4=book, 5=slides, %% 10=ltxdoc, 11=ltxguide, %% 20=rmcv, 21=rmletter, 22=bithesis, 23=ljmueepexam %% 50=foils %% %% 0 - 19 standard LaTeX classes %% 20 - 49 my classes %% 50 - 99 other classes supported by standard rmpage %% 100 - maxnum local classes %% %% If you're going to define a new class type, use class type numbers %% above 100. That way you won't find a new version of rmpage usurping %% class type numbers you'd defined for your own use. And make sure %% that classes that build on other classes have higher a \RM@classtype %% than the classes they build upon. I'll probably do something more %% sophisticated one day, but this'll do for now. %% %% The \RM@LocalClassReport hook is executed by the \RM@typeclasstype %% command, which is executed by the \RM@OnClassType command if you've %% asked for garrulous reporting. It's a debugging aid to help spot %% anomalous class type number setting. Why am I doing this? %% If you do add a new class, re-define the \RM@LocalClassReport command %% here to report it. For example, if you've added the eddie class, %% given the number 666, and the orwell class, given the number 101, say: %% %% \renewcommand{\RM@LocalClassReport}{ %% \RM@OnClassType{101}{\typeout{orwell class detected}}{} %% \RM@OnClassType{666}{\typeout{eddie class detected}}{} %% } %% \renewcommand{\RM@LocalClassReport}{\typeout{Undefined class detected}} %% %% %% Note that the \RM@DefineNewClasses hook is only executed if %% \RM@ClassType is less than 20. %% %% It's okay to test for a class here that will have had its class type %% number set by an option. Not fast, but okay. Note that the %% \RM@SetClassType command will only set \RM@ClassType to a value larger %% than the current one; this is so that subsequent detection (for %% example) of the report class on which you have built the nuthesis %% class cannot set \RM@classtype to 2. %% %% The new classes below are some that I've defined; I've left them %% in so you don't pinch the numbers and to give a real-life example. %% Most of these classes are a bit rough and not generally useful, %% so I'm keeping them to myself; although if you want a %% Bolton Institute thesis class file, I'll send you mine if you ask me %% for it. %% \newcommand{\RM@DefineNewClasses}{ \RM@SetClassType{rmcv} {20} \RM@SetClassType{rmletter} {21} \RM@SetClassType{bithesis} {22} \RM@SetClassType{ljmueepexam}{23} \RM@SetClassType{ljmeepex} {23} }%% end\RM@DefineNewClasses %% %% %% AfterProcessOptions is useful for setting up things for particular %% classes using the \RM@OnClassType command %% %% I've left in the code I wrote for my class files as examples; the %% code for ltxdoc is required if you insist on using rmpage with it. %% \newcommand{\RM@AfterProcessOptions}{ % % \renewcommand{\RM@mintextheight}{730pt}% For testing only % % \renewcommand{\RM@maxtextheight}{9000pt} % % class type 10=ltxdoc % \RM@OnClassType{10}{ \RM@oclwarninfo{3} {ltxdoc and rmpage don't go well together} % \RM@ocl{2}{\typeout{Set \protect\normalmarginpar}}{} % % Try to make mpars appear in alternating margins % \ifRM@twoside\@mparswitchtrue\fi % % Try to make mpars appear in default margin % \normalmarginpar % Ensure \textwidth is at least the required width \def\RM@mintextwidth{355pt} }{} % % class type 20=rmcv % \RM@OnClassType{20}{ \RM@oclwarninfo{3} {I don't do much for rmcv yet, and if you specified\MessageBreak some options that don't get used, I won't complain} }{} % % class type 22=bithesis % \RM@OnClassType{22}{ % Set minimum margins as specified in the regulations. % Everything else is done by the class file. These commands are % defined to be 0pt at the start of rmpage, so they can't be set in % the class file. \RM@DefLengthAtLeast{\RM@minoutsidemargin}{15mm} \RM@DefLengthAtLeast{\RM@mininsidemargin} {40mm} \RM@DefLengthAtLeast{\RM@mintopmargin} {15mm} \RM@DefLengthAtLeast{\RM@minbottommargin} {15mm} }{} % % Add more here % }% end\RM@AfterProcessOptions %% %% %% The \RM@On...PaperSize commands take two compulsory arguments, and %% one optional arguments. The optional argument is the long paper %% size code. The default value is 0, meaning `not long'. %% -1 = any long size %% 0 = not long only (or 1-long) %% 1 = 7/8 2 = 3/4 3 = 2/3 4 = 5/8 5 = 1/2 %% 6 = 3/8 7 = 1/3 8 = 1/4 9 = 1/8 %% %% The first compulsory argument is the paper size code; you can look %% them up elsewhere. %% %% If the paper size specified in the arguments to a \RM@...papersize %% command is the selected paper size, the third argument is executed. %% %% %% Add setting for local printer/paper combinations here; new printers %% should be declared using \DeclareOption above. Have a look in %% rmpage.sty, at the code above the point where this hook is %% executed, to get a better idea of what's going on. \newcommand*{\RM@PrinterPaperSettings}{ %% %% Note that you can print out long A3 sizes (1/2 and under) on A4 %% paper, with the same minimum clearances applying to the long A3 size %% as apply to A4. So in the common case of an A4 printer, all you %% need to do is make the A3 printing limits the same as A4 printing %% limits, and Bob's yer auntie's live-in lover. What the two %% commands below do is assume that all printers are A4 printers, and %% sets the clearances accordingly. If you use a non-A4 printer, you %% might need to add code to over-ride this assumption for that %% printer, after these two commands. %% \RM@OnPortraitPaperSize[-1]{13}% size 13 = A3 { \let\RM@minrightclearance\RM@ptrrportclear \let\RM@minleftclearance \RM@ptrlportclear \let\RM@minfootclearance \RM@ptrbportclear \let\RM@minheadclearance \RM@ptrtportclear } \RM@OnLandscapePaperSize[-1]{13}% size 13 = A3 { \let\RM@minrightclearance\RM@ptrrlandclear \let\RM@minleftclearance \RM@ptrllandclear \let\RM@minfootclearance \RM@ptrblandclear \let\RM@minheadclearance \RM@ptrtlandclear } %% %% The code below sets up rmpage to do things the way I like if %% you've selected an HP 500 series inkjet (like my DW520). %% I print out A5 pages by using dvidvi to put two of them on an A4 %% page, so A5 portrait clearances need to be A4 landscape clearances %% and vice-versa. Envelopes suffer a very large non-printing margin %% at the bottom, so this is dealt with. Note that I have to set %% both the ptrclear commands *and* the minclearance commands in this %% case, because the ptrclear commands are assumed to be set by now, %% and I have to change them. %% %% Note that I have asked rmpage to jack up any of these paper sizes that %% need it when I have specified an HP 500 series inkjet; this means that %% you can have an unexpectedly large gap at the bottom of a page without %% being warned about it, if the page layout you asked for would %% otherwise have tried to print in the asymmetrically large non-printing %% margin at the bottom of the paper. I don't mind this; if you do, %% remove the \RM@jackuptrue statements. %% \RM@OnPrinterType{11}% HP DeskWriter 500 series { \RM@OnPortraitPaperSize{14}% size 14 = A4 {\RM@jackuptrue} \RM@OnPortraitPaperSize{15}% size 15 = A5 {\let\RM@minrightclearance\RM@ptrrlandclear \let\RM@minleftclearance\RM@ptrrlandclear \let\RM@minfootclearance\RM@ptrblandclear \let\RM@minheadclearance\RM@ptrtlandclear} \RM@OnLandscapePaperSize{15}% size 15 = A5 {\let\RM@minrightclearance\RM@ptrrportclear \let\RM@minleftclearance\RM@ptrlportclear \let\RM@minfootclearance\RM@ptrbportclear \let\RM@minheadclearance\RM@ptrtportclear} \RM@OnPortraitPaperSize[-1]{13}% size 13 = A3 {\RM@jackuptrue} \RM@OnLandscapePaperSize[-1]{13}% size 13 = A3 {\RM@jackupfalse} \RM@OnPaperSize{58}% size 58 = DL envelopes {\def\RM@ptrrlandclear{19mm} \def\RM@ptrrlandclear{7mm} \def\RM@ptrblandclear{4mm}% spec 3mm \def\RM@ptrtlandclear{4mm}% spec 3mm \def\RM@ptrrportclear{4mm}% spec 3mm \def\RM@ptrlportclear{4mm}% spec 3mm \def\RM@ptrbportclear{19mm} \def\RM@ptrtportclear{7mm}} \RM@OnPortraitPaperSize{58}% size 58 = DL envelopes {\let\RM@minrightclearance\RM@ptrrportclear \let\RM@minleftclearance\RM@ptrlportclear \let\RM@minfootclearance\RM@ptrbportclear \let\RM@minheadclearance\RM@ptrtportclear} \RM@OnLandscapePaperSize{58}% size 58 = DL envelopes {\let\RM@minrightclearance\RM@ptrrlandclear \let\RM@minleftclearance\RM@ptrllandclear \let\RM@minfootclearance\RM@ptrblandclear \let\RM@minheadclearance\RM@ptrtlandclear} }% end HP DeskWriter 500 series }% end\RM@PrinterPaperSettings %% %% %% Add code to select textheight setting method, and define new %% textheight setting code here \newcommand*{\RM@BeforeTextheightSetting}{}% end\RM@BeforeTextheightSetting %% %% You might add code to define \RM@widthsetter to load your own %% horizontal parameter setting code for a particular class here %% e.g., \RM@OnClassType{69}{\def\RM@widthsetter{rsw-ll.pko}}{} \newcommand*{\RM@BeforeWidthSetting}{}% end\RM@BeforeWidthSetting %% %% If you are using a class that defines \RM@textwidthgroup to 4, put %% code in this hook that defines: \RM@ptperchar to the width of one %% average character of your main body fount; \@tempdima to the %% paper-based initial \textwidth guess; \@tempdimb to the %% character-based initial \textwidth guess; and code to modify %% \columnsep if you want to. %% This hook is executed after the parameters above have been set. \newcommand*{\RM@AfterInitialTextwidthSetting}{}% end\RM@AfterInitialTextwidthSetting %% %% Do what preventest thou from wilting\ldots For symmetry's sake is %% this here. %% \newcommand*{\RM@AfterWidthSetting}{}% end\RM@AfterWidthSetting %% %% \endinput