%% %% This is the DocBook LaTeX style used by DB2LaTeX (http://db2latex.sf.net) %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{db2latex}[2003/04/11 DB2LaTeX DocBook Style] % The defined options \DeclareOption{hyperlink}{ \def\DBKhyperlink{yes} } \DeclareOption{nohyperlink}{ \def\DBKhyperlink{no} } % Default values \ExecuteOptions{nohyperlink} % If defined, process the options \ProcessOptions\relax % Needed packages \usepackage{ifthen} \usepackage{float} \usepackage{footmisc} \usepackage{appendix} % Workaround to avoid troubles with accents in \appendixname used as hyperref % label: force the label prefix to 'appendix' whatever the lang is \let\orgresetsapp=\@resets@pp \let\orgrestoreapp=\restoreapp \let\restoreapp\relax \def\@resets@pp{% \orgresetsapp \if@pphyper \def\Hy@chapapp{appendix}% \fi \orgrestoreapp } \newcommand{\DBKreleaseinfo}{Working Paper} \usepackage{dbk_fonts} \usepackage{dbk_hyper} \usepackage{dbk_biblio} \usepackage{dbk_table} \usepackage{dbk_changebar} \usepackage{dbk_graphic} \usepackage{dbk_cover} \usepackage{dbk_verbatim} \usepackage{dbk_misc} \usepackage{dbk_callout} \usepackage{dbk_locale} \usepackage{dbk_annot} % For missing options in article \@ifundefined{if@openright} {\let\if@openright\iftrue}{} % LaTeX commands to define % % #1: mapped to % #2: mapped to % \def\DBKinditem#1#2{ #2 & #1 \tabularnewline \hline } \newenvironment{DBKindtable}{ \begin{tabular}{ |l|l| } \hline \emph{Collaborator} & \emph{Contribution} \hline }{ \end{tabular} } % % Latex table % \newenvironment{DBKrevtable}{ \begin{longtable}{ |l|l|l|l| } \hline Revision number & Date & Release Info & Author \tabularnewline \hline \endhead }{ \end{longtable} } \newcommand{\DBKreference}{} \newcommand{\DBKsite}{} \newcommand{\DBKedition}{} \newcommand{\DBKsubtitle}{} \newcommand{\DBKdate}{\today} \newcommand{\DBKpubdate}{} \newcommand{\DBKindexation}{} \newcommand{\DBKrevhistory}{} \newcommand{\DBKlegalblock}{} \newcommand{\DBKlegaltitle}{} \newcommand{\DBKcopyright}{} % Display ``DRAFT'' as a water mark: \usepackage{ifpdf} \newif\ifpdfengine \ifpdf\pdfenginetrue \else\ifxetex\pdfenginetrue \fi\fi \ifpdfengine \usepackage{pdfpages} \usepackage{color} \def\showwatermark#1{% \AddToShipoutPicture{ \AtTextCenter{% \makebox(0,0)[c]{\resizebox{\textwidth}{!}{% \rotatebox{45}{\textsf{\textbf{\color[gray]{0.8}#1}}}}}% }} } \else \def\showwatermark#1{}% \fi % -------------------------- % Title and Bookinfo display % -------------------------- \let\stdtitle=\title \def\title#1{ \def\DBKtitle{#1} \stdtitle{\bfseries #1% \ifthenelse{\equal{\DBKsubtitle}{}}{}{\\[12pt]\normalsize \DBKsubtitle}} } \let\stdauthor=\author \def\author#1{ \def\DBKauthor{#1} \stdauthor{\begin{minipage}{10cm}\centering #1\end{minipage}}% } \let\stdmaketitle=\maketitle \def\maketitle{ \stdmaketitle \noindent \textbf{\DBKtitle \\} \ifx\DBKauthor\empty\else{by \DBKauthor \\}\fi \hspace{0pt}\\ \ifthenelse{\equal{\DBKedition}{}}{}{Edition \DBKedition \\} \ifthenelse{\equal{\DBKpubdate}{}}{}{Published \DBKpubdate \\} \ifthenelse{\equal{\DBKcopyright}{}}{}{\DBKcopyright \\} \hspace{0pt}\\ % Now the legalnotice block \DBKlegalblock \newpage } \newenvironment{DBKlegalnotice}{ \if@twocolumn \noindent\small\textit{\DBKlegaltitle} \/\bfseries---$\!$ \else \noindent\begin{center}\small\bfseries\DBKlegaltitle \end{center}\begin{quote}\small \fi }{ \vspace{0.6em}\par\if@twocolumn\else\end{quote}\fi } % -------------------------------------------- % Check for PDFLaTeX/LaTeX % -------------------------------------------- % Default page setup if not already done by geometry \@ifpackageloaded{geometry}{}{ \usepackage{anysize} \marginsize{3cm}{2cm}{1.25cm}{1.25cm} } \makeatletter % Redefine paragraph to put the title on a separate line \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% {-3.25ex\@plus -1ex \@minus -.2ex}% {1ex \@plus .2ex}% {\normalfont\normalsize\bfseries}} % redefine the listoffigures and listoftables so that the name of the chapter % is printed whenever there are figures or tables from that chapter. encourage % pagebreak prior to the name of the chapter (discourage orphans). \let\save@@chapter\@chapter \let\save@@l@figure\l@figure \let\the@l@figure@leader\relax \def\@chapter[#1]#2{\save@@chapter[{#1}]{#2}% \addtocontents{lof}{\protect\def\the@l@figure@leader{\protect\pagebreak[0]\protect\contentsline{chapter}{\protect\numberline{\thechapter}#1}{}{\thepage}}}% \addtocontents{lot}{\protect\def\the@l@figure@leader{\protect\pagebreak[0]\protect\contentsline{chapter}{\protect\numberline{\thechapter}#1}{}{\thepage}}}% } \renewcommand*\l@figure{\the@l@figure@leader\let\the@l@figure@leader\relax\save@@l@figure} \let\l@table\l@figure \makeatother \usepackage{fancyhdr} \renewcommand{\headrulewidth}{0.4pt} \renewcommand{\footrulewidth}{0.4pt} % Safeguard against long headers. \IfFileExists{truncate.sty}{ \usepackage{truncate} % Use an ellipsis when text would be larger than x% of the text width. % Preserve left/right text alignment using \hfill (works for English). \fancyhead[ol]{\truncate{0.49\textwidth}{\sl\leftmark}} \fancyhead[er]{\truncate{0.49\textwidth}{\hfill\sl\rightmark}} \fancyhead[el]{\truncate{0.49\textwidth}{\sl\leftmark}} \fancyhead[or]{\truncate{0.49\textwidth}{\hfill\sl\rightmark}} }{\typeout{WARNING: truncate.sty wasn't available and functionality was skipped.}} \pagestyle{fancy} % Define front/main/back matter if not available \makeatletter \@ifundefined{frontmatter}{ \def\frontmatter{\cleardoublepage\pagenumbering{roman}} }{} \@ifundefined{mainmatter}{ \def\mainmatter{\cleardoublepage\pagenumbering{arabic}} }{} \@ifundefined{backmatter}{ \def\backmatter{\if@openright\cleardoublepage\else\clearpage\fi} }{} \@ifundefined{abstract}{ \newenvironment{abstract}{ \setlength\parskip{\medskipamount}% \setlength\parindent{0pt}% }{} }{ % Redefine abstract in avoid page count reset \def\nocount#1#2{} \let\stdsetcounter\setcounter \let\stdabstract\abstract \let\endstdabstract\endabstract \renewenvironment{abstract}{% \let\setcounter\nocount \stdabstract }{% \endstdabstract \let\setcounter\stdsetcounter } } \makeatother % ---------------------- % Most Common Packages % ---------------------- \usepackage{latexsym} % FIXME: enumitem is expected by the stylesheets \usepackage{enumitem} \usepackage{fancybox} \usepackage{ragged2e} \usepackage{fancyvrb} \makeatletter\@namedef{FV@fontfamily@default}{\def\FV@FontScanPrep{}\def\FV@FontFamily{}}\makeatother \fvset{obeytabs=true,tabsize=3} \makeatletter \let\dblatex@center\center\let\dblatex@endcenter\endcenter \def\dblatex@nolistI{\leftmargin\leftmargini\topsep\z@ \parsep\parskip \itemsep\z@} \def\center{\let\@listi\dblatex@nolistI\@listi\dblatex@center\let\@listi\@listI\@listi} \def\endcenter{\dblatex@endcenter} \makeatother \usepackage{rotating} \usepackage{subfigure} \usepackage{tabularx} % -------------------------------------------- % Math support % -------------------------------------------- \usepackage{amsmath,amsthm,amsfonts,amsxtra,amsopn} % --------------- % Document Font % --------------- \ifxetex\else \usepackage{palatino} \fi % ---------------------------------------------- % Define a new LaTeX environment (adminipage) % ---------------------------------------------- \newenvironment{admminipage}% { % this code corresponds to the \begin{adminipage} command \begin{Sbox}% \begin{minipage}% } %done { % this code corresponds to the \end{adminipage} command \end{minipage} \end{Sbox} \fbox{\TheSbox} } %done % ---------------------------------------------- % Define a new LaTeX length (admlength) % ---------------------------------------------- \newlength{\admlength} % ---------------------------------------------- % Define a new LaTeX environment (admonition) % With 2 parameters: % #1 The image (e.g. note.pdf) % #2 The caption % ---------------------------------------------- \newenvironment{DBKadmonition}[2] { % this code corresponds to the \begin{admonition} command \hspace{0mm}\newline\hspace*\fill\newline \noindent \setlength{\fboxsep}{5pt} \setlength{\admlength}{\linewidth} \addtolength{\admlength}{-10\fboxsep} \addtolength{\admlength}{-10\fboxrule} \admminipage{\admlength} {\bfseries \sc\large{#2}} \newline ~\\[1mm] \sffamily \ifthenelse{\equal{#1}{}}{ \def\admgraph{false} }{ \def\admgraph{true} \includegraphics[width=1cm]{#1} \addtolength{\admlength}{-1cm} \addtolength{\admlength}{-20pt} \begin{minipage}[lt]{\admlength} } \parskip=0.5\baselineskip \advance\parskip by 0pt plus 2pt } %done { % this code corresponds to the \end{admonition} command \vspace{5mm} \ifthenelse{\equal{\admgraph}{false}}{}{ \end{minipage} } \endadmminipage \vspace{.5em} \par } \newenvironment{sidebar}[1][]{ \hspace{0mm}\newline% \noindent\begin{Sbox}\begin{minipage}{\linewidth-2\fboxsep-2\fboxrule-\shadowsize} }{ \end{minipage}\end{Sbox}\shadowbox{\TheSbox}% } % -------------------------------------------- % Commands to manage/style/create floats % figures, tables, algorithms, examples, eqn % -------------------------------------------- \makeatletter \floatstyle{ruled} \restylefloat{figure} \floatstyle{ruled} \restylefloat{table} \@ifundefined{chapter}{ \floatstyle{ruled} \newfloat{program}{ht}{lop}[section] \floatstyle{ruled} \newfloat{example}{ht}{loe}[section] \floatname{example}{\examplename} \floatstyle{ruled} \newfloat{dbequation}{ht}{lom}[section] \def\toclevel@dbequation{0} \floatname{dbequation}{\dbequationname} \floatstyle{boxed} \newfloat{algorithm}{ht}{loa}[section] \floatname{algorithm}{Algorithm} }{ \floatstyle{ruled} \newfloat{program}{ht}{lop}[chapter] \floatstyle{ruled} \newfloat{example}{ht}{loe}[chapter] \floatname{example}{\examplename} \floatstyle{ruled} \newfloat{dbequation}{ht}{lom}[chapter] \def\toclevel@dbequation{0} \floatname{dbequation}{\dbequationname} \floatstyle{boxed} \newfloat{algorithm}{ht}{loa}[chapter] \floatname{algorithm}{Algorithm} } \makeatother % -------------------------------------------- % $latex.caption.swapskip enabled for $formal.title.placement support %\newlength{\docbooktolatextempskip} %\newcommand{\captionswapskip}{\setlength{\docbooktolatextempskip}{\abovecaptionskip}\setlength{\abovecaptionskip}{\belowcaptionskip}\setlength{\belowcaptionskip}{\docbooktolatextempskip}} %% Guard against a problem with old package versions. %\makeatletter %\AtBeginDocument{ %\DeclareRobustCommand\ref{\@refstar} %\DeclareRobustCommand\pageref{\@pagerefstar} %} %\makeatother %% -------------------------------------------- \makeatletter \newcommand{\dbz}{\penalty \z@} \newcommand{\docbooktolatexpipe}{\ensuremath{|}\dbz} \newskip\docbooktolatexoldparskip \newcommand{\docbooktolatexnoparskip}{\docbooktolatexoldparskip=\parskip\parskip=0pt plus 1pt} \newcommand{\docbooktolatexrestoreparskip}{\parskip=\docbooktolatexoldparskip} \def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else\hbox{}\thispagestyle{empty}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi} \ifx\dblatex@chaptersmark\@undefined\def\dblatex@chaptersmark#1{\markboth{\MakeUppercase{#1}}{}}\fi \let\save@makeschapterhead\@makeschapterhead \def\dblatex@makeschapterhead#1{\vspace*{-80pt}\save@makeschapterhead{#1}} \def\@makeschapterhead#1{\dblatex@makeschapterhead{#1}\dblatex@chaptersmark{#1}} \AtBeginDocument{\ifx\refname\@undefined\let\docbooktolatexbibname\bibname\def\docbooktolatexbibnamex{\bibname}\else\let\docbooktolatexbibname\refname\def\docbooktolatexbibnamex{\refname}\fi} % Facilitate use of \cite with \label \newcommand{\docbooktolatexbibaux}[2]{% \protected@write\@auxout{}{\string\global\string\@namedef{docbooktolatexcite@#1}{#2}} } %\usepackage{cite} %\renewcommand\citeleft{(} % parentheses around list %\renewcommand\citeright{)} % parentheses around list \newcommand{\docbooktolatexcite}[2]{% \@ifundefined{docbooktolatexcite@#1}% {\cite{#1}}% {\def\@docbooktolatextemp{#2}\ifx\@docbooktolatextemp\@empty% \cite{\@nameuse{docbooktolatexcite@#1}}% \else\cite[#2]{\@nameuse{docbooktolatexcite@#1}}% \fi% }% } \newcommand{\docbooktolatexbackcite}[1]{% \ifx\Hy@backout\@undefined\else% \@ifundefined{docbooktolatexcite@#1}{% % emit warning? }{% \ifBR@verbose% \PackageInfo{backref}{back cite \string`#1\string' as \string`\@nameuse{docbooktolatexcite@#1}\string'}% \fi% \Hy@backout{\@nameuse{docbooktolatexcite@#1}}% }% \fi% } % -------------------------------------------- % A way to honour s % Blame j-devenish (at) users.sourceforge.net % In any other LaTeX context, this would probably go into a style file. \newcommand{\docbooktolatexusefootnoteref}[1]{\@ifundefined{@fn@label@#1}% {\hbox{\@textsuperscript{\normalfont ?}}% \@latex@warning{Footnote label `#1' was not defined}}% {\@nameuse{@fn@label@#1}}} \newcommand{\docbooktolatexmakefootnoteref}[1]{% \protected@write\@auxout{}% {\global\string\@namedef{@fn@label@#1}{\@makefnmark}}% \@namedef{@fn@label@#1}{\hbox{\@textsuperscript{\normalfont ?}}}% } % index labeling helper \let\dbtolatex@@theindex\theindex \let\dbtolatex@@endtheindex\endtheindex \renewenvironment{theindex}{ \if@openright\cleardoublepage\else\clearpage\fi \dbtolatex@@theindex % To have the index in the TOC \@ifundefined{chapter}{ \addcontentsline{toc}{section}{\numberline{}\indexname} }{ \refstepcounter{chapter} \ifnum \value{part} >\z@ \addcontentsline{toc}{part}{\protect\numberline{}\indexname} \else \addcontentsline{toc}{chapter}{\numberline{}\indexname} \fi } }{ \dbtolatex@@endtheindex% } \newlength\saveparskip \newlength\saveparindent \newlength\tempparskip \newlength\tempparindent % Prevent multiple openings of the same aux file % (happens when backref is used with multiple bibliography environments) \ifx\AfterBeginDocument\undefined\let\AfterBeginDocument\AtBeginDocument\fi \AfterBeginDocument{ \let\latex@@starttoc\@starttoc \def\@starttoc#1{% \@ifundefined{docbooktolatex@aux#1}{% \global\@namedef{docbooktolatex@aux#1}{}% \latex@@starttoc{#1}% }{} } }