%% %% \iffalse ^^A we skip the debug setting \IfFileExists{\string~/bin/gen_and_xela}{\errorcontextlines=1000 }{} %% \fi %% ^^A $Id: TheUltimateMaster.gmd,v 0.352 2011/10/12 15:19:42 natror Exp natror $ %% This is file “gmmw.sty” generated with the DocStrip utility. %% %% %% The original source files were: %% %% gmutils/gmutils.gmd (with options: `mw') %% %% %% Copyright © %% by Grzegorz ‘Natror’ Murzynowski %% natror (at) gmail (dot) com %% %% This program is subject to the LaTeX Project Public License. %% See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html %% for the details of that license. %% %% LPPL status: "author-maintained". %% %% %% %% For documentation please refer to the file(s) %% gmutils.{gmd,pdf}. %% %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{gmmw} [2011/10/12 v0.996 improvements and workarounds to the MWCLS classes (GM)] %% %% %% ^^A\typeout{\unexpanded{#4}}%% \RequirePackage{gmcommand} \AtBeginDocument{% because we don't know when exactly \pk{hyperref} is % loaded and maybe after this package. \@ifpackageloaded{hyperref}{\newcounter{NoNumSecs}% \setcounter{NoNumSecs}{617}% to make |\ref|ing to an unnumbered section % visible (and funny?). \def\gmu@hyperrefstepcounter{\refstepcounter{NoNumSecs}}% \pdef\gmu@targetheading#1{% \hypertarget{#1}{#1}}}% end of then {\def\gmu@hyperrefstepcounter{}% \def\gmu@targetheading#1{#1}}% end of else }% of |\AtBeginDocument| \def\gmu@dontnumbersectionsoutofmainmatter{% \if@mainmatter\else \HeadingNumberedfalse \fi} \def\gmu@clearpagesduetoopenright{% \if@openright\cleardoublepage\else \clearpage\fi} \long\def\@ifnotmw#1#2{\gmu@ifundefined{mw@sectionxx}{#1}{#2}} \@ifnotmw{}{% \def\mw@sectionxx#1#2[#3]#4{% \edef\mw@HeadingLevel{\csname #1@level\endcsname \space}% space delimits level number! \ifHeadingNumbered \ifnum \mw@HeadingLevel>\c@secnumdepth \HeadingNumberedfalse \fi % \nostanza line below is in |\gmu@ifundefined| to make it work in classes % other than \pk{mwbk}\nostanza \gmu@ifundefined{if@mainmatter}{}{\gmu@dontnumbersectionsoutofmainmatter} \fi %% \ifHeadingNumbered %% \refstepcounter{#1}% %% \protected@edef\HeadingNumber{\csname the#1\endcsname\relax}% %% \else %% \let\HeadingNumber\@empty %% \fi \def\HeadingRHeadText{#2}% \def\HeadingTOCText{#3}% \def\HeadingText{#4}% \def\mw@HeadingType{#1}% \if\mw@HeadingBreakBefore \if@specialpage\else\thispagestyle{closing}\fi \gmu@ifundefined{if@openright}{}{\gmu@clearpagesduetoopenright}% \if\mw@HeadingBreakAfter \thispagestyle{blank}\else \thispagestyle{opening}\fi \global\@topnum\z@ \fi% of |\if\mw@HeadingBreakBefore| %% \ifHeadingNumbered \refstepcounter{#1}% \protected@edef\HeadingNumber{\csname the#1\endcsname\relax}% \else \let\HeadingNumber\@empty \gmu@hyperrefstepcounter % we step an auxiliary counter to make a % hyperref's label/target. \fi% of |\ifHeadingNumbered| %% \if\mw@HeadingRunIn \mw@runinheading \else \if\mw@HeadingWholeWidth \if@twocolumn \if\mw@HeadingBreakAfter \onecolumn \mw@normalheading \pagebreak\relax \if@twoside \null \thispagestyle{blank}% \newpage \fi% of |\if@twoside| \twocolumn \else \@topnewpage[\mw@normalheading]% \fi% of |\if\mw@HeadingBreakAfter| \else \mw@normalheading \if\mw@HeadingBreakAfter\pagebreak\relax\fi \fi% of |\if@twocolumn| \else \mw@normalheading \if\mw@HeadingBreakAfter\pagebreak\relax\fi \fi% of |\if\mw@HeadingWholeWidth| \fi% of |\if\mw@HeadingRunIn| } \relaxen\SetSectionFormatting \newcommand*\SetSectionFormatting[5][\empty]{% \ifx\empty#1\relax\else% empty (not |\empty|!) |#1| also launches |\else|.\HideDef \def\mw@HeadingRunIn{10}\def\mw@HeadingBreakBefore{10}% \def\mw@HeadingBreakAfter{10}\def\mw@HeadingWholeWidth{10}% \gmu@ifempty{#1}{}{\mw@processflags#1,\relax}% If |#1| is omitted, % the flags are left unchanged. If |#1| is given, even as [], the % flags are first cleared and then processed again. \fi \gmu@ifundefined{#2}{\@namedef{#2}{\mw@section{#2}}}{}% \mw@secdef{#2}{@preskip} {#3}{2 oblig.}% \mw@secdef{#2}{@head} {#4}{3 oblig.}% \mw@secdef{#2}{@postskip}{#5}{4 oblig.}% \ifx\empty#1\relax \mw@secundef{#2@flags}{1 (optional)}% \else\mw@setflags{#2}% \ResumeDef \fi} \def\mw@secdef#1#2#3#4{% ^^B \gmu@ifempty{#3} {\mw@secundef{#1#2}{#4}} {\@namedef{#1#2}{#3}}} \def\mw@secundef#1#2{% \gmu@ifundefined{#1}{% \ClassError{mwcls/gm}{% command \bslash#1 undefined \MessageBreak after \bslash SetSectionFormatting!!!\MessageBreak}{% Provide the #2 argument of \bslash SetSectionFormatting.}}{}} \def\addtoheading#1#2{% \n@melet{gmu@addtoheading@resa}{#1@head}% \edef\gmu@addtoheading@resa{\unexpanded{#2}\@xa\unexpanded{\gmu@addtoheading@resa}}% \n@melet{#1@head}{gmu@addtoheading@resa}% } }% of |\@ifnotmw|'s else. \@ifnotmw{}{% We proceed only in \acro{MWCLS}. \def\@afterheading{% \@nobreaktrue \xdef\gmu@prevsec{\mw@HeadingType}% added now \everypar{% \grelaxen\gmu@prevsec% added now. All the rest is original \LaTeX. \if@nobreak \@nobreakfalse \clubpenalty \@M \if@afterindent \else {\setbox\z@\lastbox}% \fi \else \clubpenalty \@clubpenalty \everypar{}% \fi}} \def\gmu@checkaftersec{% \gmu@ifundefined{gmu@prevsec}{}{% \ifgmu@postsec% an additional switch that is true by default but % may be turned into an \cs{ifdim} in special % cases, see line \ref{gmu@postsec}. {\@xa\mw@getflags\@xa{\gmu@prevsec}% \glet\gmu@checkaftersec@resa\mw@HeadingBreakAfter}% \UnDef \if\mw@HeadingBreakBefore\def\gmu@checkaftersec@resa{11}\fi% if the % current heading inserts page break before itself, all the play % with vskips is irrelevant. \if\gmu@checkaftersec@resa\else \penalty10000\relax \skip\z@=\csname\gmu@prevsec @postskip\endcsname\relax \skip\tw@=\csname\mw@HeadingType @preskip\endcsname\relax \gmu@ifundefined{\mw@HeadingType @twoheadskip}{% \ifdim\skip\z@>\skip\tw@ \vskip-\skip\z@% we strip off the post-skip of previous % header if it's bigger than current pre-skip \else \vskip-\skip\tw@% we strip off the current pre-skip otherwise \fi}{% But if the two-header-skip is defined, we put % \emph{it} \penalty10000 \vskip-\skip\z@ \penalty10000 \vskip-\skip\tw@ \penalty10000 \vskip\csname\mw@HeadingType @twoheadskip\endcsname \relax}% \penalty10000 \hrule height\z@\relax% to hide the last (un)skip before subsequent % \incs{addvspace}s. \ilrr \penalty10000 \fi \fi }% of |\gmu@ifundefined{gmu@prevsec}| `else'. }% of |\def\gmu@checkaftersec|. \def\ParanoidPostsec{% \label{gmu@postsec} this version of % \inverb|\ifgmu@postsec| is intended for the special case of % sections may contain no normal text, as while \pk{gmdoc}ing. \def\ifgmu@postsec{% note this macro expands to an open \cs{if}. \skip\z@=\csname\gmu@prevsec @postskip\endcsname\relax \ifdim\lastskip=\skip\z@\relax% we play % with the vskips only if the last skip is the previous % heading's postskip (a~counter-example I~met while % \pk{gmdoc}ing). }} \let\ifgmu@postsec\iftrue \def\gmu@getaddvs#1\addvspace#2\gmu@getaddvs{% \toks\z@={#1}% \toks\tw@={#2}} \def\gmu@setheading#1{% \@xa\gmu@getaddvs#1\gmu@getaddvs \edef#1{% \the\toks\z@\@nx\gmu@checkaftersec \@nx\addvspace\the\toks\tw@}} \gmu@setheading\mw@normalheading \gmu@setheading\mw@runinheading \def\SetTwoheadSkip#1#2{\@namedef{#1@twoheadskip}{#2}} }% of |\@ifnotmw|'s else. \@ifnotmw{}{% We define this declaration only when in \pk{mwcls}. \DeclareCommand\WPheadings{T{\chapter}}{% \SetSectionFormatting[breakbefore,wholewidth] {part}{\z@\@plus1fill}{}{\z@\@plus3fill}% % \gmuIfValueF{#1}{% \gmu@ifundefined{chapter}{}{% \SetSectionFormatting[breakbefore,wholewidth] {chapter} {66\p@}% |{67\p@}|% for Adventor/Schola 0,95. {\FormatHangHeading{\LARGE}} {27\p@\@plus0,2\p@\@minus1\p@}% }% }% of unless |#1| % \SetTwoheadSkip{section}{27\p@\@plus0,5\p@}% \SetSectionFormatting{section} {24\p@\@plus0,5\p@\@minus5\p@}% ^^A {24\p@\@plus5\p@\@minus2\p@} {\FormatHangHeading {\Large}} {10\p@\@plus0,5\p@}% ed.\ Krajewska of ``Wiedza Powszechna'', as % we understand her, wants the skip between a~heading and text % to be rigid. % \SetTwoheadSkip{subsection}{11\p@\@plus0,5\p@\@minus1\p@}% \SetSectionFormatting{subsection} {19\p@\@plus0,4\p@\@minus6\p@} {\FormatHangHeading {\large}}% 12/14 pt {6\p@\@plus0,3\p@}% after-skip 6\,pt due to p.12, not to squeeze % the before-skip too much. % \SetTwoheadSkip{subsubsection}{10\p@\@plus1,75\p@\@minus1\p@}% \SetSectionFormatting{subsubsection} {10\p@\@plus0,2\p@\@minus1\p@} {\FormatHangHeading {\normalsize}} {3\p@\@plus0,1\p@}% those little skips should be smaller than % you calculate out of a~geometric progression, because the % interline skip enlarges them. % \SetSectionFormatting[runin]{paragraph} {7\p@\@plus0,15\p@\@minus1\p@} {\FormatRunInHeading{\normalsize}} {2\p@}% % \SetSectionFormatting[runin]{subparagraph} {4\p@\@plus1\p@\@minus0,5\p@} {\FormatRunInHeading{\normalsize}} {\z@}% }% of |\WPheadings| }% of |\@ifnotmw| \@ifnotmw{% we are not in \pk{mwcls} and want to % handle \pk{mwcls}-like sectionings i.e., those written with two % optionals. \def\gmu@secini{gm@la}% \Store@Macros{% \partmark \chaptermark \sectionmark \subsectionmark \subsubsectionmark \paragraphmark}% % \Define\gmu@secxx \def\gmu@secxx#1#2[#3]#4{% \ifx\gmu@secstar\@empty % \nostanza a~tiny little trick to allow % a~special version of the heading just to the running head. \@namedef{#1mark}##1{% we redefine \cs{\mark} to gobble its % argument and to launch the stored true marking command on the % appropriate argument. \storedcsname{#1mark}{#2}% \Restore@MacroSt{#1mark}% after we've done what we % wanted we restore original |\#1mark|.\ilrr }% \def\gmu@secstar{[#3]}% if |\gmu@secstar| % is empty, which means the sectioning command was written % starless, we pass the `true' sectioning command |#3| as the % optional argument. Otherwise the sectioning command was written % with star so the `true' s.c.\ takes no optional. \fi \@xa\@xa\csname\gmu@secini#1\endcsname \gmu@secstar{#4}}% }{% we are in \pk{mwcls} and want to reverse MW's optionals order % i.e., if there's just one optional, it should go both to toc and to % running head. \def\gmu@secini{gm@mw}% % \let\gmu@secmarkh\@gobble% in \pk{mwcls} there's no need to make % tricks for special version to running headings. % \Define\gmu@secxx \def\gmu@secxx#1#2[#3]#4{% \@xa\@xa\csname\gmu@secini#1\endcsname \gmu@secstar[#2][#3]{#4}}% } \def\gmu@sec#1{\@dblarg{\gmu@secx{#1}}} \def\gmu@secx#1[#2]{% \@ifnextchar[{\gmu@secxx{#1}{#2}}{\gmu@secxx{#1}{#2}[#2]}}% if \def\gmu@straightensec#1{% the parameter is for the command's name. \gmu@ifundefined{#1}{}{% we don't change the ontological status of the % command because someone may test it. \n@melet{\gmu@secini#1}{#1}% \@namedef{#1}{% \gmu@ifstar{\def\gmu@secstar{*}\gmu@sec{#1}}{% \def\gmu@secstar{}\gmu@sec{#1}}}}% }% \let\do\gmu@straightensec \do{part}\do{chapter}\do{section}\do{subsection}\do{subsubsection} \@ifnotmw{}{\do{paragraph}}% this `straightening' of \endinput %% %% End of file `gmmw.sty'.