summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/adjmulticol
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/adjmulticol
Initial commit
Diffstat (limited to 'macros/latex/contrib/adjmulticol')
-rw-r--r--macros/latex/contrib/adjmulticol/Makefile63
-rw-r--r--macros/latex/contrib/adjmulticol/README14
-rw-r--r--macros/latex/contrib/adjmulticol/adjmulticol.bib37
-rw-r--r--macros/latex/contrib/adjmulticol/adjmulticol.dtx571
-rw-r--r--macros/latex/contrib/adjmulticol/adjmulticol.ins31
-rw-r--r--macros/latex/contrib/adjmulticol/adjmulticol.pdfbin0 -> 252666 bytes
-rw-r--r--macros/latex/contrib/adjmulticol/sample.pdfbin0 -> 51293 bytes
-rw-r--r--macros/latex/contrib/adjmulticol/sample.tex31
8 files changed, 747 insertions, 0 deletions
diff --git a/macros/latex/contrib/adjmulticol/Makefile b/macros/latex/contrib/adjmulticol/Makefile
new file mode 100644
index 0000000000..2be5735458
--- /dev/null
+++ b/macros/latex/contrib/adjmulticol/Makefile
@@ -0,0 +1,63 @@
+#
+# Makefile for adjmulticol package
+#
+# This file is in public domain
+#
+# $Id: Makefile,v 2.3 2011-02-22 22:46:46 boris Exp $
+#
+
+PACKAGE=adjmulticol
+SAMPLES = sample.tex
+
+all: $(PACKAGE).pdf ${SAMPLES:%.tex=%.pdf}
+
+
+%.pdf: %.dtx $(PACKAGE).sty
+ pdflatex $<
+ - bibtex $*
+ pdflatex $<
+ - makeindex -s gind.ist -o $*.ind $*.idx
+ - makeindex -s gglo.ist -o $*.gls $*.glo
+ pdflatex $<
+ while ( grep -q '^LaTeX Warning: Label(s) may have changed' $*.log) \
+ do pdflatex $<; done
+
+
+%.pdf: %.tex $(PACKAGE).sty
+ pdflatex $<
+ - bibtex $*
+ pdflatex $<
+ while ( grep -q '^LaTeX Warning: Label(s) may have changed' $*.log) \
+ do pdflatex $<; done
+
+
+%.sty: %.ins %.dtx
+ pdflatex $<
+
+
+
+.PRECIOUS: $(PACKAGE).cfg $(PACKAGE).sty
+
+
+clean:
+ $(RM) $(PACKAGE).sty *.log *.aux \
+ *.cfg *.glo *.idx *.toc \
+ *.ilg *.ind *.out *.lof \
+ *.lot *.bbl *.blg *.gls \
+ *.dvi *.ps *.tgz *.zip
+
+veryclean: clean
+ $(RM) *.pdf
+
+distclean: veryclean
+
+#
+# Archive for the distribution. Includes typeset documentation
+#
+archive: all clean
+ tar -czvf $(PACKAGE).tgz --exclude '*~' --exclude '*.tgz' --exclude CVS .
+
+zip: all clean
+ ${MAKE} $(PACKAGE).sty
+ $(RM) *.log
+ zip -r $(PACKAGE).zip * -x '*~' -x '*.tgz' -x '*.zip' -x "*.ins" -x CVS -x 'CVS/*' \ No newline at end of file
diff --git a/macros/latex/contrib/adjmulticol/README b/macros/latex/contrib/adjmulticol/README
new file mode 100644
index 0000000000..dc6820bf03
--- /dev/null
+++ b/macros/latex/contrib/adjmulticol/README
@@ -0,0 +1,14 @@
+ Adjusting Margins for Multicolumn and Unicolumn Output
+ Version 1.1
+
+This package provides an extension of the multicol package with the
+option to change the margins for multicolumn and unicolumn layout.
+The package understands the difference between the even and odd
+margins for two side printing.
+
+
+Changes:
+
+ v1.1 Changed calculations for unicolumn layout
+ which might previously lead to loss of text
+
diff --git a/macros/latex/contrib/adjmulticol/adjmulticol.bib b/macros/latex/contrib/adjmulticol/adjmulticol.bib
new file mode 100644
index 0000000000..b3c1c09a6d
--- /dev/null
+++ b/macros/latex/contrib/adjmulticol/adjmulticol.bib
@@ -0,0 +1,37 @@
+,-------------------.
+| BIBTEX ENTRIES |
+`-------------------'
+
+@manual{Mittelbach06:Multicol,
+ author = {Frank Mittelbach},
+ month = {August},
+ note =
+ {\url{http://mirrors.ctan.org/macros/latex/required/tools/multicol.pdf}},
+ title = {An Enironment for Multicolumn Output},
+ year = {2006},
+}
+
+@manual{Wilson09:Changepage,
+ author = {Peter Wilson and Will Robertson},
+ month = {October},
+ note =
+ {\url{http://mirrors.ctan.org/macros/latex/contrib/changepage}},
+ title = {The \textsf{changepage} and \textsf{chngpage}
+ Packages},
+ year = {2009},
+}
+
+@Misc{TeXFAQ,
+ author = {{UK \TeX{} Users Group}},
+ title = {{UK} List of {\TeX} Frequently Asked Questions},
+ year = 2008,
+ howpublished = {\url{http://www.tex.ac.uk/cgi-bin/texfaq2html}}
+}
+
+@Manual{Wilson:Memoir,
+ title = {The Memoir Class for Configurable Typesetting},
+ author = {Peter Wilson},
+ month = {February},
+ year = 2011,
+ note = {\url{http://mirrors.ctan.org/macros/latex/contrib/memoir}}
+}
diff --git a/macros/latex/contrib/adjmulticol/adjmulticol.dtx b/macros/latex/contrib/adjmulticol/adjmulticol.dtx
new file mode 100644
index 0000000000..90881468ef
--- /dev/null
+++ b/macros/latex/contrib/adjmulticol/adjmulticol.dtx
@@ -0,0 +1,571 @@
+% \iffalse
+% $Id: adjmulticol.dtx,v 2.12 2013-01-23 18:10:07 boris Exp $
+%
+%% Copyright 2011, Boris Veytsman <borisv@lk.net>
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any
+%% later version.
+%% The latest version of the license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2003/06/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Boris Veytsman
+%%
+%% This work consists of the file adjmulticol.dtx and the
+%% derived file adjmulticol.sty,
+%%
+%%
+%% Since this package is based on the multicol package,
+%% Copyright 1989-2005 Frank Mittelbach, the following additional
+%% condition is added to the licensing terms. The term ``multicol''
+%% here should be interpreted as ``multicol and/or adjmulticol''
+%% package, as appropriate.
+%%
+%% In addition to the terms of LPPL any distributed version
+%% (unchanged or modified) of multicol has to keep the statement
+%% about the moral obligation for using multicol. In case of major
+%% changes where this would not be appropriate the author of the
+%% changed version should contact the copyright holder.
+%%
+%%
+%% Moral obligation for using multicol:
+%% ------------------------------------
+%%
+%% Users of multicol who wish to include or use multicol or a modified
+%% version in a proprietary and commercially market product are asked
+%% under certain conditions (see below) for the payment of a license
+%% fee. The size of this fee is to be determined, in each instance,
+%% by the commercial user, depending on his/her judgment of the value of
+%% multicol for his/her product.
+%%
+%%
+%% The conditions for this are as follows:
+%%
+%% The producer of a proprietary and commercially market product
+%% that involves typesetting using multicol is asked to determine
+%% the value of a license fee for using multicol if
+%%
+%% - the product is a document and the producer has decided to
+%% include multicol to typeset (parts of) the document or has
+%% directed the author of the document to include multicol (for
+%% example, by providing a class file to be used by the author)
+%%
+%% - the product is a LaTeX class or package that includes multicol
+%%
+%%
+%% There is no moral obligation in case
+%%
+%% - the product is a document but producer has not directed
+%% the author to include multicol (in that case the moral obligation
+%% lies with the author of the document)
+%%
+%% - the product does not involve typesetting, e.g., consists, for
+%% example, of distributing multicol and its documentation.
+%%
+%% - the product is not proprietary, i.e., is made available as free
+%% software itself (which doesn't prohibit its commercial marketing)
+%%
+%% - multicol is used for non-commercial purposes
+%%
+%%
+%% Determinating a license fee might result in a license fee of zero
+%% (i.e., no payment) in case a producer has determined that the use
+%% of multicol has no enhancing effect on the product. This is a
+%% plausible scenario, i.e., in the above two cases the producer is
+%% only asked to evaluate the value of multicol for the product
+%% not for the payment of a license fee per se (which might or might
+%% not follow from this evaluation).
+%%
+%% The license fee, if any, can be payed either to the LaTeX3 fund
+%% (see ltx3info.txt in the base LaTeX distribution) or to the author of
+%% the program who can be contacted at
+%%
+%% Frank.Mittelbach@latex-project.org
+%%
+%<*gobble>
+% \fi
+% \CheckSum{176}
+%
+%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%
+%\iffalse
+% \begin{macrocode}
+\documentclass{ltxdoc}
+\usepackage[breaklinks,colorlinks,linkcolor=black,citecolor=black,
+ pagecolor=black,urlcolor=black]{hyperref}
+\usepackage{breakurl,adjmulticol}
+\PageIndex
+\CodelineIndex
+\RecordChanges
+\EnableCrossrefs
+\begin{document}
+ \DocInput{adjmulticol.dtx}
+\end{document}
+% \end{macrocode}
+%</gobble>
+% \fi
+% \MakeShortVerb{|}
+% \GetFileInfo{adjmulticol.sty}
+%
+% \title{Adjusting Margins for Multicolumn and Unicolumn
+% Output\thanks{\copyright Boris Veytsman, 2011} \thanks{Note: This
+% package is released under terms which affect its use in commercial
+% applications. Please see the details at the top of the source file}}
+% \author{Boris Veytsman}
+% \date{\filedate, \fileversion}
+% \maketitle
+%
+% \begin{abstract}
+% This package provides an extension of the \textsf{multicol}
+% package~\cite{Mittelbach06:Multicol} with the option to change the
+% margins for multicolumn and unicolumn layout. The package understands the
+% difference between the even and odd margins for two side printing.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \clearpage
+%
+%\section{Introduction}
+%\label{sec:intro}
+%
+%
+% One of the common requests from the book designers is the
+% possibility to change the margins of the text in the midddle of the
+% page. The standard \LaTeX{} |list| environment does exactly this.
+% Thus it is not surprising that many packages creatively use this
+% tool to change the layout. An example is the \textsf{changepage}
+% package~\cite{Wilson09:Changepage}. Unfortunately this approach has
+% a seriour drawback: a list sets the margins globally. If the
+% material is split between the pages, the margins on the first page
+% are repeated on all the subsequent pages. While this is fine for
+% one-side printing, it leads to a catastrophe for the two-sided
+% one, as can be seen from the following example (provided by Ivo
+% Welch):
+% \begin{verbatim}
+% \documentclass{book}
+% \usepackage{lipsum,multicol}
+% \evensidemargin=1.5in
+% \oddsidemargin=-3em
+% \textwidth=5in
+%
+% \newenvironment{chmargin}[2]{%
+% \begin{list}{}{\topsep0pt\partopsep0pt\itemsep0pt\parsep\parskip%
+% \listparindent\parindent\itemindent\parindent
+% \leftmargin#1\rightmargin#2\relax}\item}%
+% {\end{list}}
+%
+% \begin{document}
+%
+% \chapter{Show}
+% \section{Normal}
+% \marginpar{I need a lot of outer margin space in the normal text.}
+% \lipsum[1-10]
+% \begin{chmargin}{0pt}{-160pt}
+% \section{End of Chapter Meterial}
+% \textbf{Now I want to use the outer margin because I need width.}
+% \lipsum[11-16]
+% \fbox{\textbf{\Large Darn---it extends into the inner spine margin now.}}
+% \lipsum[17-40]
+% \end{chmargin}
+%
+% \end{document}
+% \end{verbatim}
+%
+%
+% To remedy this problem, we need a completely different approach: we
+% need to change the output routine. This is done in this package.
+%
+% Since the text with the special layout is often typeset in the
+% multicolumn mode, we load the \textsf{multicol}
+% package~\cite{Mittelbach06:Multicol} and patch it to provide two
+% changes:
+% \begin{enumerate}
+% \item Margins changes, persistent over the pages.
+% \item The possibility of an one-column ``multicolumn'' layout. Of
+% course, this layout does not make sense in the context of the
+% original \textsf{multicol} package, but is useful when the
+% margins are changed.
+% \end{enumerate}
+%
+% Note that since this package uses the \textsf{multicol} package, it
+% inherits its special moral obligation for the commercial users.
+% Please see the source file for the details.
+%
+% This file was commissioned for by Prof.~Ivo Welch,
+% \url{http://www.ivo-welch.info/}. He also provided sample files
+% and patiently tested it.
+%
+%\section{User Interface}
+%\label{sec:interface}
+%
+% The installation of the class follows the usual
+% practice~\cite{TeXFAQ} for \LaTeX{} packages:
+% \begin{enumerate}
+% \item Run \textsf{latex} on |adjmulticol.ins|. This will produce the file
+% |adjmulticol.sty|.
+% \item Put the file |adjmulticol.sty| to
+% the place where \LaTeX{} can find them (see
+% \cite{TeXFAQ} or the documentation for your \TeX{}
+% system).\label{item:install}
+% \item Update the database of file names. Again, see \cite{TeXFAQ}
+% or the documentation for your \TeX{} system for the system-specific
+% details.\label{item:update}
+% \item The file |adjmulticol.pdf| provides the documentation for the
+% package (this is the file you are probably reading now).
+% \end{enumerate}
+% As an alternative to items~\ref{item:install} and~\ref{item:update}
+% you can just put the files in the working directory where your
+% |.tex| file is.
+%
+%
+%
+% To use this package, add to the preamble of your document
+% the line |\usepackage{adjmulticol}|.
+%
+% The package provides two new environments for adjusted multicolumn
+% layout.
+%
+% \DescribeEnv{adjmulticols}
+% The environment |adjmulticols| is similar to the environment
+% |multicols|, but it has three mandatory arguments instead of one:
+% \begin{quote}
+% |\begin{adjmulticols}|\marg{number}\marg{inner margin}\marg{outer
+% margin}\\
+% \meta{text}\\
+% |\end{adjmulticols}|
+% \end{quote}
+% For example,
+% \begin{verbatim}
+% \begin{adjmulticols}{2}{12pt}{-1in}
+% Text Text Text
+% \end{adjmulticols}
+% \end{verbatim}
+% Here \meta{number} is the number of columns. Unlike |multicols|,
+% |adjmulticols| environment allows this number to be 1.
+%
+% The \meta{inner margin} and \meta{outer margin} are calculated from
+% the current text area margins, so negative values mean the extension
+% of the text area. In one-sided printing \meta{inner margin} is the
+% left margin, and \meta{outer margin} is the right margin. You
+% probably would not want to use this package for one-sided printing,
+% since in this case \textsf{changepage}
+% package~\cite{Wilson09:Changepage} works fine. In two-sided
+% printing \meta{inner margin} is the margin on the spine side of the
+% page, and \meta{outer margin} is the margin on the other side.
+%
+% You can use the optional arguments of the |multicols| environment.
+% Note that the argument of the first optional argument, the header text
+% spread over all columns, is typeset with the \emph{normal} margins.
+% If you want to change margins for the header too, you may want to
+% use one-column |adjmulticols| environment instead.
+%
+% \DescribeEnv{adjmulticols*}
+% The starred version of the environment, |adjmulticols*| is similar
+% to the |multicols*| environment: it does not balance the columns on
+% the last page.
+%
+%
+%
+%\StopEventually{\clearpage
+% \bibliography{adjmulticol}
+% \bibliographystyle{unsrt}}
+%
+% \clearpage
+%
+% \section{Implementation}
+% \label{sec:implementation}
+%
+%
+%\subsection{Declarations}
+%\label{sec:decl}
+%
+% We start with declaration, who we are:
+%
+%
+% \begin{macrocode}
+%<style>\NeedsTeXFormat{LaTeX2e}
+%<*gobble>
+\ProvidesFile{adjmulticol.dtx}
+%</gobble>
+%<style>\ProvidesPackage{adjmulticol}
+%<*style>
+[2012/01/20 v1.1 Adjusted margins for multicolumn layout]
+% \end{macrocode}
+%
+%
+%\subsection{Options}
+%\label{sec:options}
+%
+% All options are sent to |multicols|:
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{multicol}}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+%
+%\subsection{Loading Packages}
+%\label{sec:loading}
+%
+% We use |multicol| to get all the code from it:
+% \begin{macrocode}
+\RequirePackage{multicol}
+% \end{macrocode}
+%
+%
+%\subsection{Registers}
+%\label{sec:registers}
+%
+% \begin{macro}{\adjmc@inner}
+% Inner margin delta: left on odd pages, right on even pages for
+% two-sided typesetting, and left for one-sided typesetting.
+% \begin{macrocode}
+\newdimen\adjmc@inner
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\adjmc@outer}
+% Outer margin delta: right on odd pages, left on even pages, and
+% right for two-sided typesetting
+% \begin{macrocode}
+\newdimen\adjmc@outer
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\adjmc@saved@leftmargin}
+% We save the value of |\multicol@leftmargin| between the calls in
+% the register |\adjmc@savedleftmargin|:
+% \begin{macrocode}
+\newdimen\adjmc@saved@leftmargin
+% \end{macrocode}
+%
+% \end{macro}
+%
+%\subsection{Starting Environment}
+%\label{sec:start}
+%
+% \begin{macro}{\adjmulticols}
+% We have three mandatory arguments instead of one for |multicols|:
+% the number of columns, the left margin delta and the right margin
+% delta:
+% \begin{macrocode}
+\def\adjmulticols#1#2#3{\col@number#1\relax
+ \def\@tempa{#2}%
+ \ifx\@tempa\@empty\adjmc@inner\z@\else\adjmc@inner#2\fi
+ \def\@tempa{#3}%
+ \ifx\@tempa\@empty\adjmc@outer\z@\else\adjmc@outer#3\fi
+% \end{macrocode}
+% The standard |multicols| have the minimum of two columns. We, of
+% course, want to consider one column layout too:
+% \begin{macrocode}
+ \ifnum\col@number<\@ne
+ \PackageWarning{adjmulticol}%
+ {Using `\number\col@number'
+ columns doesn't seem a good idea.^^J
+ I therefore use one columns instead}%
+ \col@number\@ne\fi
+ \ifnum\col@number>10
+ \PackageError{adjmulticol}%
+ {Too many columns}%
+ {Current implementation doesn't
+ support more than 10 columns.%
+ \MessageBreak
+ I therefore use 10 columns instead}%
+ \col@number10 \fi
+% \end{macrocode}
+%
+%
+% As in the standard package we redefine the footnote making command:
+% \begin{macrocode}
+ \ifx\@footnotetext\mult@footnotetext\else
+ \let\orig@footnotetext\@footnotetext
+ \let\@footnotetext\mult@footnotetext
+ \fi
+% \end{macrocode}
+% And look for the optional arguments
+% \begin{macrocode}
+ \@ifnextchar[\adjmult@cols{\adjmult@cols[]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\adjmult@cols}
+% Looking for the second optional argument. Note that we use
+% |\premulticols| for the default:
+% \begin{macrocode}
+\def\adjmult@cols[#1]{\@ifnextchar[%
+ {\adjmult@@cols{#1}}%
+ {\adjmult@@cols{#1}[\premulticols]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\adjmult@@cols}
+% And now we are gathered all arguments:
+% \begin{macrocode}
+\def\adjmult@@cols#1[#2]{%
+% \end{macrocode}
+% The macro |\prepare@multicols| uses the current value of
+% |\linewidth|. We do not change his, but rather change |\linewidth|:
+% \begin{macrocode}
+ \advance\linewidth by -\adjmc@inner\relax
+ \advance\linewidth by -\adjmc@outer\relax
+% \end{macrocode}
+% Then we redefine the output routines:
+% \begin{macrocode}
+\let\page@sofar=\adjmc@page@sofar
+% \end{macrocode}
+% and start the standard multicols:
+% \begin{macrocode}
+ \mult@@cols#1[#2]}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\set@mult@vsize}
+% \changes{v1.1}{2013/01/20}{Redefined macro}
+% The formula for |\vsize| in multicols seem to work only for
+% column number above 2. Here we add special case of 1.
+% \begin{macrocode}
+\def\set@mult@vsize#1{%
+ \vsize\@colroom
+ \@tempdima\baselineskip
+ \advance\@tempdima-\topskip
+ \advance\vsize\@tempdima
+ \vsize\col@number\vsize
+ \advance\vsize-\@tempdima
+ \ifnum\col@number>1\relax
+ \advance\vsize\col@number\baselineskip
+ \else
+ \advance\vsize-2\baselineskip
+ \fi
+ #1\advance\vsize
+ \c@collectmore\baselineskip}
+% \end{macrocode}
+% \end{macro}
+%
+%\subsection{Ending Environment}
+%\label{sec:end}
+%
+% \begin{macro}{\endadjmulticols}
+% Here we use the standard environment end. Note that it uses
+% |\@checkend|, so we need to redefine |\@currenvir| to fool the
+% check.
+% \begin{macrocode}
+\def\endadjmulticols{%
+ \def\@currenvir{multicols}%
+ \endmulticols}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%\subsection{Output Routines}
+%\label{sec:output}
+%
+% \begin{macro}{\adjmc@page@sofar@orig}
+% First, we save the original declaration of |\page@sofar|:
+% \begin{macrocode}
+\let\adjmc@page@sofar@orig=\page@sofar
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\adjmc@page@sofar}
+% We redefine |\page@sofar| to change the margins and allow for
+% one-column output:
+% \begin{macrocode}
+\def\adjmc@page@sofar{%
+% \end{macrocode}
+% If we have one column, the standard mechanisms leave empty space
+% instead of the first column. Ok, we use the fact that there is a
+% copy of the first column in |\mult@firstbox|\dots
+% \begin{macrocode}
+ \ifnum\col@number=\@ne
+ \setbox\mult@rightbox\box\mult@firstbox
+ \fi
+% \end{macrocode}
+% We redefine |\multicol@leftmargin| to introduce the shift of the
+% box. We save the old code in |\adjmc@saved@leftmargin|
+% \begin{macrocode}
+ \adjmc@saved@leftmargin=\multicol@leftmargin
+ \if@twoside
+ \ifodd\c@page
+ \advance\multicol@leftmargin by \adjmc@inner\relax
+ \else
+ \advance \multicol@leftmargin by \adjmc@outer\relax
+ \fi
+ \else
+ \advance \multicol@leftmargin by \adjmc@inner\relax
+ \fi
+% \end{macrocode}
+% Then we invoke the original |\page@sofar| and restore the margin:
+% \begin{macrocode}
+ \adjmc@page@sofar@orig
+ \multicol@leftmargin=\adjmc@saved@leftmargin}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%\subsection{Not Balancing Columns}
+%\label{sec:not_balance}
+%
+% The starred versions do not balance the columns.
+%
+% \begin{macro}{\adjmulticols*}
+% This follows the code of the \textsf{multicols} package:
+% \begin{macrocode}
+\newenvironment{adjmulticols*}{%
+ \ifinner
+ \PackageWarning{multicol}%
+ {multicols* inside a box does
+ not make sense.\MessageBreak
+ Going to balance anyway}%
+ \else
+ \let\balance@columns@out
+ \multi@column@out
+ \fi
+ \adjmulticols}{%
+ \vfill
+ \endadjmulticols}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%\subsection{Ending the Style}
+%\label{sec:end}
+%
+%
+%
+% \begin{macrocode}
+%</style>
+% \end{macrocode}
+%\Finale
+%\clearpage
+%
+%\PrintChanges
+%\clearpage
+%\PrintIndex
+%
+\endinput
diff --git a/macros/latex/contrib/adjmulticol/adjmulticol.ins b/macros/latex/contrib/adjmulticol/adjmulticol.ins
new file mode 100644
index 0000000000..21ee6cc73b
--- /dev/null
+++ b/macros/latex/contrib/adjmulticol/adjmulticol.ins
@@ -0,0 +1,31 @@
+%
+% Doctrip file for seqsplit
+% This file is in public domain
+% $Id: adjmulticol.ins,v 2.0 2011-02-22 16:38:54 boris Exp $
+%
+\def\batchfile{adjmulticol.ins}
+\input docstrip
+\keepsilent
+\showprogress
+
+
+\askforoverwritefalse
+
+\generate{%
+ \file{adjmulticol.sty}{\from{adjmulticol.dtx}{style}}}
+
+\obeyspaces
+\Msg{*****************************************************}%
+\Msg{* Congratulations! You successfully generated the *}%
+\Msg{* adjmulticol package. *}%
+\Msg{* *}%
+\Msg{* Please move the file adjmulticol.sty the place *}%
+\Msg{* where LaTeX files are kept in your system. The *}%
+\Msg{* manual is in the file adjmulticol.pdf. *}%
+\Msg{* *}%
+\Msg{* The package is released under LPPL with the *}%
+\Msg{* additional condition inherited from the multicol *}%
+\Msg{* package *}%
+\Msg{* *}%
+\Msg{* Happy TeXing! *}%
+\Msg{*****************************************************}% \ No newline at end of file
diff --git a/macros/latex/contrib/adjmulticol/adjmulticol.pdf b/macros/latex/contrib/adjmulticol/adjmulticol.pdf
new file mode 100644
index 0000000000..0b7277dfff
--- /dev/null
+++ b/macros/latex/contrib/adjmulticol/adjmulticol.pdf
Binary files differ
diff --git a/macros/latex/contrib/adjmulticol/sample.pdf b/macros/latex/contrib/adjmulticol/sample.pdf
new file mode 100644
index 0000000000..b8ef62610a
--- /dev/null
+++ b/macros/latex/contrib/adjmulticol/sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/adjmulticol/sample.tex b/macros/latex/contrib/adjmulticol/sample.tex
new file mode 100644
index 0000000000..3a54bd4ccb
--- /dev/null
+++ b/macros/latex/contrib/adjmulticol/sample.tex
@@ -0,0 +1,31 @@
+\documentclass{book}
+\usepackage{adjmulticol,lipsum}
+\evensidemargin=1.5in
+\oddsidemargin=-3em
+\textwidth=5in
+\begin{document}
+
+\textbf{main body margins, as defined.}
+\marginpar{[marginpar]}
+\lipsum[1-2]
+ \begin{adjmulticols}{1}{12pt}{-2in}
+ \textbf{multicols, 1, 12pt, -2in}
+ \lipsum[3-4]
+\end{adjmulticols}
+\textbf{back main text}
+\marginpar{[marginpar]}
+\lipsum[12-14]
+\marginpar{[marginpar]}
+ \begin{adjmulticols}{2}{12pt}{-2in}
+ \textbf{multicols, 2, 12pt, -2in}
+ \lipsum[6-15]
+\end{adjmulticols}
+\textbf{back main text}
+\marginpar{[marginpar]}
+\lipsum
+\marginpar{[marginpar]}
+ \begin{adjmulticols*}{2}{12pt}{-2in}
+ \textbf{multicols, 2, 12pt, -2in}
+ \lipsum[6-16]
+\end{adjmulticols*}
+\end{document}