summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/changepage
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/changepage
Initial commit
Diffstat (limited to 'macros/latex/contrib/changepage')
-rw-r--r--macros/latex/contrib/changepage/README114
-rw-r--r--macros/latex/contrib/changepage/changepage.ins4
-rw-r--r--macros/latex/contrib/changepage/changepage.pdfbin0 -> 350090 bytes
-rw-r--r--macros/latex/contrib/changepage/changepage.tex592
4 files changed, 710 insertions, 0 deletions
diff --git a/macros/latex/contrib/changepage/README b/macros/latex/contrib/changepage/README
new file mode 100644
index 0000000000..70a5ecde96
--- /dev/null
+++ b/macros/latex/contrib/changepage/README
@@ -0,0 +1,114 @@
+
+The CHANGEPAGE and CHNGPAGE packages
+================
+
+Provides commands to change the page layout in the middle of a document,
+and to robustly check for typesetting on odd or even pages.
+
+The changepage package is an extraction of code from the memoir class.
+It is a functionally-equivalent replacement for chngpage package.
+Because chngpage is not compatible with memoir, its use is now deprecated.
+
+
+CHANGE HISTORIES
+---------------
+
+### CHANGEPAGE
+
+version 1.0c (2009/10/20)
+
+- Real PDF documentation
+
+version 1.0b (2009/09/02)
+
+- New maintainer (Will Robertson, funnily enough)
+
+version 1.0a (2008/08/15)
+
+- Fixed typo (a missing `p', courtesy Will Robertson)
+
+version 1.0 (2008/03/22)
+
+- First public release
+
+### CHNGPAGE
+
+version 1.2b (2009/10/20)
+
+- Real PDF documentation
+
+version 1.2a (2009/09/02)
+
+- New maintainer (Will Robertson)
+
+version 1.2 (2003/08/10)
+
+- Fixed \checkoddpage to handle page numbers other than arabic
+- Eliminated special \checkoddpage code for hyperref
+
+version 1.1c (2001/02/24)
+
+- Fixed problem when used with the calc package
+ (can't do \setcounter{cp@tempcnt}{\cp@pageref{....}}
+- Fixed problem when used with the hyperef package
+ (hyperref adds new arguments to \newlabel in the *.aux file)
+
+version 1.1b (2001/01/31)
+
+- Added strict option for robust adjustwidth; checks odd/even
+ pages via labels instead of by the page counter.
+
+version 1.1a (2001/01/18)
+
+- Added missing {} in last 4 arguments of \changepage
+
+version 1.1 (2000/07/22)
+
+- Empty arguments made available
+- Added adjustwidth environment
+
+
+INSTALLATION
+---------------
+
+Run `latex` on changepage.tex to produce the files
+ changepage.ins, changepage.sty, and chngpage.sty,
+as well as to compile the PDF documentation.
+
+Execute `latex changepage.ins` to produce the files above
+except changepage.ins itself (and the PDF file, obviously).
+
+
+COPYRIGHT AND LICENSING
+---------------
+
+Author: Peter Wilson (Herries Press)
+Maintainer: Will Robertson (will dot robertson at latex-project dot org)
+Copyright 2000–2008 Peter R. Wilson
+Copyright 2009 Will Robertson
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3c of this license or (at your option) any
+later version: <http://www.latex-project.org/lppl.txt>
+
+This work has the LPPL maintenance status "maintained".
+The Current Maintainer of this work is Will Robertson.
+
+This work consists of the files changepage.tex and the
+derived files changepage.sty, chngpage.sty, changepage.ins.
+
+
+MAINTENANCE
+---------------
+
+Please report bugs or request features:
+ <http://github.com/wspr/herries-press/issues>
+
+Developmental and historical versions:
+ <http://github.com/wspr/herries-press>
+
+Current release version:
+ <http://ctan.tug.org/pkg/changepage>
+ <http://ctan.tug.org/pkg/chngpage>
+
diff --git a/macros/latex/contrib/changepage/changepage.ins b/macros/latex/contrib/changepage/changepage.ins
new file mode 100644
index 0000000000..cd5e0088e1
--- /dev/null
+++ b/macros/latex/contrib/changepage/changepage.ins
@@ -0,0 +1,4 @@
+%&latex
+\def\changepageCompile{N}
+\input changepage.tex
+\csname@@end\endcsname
diff --git a/macros/latex/contrib/changepage/changepage.pdf b/macros/latex/contrib/changepage/changepage.pdf
new file mode 100644
index 0000000000..f7be4b4250
--- /dev/null
+++ b/macros/latex/contrib/changepage/changepage.pdf
Binary files differ
diff --git a/macros/latex/contrib/changepage/changepage.tex b/macros/latex/contrib/changepage/changepage.tex
new file mode 100644
index 0000000000..9ec3c18984
--- /dev/null
+++ b/macros/latex/contrib/changepage/changepage.tex
@@ -0,0 +1,592 @@
+
+%%%%%%%%%1%%%%%%%%%2%%%%%%%%%3%%%%%%%%%4%%%%%%%%%5
+% Please see the accompanying README for author,
+% license, documentation and installation information
+%%%%%%%%%1%%%%%%%%%2%%%%%%%%%3%%%%%%%%%4%%%%%%%%%5
+
+\RequirePackage{filecontents}
+\begin{filecontents}{changepage.sty}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{changepage}[2009/10/20 v1.0c check page and change page layout]
+
+% Don't use this with memoir
+\newcommand*{\cp@whoopsusingmemoir}{}
+\@ifclassloaded{memoir}{\def\cp@whoopsusingmemoir{\endinput}}
+\cp@whoopsusingmemoir
+
+% New \verb|\if| for the strict option
+\newif\ifstrictpagecheck
+ \strictpagecheckfalse
+
+% User commands for switching strict page checking on/off
+\newcommand*{\strictpagecheck}{\strictpagechecktrue}
+\newcommand*{\easypagecheck}{\strictpagecheckfalse}
+
+% Declare and process options
+\DeclareOption{strict}{\strictpagechecktrue}
+\ProcessOptions\relax
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% New commands for strict checking of odd/even page.
+%% Works by writing a label and then checking its pageref.
+
+\newif\ifoddpage
+\newcounter{cp@cntr}
+\newcount\cp@tempcnt % instead of \verb|\@memcnta|
+\newcommand{\cplabel}{^_}
+
+\gdef\thepmemc@@page{\the\c@page}
+
+\long\def\pmemprotected@write#1#2#3{% modified \verb|\protected@write|
+ \begingroup
+ \let\thepmemc@@page\relax
+ #2%
+ \let\protect\@unexpandable@protect
+ \edef\reserved@a{\write#1{#3}}%
+ \reserved@a
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+
+\newcommand*{\pmemlabel}[1]{\@bsphack
+ \pmemprotected@write\@auxout{}%
+ {\string\newpmemlabel{#1}{\thepmemc@@page}}%
+ \@esphack}
+
+\newcommand*{\newpmemlabel}[2]{{\global\@namedef{m@#1}{#2}}}
+\newcommand*{\pmemlabelref}[1]{%
+ \expandafter\ifx\csname m@#1\endcsname\relax
+ 0% % 0 if there is no label yet in the aux file
+ \else
+ \csname m@#1\endcsname
+ \fi}
+
+\DeclareRobustCommand{\checkoddpage}{%
+ \oddpagefalse%
+ \ifstrictpagecheck%
+ \stepcounter{cp@cntr}\pmemlabel{\cplabel\thecp@cntr}%
+ \cp@tempcnt=\pmemlabelref{\cplabel\thecp@cntr}\relax
+ \ifodd\cp@tempcnt\oddpagetrue\fi
+ \else
+ \ifodd\c@page\oddpagetrue\fi
+ \fi}
+
+% End newcommands for strict checking of odd/even page.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Copy of some of the code from the ifmtarg package to save requiring ifmtarg
+\begingroup
+\catcode`\Q=3
+\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil}
+\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4}
+\endgroup
+
+% Set the page output parameters
+\DeclareRobustCommand{\ch@ngetext}{%
+ \setlength{\@colht}{\textheight}\setlength{\@colroom}{\textheight}%
+ \setlength{\vsize}{\textheight}\setlength{\columnwidth}{\textwidth}%
+ \if@twocolumn%
+ \advance\columnwidth-\columnsep \divide\columnwidth\tw@%
+ \@firstcolumntrue%
+ \fi%
+ \setlength{\hsize}{\columnwidth}%
+ \setlength{\linewidth}{\hsize}}
+
+\DeclareRobustCommand{\changetext}[5]{%
+ \@ifmtarg{#1}{}{\addtolength{\textheight}{#1}}%
+ \@ifmtarg{#2}{}{\addtolength{\textwidth}{#2}}%
+ \@ifmtarg{#3}{}{\addtolength{\evensidemargin}{#3}}%
+ \@ifmtarg{#4}{}{\addtolength{\oddsidemargin}{#4}}%
+ \@ifmtarg{#5}{}{\addtolength{\columnsep}{#5}}%
+ \ch@ngetext}
+
+\DeclareRobustCommand{\changepage}[9]{%
+ \@ifmtarg{#1}{}{\addtolength{\textheight}{#1}}%
+ \@ifmtarg{#2}{}{\addtolength{\textwidth}{#2}}%
+ \@ifmtarg{#3}{}{\addtolength{\evensidemargin}{#3}}%
+ \@ifmtarg{#4}{}{\addtolength{\oddsidemargin}{#4}}%
+ \@ifmtarg{#5}{}{\addtolength{\columnsep}{#5}}%
+ \ch@ngetext%
+ \@ifmtarg{#6}{}{\addtolength{\topmargin}{#6}}%
+ \@ifmtarg{#7}{}{\addtolength{\headheight}{#7}}%
+ \@ifmtarg{#8}{}{\addtolength{\headsep}{#8}}%
+ \@ifmtarg{#9}{}{\addtolength{\footskip}{#9}}}
+
+\newenvironment{adjustwidth}[2]{%
+ \begin{list}{}{%
+ \topsep\z@%
+ \listparindent\parindent%
+ \parsep\parskip%
+ \@ifmtarg{#1}{\setlength{\leftmargin}{\z@}}%
+ {\setlength{\leftmargin}{#1}}%
+ \@ifmtarg{#2}{\setlength{\rightmargin}{\z@}}%
+ {\setlength{\rightmargin}{#2}}%
+ }
+ \item[]}{\end{list}}
+
+\newenvironment{adjustwidth*}[2]{%
+ \begin{list}{}{%
+ \topsep\z@%
+ \listparindent\parindent%
+ \parsep\parskip%
+ \checkoddpage
+ \ifoddpage% odd numbered page
+ \@ifmtarg{#1}{\setlength{\leftmargin}{\z@}}%
+ {\setlength{\leftmargin}{#1}}%
+ \@ifmtarg{#2}{\setlength{\rightmargin}{\z@}}%
+ {\setlength{\rightmargin}{#2}}%
+ \else% even numbered page
+ \@ifmtarg{#2}{\setlength{\leftmargin}{\z@}}%
+ {\setlength{\leftmargin}{#2}}%
+ \@ifmtarg{#1}{\setlength{\rightmargin}{\z@}}%
+ {\setlength{\rightmargin}{#1}}%
+ \fi}
+ \item[]}{\end{list}}
+
+\endinput
+
+\end{filecontents}
+%%%%%%%%%1%%%%%%%%%2%%%%%%%%%3%%%%%%%%%4%%%%%%%%%5
+
+
+
+
+\begin{filecontents}{chngpage.sty}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% PLEASE NOTE:
+% THIS PACKAGE IS DEPRECATED IN FAVOUR OF CHANGEPAGE.STY FOR REASONS
+% OF COMPATIBILITY WITH THE MEMOIR CLASS. The two are equivalent;
+% please do not use this one for new documents or packages.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{chngpage}[2009/10/20 v1.2b change page layout]
+
+%% Note: internal package commands all include the string |cp@|.
+%% New \cs{if} for the strict option.
+\newif\ifcpstrict
+ \cpstrictfalse
+
+%% Declare and process options.
+\DeclareOption{strict}{\cpstricttrue}
+\ProcessOptions\relax
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% New commands for strict checking of odd/even page.
+% Works by writing a label and then checking its pageref.
+%
+% Rewritten in v1.2 to handle roman, Roman, etc page numbers
+% as well as arabic; also eliminates special code to handle
+% hyperref. Based on the code in the memoir class.
+
+\newif\ifcpoddpage
+\newcounter{cp@cnt}
+\newcounter{cp@tempcnt}
+\newcommand{\cplabelprefix}{^_}
+
+\gdef\thecp@page{\the\c@page}
+\long\def\cp@protected@write#1#2#3{% % modified \cs{protected@write}
+ \begingroup
+ \let\thecp@page\relax
+ #2%
+ \let\protect\@unexpandable@protect
+ \edef\reserved@a{\write#1{#3}}%
+ \reserved@a
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+
+\DeclareRobustCommand{\checkoddpage}{%
+ \cpoddpagefalse
+ \stepcounter{cp@cnt}\cplabel{\cplabelprefix\thecp@cnt}%
+ \c@cp@tempcnt=\cp@labelref{\cplabelprefix\thecp@cnt}\relax
+ \ifodd\c@cp@tempcnt\cpoddpagetrue\fi}
+
+\newcommand{\cplabel}[1]{\@bsphack
+ \cp@protected@write\@auxout{}%
+ {\string\newcplabel{#1}{\thecp@page}}%
+ \@esphack}
+
+\newcommand{\newcplabel}[2]{{\global\@namedef{p@#1}{#2}}}
+
+\newcommand{\cp@labelref}[1]{%
+ \expandafter\ifx\csname p@#1\endcsname\relax
+ 0% % 0 if there is no label yet in aux file
+ \else
+ \csname p@#1\endcsname
+ \fi}
+
+% End newcommands for strict checking of odd/even page.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Copy of some of the code from the ifmtarg package to save requiring ifmtarg.
+\begingroup
+\catcode`\Q=3
+\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil}
+\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4}
+\endgroup
+
+% Set the page output parameters.
+\DeclareRobustCommand{\ch@ngetext}{%
+ \setlength{\@colht}{\textheight}\setlength{\@colroom}{\textheight}%
+ \setlength{\vsize}{\textheight}\setlength{\columnwidth}{\textwidth}%
+ \if@twocolumn%
+ \advance\columnwidth-\columnsep \divide\columnwidth\tw@%
+ \@firstcolumntrue%
+ \fi%
+ \setlength{\hsize}{\columnwidth}%
+ \setlength{\linewidth}{\hsize}%
+}
+
+\DeclareRobustCommand{\changetext}[5]{%
+ \@ifmtarg{#1}{}{\addtolength{\textheight}{#1}}%
+ \@ifmtarg{#2}{}{\addtolength{\textwidth}{#2}}%
+ \@ifmtarg{#3}{}{\addtolength{\evensidemargin}{#3}}%
+ \@ifmtarg{#4}{}{\addtolength{\oddsidemargin}{#4}}%
+ \@ifmtarg{#5}{}{\addtolength{\columnsep}{#5}}%
+ \ch@ngetext%
+}
+
+\DeclareRobustCommand{\changepage}[9]{%
+ \@ifmtarg{#1}{}{\addtolength{\textheight}{#1}}%
+ \@ifmtarg{#2}{}{\addtolength{\textwidth}{#2}}%
+ \@ifmtarg{#3}{}{\addtolength{\evensidemargin}{#3}}%
+ \@ifmtarg{#4}{}{\addtolength{\oddsidemargin}{#4}}%
+ \@ifmtarg{#5}{}{\addtolength{\columnsep}{#5}}%
+ \ch@ngetext%
+ \@ifmtarg{#6}{}{\addtolength{\topmargin}{#6}}%
+ \@ifmtarg{#7}{}{\addtolength{\headheight}{#7}}%
+ \@ifmtarg{#8}{}{\addtolength{\headsep}{#8}}%
+ \@ifmtarg{#9}{}{\addtolength{\footskip}{#9}}%
+}
+
+
+\newenvironment{adjustwidth}[3][\@empty]{%
+ \begin{list}{}{%
+ \topsep\z@%
+ \listparindent\parindent%
+ \parsep\parskip%
+ \@ifmtarg{#2}{\setlength{\leftmargin}{\z@}}{\setlength{\leftmargin}{#2}}%
+ \@ifmtarg{#3}{\setlength{\rightmargin}{\z@}}{\setlength{\rightmargin}{#3}}%
+ \ifx\@empty #1\relax \else
+ \cpoddpagefalse
+ \ifcpstrict\checkoddpage\else
+ \ifodd\c@page\cpoddpagetrue\fi
+ \fi
+ \ifcpoddpage\else % even numbered page
+ \@ifmtarg{#3}{\setlength{\leftmargin}{\z@}}{\setlength{\leftmargin}{#3}}%
+ \@ifmtarg{#2}{\setlength{\rightmargin}{\z@}}{\setlength{\rightmargin}{#2}}%
+ \fi
+ \fi}
+ \item[]}{\end{list}}
+
+\endinput
+\end{filecontents}
+%%%%%%%%%1%%%%%%%%%2%%%%%%%%%3%%%%%%%%%4%%%%%%%%%5
+
+
+
+% Conditionally compile the documentation & generate the .ins file:
+\providecommand\changepageCompile{Y}
+\makeatletter
+\if\changepageCompile N
+ \expandafter\@@end
+\fi
+
+
+
+\begin{filecontents*}{changepage.ins}
+%&latex
+\def\changepageCompile{N}
+\input changepage.tex
+\csname@@end\endcsname
+\end{filecontents*}
+
+
+
+
+\makeatletter
+\documentclass{article}
+
+\usepackage[it,medium]{titlesec}
+
+\usepackage{bigfoot,xcolor}
+\usepackage[colorlinks,linktocpage]{hyperref}
+
+\usepackage{gmdoc}
+\usepackage{gmverb}
+\dekclubs
+\stanzaskip=\bigskipamount
+\CodeSpacesGrey
+
+\usepackage{tocloft,varwidth}
+\setcounter{tocdepth}{1}
+\def\tocwidthA{0.55}
+\def\tocwidthB{0.44}
+\def\cftpartfont{\scshape}
+\def\cftsecfont{\small}
+\cftbeforesecskip=0pt
+\def\cftpartleader{}
+\def\cftpartafterpnum{\cftparfillskip}
+\def\cftsecleader{}
+\def\cftsecafterpnum{\cftparfillskip}
+
+\DeclareRobustCommand\pkg{\textsf}
+\def\pkgopt#1{\texttt{[#1]}}
+\newcommand\chng[1]{\marginpar{\footnotesize\raggedright\textsf{#1}}}
+
+\def\PDF{\textsc{pdf}}
+\def\PS{\textsc{ps}}
+\def\DVI{\textsc{dvi}}
+\def\EPS{\textsc{eps}}
+
+\usepackage{amsmath,listings}
+\lstset{basicstyle=\ttfamily,columns=fullflexible}
+
+\begingroup
+ \usepackage{chngpage}
+ \GetFileInfo{chngpage.sty}
+ \global\let\chngpagev\fileversion
+\endgroup
+\usepackage{changepage}
+\usepackage[T1]{fontenc}
+\usepackage{microtype}
+\usepackage{lmodern}
+\usepackage[sc,osf]{mathpazo}
+\linespread{1.1}
+\frenchspacing
+
+\GetFileInfo{changepage.sty}
+\begin{document}
+{\addtocontents{toc}{\protect\begin{varwidth}[t]{\tocwidthA\linewidth}}}
+
+\title{The \pkg{changepage} and \pkg{chngpage} packages}
+\author{%
+ Author: Peter Wilson, Herries Press\\
+ Maintainer: Will Robertson\\
+ \texttt{will dot robertson at latex-project dot org}%
+}
+\date{\chngpagev\ and \fileversion, \filedate}
+
+\maketitle
+
+\begin{abstract}
+\noindent Provides command
+|\ifoddpage| to detect the current page `side',
+environment |adjustwidth| to locally change the margins of the text,
+and commands |\changetext| and |\changepage| for more
+radical changes to the page design mid-way through a document.
+
+\pkg{changepage} is the new version of \pkg{chngpage} to be
+compatible with \pkg{memoir}. \pkg{chngpage} is now deprecated
+for this reason.
+\end{abstract}
+
+\tableofcontents
+
+\part{User documentation}
+
+Load the package like this:
+\begin{verbatim}
+\usepackage[strict]{changepage}
+\end{verbatim}
+Or for deprecated uses:
+\begin{verbatim}
+\usepackage[strict]{chngpage}
+\end{verbatim}
+
+\section{Detecting odd or even pages}
+
+The |\checkoddpage| command can be used anywhere in the body of
+a document to determine if \TeX\ is typesetting on an odd or
+even numbered page. If on an odd page then |\ifoddpage| is
+set \meta{true}, otherwise (on an even page) |\ifoddpage| is set
+\meta{false}.
+
+\chng{Use \cs{ifcpoddpage} instead if you're using chngpage.}
+
+Strict page checking works by the |\checkoddpage| command generating
+a label and then checking the |\pageref| for the label (actually, a special
+version of |\pageref| is required and is used internally by |\checkoddpage|).
+This mechanism requires at least two \LaTeX\ passes to ensure that
+the labels have settled (on the initial pass there will be no labels
+in the *.aux file to be checked).
+
+The label identifier is composed of the command |\cplabel|
+and an automatically generated number. |\cplabel|, initially
+defined as `|^_|', can be changed in the preamble if it will cause
+a clash with any author-defined labels. The default labels will
+be of the form `|^_|\meta{N}' where \meta{N} is a positive integer.
+
+\chng{For chngpage, use \cs{cplabelprefix} instead of \cs{cplabel}.}
+
+The package option `strict' turns on strict page checking --- the default
+is not to use strict checking. Strict page checking can be turned on or
+off at any time by the commands |\strictpagecheck| or |\easypagecheck|.
+The easy page check just tests the page number to see if it is odd or even,
+which does not always give the correct result because of \TeX's asynchronous
+output mechanism.
+
+
+\section{Adjusting the margins}
+
+Within an |adjustwidth| environment the left and right margins can be
+adjusted. The environment takes two required length arguments:
+\begin{quote}
+\cs{begin}|{adjustwidth}|\marg{leftmargin}\marg{rightmargin}
+\end{quote}
+A positive length value will increase the relevant margin (shortening
+the text lines) while a negative length value will decrease the margin
+(lengthening text lines). An empty length argument means no change
+to the margin. At the end of the environment the margins revert to
+their original values.
+
+For example, to extend the text into the right margin:
+\begin{quote}
+|\begin{adjustwidth}{}{-8em}|
+\end{quote}
+The starred version, |adjustwidth*|, causes the values of the
+margins to switch between odd and even pages.
+
+\chng{For chngpage use \cs{begin}\texttt{\{adjustwidth\}[]}
+instead of \cs{begin}\texttt{\{adjustwidth*\}}.}
+
+For example, if the document is being set twosided it might be
+advantageous to have any wider text extending into the outside
+margin:
+\begin{quote}
+|\begin{adjustwidth*}{}{-8em}|
+\end{quote}
+To have the adjusted text horizontally centered with respect to
+any surrounding text, the margins should be adjusted equally:
+\begin{quote}
+|\begin{adjustwidth}{-4em}{-4em}|
+\end{quote}
+For interest, \cs{begin}|{quotation}| is pretty much equivalent to
+\begin{quote}
+|\begin{adjustwidth}{2.5em}{2.5em}|
+\end{quote}
+The environment may also be used inside a float if the contents are
+a bit too wide for the text block, but can still fit within the physical
+page:
+\begin{verbatim}
+\begin{figure}
+ \begin{adjustwidth}{-2em}{-2em}
+ \includegraphics{wide}
+ \caption{Wide figure}
+ \end{adjustwidth}
+\end{figure}
+\end{verbatim}
+Sometimes, because of the asynchronous nature of the TeX output
+routine, the margin switching may be incorrect (like |\marginpar| sometimes)
+near the top of a page. This can be corrected by using the package
+option `strict' (i.e., |\usepackage[strict]{chngpage}|), which causes
+adjustwidth to use the |\checkoddpage| command (see below).
+
+A disadvantage of the strict option is that the package generates
+a new label for each adjustwidth environment, and \TeX\ may run out
+of space if there are an excessive number of labels in the document.
+
+Whether or not the strict option is used, `strict adjustwidths'
+can be turned on by putting the command |\strictpagecheck| before
+the environment, and turned off by using |\easypagecheck|.
+
+\chng{In chngpage, use \cs{cpstricttrue} and \cs{cpstricttrue}
+instead of \cs{strictpagecheck} and \cs{easypagecheck}.}
+
+\textsc{note:}
+In a twocolumn document, the adjustwidth environment
+treats both columns equally. For example, if the width is meant
+to be wider at the outer margin, then on odd pages the extra width
+will be at the right of any column, and on even pages the extra
+will be at the left of any column. You can get interesting effects
+by careful hand tuning on two column pages.
+
+
+\section{Changing the text block}
+
+The |\changetext| command is for changing the size and horizontal position
+of the text block on a page. The command takes 5 arguments, each of which
+is a length or is empty. i.e.,
+\begin{quote}
+\cmd\changetext\marg{text height}\marg{text width}\marg{even-side margin}
+\newline\null\hfill\marg{odd-side margin}\marg{column sep.}
+\end{quote}
+The given lengths are added to the corresponding current lengths and
+the remainder of the current page is typeset using the changed text block
+layout. The new layout remains in effect until another |\change...| command
+is issued.
+
+
+\section{Changing the entire page design}
+
+The |\changepage| command is for changing the general layout of
+a page. The command takes 9 arguments, each of which is a length or is empty.
+The first 5 arguments are the same as for |\changetext| and have the same effect.
+The last four arguments are:
+\begin{quote}
+\cmd\changepage\meta{5 args}\marg{topmargin}\marg{headheight}\marg{headsep}\marg{footskip}
+\end{quote}
+These lengths are added to the corresponding current lengths and
+thus modify the vertical positions of the elements of the page. The
+remainder of the current page is typeset using the changed text block
+and page layout. The new layout remains in effect until another
+|\change...| command is issued.
+
+\begin{itemize}
+\item[\textsc{note} 1] Not supplying a value for a length argument is equivalent
+ to giving it a zero length value.
+
+\item[\textsc{note} 2] For any given page, everything is constant except for the textwidth
+ and columnsep (for example, what is the meaning of two
+ topmargins on a single column page?).
+ It is therefore best to change anything else at the
+ start of a new page. Further, any changes only apply to whole
+ paragraphs. If you want an odd shaped paragraph use either
+ the \pkg{hanging} package or the \TeX\ |\parshape| command.
+\end{itemize}
+For example, to change from single column pages to double column
+pages where the text block is both shorter and wider, then to revert
+back to the initial layout:
+\begin{verbatim}
+... single column normal page
+\newpage % or \clearpage
+\changetext{-5\baselineskip}{10em}{-5em}{-5em}{}
+\twocolumn
+... two column pages
+\clearpage
+\changetext{5\baselineskip}{-10em}{5em}{5em}{}
+\onecolumn
+... normal pages
+\end{verbatim}
+Note the adjustments to the margins which will keep the vertical centerline
+of the textblock at the same position on the page.
+
+As another example, to increase the width of a single paragraph:
+\begin{verbatim}
+\changetext{0pt}{5em}{}{}{}%
+Start of wider paragraph text ...
+... end of paragraph.
+
+\changetext{0pt}{-5em}{}{}{}
+Start of a normal paragraph ...
+\end{verbatim}
+Under some circumstances you can include a |\change...| command as part of
+the argument to |\afterpage| (from the \pkg{afterpage} package) and it may work.
+Similarly it may work in a heading style used for |\thispagestyle| to change
+a single page.
+
+{\addtocontents{toc}{\protect\end{varwidth}\protect\hfill}}
+{\addtocontents{toc}{\protect\begin{varwidth}[t]{\protect\tocwidthB\protect\linewidth}}}
+\clearpage
+\parindent=0pt
+
+\part{Implementation}
+\section{The \pkg{changepage} package}
+\DocInput{changepage.sty}
+
+\clearpage
+\section{The \pkg{chngpage} package}
+\DocInput{chngpage.sty}
+
+{\addtocontents{toc}{\protect\end{varwidth}}}
+
+\end{document}