mirror of
https://github.com/python/cpython.git
synced 2024-12-05 07:43:50 +08:00
0e823d2abd
permission to distribute this without modifications. This is the latest version, directly from Ulf. CTAN:macros/latex/contrib/supported/fncychap/
431 lines
10 KiB
TeX
431 lines
10 KiB
TeX
%%% Copyright Ulf A. Lindgren
|
|
%%% Department of Applied Electronics
|
|
%%% Chalmers University of Technology
|
|
%%% S-412 96 Gothenburg, Sweden
|
|
%%% E-mail lindgren@ae.chalmers.se
|
|
%%%
|
|
%%% Note Permission is granted to modify this file under
|
|
%%% the condition that it is saved using another
|
|
%%% file and package name.
|
|
%%%
|
|
%%% Revision 1.1
|
|
%%%
|
|
%%% Jan. 8th Modified package name base date option
|
|
%%% Jan. 22th Modified FmN and FmTi for error in book.cls
|
|
%%% \MakeUppercase{#}->{\MakeUppercase#}
|
|
%%% Apr. 6th Modified Lenny option to prevent undesired
|
|
%%% skip of line.
|
|
%%% Nov. 8th Fixed \@chapapp for AMS
|
|
%%% Feb. 11th Fixed appendix problem related to Bjarne
|
|
%%% Last modified Feb. 11th 1998
|
|
|
|
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
|
\ProvidesPackage{fncychap}
|
|
[1997/04/06 v1.11
|
|
LaTeX package (Revised chapters)]
|
|
|
|
%%%% DEFINITION OF Chapapp variables
|
|
\newcommand{\CNV}{\huge\bfseries}
|
|
\newcommand{\ChNameVar}[1]{\renewcommand{\CNV}{#1}}
|
|
|
|
|
|
%%%% DEFINITION OF TheChapter variables
|
|
\newcommand{\CNoV}{\huge\bfseries}
|
|
\newcommand{\ChNumVar}[1]{\renewcommand{\CNoV}{#1}}
|
|
|
|
\newif\ifUCN
|
|
\UCNfalse
|
|
\newif\ifLCN
|
|
\LCNfalse
|
|
\def\ChNameLowerCase{\LCNtrue\UCNfalse}
|
|
\def\ChNameUpperCase{\UCNtrue\LCNfalse}
|
|
\def\ChNameAsIs{\UCNfalse\LCNfalse}
|
|
|
|
%%%%% Fix for AMSBook 971008
|
|
|
|
\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}
|
|
|
|
|
|
%%%%% Fix for Bjarne and appendix 980211
|
|
|
|
\newif\ifinapp
|
|
\inappfalse
|
|
\renewcommand\appendix{\par
|
|
\setcounter{chapter}{0}%
|
|
\setcounter{section}{0}%
|
|
\inapptrue%
|
|
\renewcommand\@chapapp{\appendixname}%
|
|
\renewcommand\thechapter{\@Alph\c@chapter}}
|
|
|
|
%%%%%
|
|
|
|
\newcommand{\FmN}[1]{%
|
|
\ifUCN
|
|
{\MakeUppercase#1}\LCNfalse
|
|
\else
|
|
\ifLCN
|
|
{\MakeLowercase#1}\UCNfalse
|
|
\else #1
|
|
\fi
|
|
\fi}
|
|
|
|
|
|
%%%% DEFINITION OF Title variables
|
|
\newcommand{\CTV}{\Huge\bfseries}
|
|
\newcommand{\ChTitleVar}[1]{\renewcommand{\CTV}{#1}}
|
|
|
|
%%%% DEFINITION OF the basic rule width
|
|
\newlength{\RW}
|
|
\setlength{\RW}{1pt}
|
|
\newcommand{\ChRuleWidth}[1]{\setlength{\RW}{#1}}
|
|
|
|
\newif\ifUCT
|
|
\UCTfalse
|
|
\newif\ifLCT
|
|
\LCTfalse
|
|
\def\ChTitleLowerCase{\LCTtrue\UCTfalse}
|
|
\def\ChTitleUpperCase{\UCTtrue\LCTfalse}
|
|
\def\ChTitleAsIs{\UCTfalse\LCTfalse}
|
|
\newcommand{\FmTi}[1]{%
|
|
\ifUCT
|
|
|
|
{\MakeUppercase#1}\LCTfalse
|
|
\else
|
|
\ifLCT
|
|
{\MakeLowercase#1}\UCTfalse
|
|
\else #1
|
|
\fi
|
|
\fi}
|
|
|
|
|
|
|
|
\newlength{\mylen}
|
|
\newlength{\myhi}
|
|
\newlength{\px}
|
|
\newlength{\py}
|
|
\newlength{\pyy}
|
|
\newlength{\pxx}
|
|
|
|
|
|
\def\mghrulefill#1{\leavevmode\leaders\hrule\@height #1\hfill\kern\z@}
|
|
|
|
\newcommand{\DOCH}{%
|
|
\CNV\FmN{\@chapapp}\space \CNoV\thechapter
|
|
\par\nobreak
|
|
\vskip 20\p@
|
|
}
|
|
\newcommand{\DOTI}[1]{%
|
|
\CTV\FmTi{#1}\par\nobreak
|
|
\vskip 40\p@
|
|
}
|
|
\newcommand{\DOTIS}[1]{%
|
|
\CTV\FmTi{#1}\par\nobreak
|
|
\vskip 40\p@
|
|
}
|
|
|
|
%%%%%% SONNY DEF
|
|
|
|
\DeclareOption{Sonny}{%
|
|
\ChNameVar{\Large\sf}
|
|
\ChNumVar{\Huge}
|
|
\ChTitleVar{\Large\sf}
|
|
\ChRuleWidth{0.5pt}
|
|
\ChNameUpperCase
|
|
\renewcommand{\DOCH}{%
|
|
\raggedleft
|
|
\CNV\FmN{\@chapapp}\space \CNoV\thechapter
|
|
\par\nobreak
|
|
\vskip 40\p@}
|
|
\renewcommand{\DOTI}[1]{%
|
|
\CTV\raggedleft\mghrulefill{\RW}\par\nobreak
|
|
\vskip 5\p@
|
|
\CTV\FmTi{#1}\par\nobreak
|
|
\mghrulefill{\RW}\par\nobreak
|
|
\vskip 40\p@}
|
|
\renewcommand{\DOTIS}[1]{%
|
|
\CTV\raggedleft\mghrulefill{\RW}\par\nobreak
|
|
\vskip 5\p@
|
|
\CTV\FmTi{#1}\par\nobreak
|
|
\mghrulefill{\RW}\par\nobreak
|
|
\vskip 40\p@}
|
|
}
|
|
|
|
%%%%%% LENNY DEF
|
|
|
|
\DeclareOption{Lenny}{%
|
|
|
|
\ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont}
|
|
\ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont}
|
|
\ChTitleVar{\Huge\bfseries\rm}
|
|
\ChRuleWidth{1pt}
|
|
\renewcommand{\DOCH}{%
|
|
\settowidth{\px}{\CNV\FmN{\@chapapp}}
|
|
\addtolength{\px}{2pt}
|
|
\settoheight{\py}{\CNV\FmN{\@chapapp}}
|
|
\addtolength{\py}{1pt}
|
|
|
|
\settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter}
|
|
\addtolength{\mylen}{1pt}
|
|
\settowidth{\pxx}{\CNoV\thechapter}
|
|
\addtolength{\pxx}{-1pt}
|
|
|
|
\settoheight{\pyy}{\CNoV\thechapter}
|
|
\addtolength{\pyy}{-2pt}
|
|
\setlength{\myhi}{\pyy}
|
|
\addtolength{\myhi}{-1\py}
|
|
\par
|
|
\parbox[b]{\textwidth}{%
|
|
\rule[\py]{\RW}{\myhi}%
|
|
\hskip -\RW%
|
|
\rule[\pyy]{\px}{\RW}%
|
|
\hskip -\px%
|
|
\raggedright%
|
|
\CNV\FmN{\@chapapp}\space\CNoV\thechapter%
|
|
\hskip1pt%
|
|
\mghrulefill{\RW}%
|
|
\rule{\RW}{\pyy}\par\nobreak%
|
|
\vskip -\baselineskip%
|
|
\vskip -\pyy%
|
|
\hskip \mylen%
|
|
\mghrulefill{\RW}\par\nobreak%
|
|
\vskip \pyy}%
|
|
\vskip 20\p@}
|
|
|
|
|
|
\renewcommand{\DOTI}[1]{%
|
|
\raggedright
|
|
\CTV\FmTi{#1}\par\nobreak
|
|
\vskip 40\p@}
|
|
|
|
\renewcommand{\DOTIS}[1]{%
|
|
\raggedright
|
|
\CTV\FmTi{#1}\par\nobreak
|
|
\vskip 40\p@}
|
|
}
|
|
|
|
|
|
%%%%%%% GLENN DEF
|
|
|
|
|
|
\DeclareOption{Glenn}{%
|
|
\ChNameVar{\bfseries\Large\sf}
|
|
\ChNumVar{\Huge}
|
|
\ChTitleVar{\bfseries\Large\rm}
|
|
\ChRuleWidth{1pt}
|
|
\ChNameUpperCase
|
|
\ChTitleUpperCase
|
|
\renewcommand{\DOCH}{%
|
|
\settoheight{\myhi}{\CTV\FmTi{Test}}
|
|
\setlength{\py}{\baselineskip}
|
|
\addtolength{\py}{\RW}
|
|
\addtolength{\py}{\myhi}
|
|
\setlength{\pyy}{\py}
|
|
\addtolength{\pyy}{-1\RW}
|
|
|
|
\raggedright
|
|
\CNV\FmN{\@chapapp}\space\CNoV\thechapter
|
|
\hskip 3pt\mghrulefill{\RW}\rule[-1\pyy]{2\RW}{\py}\par\nobreak}
|
|
|
|
\renewcommand{\DOTI}[1]{%
|
|
\addtolength{\pyy}{-4pt}
|
|
\settoheight{\myhi}{\CTV\FmTi{#1}}
|
|
\addtolength{\myhi}{\py}
|
|
\addtolength{\myhi}{-1\RW}
|
|
\vskip -1\pyy
|
|
\rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
|
|
\raggedleft\CTV\FmTi{#1}\par\nobreak
|
|
\vskip 80\p@}
|
|
|
|
\renewcommand{\DOTIS}[1]{%
|
|
\setlength{\py}{10pt}
|
|
\setlength{\pyy}{\py}
|
|
\addtolength{\pyy}{\RW}
|
|
\setlength{\myhi}{\baselineskip}
|
|
\addtolength{\myhi}{\pyy}
|
|
\mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak
|
|
% \addtolength{}{}
|
|
\vskip -1\baselineskip
|
|
\rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt
|
|
\raggedleft\CTV\FmTi{#1}\par\nobreak
|
|
\vskip 60\p@}
|
|
}
|
|
|
|
%%%%%%% CONNY DEF
|
|
|
|
\DeclareOption{Conny}{%
|
|
\ChNameUpperCase
|
|
\ChTitleUpperCase
|
|
\ChNameVar{\centering\Huge\rm\bfseries}
|
|
\ChNumVar{\Huge}
|
|
\ChTitleVar{\centering\Huge\rm}
|
|
\ChRuleWidth{2pt}
|
|
|
|
\renewcommand{\DOCH}{%
|
|
\mghrulefill{3\RW}\par\nobreak
|
|
\vskip -0.5\baselineskip
|
|
\mghrulefill{\RW}\par\nobreak
|
|
\CNV\FmN{\@chapapp}\space \CNoV\thechapter
|
|
\par\nobreak
|
|
\vskip -0.5\baselineskip
|
|
}
|
|
\renewcommand{\DOTI}[1]{%
|
|
\mghrulefill{\RW}\par\nobreak
|
|
\CTV\FmTi{#1}\par\nobreak
|
|
\vskip 60\p@
|
|
}
|
|
\renewcommand{\DOTIS}[1]{%
|
|
\mghrulefill{\RW}\par\nobreak
|
|
\CTV\FmTi{#1}\par\nobreak
|
|
\vskip 60\p@
|
|
}
|
|
}
|
|
|
|
%%%%%%% REJNE DEF
|
|
|
|
\DeclareOption{Rejne}{%
|
|
|
|
\ChNameUpperCase
|
|
\ChTitleUpperCase
|
|
\ChNameVar{\centering\Large\rm}
|
|
\ChNumVar{\Huge}
|
|
\ChTitleVar{\centering\Huge\rm}
|
|
\ChRuleWidth{1pt}
|
|
\renewcommand{\DOCH}{%
|
|
\settoheight{\py}{\CNoV\thechapter}
|
|
\addtolength{\py}{-1pt}
|
|
\CNV\FmN{\@chapapp}\par\nobreak
|
|
\vskip 20\p@
|
|
\setlength{\myhi}{2\baselineskip}
|
|
\setlength{\px}{\myhi}
|
|
\addtolength{\px}{-1\RW}
|
|
\rule[-1\px]{\RW}{\myhi}\mghrulefill{\RW}\hskip
|
|
10pt\raisebox{-0.5\py}{\CNoV\thechapter}\hskip
|
|
10pt\mghrulefill{\RW}\rule[-1\px]{\RW}{\myhi}\par\nobreak
|
|
\vskip -1\p@
|
|
}
|
|
\renewcommand{\DOTI}[1]{%
|
|
\setlength{\mylen}{\textwidth}
|
|
\addtolength{\mylen}{-2\RW}
|
|
{\vrule width\RW}\parbox{\mylen}{\CTV\FmTi{#1}}{\vrule
|
|
width\RW}\par\nobreak
|
|
\vskip
|
|
-1pt\rule{\RW}{2\baselineskip}\mghrulefill{\RW}\rule{\RW}{2\baselineskip}
|
|
\vskip 60\p@
|
|
}
|
|
\renewcommand{\DOTIS}[1]{%
|
|
\setlength{\py}{\fboxrule}
|
|
\setlength{\fboxrule}{\RW}
|
|
\setlength{\mylen}{\textwidth}
|
|
\addtolength{\mylen}{-2\RW}
|
|
\fbox{\parbox{\mylen}{\vskip
|
|
2\baselineskip\CTV\FmTi{#1}\par\nobreak\vskip \baselineskip}}
|
|
\setlength{\fboxrule}{\py}
|
|
\vskip 60\p@
|
|
}
|
|
}
|
|
|
|
|
|
%%%%%%% BJARNE DEF
|
|
|
|
\DeclareOption{Bjarne}{%
|
|
\ChNameUpperCase
|
|
\ChTitleUpperCase
|
|
\ChNameVar{\raggedleft\normalsize\rm}
|
|
\ChNumVar{\raggedleft \bfseries\Large}
|
|
\ChTitleVar{\raggedleft \Large\rm}
|
|
\ChRuleWidth{1pt}
|
|
|
|
|
|
%% Note thechapter -> c@chapter fix appendix bug
|
|
|
|
\newcounter{AlphaCnt}
|
|
\newcounter{AlphaDecCnt}
|
|
\newcommand{\AlphaNo}{%
|
|
\ifcase\number\theAlphaCnt
|
|
\ifnum\c@chapter=0
|
|
ZERO\else{}\fi
|
|
\or ONE\or TWO\or THREE\or FOUR\or FIVE
|
|
\or SIX\or SEVEN\or EIGHT\or NINE\or TEN
|
|
\or ELEVEN\or TWELV\or THIRTEEN\or FOURTEEN\or FIFTEEN
|
|
\or SIXTEEN\or SEVENTEEN\or EIGHTEEN\or NINETEEN\fi
|
|
}
|
|
|
|
\newcommand{\AlphaDecNo}{%
|
|
\setcounter{AlphaDecCnt}{0}
|
|
\@whilenum\number\theAlphaCnt>0\do
|
|
{\addtocounter{AlphaCnt}{-10}
|
|
\addtocounter{AlphaDecCnt}{1}}
|
|
\ifnum\number\theAlphaCnt=0
|
|
\else
|
|
\addtocounter{AlphaDecCnt}{-1}
|
|
\addtocounter{AlphaCnt}{10}
|
|
\fi
|
|
|
|
|
|
\ifcase\number\theAlphaDecCnt\or TEN\or TWENTY\or THIRTY\or
|
|
FORTY\or FIFTY\or SIXTY\or SEVENTY\or EIGHTY\or NINETY\fi
|
|
}
|
|
\newcommand{\TheAlphaChapter}{%
|
|
|
|
\ifinapp
|
|
\thechapter
|
|
\else
|
|
\setcounter{AlphaCnt}{\c@chapter}
|
|
\ifnum\c@chapter<20
|
|
\AlphaNo
|
|
\else
|
|
\AlphaDecNo\AlphaNo
|
|
\fi
|
|
\fi
|
|
}
|
|
\renewcommand{\DOCH}{%
|
|
\mghrulefill{\RW}\par\nobreak
|
|
\CNV\FmN{\@chapapp}\par\nobreak
|
|
\CNoV\TheAlphaChapter\par\nobreak
|
|
\vskip -1\baselineskip\vskip 5pt\mghrulefill{\RW}\par\nobreak
|
|
\vskip 20\p@
|
|
}
|
|
\renewcommand{\DOTI}[1]{%
|
|
\CTV\FmTi{#1}\par\nobreak
|
|
\vskip 40\p@
|
|
}
|
|
\renewcommand{\DOTIS}[1]{%
|
|
\CTV\FmTi{#1}\par\nobreak
|
|
\vskip 40\p@
|
|
}
|
|
}
|
|
|
|
\DeclareOption*{%
|
|
\PackageWarning{fancychapter}{unknown style option}
|
|
}
|
|
|
|
\ProcessOptions* \relax
|
|
|
|
\def\@makechapterhead#1{%
|
|
\vspace*{50\p@}%
|
|
{\parindent \z@ \raggedright \normalfont
|
|
\ifnum \c@secnumdepth >\m@ne
|
|
\DOCH
|
|
\fi
|
|
\interlinepenalty\@M
|
|
\DOTI{#1}
|
|
}}
|
|
\def\@schapter#1{\if@twocolumn
|
|
\@topnewpage[\@makeschapterhead{#1}]%
|
|
\else
|
|
\@makeschapterhead{#1}%
|
|
\@afterheading
|
|
\fi}
|
|
\def\@makeschapterhead#1{%
|
|
\vspace*{50\p@}%
|
|
{\parindent \z@ \raggedright
|
|
\normalfont
|
|
\interlinepenalty\@M
|
|
\DOTIS{#1}
|
|
\vskip 40\p@
|
|
}}
|
|
|
|
\endinput
|
|
|
|
|