diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:52:49 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:52:49 +0000 |
commit | f70e6117bc3a7a71ef3976c13350c9fc5174fecf (patch) | |
tree | 81e68fb9a64c3bbbf4dbd995efa9de0e0f6d8165 /Master | |
parent | 8c4fe0007db2b84409316bbaf2e7c85a59d98def (diff) |
cd
git-svn-id: svn://tug.org/texlive/trunk@744 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/tex/latex/cd/cd.cls | 492 |
1 files changed, 492 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/cd/cd.cls b/Master/texmf-dist/tex/latex/cd/cd.cls new file mode 100644 index 00000000000..fcbb68300fa --- /dev/null +++ b/Master/texmf-dist/tex/latex/cd/cd.cls @@ -0,0 +1,492 @@ +%% +%% This is file `cd.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% cd.dtx (with options: `class') +%% +%% Copyright (C) 1998-2002 by Sebastiano Vigna +%% +%% This file is free software; you can redistribute it and/or modify +%% it under the terms of the GNU General Public License as published by +%% the Free Software Foundation; either version 2 of the License, or +%% (at your option) any later version. +%% +%% This program is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%% GNU General Public License for more details. +%% +%% You should have received a copy of the GNU General Public License +%% along with this program; if not, write to the Free Software +%% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{cd}[2002/01/10 v1.0 CD Cover Class] +\newif\if@lignspine +\@lignspinefalse + +\DeclareOption{alignspine}{\@lignspinetrue} + +\def\@ligncover{b} +\def\@ligninside{b} +\def\@lignback{b} + +\DeclareOption{aligncovertop}{\def\@ligncover{t}} +\DeclareOption{aligninsidetop}{\def\@ligninside{t}} +\DeclareOption{alignbacktop}{\def\@lignback{t}} + +\DeclareOption{aligntop}% + {\ExecuteOptions{aligncovertop,aligninsidetop,alignbacktop}} + +\DeclareOption{aligncovercenter}{\def\@ligncover{c}} +\DeclareOption{aligninsidecenter}{\def\@ligninside{c}} +\DeclareOption{alignbackcenter}{\def\@lignback{c}} + +\DeclareOption{aligncenter}% + {\ExecuteOptions{aligncovercenter,aligninsidecenter,alignbackcenter}} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} + +\ProcessOptions\relax +\LoadClass{article} +\RequirePackage{rotating} +\DeclareRobustCommand*\onecorrection[1]{\def\onec@rrfrac{#1}} +\onecorrection{0} +\DeclareRobustCommand*\coverfont[1]{\def\coverf@nt{#1}} +\DeclareRobustCommand*\backfont[1]{\def\backf@nt{#1}} +\DeclareRobustCommand*\insidefont[1]{\def\insidef@nt{#1}} +\DeclareRobustCommand*\spinefont[1]{\def\spinef@nt{#1}} +\DeclareRobustCommand*\tracklistfont[1]{\def\tracklistf@nt{#1}} +\DeclareRobustCommand*\infofont[1]{\def\infof@nt{#1}} +\DeclareRobustCommand*\indexfont[1]{\def\indexf@nt{#1}} + +\DeclareRobustCommand{\lefttracklist}[1]{\def\lefttr@cklist{#1}} +\DeclareRobustCommand{\righttracklist}[1]{\def\righttr@cklist{#1}} +\DeclareRobustCommand{\leftinfo}[1]{\def\leftinf@{#1}} +\DeclareRobustCommand{\rightinfo}[1]{\def\rightinf@{#1}} +\DeclareRobustCommand{\covertext}[1]{\def\c@vertext{#1}} +\DeclareRobustCommand{\backtext}[1]{\def\b@cktext{#1}} +\DeclareRobustCommand{\insidetext}[1]{\def\insid@text{#1}} + +\DeclareRobustCommand*{\leftspine}[1]{\def\leftspin@{#1}} +\DeclareRobustCommand*{\centerspine}[1]{\def\centerspin@{#1}} +\DeclareRobustCommand*{\rightspine}[1]{\def\rightspin@{#1}} +\DeclareRobustCommand*{\leftspinebis}[1]{\def\leftspin@bis{#1}} +\DeclareRobustCommand*{\centerspinebis}[1]{\def\centerspin@bis{#1}} +\DeclareRobustCommand*{\rightspinebis}[1]{\def\rightspin@bis{#1}} +\hoffset=-1in +\voffset=-1in +\evensidemargin=1.5cm +\oddsidemargin=1.5cm +\topmargin=1.5cm +\headheight=0cm +\headsep=0cm +\footskip=0cm +\textwidth=\paperwidth +\advance\textwidth by -3cm +\textheight=\paperheight +\advance\textheight by -3cm + +\lineskip=0pt +\lineskiplimit=0pt +\parskip=0pt +\parindent=0pt +\hyphenpenalty=10000 +\setlength{\unitlength}{1mm} +\newlength{\squ@re} +\newlength{\@temp} +\newlength{\h@nging} +\newlength{\@hstrip} +\newlength{\@wstrip} +\newlength{\winf@} +\newlength{\wtr@cklist} +\newlength{\onec@rrection} +\newcounter{tr@ckindex} +\DeclareRobustCommand*{\setindex}[1]{\setcounter{tr@ckindex}{#1}} + +\DeclareRobustCommand*{\track}{% + \par + \let\@firstdigit=\@empty + \setlength{\onec@rrection}{0pt}% + \settowidth{\@temp}{\indexf@nt1} + \expandafter\@tfor \expandafter\@digit + \expandafter:\expandafter=\number\value{tr@ckindex}\do {% + \ifx\@firstdigit\@empty + \let\@firstdigit=\@digit + \else + \if 1\@firstdigit + \if 1\@digit\else + \setlength{\onec@rrection}{-\onec@rrfrac\@temp}% + \fi + \else + \if 1\@digit + \setlength{\onec@rrection}{\onec@rrfrac\@temp}% + \fi + \fi + \fi + }% + \settoheight{\@temp}{M}% + \addtolength{\@temp}{-\squ@re}% + \raisebox{.5\@temp}{% + \setlength{\unitlength}{\squ@re}% + \hspace*{-\h@nging}% + \begin{picture}(1,1) + \put(0,0){% + \framebox(1,1){\hspace*{\onec@rrection}\indexf@nt\thetr@ckindex}% + } + \end{picture}% + }% + \hspace*{6pt}% + \addtocounter{tr@ckindex}{1}% +} +\AtBeginDocument{% + \pagestyle{empty}% + \thispagestyle{empty}% + \newcd +} + +\DeclareRobustCommand*{\fhb}[2]{% + \fontsize{#1pt}{#2pt}\selectfont + \parskip=.1\baselineskip +} + +\DeclareRobustCommand*{\fh}[1]{\fontsize{#1pt}{\baselineskip}\selectfont} + +\DeclareRobustCommand*{\newcd}{% + \lefttracklist{}% + \righttracklist{}% + \covertext{}% + \backtext{\c@vertext}% + \insidetext{}% + \leftspine{}% + \centerspine{}% + \rightspine{}% + \leftspinebis{\leftspin@}% + \centerspinebis{\centerspin@}% + \rightspinebis{\rightspin@}% + \leftinfo{}% + \rightinfo{}% + \coverfont{\fhb{16}{19}}% + \backfont{\coverf@nt}% + \insidefont{\fhb{10}{12}}% + \spinefont{\fhb{9}{11}\bfseries}% + \tracklistfont{\fhb{9}{10.5}}% + \infofont{\fhb{7}{8.3}}% + \indexfont{\fhb{5}{0}}% +} +\DeclareRobustCommand*{\@sethwstrips}[1]{% + \settowidth{\@wstrip}{\spinef@nt #1}% + \if@lignspine + \settoheight{\@hstrip}{\spinef@nt #1}% + \fi +} + +\DeclareRobustCommand*{\alignt@baseline}{% + \settodepth{\@temp}{gjpqy}% + \vphantom{gjpqy}\par + \vspace*{-\@temp}\par +} +\DeclareRobustCommand*{\makecover}[1][lrtb]{% +\begin{picture}(120,240) +\end{picture}% +\begin{rotate}{90}% +\begin{picture}(240,120) + \@tfor\cr@pmark := #1 \do { + \if l\cr@pmark + \put(-1,0){\line(-1,0){5}} + \put(-1,120){\line(-1,0){5}} + \else\if r\cr@pmark + \put(241,0){\line(1,0){5}} + \put(241,120){\line(1,0){5}} + \else\if b\cr@pmark + \put(0,-1){\line(0,-1){5}} + \put(240,-1){\line(0,-1){5}} + \put(120,-1){\line(0,-1){1}} + \put(120,-3){\line(0,-1){1}} + \put(120,-5){\line(0,-1){1}} + \else\if t\cr@pmark + \put(0,121){\line(0,1){5}} + \put(240,121){\line(0,1){5}} + \put(120,121){\line(0,1){1}} + \put(120,123){\line(0,1){1}} + \put(120,125){\line(0,1){1}} + \else\if c\cr@pmark + \put(0,0){\line(1,0){240}} + \put(0,0){\line(0,1){120}} + \put(120,0){\line(0,1){120}} + \put(0,120){\line(1,0){240}} + \put(240,0){\line(0,1){120}} + \fi\fi\fi\fi\fi + } + + \put(10,10){% + \makebox(100,100)[\@ligninside]{% + \parbox{10cm}{% + \raggedright\insidef@nt\insid@text\alignt@baseline + }% + }% + } + \put(130,10){% + \makebox(100,100)[\@ligncover]{% + \parbox{10cm}{% + \raggedright\coverf@nt\c@vertext\alignt@baseline + }% + }% + } +\end{picture}% +\end{rotate}% +} +\DeclareRobustCommand*{\makeback}[1][lrtb]{% +\setindex{1}% +\settowidth{\squ@re}{\indexf@nt00}% +\settoheight{\@temp}{\indexf@nt0}% +\addtolength{\squ@re}{.4\@temp}% +\setlength{\h@nging}{\squ@re}% +\addtolength{\h@nging}{6pt}% +\settoheight{\@hstrip}{\spinef@nt ABCDEFGHIJKLMNOPQRSTUVWXYZ}% +\ifx\righttr@cklist\@empty + \setlength{\wtr@cklist}{12cm}% +\else + \setlength{\wtr@cklist}{5.5cm}% +\fi +\ifx\rightinf@\@empty + \setlength{\winf@}{12cm}% +\else + \setlength{\winf@}{5.5cm}% +\fi +\begin{picture}(151,118) + \@tfor\cr@pmark := #1 \do { + \if l\cr@pmark + \put(-1,0){\line(-1,0){5}} + \put(-1,118){\line(-1,0){5}} + \else\if r\cr@pmark + \put(152,0){\line(1,0){5}} + \put(152,118){\line(1,0){5}} + \else\if b\cr@pmark + \put(0,-1){\line(0,-1){5}} + \put(151,-1){\line(0,-1){5}} + \put(6.5,-1){\line(0,-1){1}} + \put(6.5,-3){\line(0,-1){1}} + \put(6.5,-5){\line(0,-1){1}} + \put(144.5,-1){\line(0,-1){1}} + \put(144.5,-3){\line(0,-1){1}} + \put(144.5,-5){\line(0,-1){1}} + \else\if t\cr@pmark + \put(0,119){\line(0,1){5}} + \put(151,119){\line(0,1){5}} + \put(6.5,119){\line(0,1){1}} + \put(6.5,121){\line(0,1){1}} + \put(6.5,123){\line(0,1){1}} + \put(144.5,119){\line(0,1){1}} + \put(144.5,121){\line(0,1){1}} + \put(144.5,123){\line(0,1){1}} + \else\if c\cr@pmark + \put(0,0){\line(1,0){151}} + \put(0,0){\line(0,1){118}} + \put(151,0){\line(0,1){118}} + \put(0,118){\line(1,0){151}} + \put(6.5,0){\line(0,1){118}} + \put(144.5,0){\line(0,1){118}} + \fi\fi\fi\fi\fi + } + + \@sethwstrips{\leftspin@} + + \put(0,4){% + \makebox(6.5,110)[b]{% + \makebox[\@hstrip][r]{% + \begin{rotate}{90}\spinef@nt\leftspin@\end{rotate}% + }% + }% + } + + \@sethwstrips{\centerspin@} + + \put(0,4){% + \makebox(6.5,110){% + \raisebox{0pt}[\@wstrip]{\makebox[\@hstrip][r]{% + \begin{rotate}{90}\spinef@nt\centerspin@\end{rotate}% + }}% + }% + } + + \@sethwstrips{\rightspin@} + + \put(0,4){% + \makebox(6.5,110)[t]{% + \raisebox{0pt}[\@wstrip]{\makebox[\@hstrip][r]{% + \begin{rotate}{90}\spinef@nt\rightspin@\end{rotate}% + }}% + }% + } + + \@sethwstrips{\leftspin@bis} + + \put(144.5,4){% + \makebox(6.5,110)[t]{% + \makebox[\@hstrip][l]{% + \begin{rotate}{-90}\spinef@nt\leftspin@bis\end{rotate}% + }% + }% + } + + \@sethwstrips{\centerspin@bis} + + \put(144.5,4){% + \makebox(6.5,110){% + \raisebox{\@wstrip}[\@wstrip]{\makebox[\@hstrip][l]{% + \begin{rotate}{-90}\spinef@nt\centerspin@bis\end{rotate}% + }}% + }% + } + + \@sethwstrips{\rightspin@bis} + + \put(144.5,4){% + \makebox(6.5,110)[b]{% + \raisebox{\@wstrip}[\@wstrip]{\makebox[\@hstrip][l]{% + \begin{rotate}{-90}\spinef@nt\rightspin@bis\end{rotate}% + }}% + }% + } + + \put(17,0){% + \begin{picture}(121,118) + \put(0,82){% + \makebox(120,30)[\@lignback]{% + \parbox{12.1cm}{% + \raggedright\backf@nt\b@cktext\alignt@baseline + }% + }% + } + + \put(0,5){% + \makebox(55,70)[tl]{% + \begin{minipage}{\wtr@cklist}% + \lineskip=.5pt\lineskiplimit=1pt\raggedright + \tracklistf@nt\lefttr@cklist + \end{minipage}% + }% + } + + \put(65,5){% + \makebox(55,70)[tl]{% + \begin{minipage}{\wtr@cklist}% + \lineskip=.5pt\lineskiplimit=1pt\raggedright + \tracklistf@nt\righttr@cklist + \end{minipage}% + }% + } + + \put(0,5){% + \makebox(0,0)[bl]{% + \parbox{\winf@}{% + \raggedright\infof@nt\leftinf@\alignt@baseline + }% + }% + } + + \put(65,5){% + \makebox(0,0)[bl]{% + \parbox{\winf@}{% + \raggedright\infof@nt\rightinf@\alignt@baseline + }% + }% + } + + \end{picture}% + } + +\end{picture}% +} +\DeclareRobustCommand*{\makeCD}[1][]{% +\def\CDname{#1}% +\ifx\CDname\@empty + \IfFileExists{CD.dat}{% + \def\CDname{CD.dat}% + }{% + \typein[\CDname]{Please insert CD data file name:}% + }% +\fi +\InputIfFileExists{\CDname.dat}{% +}{% + \InputIfFileExists{\CDname}{% + }{% + \ClassError{cd}{CD data file (\CDname.dat or \CDname) not found}{}% + } +}% +\makecover\par\makeback\par +} + +\newread\CDlist + +\newcounter{@cd} +\setcounter{@cd}{0} + +\newif\ifne@f + +\DeclareRobustCommand*{\makelist}[1][]{% +\def\CDlistname{#1}% +\ifx\CDlistname\@empty + \IfFileExists{CD.lst}{% + \def\CDlistname{CD.lst}% + }{% + \typein[\CDlistname]{Please insert CD list file name:} + }% +\fi +\IfFileExists{\CDlistname.lst}{% + \immediate\openin\CDlist=\CDlistname.lst + }{% + \IfFileExists{\CDlistname}{% + \immediate\openin\CDlist=\CDlistname + }{% + \ClassError{cd}{CD list (\CDlistname.lst or \CDlistname) not found}{}% + } + } +\ne@ftrue +\advance\endlinechar\@M +\immediate\read\CDlist to \CDname +\advance\endlinechar-\@M +\ifeof\CDlist\ne@ffalse\fi +\@whilesw \ifne@f \fi {% + \newcd + \InputIfFileExists{\CDname.dat}{% + }{% + \InputIfFileExists{\CDname}{% + }{% + \ClassError{cd}{CD data file (\CDname.dat or \CDname) not found}{}% + }% + }% + \advance\endlinechar\@M + \immediate\read\CDlist to \CDname + \advance\endlinechar-\@M + \ifeof\CDlist\ne@ffalse\fi + \ifodd\value{@cd}% + \makeback[lrb]\par\makecover\par + \else + \makecover\par\ifne@f\makeback[lrt]\else\makeback\fi\par + \fi + \addtocounter{@cd}{1}% +} +} +\endinput +%% +%% End of file `cd.cls'. |