From 5db5c6d5c488a894b610f7a73a1188230e924a4b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 20 Oct 2009 20:52:57 +0000 Subject: changepage (+chngpage) update (20oct09) git-svn-id: svn://tug.org/texlive/trunk@15851 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/changepage/README | 114 ++++ .../texmf-dist/doc/latex/changepage/changepage.pdf | Bin 0 -> 350090 bytes .../source/latex/changepage/changepage.ins | 4 + .../source/latex/changepage/changepage.tex | 592 +++++++++++++++++++++ .../texmf-dist/tex/latex/changepage/changepage.sty | 242 +-------- .../texmf-dist/tex/latex/changepage/chngpage.sty | 132 +++++ 6 files changed, 859 insertions(+), 225 deletions(-) create mode 100644 Master/texmf-dist/doc/latex/changepage/README create mode 100644 Master/texmf-dist/doc/latex/changepage/changepage.pdf create mode 100644 Master/texmf-dist/source/latex/changepage/changepage.ins create mode 100644 Master/texmf-dist/source/latex/changepage/changepage.tex create mode 100644 Master/texmf-dist/tex/latex/changepage/chngpage.sty diff --git a/Master/texmf-dist/doc/latex/changepage/README b/Master/texmf-dist/doc/latex/changepage/README new file mode 100644 index 00000000000..70a5ecde96b --- /dev/null +++ b/Master/texmf-dist/doc/latex/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: + +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: + + +Developmental and historical versions: + + +Current release version: + + + diff --git a/Master/texmf-dist/doc/latex/changepage/changepage.pdf b/Master/texmf-dist/doc/latex/changepage/changepage.pdf new file mode 100644 index 00000000000..f7be4b4250b Binary files /dev/null and b/Master/texmf-dist/doc/latex/changepage/changepage.pdf differ diff --git a/Master/texmf-dist/source/latex/changepage/changepage.ins b/Master/texmf-dist/source/latex/changepage/changepage.ins new file mode 100644 index 00000000000..cd5e0088e12 --- /dev/null +++ b/Master/texmf-dist/source/latex/changepage/changepage.ins @@ -0,0 +1,4 @@ +%&latex +\def\changepageCompile{N} +\input changepage.tex +\csname@@end\endcsname diff --git a/Master/texmf-dist/source/latex/changepage/changepage.tex b/Master/texmf-dist/source/latex/changepage/changepage.tex new file mode 100644 index 00000000000..9ec3c189845 --- /dev/null +++ b/Master/texmf-dist/source/latex/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} diff --git a/Master/texmf-dist/tex/latex/changepage/changepage.sty b/Master/texmf-dist/tex/latex/changepage/changepage.sty index 3370dd3861d..7693fce352f 100644 --- a/Master/texmf-dist/tex/latex/changepage/changepage.sty +++ b/Master/texmf-dist/tex/latex/changepage/changepage.sty @@ -1,65 +1,39 @@ -% changepage.sty -% -% Provides commands to change the page layout in the middle of a document, -% and to robustly check for typesetting on odd or even pages. -% Instructions for use are at the end of this file. -% -% This package is an extraction of code from the memoir class. It is -% intended to eventually replace the chngpage package. -% -% Author: Peter Wilson (Herries Press) -% Maintainer: Will Robertson (will dot robertson at latex-project dot org) -% Copyright 2008 Peter R. Wilson -% -% If you have any questions you will probably get better and faster -% answers if you ask them on the comp.text.tex newsgroup as I am away -% more often than I am here. -% -% 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: -% -% This work has the LPPL maintenance status "maintained". -% The Current Maintainer of this work is Will Robertson. -% -% This work consists of this file. -% -% -% +%% LaTeX2e file `changepage.sty' +%% generated by the `filecontents' environment +%% from source `changepage' on 2009/10/20. +%% \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{changepage}[2009/09/02 v1.0b check page and change page layout] +\ProvidesPackage{changepage}[2009/10/20 v1.0c check page and change page layout] -%%% Don't use this with memoir +% Don't use this with memoir \newcommand*{\cp@whoopsusingmemoir}{} \@ifclassloaded{memoir}{\def\cp@whoopsusingmemoir{\endinput}} \cp@whoopsusingmemoir -%% new \if for the strict option +% New \verb|\if| for the strict option \newif\ifstrictpagecheck \strictpagecheckfalse -%% user commands for switching strict page checking on/off + +% User commands for switching strict page checking on/off \newcommand*{\strictpagecheck}{\strictpagechecktrue} \newcommand*{\easypagecheck}{\strictpagecheckfalse} -%% Declare and process options +% 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 -%% +%% 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 \@memcnta +\newcount\cp@tempcnt % instead of \verb|\@memcnta| \newcommand{\cplabel}{^_} -%%%\gdef\thememc@@page{\the\c@page} \gdef\thepmemc@@page{\the\c@page} -\long\def\pmemprotected@write#1#2#3{% modified \protected@write +\long\def\pmemprotected@write#1#2#3{% modified \verb|\protected@write| \begingroup \let\thepmemc@@page\relax #2% @@ -92,17 +66,17 @@ \ifodd\c@page\oddpagetrue\fi \fi} -%% end newcommands for strict checking of odd/even page +% End newcommands for strict checking of odd/even page. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% copy of some of the code from the ifmtarg package to save requiring ifmtarg +% 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 +% Set the page output parameters \DeclareRobustCommand{\ch@ngetext}{% \setlength{\@colht}{\textheight}\setlength{\@colroom}{\textheight}% \setlength{\vsize}{\textheight}\setlength{\columnwidth}{\textwidth}% @@ -166,185 +140,3 @@ \endinput -% Usage: -% ------ -% -% \usepackage[strict]{changepage} -% -%%%%%%%%%%%%%%% -% \checkoddpage -%%%%%%%%%%%%%%% -% -% 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 TRUE, otherwise (on an even page) \ifoddpage is set -% FALSE. -% -% 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 `^_N' where N is a positive integer. -% -% 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. -% -%%%%%%%%%%%%% -% adjustwidth -%%%%%%%%%%%%% -% Within an adjustwidth environment the left and right margins can be -% adjusted. The environment takes two required length arguments: -% -% \begin{adjustwidth}{leftmargin}{rightmargin} -% -% 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{adjustwidth}{}{-8em} -% -% The starred version, adjustwidth*, causes the values of the -% margins to switch between odd and even pages. -% -% If the document is being set twosided it might be advantageous -% to have any wider text extending into the outside margin. This -% could be done via the optional argument, as: -% \begin{adjustwidth*}{}{-8em} -% -% To have the adjusted text horizontally centered with respect to -% any surrounding text, the margins should be adjusted equally: -% \begin{adjustwidth}{-4em}{-4em} -% -% For interest, \begin{quotation} is pretty much equivalent -% to \begin{adjustwidth}{2.5em}{2.5em} -% -% 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{figure} -% \begin{adjustwidth}{-2em}{-2em} -% \includegraphics{wide} -% \caption{Wide figure} -% \end{adjustwidth} -% \end{figure} -% -% 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. -% -% 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. -% -%%%%%%%%%%%%% -% \changetext -%%%%%%%%%%%%% -% 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., -% -% \changetext{textheight}{textwidth}{evensidemargin}{oddsidemargin}{columnsep} -% -% 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. -% -%%%%%%%%%%%%% -% \changepage -%%%%%%%%%%%%% -% 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: -% -% \changepage{5 args}{topmargin}{headheight}{headsep}{footskip} -% -% 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. -% -% NOTE 1: Not supplying a value for a length argument is equivalent -% to giving it a zero length value. -% -% 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 hanging package or the TeX \parshape command. -% -% 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: -% ... 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 -% -% 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: -% -% \changetext{0pt}{5em}{}{}{}% -% Start of wider paragraph text ... -% ... end of paragraph. -% -% \changetext{0pt}{-5em}{}{}{} -% Start of a normal paragraph ... -% -% Under some circumstances you can include a \change... command as part of -% the argument to \afterpage (from the afterpage package) and it may work. -% Similarly it may work in a heading style used for \thispagestyle to change -% a single page. -% -% -% Changes in version 1.0b (2009/09/02) -% - New maintainer (Will Robertson, funnily enough) -% -% Changes in version 1.0a (2008/08/15) -% - Fixed typo (a missing `p', courtesy Will Robertson) -% -% Changes in version 1.0 (2008/03/22) -% - First public release -% -% Peter W. -% - diff --git a/Master/texmf-dist/tex/latex/changepage/chngpage.sty b/Master/texmf-dist/tex/latex/changepage/chngpage.sty new file mode 100644 index 00000000000..5f2542fcb1f --- /dev/null +++ b/Master/texmf-dist/tex/latex/changepage/chngpage.sty @@ -0,0 +1,132 @@ +%% LaTeX2e file `chngpage.sty' +%% generated by the `filecontents' environment +%% from source `changepage' on 2009/10/20. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 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 -- cgit v1.2.3