\documentclass[oldfontcommands]{memoir}

\setlrmarginsandblock{1in}{1in}{*}
\setulmarginsandblock{1in}{1in}{*}
\checkandfixthelayout

\usepackage{makeidx}
\usepackage{noweb}
\usepackage[pdftex,bookmarks,colorlinks,linkcolor=blue,citecolor=blue]{hyperref}
%\usepackage{a4wide}
\usepackage{bm}
\usepackage[protrusion=true,expansion=true]{microtype}
\usepackage{color,amsmath,amssymb,xspace}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{positioning,shapes.symbols,shapes.geometric,bending,arrows.meta,calc,shadows,mindmap,decorations.text,graphs,quotes,arrows,matrix,angles,backgrounds}
\usepackage{gitinfo2}
\usepackage{pdfpages}
\usepackage{verbatim}

\setcounter{tocdepth}{3}
\setcounter{secnumdepth}{4}

\chapterstyle{ell}
\pagestyle{giheadings}

\makeindex

%\includeonly{ceo.manual.gmtMirrors}

\begin{document}

\title{
    \textbf{\Huge{\HUGE\textsl{C}}UDA\\{\HUGE\textsl{E}}NGINED\\{\HUGE\textsl{O}}PTICS\\\vskip 2ex \textsc{Reference Manual}}
}
\author{R. Conan\\\bf GMTO Corporation}
%\date{Revision\gitVtags\gitReferences: \gitAbbrevHash{} (\gitAuthorDate)}
%\date{Revision\gitVtags: \gitAbbrevHash{} (\gitAuthorDate)}

\maketitle
\newpage
\tableofcontents

\newpage
\chapter*{Copyright}
\verbatiminput{../COPYRIGHT}
% \part{Tutorials}
% \chapter{Geometric models}
% \input{ceo.manual.tutorial.tex}

% \part{Library}
\chapter*{Introduction}

The links between the different structures and classes of CEO are shown in the graph in \autopageref{ceoflow}.
In the graph, elliptical boxes indicate C++ structures and rounded boxed represent the python
classes.
A C++ structure may embed other C++ structure, this is shown by a solid line
ended by an open circle on the embedded structure.
A dashed line ended by a an open circle shows the embedding relationships
between python classes.
If the dashed line ends with an arrow then the class that points to the other
class inherits its properties and its methods.
Modules are color coded into the background color of the elliptical boxes and into the font
color of the boxes.
Modules with a single C++ structure and a single python classes are in gray.
The color of the border of the python boxes indicates if the class can be instanciated
(in green) or not (in red).
If the border is blue then the class has no constructor but an object from this
class can be retrieved from a class it is embedded into.

CEO uses git as its revision management system and
GitHub~\footnote{\url{https://github.com/rconan/CEO}} as a public repository for
CEO developers. 
The documentation of CEO python API is generated with
sphinx~\footnote{\url{http://www.sphinx-doc.org}} and is published
online~\footnote{\url{http://rconan.github.io/CEO/}}.
The C++ API is written according to the literate programming paradigm and uses
\emph{noweb}\cite{noweb} to produce code sources and documentation from a single document.
%\includepdf[landscape=true]{../graph/ceo.pdf}
\clearpage
\thispagestyle{empty}
\begin{tikzpicture}[remember picture,overlay]
  \node[inner sep=0pt,anchor=center] at
       (current page.center)
      {\includegraphics[angle=90,width=1\paperwidth,height=\paperheight]{/home/rconan/Dropbox/AWS/CEO/graph/ceo.png}};
    \end{tikzpicture}
    \label{ceoflow}
\clearpage

\part{CEO Source Code}

\input{ceo.manual.main.tex}

\part{Python Application Program Interface}

\chapter{Introduction}

The cython wrapper of a CEO module (directory) consists of two files with extension \emph{pxd} and \emph{pyx}, respectively.
A \emph{pxd} file is a list of structures, variables and functions imported from the module header file.
It also contains the class definitions i.e. a list of the class properties.
The class methods are defined in the \emph{pyx} file.

\input{cyceo.manual.main.tex}

\part{References and Index}

\bibliographystyle{plain}
\bibliography{/home/rconan/texmf/bibtex/wholebib}
%\input{ceo_manual.bbl}

\printindex

\end{document}
