% 
% Licensed to the Apache Software Foundation (ASF) under one
% or more contributor license agreements.  See the NOTICE file
% distributed with this work for additional information
% regarding copyright ownership.  The ASF licenses this file
% to you under the Apache License, Version 2.0 (the
% "License"); you may not use this file except in compliance
% with the License.  You may obtain a copy of the License at
% 
%   http://www.apache.org/licenses/LICENSE-2.0
% 
% Unless required by applicable law or agreed to in writing,
% software distributed under the License is distributed on an
% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
% KIND, either express or implied.  See the License for the
% specific language governing permissions and limitations
% under the License.
% 
\documentclass[letterpaper]{article}

\def\DUCCSTANDALONE{}

% space between paragraphs
\usepackage{parskip}

\usepackage{hyperref}
% Margins
\usepackage[top=1in, bottom=.75in, left=.75in, right=.75in ]{geometry}

\usepackage{xcolor}
\usepackage{datetime}

% turn off section numbering
\setcounter{secnumdepth}{0}

\title{DUCC Installation and Verification\\
Excerpt From Complete DUCC Documentation}
\author{Written and maintained by the Apache \\
UIMA\texttrademark Development Community}
\date{}
\begin{document}
\maketitle
\input{legal.tex}
\newpage

\input{common.tex}
\input{part4/install.tex}

\end{document}
