cgal/Packages/Manual/doc_tex/cgal_manual.sty

211 lines
7.4 KiB
TeX

% +------------------------------------------------------------------------+
% | cgal_manual.sty
% | Common style files and definitions for CGAL User and Reference Manuals
% +------------------------------------------------------------------------+
% Style files used throughout the manuals
% used with LaTeX and also understood by the LaTeX to HTML Converter
\usepackage{cc_manual}
\usepackage{cc_manual_index}
\usepackage{latex_to_html}
\usepackage{path}
\usepackage{alltt}
\usepackage{cprog} % outdated
\usepackage{ifthen}
% used with LaTeX but _not_ understood by the converter
\lcTex{
\usepackage{makeidx}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{epsfig}
\usepackage{ipe}
\usepackage{pslatex}
\usepackage{psfrag}
\usepackage{rotating}
\usepackage{longtable}
}
% +------------------------------------------------------------------------+
% Configuration section begin ...
% +------------------------------------------------------------------------+
% CGAL release and date, adapt this to the current release
\newcommand{\cgalrelease}{3.1-I}
% \newcommand{\cgalreleasedate}{November 2003} % use this for public releases
\newcommand{\cgalreleasedate}{\today} % use this for internal releases
% set this to true for generating the pdf version of the manual (using
% ps2pdf from ghostscript). If this is true when creating postscript,
% the table of contents (and several other things) will be blue.
\newboolean{usehyperref}
\setboolean{usehyperref}{false}
% minitoc and hyperref do not seem to work together so they should not both
% be true
\newboolean{useminitoc}
\setboolean{useminitoc}{true}
% We rather like a less dense table of contents (maybe HTML only)
\setcounter{secnumdepth}{2} % number subsections inclusively
\setcounter{tocdepth}{1} % toc with sections inclusively
% Make the table of contents use two columns
\lcHtml{\lcTwoColumnToc}
% +------------------------------------------------------------------------+
% ... end configuration section.
% +------------------------------------------------------------------------+
% include hypperref for PDF documents if selected above
\ifthenelse{\boolean{usehyperref}}{
\lcTex{
\usepackage[ps2pdf=true,
colorlinks=true,
linkcolor=blue,
bookmarksnumbered=true,
pdftitle={CGAL Library Manuals},
pdfkeywords={computational geometry, generic programming,
algorithms, software library, C++},
pdfborder={0 0 0}]{hyperref}%
}
}{}
% include minitoc if selected above
\ifthenelse{\boolean{useminitoc}}{\lcTex{\usepackage{minitoc}}}
{\newcommand{\minitoc}{}}
% page dimensions
% ---------------
\lcTex{
\textwidth 15.6cm
\textheight 23 cm
\ifthenelse{\boolean{usehyperref}}{}{\topmargin -14mm}
\evensidemargin 3mm
\oddsidemargin 3mm
\marginparsep10mm
\marginparwidth15mm
}
% new reference manual layout with one page for each reference page
% -----------------------------------------------------------------
\gdef\ccNewRefManualStyle{\ccTrue}
% Optionally, package authors and a package release can be shown
% right below the chapter title. Comment out the following lines
% to get back to the default behavior.
% -----------------------------------------------------------------
\def\ccTagChapterAuthor{\ccTrue}
% \def\ccTagChapterRelease{\ccTrue}
% default column layout
% ---------------------
\newcommand{\cgalColumnLayout}{%
\ccSetThreeColumns{CGAL_Oriented_side}{}{\hspace*{8.5cm}}%
\ccPropagateThreeToTwoColumns}
% reinitialize some settings before each chapter
% ----------------------------------------------
\newcommand{\cgalReinit}{\cgalColumnLayout}
% The tab marker are aligned with the top of the main text. To align
% them with the page header, the following length definition can be used.
% -----------------------------------------------------------------------
%\setlength{\ccRefTabLift}{12.5mm}
% you may also want to use these commands, but be careful to check that
% other redefinitions of ccRefPageBegin and End don't cause strange problems
% (e.g. if ccAdvanced is used to bracket a ref page)
% -------------------------------------------------------------------------
%\def\ccRefPageBegin{\ccParDims\cgalColumnLayout}
%\def\ccRefPageEnd{\ccParDims\cgalColumnLayout}
% All identifiers reside in CGAL scope by default
% -----------------------------------------------
\ccDefGlobalScope{CGAL::}
% LaTeX settings
% --------------
% create always the index
\makeindex
% relax formatting strictness to avoid many overfull \hbox's etc.
\sloppy
% make LaTeX process the whole manual without stopping for errors
% \batchmode
% Implement the two columns layout for the HTML converted part
% ------------------------------------------------------------
% Define a macro of suitable name that can be tested with the
% \isundefined test of the \ifthenelse macro.
\newcommand{\cgalDeclarePackage}[1]{}
% Group all \entryleft, \entryright, \entryleftright, \package... commands
% as argument to this macro.
\newcommand{\cgalchapters}[1]{%
% make a first run over the argument
% and declare \ifthen variables for packages
\newcommand{\entryleft}[1]{}%
\newcommand{\entryright}[1]{}%
\newcommand{\entryleftright}[2]{}%
\newcommand{\packageleft}[1]{\cgalDeclarePackage{##1}}%
\newcommand{\packageright}[1]{\cgalDeclarePackage{##1}}%
\newcommand{\packageleftright}[2]{%
\cgalDeclarePackage{##1}\cgalDeclarePackage{##2}}%
#1
\lcTex{%
\renewcommand{\entryleft}[1]{##1}%
\renewcommand{\entryright}[1]{}%
\renewcommand{\entryleftright}[2]{##1}%
\renewcommand{\packageleft}[1]{\cgalReinit\include{##1/main}}%
\renewcommand{\packageright}[1]{}%
\renewcommand{\packageleftright}[2]{\cgalReinit\include{##1/main}}%
#1
\renewcommand{\entryleft}[1]{}%
\renewcommand{\entryright}[1]{##1}%
\renewcommand{\entryleftright}[2]{##2}%
\renewcommand{\packageleft}[1]{}%
\renewcommand{\packageright}[1]{\cgalReinit\include{##1/main}}%
\renewcommand{\packageleftright}[2]{\cgalReinit\include{##2/main}}%
#1
}%
\lcHtml{\lciIfTwoColumnToc{
\newcommand{\entryleft}[1]{\lcTocLeft ##1}%
\newcommand{\entryright}[1]{\lcTocRight ##1}%
\newcommand{\entryleftright}[2]{%
\lcTocSync\lcTocLeft ##1\lcTocRight ##2\lcTocSync}%
\newcommand{\packageleft}[1]{\lcTocLeft \cgalReinit\include{##1/main}}%
% improve that later
\newcommand{\packageright}[1]{\lcTocRight \cgalReinit\include{##1/main}}%
\newcommand{\packageleftright}[2]{%
\lcTocSync\lcTocLeft\cgalReinit\include{##1/main}%
\lcTocRight\cgalReinit\include{##2/main}\lcTocSync}%
#1
}{%
\newcommand{\entryleft}[1]{##1}%
\newcommand{\entryright}[1]{}%
\newcommand{\entryleftright}[2]{##1}%
\newcommand{\packageleft}[1]{\cgalReinit\include{##1/main}}%
\newcommand{\packageright}[1]{}%
\newcommand{\packageleftright}[2]{\cgalReinit\include{##1/main}}%
#1
\renewcommand{\entryleft}[1]{}%
\renewcommand{\entryright}[1]{##1}%
\renewcommand{\entryleftright}[2]{##2}%
\renewcommand{\packageleft}[1]{}%
\renewcommand{\packageright}[1]{\cgalReinit\include{##1/main}}%
\renewcommand{\packageleftright}[2]{\cgalReinit\include{##2/main}}%
#1
}%
}%
}
% +------------------------------------------------------------------------+
% | end of cgal_manual.sty
% +------------------------------------------------------------------------+