% 
% 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}

% 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}
