From 35f8e833b0af2954698f29d36d33a7721159b0e9 Mon Sep 17 00:00:00 2001 From: couchot Date: Thu, 12 Dec 2013 08:11:19 +0100 Subject: [PATCH] ajout de comjnl --- styles/comjnl.cls | 574 ++++++++++++++++++++++ styles/compj.bst | 1162 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1736 insertions(+) create mode 100644 styles/comjnl.cls create mode 100644 styles/compj.bst diff --git a/styles/comjnl.cls b/styles/comjnl.cls new file mode 100644 index 0000000..a286e94 --- /dev/null +++ b/styles/comjnl.cls @@ -0,0 +1,574 @@ +\NeedsTeXFormat{LaTeX2e}[2009/07/27] +\ProvidesClass{comjnl} + [2009/07/27 v0.1c The Computer Journal class (DPC)] +\def\CJ@err#1{\ClassError{cj}{#1}\@eha} +\def\CJ@warn#1{\ClassWarningNoLine{cj}{#1}} +\DeclareOption{10pt}{} +\DeclareOption{11pt}{\CJ@warn{10pt used (not optional)}} +\DeclareOption{12pt}{\CJ@warn{10pt used (not optional)}} +\DeclareOption{twoside}{} +\DeclareOption{twocolumn}{} +\DeclareOption{onecolumn}{\CJ@warn{twocolumn used (not optional)}} +\DeclareOption{mathptm}{% + \def\CJ@fonts{\RequirePackage{times,mathptm}}} +\DeclareOption{mathtime}{% + \def\CJ@fonts{\RequirePackage{times,mathtime}}} %use for Mac +% \def\CJ@fonts{\RequirePackage{times,mathtimy}}} %use for PC +\DeclareOption{cmfonts}{% + \let\CJ@fonts\relax} +\DeclareOption{epsfig}{\AtEndOfClass{\RequirePackage{epsfig}}} +\ExecuteOptions{cmfonts,epsfig} +\ProcessOptions +\LoadClass[a4paper,twoside,twocolumn]{article} +% tolerances +\pretolerance=6000 +\tolerance=9500 +\hbadness=5000 +\vbadness=5000 +\topmargin=0\p@ +\emergencystretch=5pt +\sloppy +% +\RequirePackage{rotating} + + +\def\shortauthors#1{\gdef\@shortauthors{\scshape#1}} +\def\title{\@dblarg\CJ@title} +\def\CJ@title[#1]#2{% + \def\@title{#2}% + \def\@shorttitle{\scshape#1}} +\def\@title{\CJ@warn{No title}} +\def\@shorttitle{} +\newcounter{affil} +\newcounter{remaffil} +\def\author#1{% + \g@addto@macro\@authors{% + \@andorcomma,{\ignorespaces#1\unskip\affil@mark}}% + \def\CJ@noaffil{\CJ@warn{No affiliation specified for #1}}} +\def\CJ@noaffil{% + \CJ@err{No author specified}% + \global\let\@andorcomma\relax + \@gobbletwo} +\def\@authors{\relax\@gobbletwo} +\def\and{\CJ@err{\protect\and\space is not supported}} +\def\@andorcomma#1#2\@andorcomma#3{% + \ifx#3\relax + \ifx#1\relax% + \let\@tempa\relax + \else + \def\@tempa{\space\andname\space #2\@gobbletwo}% + \fi + \else + \def\@tempa{#1 #2\@andorcomma#3}% + \fi + \@tempa} +\def\affiliation#1{% + \def\@tempa{#1}% + \@tempswatrue + \@affils + \if@tempswa + \stepcounter{affil}\setcounter{remaffil}{\theaffil}% + \edef\@tempa##1{% + \noexpand\g@addto@macro\noexpand\@affils{% + \noexpand\doaffil{\theaffil}{##1}}}% + \@tempa{#1}% + \edef\@tempa{\noexpand\CJ@addaffil{\theaffil}}% + \fi + \expandafter\@tempa\@authors\relax\relax + \let\CJ@noaffil\relax} +\let\@affils\@empty +\def\CJ@addaffil#1#2\relax#3\relax{% + \def\@authors{#2\def\theaffil{#1}#3\relax}} +\def\doaffil#1#2{% + \def\@tempb{#2}% + \ifx\@tempa\@tempb + \@tempswafalse + \def\@tempa{\CJ@addaffil{#1}}% + \fi} +\def\address#1{% + \g@addto@macro\@authors{\textsuperscript{$*$}}% + \def\@address{#1}% + \def\address##1{% + \CJ@err{You may only specify one correspondence address}}} +\def\@address{\CJ@warn{No correspondence address specified}} +% +% +%%SDH David's \email puts email addresses at the bottom of the page--wrong! +%\def\email#1{% +% \g@addto@macro\@address{\endgraf\noindent(e-mail: #1)}% +% \def\email##1{% +% \CJ@err{You may only specify one correspondence email}}} +\def\email#1{% +\def\@email{Email: #1}% +} +% +\let\affil@mark\@empty +\def\keywords#1{% + \gdef\@keywords{% + \addvspace\medskipamount + \noindent\strut{\itshape Keywords:\/} \ignorespaces#1\unskip}} +\def\@keywords{\ClassWarningNoLine{cj}{No keywords}} +\def\received#1{% + \gdef\@received{\medskip\noindent\strut{\itshape Received #1}}} +\def\@received{\ClassWarningNoLine{cj}{No received date}} +\def\revised#1{% + \gdef\@revised{{\itshape; revised #1}}} %SDH +\let\@revised\@empty +\def\accepted#1{% + \gdef\@accepted{{\itshape; accepted #1}}} +\def\@accepted{\CJ@warn{No accepted date}} +\newbox\absbox +\def\abstract{\lrbox\absbox\minipage{.75\textwidth}% + \hrule\@height.2pt + \medskip + \normalfont\bfseries\small + \leftskip\fill + \rightskip-\fill + \parfillskip\stretch2} +\def\endabstract{\endminipage\endlrbox} +\def\maketitle{{% + \long\def\@makefntext##1{\parindent 1em\noindent + \@textsuperscript{\normalfont\@thefnmark}##1}% + \twocolumn[% + \thispagestyle{title}\label{FirstPage}% + \normalfont\centering + \vspace{-\headheight}\vspace{-\voffset}\vspace{-12\p@}% + {\parbox[b]{.75\textwidth}{\centering + {\Huge\@title\par}% + \addvspace{17pt}% + \ifnum\c@affil>\@ne + \def\affil@mark{\textsuperscript{\theaffil}}% + \def\doaffil##1##2{\noindent\textsuperscript{##1}##2\par}% + \else + \def\doaffil##1##2{\noindent##2\par}% + \fi + \setcounter{affil}{1}% + \CJ@noaffil + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \global\c@footnote\@ne +\ifnum\theremaffil>1 \typeout{caffil>1} + \setcounter{footnote}{\theremaffil} + \else \typeout{caffil not> 1} + \setcounter{footnote}{0}\fi + \def\@makefnmark{\@textsuperscript{\normalfont\@thefnmark}}% + {\large\scshape\@authors\@andorcomma\relax\@andorcomma\relax\par}% + \addvspace{15pt}% 75mm - 15.5pc - 12pt baseline from affils + {\small\itshape\@affils}\par %%SDH affils made italic--should really be addresses + {\small\itshape\@email}\par %%SDH Emails moved to correct place + \addvspace\bigskipamount + \usebox\absbox\par + \addvspace\bigskipamount + \small\itshape + \@keywords\par + \@received\@revised\@accepted\par + \addvspace\bigskipamount + }}% + \hrule\@height.5pt + \vspace{18pt}% + ]% + %{\def\thefootnote{\@fnsymbol\c@footnote}% + % \footnotetext[1]{\def\\{\unskip, \ignorespaces}\@address}% + % \@thanks}% + \suppressfloats[t]}% + \let\and\relax + \let\affiliation\relax + \let\author\relax + \let\@affils\relax + \let\keywords\relax + \let\@keywords\relax + \let\address\relax + \let\email\relax + \let\@address\relax + \let\maketitle\relax + \let\thanks\@gobble} +\def\ps@cj{% + \def\@oddhead{% + \CJ@ruledhead + \relax + \@shorttitle + \thepage}% + \def\@evenhead{% + \vbox to \headheight{\vss + \let\textsuperscript\@gobble + \CJ@ruledhead + \thepage + % {\@authors\@andorcomma\relax\@andorcomma\relax}% + {\@shortauthors}% + \relax}}% + \def\@oddfoot{% + \CJ@ruledhead\relax{% + \textsc\journalname,\quad\volumename\space\@volumenumber,\quad + \numbername\space\@issuenumber,\quad\@volumeyear}\relax}% + \let\@evenfoot\@oddfoot} +\def\ps@title{% + \def\@oddhead{% + \vbox to \headheight{% + \vfil + \hrule \@height.5pt\@width\textwidth + \vskip 14.5pt}}% + \let\@evenhead\@oddhead + \def\@oddfoot{% + \CJ@ruledhead\relax{% + \textsc\journalname,\quad\volumename\space\@volumenumber,\quad + \numbername\space\@issuenumber,\quad\@volumeyear}\relax}% + \let\@evenfoot\@oddfoot} +\def\CJ@ruledhead#1#2#3{% + \vbox{% + \hrule \@height.5pt% + \hbox to\textwidth{% + \normalfont\vrule\@width\z@\@height 9.5pt\@depth 4.5pt% + \rlap{#1}% + {\hfil#2\hfil}% + \llap{#3}}% + \hrule\@height.5pt}} +\ps@cj +\def\@volumeyear{????} +\def\@volumenumber{??} +\def\@issuenumber{??} +\def\@startpage{\pageref{FirstPage}} +\def\@endpage{\pageref{LastPage}} +\def\volumeyear#1{\gdef\@volumeyear{#1}} +\def\volumenumber#1{\gdef\@volumenumber{#1}} +\def\issuenumber#1{\gdef\@issuenumber{#1}} +\def\startpage#1{\gdef\@startpage{#1}\c@page#1} +\def\endpage#1{\gdef\@endpage{#1}} +\def\lastpage@putlabel{% + \advance\c@page\m@ne + \immediate\write\@auxout{\string + \newlabel{LastPage}{{}{\thepage}}}% + \advance\c@page\@ne} +\AtEndDocument{% + \clearpage\lastpage@putlabel}% +\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else + \advance\@enumdepth \@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list + {\csname label\@enumctr\endcsname}{\usecounter + {\@enumctr}\def\makelabel##1{##1\hss}% + \labelsep=3\p@\parsep=0pt\listparindent=0pt\itemsep=0pt\partopsep=0pt + \rightmargin=0pt}\fi} +% +\def\itemize{\ifnum \@itemdepth >3 \@toodeep\else \advance\@itemdepth \@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \list{\csname\@itemitem\endcsname}{\def\makelabel##1{##1\hss}% + \labelsep=3\p@\parsep=0pt\listparindent=0pt\itemsep=0pt\partopsep=0pt + \rightmargin=0pt}\fi} +% +\setlength\parskip{0pt plus 0.1pt} +\setlength\parindent{1em} +\setlength\topsep{8pt plus 2pt minus 4pt} +\setlength\partopsep{0pt plus 2pt} +\setlength\itemsep{0pt plus 1pt} +\def\@seccntformat#1{\csname the#1\endcsname.\quad} +\def\section{% + \@startsection + {section}{1}{\z@}{-14\p@ \@plus -2\p@ \@minus -2\p@}% + {6\p@ plus 2\p@}{\normalfont\normalsize\bfseries\MakeUppercase}} +\def\subsection{% + \@startsection + {subsection}{2}{\z@}{-14\p@ \@plus -2\p@ \@minus -2\p@}% + {6\p@ plus 2\p@}{\normalfont\normalsize\bfseries}} +\def\subsubsection{% + \@startsection + {subsubsection}{3}{\z@}{-14\p@ \@plus -2\p@ \@minus-2\p@}% + {1sp}{\normalfont\normalsize\itshape}} +\def\paragraph{% + \@startsection + {paragraph}{4}{\z@}{12\p@}% + {-1em}{\normalfont\normalsize\itshape}} +\def\subparagraph{% + \@startsection + {paragraph}{5}{\z@}{12\p@}% + {-1em}{\normalfont\normalsize\itshape}} +\setcounter{secnumdepth}{3} +\setcounter{tocdepth}{2} +\def\fps@eqnfloat{!tp} +\def\ftype@eqnfloat{4} +\newenvironment{eqnfloat} + {\@float{eqnfloat}} + {\end@float} +\newenvironment{eqnfloat*} + {\@dblfloat{eqnfloat}} + {\end@dblfloat} +\renewenvironment{table} + {\@float{table}\small\ignorespaces} + {\end@float} +\renewenvironment{table*} + {\@dblfloat{table}\small\ignorespaces} + {\end@dblfloat} +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{{\bfseries\small#1.} \small#2}% + \ifdim \wd\@tempboxa >\hsize + {\bfseries\small#1.} \small#2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} +\def\fnum@figure{\MakeUppercase\figurename~\thefigure} +\def\fnum@table{\MakeUppercase\tablename~\thetable} + +\RequirePackage{amsthm} +\newtheoremstyle{theor} + {6pt}% above space (default) + {6pt}% below space + {\itshape}% body + {1em}% indent + {\scshape}% head + {.}% punct + { }% space + {}% custom +\theoremstyle{theor} + +\newtheorem{definition}{Definition}[section] +\def\thedefinition{\thesection.\arabic{definition}} +\newtheorem{lemma}{Lemma}[section] +\def\thelemma{\thesection.\arabic{lemma}} +\newtheorem{proposition}{Proposition}[section] +\def\theproposition{\thesection.\arabic{proposition}} +\newtheorem{corollary}{Corollary}[section] +\def\thecorollary{\thesection.\arabic{corollary}} +\newtheorem{axiom}{Axiom}[section] +\def\theaxiom{\thesection.\arabic{axiom}} + +\newtheoremstyle{remark} + {6pt}% above space (default) + {6pt}% below space + {\normalfont}% body + {1em}% indent + {\scshape}% head + {.}% punct + { }% space + {}% custom +\theoremstyle{remark} + +\newtheorem{remark}{Remark} +\newtheorem{example}{Example} +\newtheorem{algorithm}{Algorithm} + +{\theoremstyle{theor} +\newtheorem{theorem}{Theorem}[section] +\def\thetheorem{\thesection.\arabic{theorem}} +} + +\setlength\voffset{-1in} +\setlength\hoffset{-1in} +\setlength\paperheight{276mm} +\setlength\paperwidth{210mm} +\setlength\headsep{4mm} +\setlength\topskip\baselineskip +\setlength\marginparsep{1mm} +\setlength\marginparwidth{5mm} +\setlength\headheight{26mm} +\setlength\topmargin{0mm} +\setlength{\footskip}{10mm} +\setlength\@tempdima{276mm} +\addtolength\@tempdima{-\headheight} +\addtolength\@tempdima{-\headsep} + \divide\@tempdima\baselineskip + \@tempcnta=\@tempdima + \setlength\textheight{\@tempcnta\baselineskip} +\setlength\columnsep{2pc} +\setlength\textwidth{42pc} +\setlength\oddsidemargin\paperwidth +\addtolength\oddsidemargin{-\textwidth} +\setlength\oddsidemargin{.5\oddsidemargin} +\setlength\evensidemargin\oddsidemargin +\CJ@fonts + +\providecommand{\textsuperscript}[1]{% + \ensuremath{{}^{\mbox{\normalfont\scriptsize#1}}}} +\providecommand{\@textsuperscript}[1]{% + \ensuremath{{}^{\mbox{\normalfont\scriptsize#1}}}} +\providecommand\MakeUppercase[1]{% + \protected@edef\@tempa{\uppercase{#1}}\@tempa} +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8}% + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} +\def\@ssect#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5}}% + \fi + \@xsect{#3}} +\def\journalname{The Computer Journal} +\def\copyrightname{Oxford University Press} +\def\andname{and} +\def\ppname{pp} +\def\numbername{No.\@} +\def\volumename{Vol.\@} + +%extra macros + +% Inserts space after macro unless followed by punctuation. +\def\@xspace{% + \ifx\@let@token\bgroup\else% + \ifx\@let@token\egroup\else% + \ifx\@let@token\/\else% + \ifx\@let@token\ \else% + \ifx\@let@token~\else% + \ifx\@let@token.\else% + \ifx\@let@token!\else% + \ifx\@let@token,\else% + \ifx\@let@token:\else% + \ifx\@let@token;\else% + \ifx\@let@token?\else% + \ifx\@let@token'\else% + \ifx\@let@token)\else% + \ifx\@let@token-\else% + \ifx\@let@token$\else% + \ifx\@let@token/\else% + \space% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\newcommand{\xspace}{\futurelet\@let@token\@xspace} + +% Omit extra full stop after et al. if at end of sentence +\def\@etstop{% + \ifx\@let@token.% + \else.% + \fi\xspace} +\def\etstop{\futurelet\@let@token\@etstop} +\def\etal{{\it et al}\etstop} + +\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} +\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} +\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} +\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} +\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} +\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} +\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} +\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} +\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} +\DeclareMathAlphabet\mathbit + \encodingdefault\rmdefault\bfdefault\itdefault +\DeclareOldFontCommand{\bi}{\normalfont\bfseries\itshape}{\mathbit} + +%Appendix commands +\def\appendix{\@@par + \@addtoreset{table}{section} + \@addtoreset{figure}{section} + \@addtoreset{equation}{section} + \setcounter{section}{0} + \setcounter{subsection}{0} + \setcounter{subsubsection}{0} + \setcounter{equation}{0} + \setcounter{figure}{0} + \setcounter{table}{0} + \def\thesection{Appendix~\Alph{section}} +\def\thelemma{\Alph{section}.\arabic{lemma}} +\def\thedefinition{\Alph{section}.\arabic{definition}} +\def\thetheorem{\Alph{section}.\arabic{theorem}} +\def\theproposition{\Alph{section}.\arabic{proposition}} +\def\thecorollary{\Alph{section}.\arabic{corollary}} +\def\theaxiom{\Alph{section}.\arabic{axiom}} + \def\theequation{% + \Alph{section}.\arabic{equation}} + \def\thetable{% + \Alph{section}.\arabic{table}} + \def\thefigure{% + \Alph{section}.\arabic{figure}} +} + +\newcommand{\centre}[2]{\multispan{#1}{\hfill #2\hfill}} +\newcommand{\crule}[1]{\multispan{#1}{\hrulefill}} + +\def\lo#1{\llap{${}#1{}$}} + +\def\tabnote#1{\par\rlap{\begin{minipage}[l]{\hsize} +\small#1 +\end{minipage}}\\} + +\def\lineup{\def\0{\hbox{\phantom{\small\rm 0}}}% + \def\m{\hbox{$\phantom{-}$}}% + \def\-{\llap{$-$}}} + +\newcommand{\ms}{\noalign{\vspace{3\p@ plus2\p@ minus1\p@}}} +\newcommand{\ns}{\noalign{\vspace{-3\p@ plus-1\p@ minus-1\p@}}} + +%%%%%%%%%%%%%%%%%%%%% +% Tables rules % +%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\boldarrayrulewidth}{1\p@} +% Width of bold rule in tabular environment. + +\def\bhline{\noalign{\ifnum0=`}\fi\hrule \@height +\boldarrayrulewidth \futurelet \@tempa\@xhline} + +\def\@xhline{\ifx\@tempa\hline\vskip \doublerulesep\fi + \ifnum0=`{\fi}} + +% +% Rules for tables with extra space around +% +\newcommand{\br}{\ms\bhline\ms} +\newcommand{\mr}{\ms\hline\ms} + +\newcommand{\case}[2]{{\textstyle\frac{#1}{#2}}} + +\newcommand{\ack}{\section*{Acknowledgements}} +\newcommand{\ackn}{\section*{Acknowledgement}} + +% need to be explicit with `References' for \uppercase'ing +\def\thebibliography#1{\section*{References}\small\list + {[\arabic{enumi}]}{\labelsep 0.5em% +\hyphenpenalty=50\itemsep=-1pt + \settowidth\labelwidth{[#1]}\leftmargin\labelwidth + \advance\leftmargin\labelsep + \usecounter{enumi}} + \def\newblock{\hskip .14em plus .38em minus -.1em} + \sloppy + \sfcode`\.=1000\relax} +\let\endthebibliography=\endlist + +\def\@cite#1#2{[{#1\if@tempswa , #2\fi}]} +\def\@biblabel#1{[#1]} + +\let\origthebibliography\thebibliography +\def\thebibliography#1{\origthebibliography{\hbox to 1em{\hss}}} + +\hyphenpenalty=20 +\renewcommand{\floatpagefraction}{0.95} +\renewcommand{\dblfloatpagefraction}{0.95} +\renewcommand{\topfraction}{0.95} +\renewcommand{\dbltopfraction}{0.95} +%\renewcommand{\topnumber}{3} +%\renewcommand{\dbltopnumber}{3} + +\endinput +%% End of file `cj.cls'. diff --git a/styles/compj.bst b/styles/compj.bst new file mode 100644 index 0000000..8fe826c --- /dev/null +++ b/styles/compj.bst @@ -0,0 +1,1162 @@ +% cj.bst v1.1 2003-08-18 +% Antonio Vallecillo (av@lcc.uma.es) +% Revision History: +% v1.1 - First version (2003-08-18) +% +%====================================================================== +% EXAMPLES OF USE and NOTES ON "cj.bst" +% +% The following examples of BibTeX entries can be used for producing +% references of journal articles, books, chapters, conferences, +% and technical documents: +% +% -- journal article +% @ARTICLE{CAN01, +% author = {Carlos Canal and Lidia Fuentes and Ernesto Pimentel +% and Jos\'e M. Troya and Antonio Vallecillo}, +% title = {Extending {CORBA} Interfaces with Protocols}, +% journal = cj, +% year = 2001, +% volume = 44, +% number = 5, +% pages = {448--462}, +% } +% +% -- book +% @BOOK{Sowa2000, +% author = {John F. Sowa}, +% title = {Knowledge Representation}, +% publisher = {Brooks/Cole}, +% year = 2000, +% address = {Pacific Grove, CA}, +% } +% +% -- chapter +% @Incollection{SZY00, +% author = {Clemens Szyperski}, +% booktitle = {Foundations of Component-Based Systems}, +% title = {Components and the Way Ahead}, +% editor = {Gary T. Leavens and Murali Sitaraman}, +% publisher = {Cambridge University Press}, +% year = 2000, +% address = {Cambrigde, UK}, +% } +% +% -- conference paper +% @Inproceedings{cda-wordgraphs:97, +% author = {M. Crochemore and R. Verin}, +% year = 1997, +% title = {Direct construction of compact directed acyclic word graphs}, +% booktitle = {Proc. of CPM 97}, +% month = {12-14 August}, +% address = {Cambridge, MA}, +% pages = {192--211}, +% publisher = {Springer-Verlag, Berlin}, +% } +% +% -- technical document/standard +% @MANUAL {Z.500, +% author = {{ITU-T}}, +% organization = {International Telecommunications Union}, +% title = {Framework on formal methods in conformance testing}, +% year = 1997, +% address = {Geneva, Switzerland}, +% note = {ITU-T Recommendation X.500}, +% number = {ITU-T X.500}, +% } +% +% Using the "cj.bst" style they produce, respectively: +% +% \bibitem{CAN01} +% Canal, C., Fuentes, L., Pimentel, E., Troya, J.~M., and +% Vallecillo, A. (2001) +% Extending {CORBA} interfaces with protocols. +% \newblock {\em The Computer Journal}, {\bf 44}, 448--462. +% +% \bibitem{Sowa2000} +% Sowa, J.~F. (2000) {\em Knowledge Representation}. +% Brooks/Cole, Pacific Grove, CA. +% +% \bibitem{SZY00} +% Szyperski, C. (2000) Components and the way ahead. +% \newblock In Leavens, G.~T. and Sitaraman, M. (eds.), +% {\em Foundations of Component-Based Systems}. +% Cambridge University Press, Cambrigde, UK. +% +% \bibitem{cda-wordgraphs:97} +% Crochemore, M. and Verin, R. (1997) Direct construction of +% compact directed acyclic word graphs. +% \newblock {\em Proc. of CPM 97}, Cambridge, MA, 12-14 August, +% pp. 192--211. Springer-Verlag, Berlin. +% +% \bibitem{Z.500} +% ITU-T X.500 (1997) {\em Framework on formal methods in conformance testing}. +% \newblock International Telecommunications Union. +% \newblock Geneva, Switzerland. +% +% NOTES: +% - In the "book", "Incollection", and "Technical Report" items, +% the "address" field contains the publisher location. +% - In the "Inproceedings" and "conference" BibTeX items, the "address" +% field contains the conference location, so the publisher location +% should be included in the "publisher" field. +% - In "Inproceedings" and "conference" BibTeX items, the "month" field +% should also contain the days of the conference, as indicated in the +% example above. +% - In the "Manual" BibTeX item, the "number" field should contain the +% number of the technical document being referenced. This field will +% be used as main index for the entry in the bibliography produced. +% - A warning is generated if any of the fields shown for these examples +% is missing. +% - Some literals are avaliable for the most common journals and +% editorials, as indicated by the following list of BibTeX macros +%====================================================================== + +% Literals for MONTHS + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +% Literals for JOURNALS + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {cj} {"The Computer Journal"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ist} {"Information and Software Technology"} + +MACRO {ieeec} {"IEEE Computer"} + +MACRO {ieees} {"IEEE Software"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {jss} {"Journal of Systems and Software"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {spe} {"Software--Practice and Experience"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +% Literals for EDITORIALS + +MACRO {ACMP} {"ACM Press"} + +MACRO {ADDISON} {"Addison-Wesley"} + +MACRO {ADDISON-BOSTON} {"Addison-Wesley, Boston"} + +MACRO {CUP} {"Cambridge University Press"} + +MACRO {CUP-UK} {"Cambridge University Press, Cambridge, England"} + +MACRO {IEEE-CSP} {"IEEE Computer Society Press"} + +MACRO {ICP} {"Imperial College Press"} + +MACRO {ICP-UK} {"Imperial College Press, UK"} + +MACRO {KAP} {"Kluwer Academic Publishers"} + +MACRO {MIT} {"MIT Press"} + +MACRO {NH} {"North-Holland"} + +MACRO {OUP} {"Oxford University Press"} + +MACRO {OUP-UK} {"Oxford University Press, UK"} + +MACRO {PRENTICE} {"Prentice Hall"} + +MACRO {SPRINGER} {"Springer-Verlag"} + +MACRO {SPRINGER-BERLIN} {"Springer-Verlag, Berlin"} + +MACRO {SPRINGER-HEIDELBERG} {"Springer-Verlag, Heidelberg"} + +MACRO {SPRINGER-NY} {"Springer-Verlag, NY"} + +% Literals for SERIES + +MACRO {LNCS} {"Lecture Notes in Computer Science"} + +MACRO {LNAI} {"LNAI"} + +MACRO {ENTCS} {"Electronic Notes in Theoretical Computer Science"} + +%================================================================= +%% Start of the cj.bst code + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block + doblank } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + + #0 'doblank := % put a blank in output.nonnul if not zero +} + +STRINGS { s t } + +FUNCTION {between} +{ % what to do between output items + doblank #0 = + {" " * write$} + {write$} + if$ +} + +% from plain.bst (add periods after title, but also adds +% commas in other places) +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = +% { ", " * write$ } + { " " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} % needs a total rewrite using 'and' function +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { + s nameptr "{vv }{ll}{, f.}{, jj}" format.name$ 't := % de Geuzaine, C., jr +% s nameptr "{vv }{ll}{ f.}{, jj}" format.name$ 't := % de Geuzaine C., jr +% s nameptr "{ff }{vv }{ll}{, jj}" format.name$ 't := % Christophe de Geuzaine, jr +% s nameptr "{f. }{vv }{ll}{, jj}" format.name$ 't := % C. de Geuzaine, jr +% s nameptr "{vv }{ll}{, ff}{, jj}" format.name$ 't := % de Geuzaine, Christophe, jr +% s nameptr "{vv }{ll}{, ff}{, jj}" format.name$ 't := % de Geuzaine, Christophe, jr + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ + editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { " (eds.)" * } + { " (ed.)" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {format.address} +{ address empty$ + { "" } + { ", " * address } + if$ +} + +FUNCTION {format.note} +{ note empty$ + { "" } + { new.block + note } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + {"(" year ")" * * } +% { month " " * year * } + {"(" year ")" * * } + if$ + } + if$ +} + +FUNCTION {format.month} +{ month empty$ + { "" } + { ", " * month } + if$ +} + + +FUNCTION {format.btitle} +{ title %emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { series empty$ + { "" } +% { ", Vol. " * "{\bf " * volume "} of " * series * } %% No "vol." + { ", " * series ", " * "{\bf" * volume "}" * * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { ", chapter" * chapter %tie.or.space.connect + } + if$ +} + + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { series empty$ + { "there's a number but no series in " cite$ * warning$ } + { ", " * series ", " * "{\bf" * number "}" * * } + if$ + } + if$ + } + { "" } + if$ +} + + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { ", " * edition "l" change.case$ " edition" * } + { ", " * edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { ", " * "pp." pages n.dashify tie.or.space.connect } + { "" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume empty$ + { "empty volume in " cite$ * warning$ + ", {\bf ?}" + } + { ", {\bf " * volume "}" * field.or.null + } + if$ + number empty$ + 'skip$ + 'skip$ + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ", " * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ +% { "In " booktitle emphasize *} + { booktitle emphasize } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.type} +{ type empty$ + { "Technical Report" } + 'type + if$ +} + +FUNCTION {format.tr.number} %% old way +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In " booktitle * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.date "year" output.check + #1 'doblank := % remove blanks + format.btitle emphasize "title" output.check + format.edition output + crossref missing$ + { format.bvolume output + format.number.series output + new.sentence + publisher "publisher" output.check + format.address "address" output.check + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.note output + fin.entry + #0 'doblank := % blanks again TDS +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + format.date "year" output.check + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + format.address output + format.note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + } + if$ + format.date "year" output.check + format.btitle "title" output.check + new.sentence + format.in.ed.booktitle output + new.sentence + crossref missing$ + { publisher output + format.address "address" output.check + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ +% format.edition output + format.note output + fin.entry +} + + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.address "address" output.check + format.month "month" output.check + format.bvolume output + format.number.series output + format.pages "pages" output.check + new.sentence + organization publisher new.sentence.checkb + organization output + publisher "publisher" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter output + format.pages output + } + if$ + format.note output + fin.entry +} + +FUNCTION {incollection} +%% same as "inproceedings, but without pages +%% and the address means the publisher location, and therefore goes at the end. +%% Useful for book chapters. +%% +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.chapter output + format.month output + format.bvolume output + format.number.series output +%% format.chapter.pages "pages" output.check + format.pages output + new.sentence + organization publisher new.sentence.checkb + organization output + publisher "publisher" output.check + format.address "address" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter output + format.pages output + } + if$ + format.note output + fin.entry +} + +FUNCTION {conference} { incollection } + +FUNCTION {manual} +{ output.bibitem + number empty$ + { % original output + "empty number in " cite$ * warning$ + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address "address" output.check + } + if$ + } + { format.authors output.nonnull } + if$ + format.date "year" output.check + format.btitle emphasize "title" output.check + format.edition output + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + new.block + address "address" output.check + } + if$ + format.note output + } + { % if number is not empty + number output + format.date "year" output.check + format.btitle emphasize "title" output.check + format.edition output + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + new.block + address "address" output.check + } + if$ + } + if$ + fin.entry +} + + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + format.title "title" output.check + new.block + "Master's thesis." format.thesis.type output.nonnull + school "school" output.check + address output + format.note output + fin.entry +} + +FUNCTION {masterthesis} { mastersthesis } + +FUNCTION {misc} +{ output.bibitem + format.authors output + format.date output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { format.editors "editor" output.check + organization output + } + { format.editors output.nonnull } + if$ + format.date "year" output.check + format.btitle emphasize "title" output.check + format.address "address" output.check + format.month "month" output.check + format.bvolume output + format.number.series output + new.sentence + organization publisher new.sentence.checkb + organization output + publisher "publisher" output.check + format.note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + author empty$ + { number "number" output.check + format.date "year" output.check + format.title "title" output.check + add.period$ + format.tr.type output + } + { format.authors "author" output.check + format.date "year" output.check + format.title "title" output.check + add.period$ + format.tr.number "number" output.check %output.nonnull +% format.tr.type output + } + if$ + add.period$ + institution "institution" output.check + format.address "address" output.check + format.note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + format.title "title" output.check + new.block + format.note "note" output.check + fin.entry +} + +FUNCTION {default.type} { misc } + + + +READ + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{99}" + write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} -- 2.39.5