\RequirePackage{xkvltxp}
\documentclass{article}
\usepackage{comment,xspace,lipsum}
\usepackage[left=3cm,right=3cm]{geometry}
\usepackage[logdefault,logfinal,strictcheck]{changelayout}
\usepackage{hyperref}
\hypersetup{colorlinks=true,linkcolor=red,pdfpagemode=UseThumbs,
  implicit=true,breaklinks=true,citecolor=purple,pdfview=FitH,
  pdfstartview=FitH}
\xglobal\preparecolorset{rgb}{x}{0}{%
  red1,1.00,0.31,0.31;red2,1.00,0.32,0.33;%
  green1,0.00,0.50,0.00;green2,0.00,0.50,0.25;%
  blue1,0.00,0.00,1.00;blue2,0.00,0.00,0.63;%
  blue3,0.00,0.50,1.00;blue4,0.00,0.50,0.75;%
  cyan1,0.50,0.84,1.00;magenta1,0.50,0.00,0.50;%
  magenta2,0.50,0.00,1.00;magenta3,1.00,0.38,1.00;%
  purple1,0.50,0.00,0.25;purple2,0.50,0.00,0.50;%
  olive1,0.50,0.50,0.00;orange1,1.00,0.50,0.25;%
  yellow1,1.00,1.00,0.00;yellow2,1.00,1.00,0.70%
}
\new\let\TC\textcolor
\newrobustcmd*\stya[1]{\TC{xgreen10}{\texttt{#1}}\xspace}
\newrobustcmd*\styb[1]{\TC{teal}{\texttt{#1}}\xspace}
\newrobustcmd*\cmda[1]{\begingroup
  \escapechar=92\endgroup\TC{xgreen10}{\texttt{\string#1}}\xspace}
\newrobustcmd*\cmdb[1]{\begingroup
  \escapechar=92\endgroup\TC{teal}{\texttt{\string#1}}\xspace}
\long\csdef{temp1}{%
 \begin{center}
  \makebox[0pt]{\fboxrule2pt%
   \fcolorbox{xred10}{xyellow20}{%
    \parbox{\dimexpr\hsize-3cm}{%
    This package is an extension of Peter Wilson's {\tt changepage} package.
    \par\medskip
    This package can be used with the \texttt{geometry} package,
    but not with any \texttt{memoir} class. I used the \texttt{geometry}
    package in the source file of this document.
    \par\medskip
    All page and text layout parameters can be changed for each
    page using the macros illustrated in the source file of
    this document. Please see the comments in the source file.
    \par\medskip
    This is a preliminary user guide; a more detailed manual
    is in the works.}}}
 \end{center}
 \vspace*{2\baselineskip}
}
\long\csdef{temp2}{\section*{Use of \cmda{\adjusttextwidth}
  \\--- with text extending into both margins}\par\lipsum[1-2]}
\long\csdef{temp3}{\section*{Use of \cmda{\adjusttextwidth}
  with \cmda{switchadjust}}\par\noindent\lipsum[1-2]}
\long\csdef{temp4}{{\flushright\section*{Use of \cmda{\adjusttextwidth}
  with \cmda{switchadjust}}}\par\noindent\lipsum[1-2]}

\begin{document}

\title{The {\tt changelayout} Package}
\author{Ahmed Musa\\[.5ex]University of Central Lancashire\\
  Preston, United Kingdom\\[1ex]\url{a.musa@rocketmail.com}
}
\maketitle

\begin{comment}
  Make text width smaller by 3cm (1.5cm into each margin):
\end{comment}
\adjusttextwidth{leftmargin=1.5cm,rightmargin=1.5cm,content=\csuse{temp1}}

\section*{Default layout (as set with \styb{geometry} package)}
\lipsum[1-2]

\begin{comment}
  Make text width wider by 2cm (1cm into each margin):
\end{comment}
\adjusttextwidth{leftmargin=-1cm,rightmargin=-1cm,textcolor=blue,
content=\csuse{temp2}}

\section*{Default layout}
\lipsum[1-2]

\newpage
\lipsum[1-1]

\begin{comment}
  Make text width wider into right margin by 1.5cm on odd pages.
  'switchadjust' is a boolean for switching left and right margins on
  odd and even pages. This is useful for twoside printing, where
  the user may want the text extended only into outer margins:
\end{comment}

\adjusttextwidth{switchadjust=true,leftmargin=-0cm,rightmargin=-1.5cm,
  textcolor=xmagenta20,content=\csuse{temp3}}

\newpage
\lipsum[1-1]

\begin{comment}
  Make text width wider into right margin by 1.5cm, but
  'switchadjust=true' means that it is actually the left margin
  that is made wider on even pages. If the value of 'switchadjust'
  is 'true', you can simply enter 'switchadjust' without value:
\end{comment}

\adjusttextwidth{switchadjust,leftmargin=-0cm,rightmargin=-1.5cm,
  textcolor=red,content=\csuse{temp4}}

\begin{comment}
  'strictcheck' is a boolean for enforcing strict page number check
  (the idea is from the 'changepage' package). See the
  \usepackage{changelayout} statement above.
  Strict page checking is a safeguard against unlikely changes
  to the kernel page counter by another macro or package. For a
  large document, 'strictcheck' will generate a correspondingly
  large number of labels. This is not expected to be a problem
  with modern implementations of TeX/LaTeX; so I decided to
  retain it.
\end{comment}

\newpage
\begin{comment}
  The layout of individual pages can be changed by using
  \changepagelayout or \changetextlayout (they are synonymous).

  Both \changetextlayout and \changepagelayout replace (in the
  total sense) the prevailing text/page layout parameters by the
  values submitted by the user through these macros. All the page
  layout parameters (including \marginpar parameters) can be
  changed/replaced by simply submitting (via these macros)
  the new parameter values.
\end{comment}
\color{xpurple10}
\changetextlayout{oddsidemargin=-1cm,evensidemargin=0cm,textheight=550pt,
  textwidth=530pt}
\section*{Use of \cmda{\changetextlayout}}
\lipsum[1-4]
\normalcolor

\newpage
\resetdefault%

\begin{comment}
  \resetdefault is a command for resetting page/text layout parameters
  to the default values. The default parameters are saved at each run.
  If the 'geometry' package is loaded, the default parameters will be
  those determined by 'geometry'. \resetdefault is very handy for
  recovering from page/text layout changes.

  The original and final layout parameters are written into the log
  file (and displayed on the screen) if the user issues the booleans
  'logdefault' and 'logfinal' (respectively) as options to the
  package (preferably at \usepackage). These may be useful when deciding
  on the changes or adjustments to be effected.
\end{comment}

\begin{comment}
  In addition to \changepagelayout and \changetextlayout, there are
  also \adjustpagelayout and \adjusttextlayout (again these
  are synonymous).

  Both \adjustpagelayout and \adjusttextlayout adjust (by adding to or
  subtracting from) the prevailing text/page layout parameters the
  values given by the user. All the text and page layout parameters
  can be 'adjusted' by using these macros.
\end{comment}

\color{xorange10}
\adjusttextlayout{oddsidemargin=1cm, evensidemargin=-0cm, textheight=-50pt,
  textwidth=-50pt,topmargin=25pt}
\section*{Use of \cmda{\adjusttextlayout}}
\lipsum[1-4]
\normalcolor

\newpage
\resetdefault%
\section*{Default layout --- obtained by issuing \cmda{\resetdefault}}
\textbf{\large The default is as set initially using the \styb{geometry} package.}
\par\medskip
\lipsum[1-4]


\end{document} 