From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/minidocument/Makefile | 33 +++ macros/latex/contrib/minidocument/README | 24 ++ macros/latex/contrib/minidocument/minidocument.dtx | 305 +++++++++++++++++++++ macros/latex/contrib/minidocument/minidocument.ins | 25 ++ macros/latex/contrib/minidocument/minidocument.pdf | Bin 0 -> 187597 bytes 5 files changed, 387 insertions(+) create mode 100644 macros/latex/contrib/minidocument/Makefile create mode 100644 macros/latex/contrib/minidocument/README create mode 100644 macros/latex/contrib/minidocument/minidocument.dtx create mode 100644 macros/latex/contrib/minidocument/minidocument.ins create mode 100644 macros/latex/contrib/minidocument/minidocument.pdf (limited to 'macros/latex/contrib/minidocument') diff --git a/macros/latex/contrib/minidocument/Makefile b/macros/latex/contrib/minidocument/Makefile new file mode 100644 index 0000000000..7ed82aab4f --- /dev/null +++ b/macros/latex/contrib/minidocument/Makefile @@ -0,0 +1,33 @@ + +PACKAGE := minidocument + +TEXMFDIST:=$(shell kpsewhich -var-value TEXMFDIST) + +all: sty doc + +sty: $(PACKAGE).sty +$(PACKAGE).sty: $(PACKAGE).dtx $(PACKAGE).ins + pdflatex ${PACKAGE}.ins + +doc: $(PACKAGE).pdf +$(PACKAGE).pdf: $(PACKAGE).dtx + pdflatex ${PACKAGE}.dtx + makeindex -s gind.ist -o $(PACKAGE).ind $(PACKAGE).idx + makeindex -s gglo.ist -o $(PACKAGE).gls $(PACKAGE).glo + pdflatex ${PACKAGE}.dtx + pdflatex ${PACKAGE}.dtx + +install: $(PACKAGE).dtx $(PACKAGE).ins $(PACKAGE).sty README $(PACKAGE).pdf + install -m 755 -d $(TEXMFDIST)/source/latex/$(PACKAGE) + install -m 644 -t $(TEXMFDIST)/source/latex/$(PACKAGE) $(PACKAGE).dtx + install -m 644 -t $(TEXMFDIST)/source/latex/$(PACKAGE) $(PACKAGE).ins + install -m 755 -d $(TEXMFDIST)/tex/latex/$(PACKAGE) + install -m 644 -t $(TEXMFDIST)/tex/latex/$(PACKAGE) $(PACKAGE).sty + install -m 755 -d $(TEXMFDIST)/doc/latex/$(PACKAGE) + install -m 644 -t $(TEXMFDIST)/doc/latex/$(PACKAGE) README + install -m 644 -t $(TEXMFDIST)/doc/latex/$(PACKAGE) $(PACKAGE).pdf + +dist: $(PACKAGE).tar.gz +$(PACKAGE).tar.gz: Makefile README $(PACKAGE).dtx $(PACKAGE).ins $(PACKAGE).pdf + tar -cjf $@ --transform "s#^#$(PACKAGE)/#" $^ + diff --git a/macros/latex/contrib/minidocument/README b/macros/latex/contrib/minidocument/README new file mode 100644 index 0000000000..00fe2c3b08 --- /dev/null +++ b/macros/latex/contrib/minidocument/README @@ -0,0 +1,24 @@ + +minidocument +------------ + +The minidocument package is used to create miniature documents inside +other documents. + +Copyright 2017 Maurice Leclaire + +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 this license is in: + + http://www.latex-project.org/lppl.txt + +and version 1.3 or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +This work has the LPPL maintenance status `author-maintained'. + +This work consists of the files minidocument.dtx and minidocument.ins +and the derived file minidocument.sty. + diff --git a/macros/latex/contrib/minidocument/minidocument.dtx b/macros/latex/contrib/minidocument/minidocument.dtx new file mode 100644 index 0000000000..4041babb00 --- /dev/null +++ b/macros/latex/contrib/minidocument/minidocument.dtx @@ -0,0 +1,305 @@ +% \iffalse meta-comment +% +% Copyright 2017 Maurice Leclaire +% +% 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 this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `author-maintained'. +% +% This work consists of the files minidocument.dtx and minidocument.ins +% and the derived file minidocument.sty. +% +% \fi +% +% \iffalse +%\NeedsTeXFormat{LaTeX2e} +%\ProvidesPackage{minidocument}[2017/04/11 v1.0 Mini Documents] +% +%<*driver> +\documentclass{ltxdoc} +\CheckSum{109} +\usepackage{minidocument} +\usepackage{blindtext} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} +\DocInput{minidocument.dtx} +\end{document} +% +% \fi +% +% \changes{v1.0}{2017/01/26}{Initial version} +% +% \GetFileInfo{minidocument.sty} +% +% %\DoNotIndex{\def,\let,\global,\long,\expandafter} +% %\DoNotIndex{\csname,\endcsname,\advance,\string} +% %\DoNotIndex{\if,\else,\fi,\ifdim,\ifodd,\ifvoid,\ifcsname,\@ifnextchar} +% %\DoNotIndex{\chardef,\count,\dimen,\skip,\box,\setbox,\lastbox,\copy} +% %\DoNotIndex{\hbox,\vbox,\unhbox,\unvbox,\hskip,\vskip,\hss,\hrule,\vfill} +% %\DoNotIndex{\the,\ht,\dp,\@ne,\z@,\maxdimen} +% +% \title{The \textsf{minidocument} package} +% \author{Maurice Leclaire\\\texttt{leclaire@in.tum.de}} +% \date{\fileversion\ -- \filedate} +% \maketitle +% +% \begin{abstract} +% The \textsf{minidocument} package is used to create miniature documents inside +% other documents as can be seen in Figure~\ref{fig:example}. +% \end{abstract} +% +% \begin{minidocument} +% \def\minidocumentscale{0.25} +% \title{The \textsf{minidocument} package} +% \author{Maurice Leclaire\\\texttt{leclaire@in.tum.de}} +% \date{\fileversion\ -- \filedate} +% \maketitle +% \Blindtext +% \end{minidocument} +% +% \begin{figure}[!htb] +% \begin{center} +% \lastminidocument +% \end{center} +% \caption{A minidocument example} +% \label{fig:example} +% \end{figure} +% +% \tableofcontents +% +% \section{Usage} +% +% \DescribeEnv{minidocument} +% A minidocument is created with the \verb|minidocument| environment. +% The \verb|page| counter is set to one at the beginning of a minidocument and +% restored afterwards. +% It is important, that this environment is placed in outer vertical mode. +% Otherwise, it will not work properly. +% However, it is of course possible to place the resulting minidocument +% everywhere. Therefore, the environment itself does not output anything. The +% example minidocument in Figure~\ref{fig:example} is defined as: +% \begin{quote} +% \begin{verbatim} +%\begin{minidocument} +% \maketitle +% \Blindtext +%\end{minidocument} +% \end{verbatim} +% \end{quote} +% +% \noindent +% \DescribeMacro{\lastminidocument} +% To output the minidocument, the command \verb|\lastminidocument| is used, +% e.\,g.: +% \begin{quote} +% \begin{verbatim} +%\begin{figure} +% \lastminidocument +%\end{figure} +% \end{verbatim} +% \end{quote} +% +% \noindent +% \DescribeMacro{\minidocumentscale} +% By default, the minidocument is scaled down with \verb|\minidocumentscale|, +% which defaults to 0.333. This can be changed with e.\,g. +% \begin{quote} +% \verb|\def\minidocumentscale{0.25}| +% \end{quote} +% as it is done in this documentation. +% +% \noindent +% \DescribeMacro{\minidocumentshipout} +% The macro \verb|\minidocumentshipout| is called for every page in the +% minidocument. It takes a single argument containing the page and is +% responsible for postprocessing it. It can be redefined to obtain a different +% look. The default is defined as +% \begin{quote} +% \verb|\scalebox{\minidocumentscale}{\frame{#1}}| +% \end{quote} +% +% \StopEventually{ +% \begin{thebibliography}{1} +% \raggedright +% \bibitem{atbegshi} +% Heiko Oberdiek. +% \newblock The \textsf{atbegshi} package. +% \newblock \textsc{ctan}: \url{http://ctan.org/pkg/atbegshi} +% \end{thebibliography} +% \PrintChanges +% \setcounter{IndexColumns}{2} +% \PrintIndex +% } +% +% \section{Implementation} +% +% The \verb|graphics| package is required for \verb|\scalebox|. +% \begin{macrocode} +\RequirePackage{graphics} +% \end{macrocode} +% +% \begin{macro}{\minidocument@box} +% We allocate a box register for temporary storage. +% \begin{macrocode} +\newbox\minidocument@box +% \end{macrocode} +% \end{macro} +% \begin{macro}{\minidocument@aggrbox} +% The following box will aggregate the minidocument. +% \begin{macrocode} +\newbox\minidocument@aggrbox +% \end{macrocode} +% \end{macro} +% \begin{macro}{\minidocument@hold} +% This box is used to store the current vertical list when entering the +% minidocument. +% \begin{macrocode} +\newbox\minidocument@hold +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\minidocument@orig@output} +% We need a token register to store the output routine. +% \begin{macrocode} +\newtoks\minidocument@orig@output +% \end{macrocode} +% \end{macro} +% +% \noindent +% The following method of overloading the shipout procedure is borrowed from +% the \textsf{atbegshi} package\cite{atbegshi} where it is explained in detail. +% The problem we face here is that \verb|\shipout| can be called with many +% different box specifications which can not be catched as macro arguments. +% Therefore, we use \verb|\setbox| to get the box specification and +% \verb|\afterassignment| to execute the code that handles the box. However, +% for direct box specifications the code specified via \verb|\afterassignment| +% is not executed after the box specification is finished but directly at the +% beginning of the box. Therefore, we need an additional \verb|\aftergroup| in +% the case of a direct box. We only have to determine if we are at the +% beginning of a direct box. We can do this by inspecting \verb|\lastkern| as +% it is zero at the beginning of a box. +% +% \begin{macro}{\minidocument@shipout} +% This macro is the entry point of our shipout procedure. Inside a new group we +% assign and start a new box with a specified kerning. This box is only +% temporary and gives us a reliable environment. We install the +% \verb|\afterassignment| hook and assign the passed box to a box register. This +% assignment is global as it must survive the group while the temporary box +% which is assigned to the same box register is lost. +% \begin{macrocode} +\def\minidocument@shipout{% + \begingroup\setbox\minidocument@box\hbox\bgroup\kern\p@% + \afterassignment\minidocument@testshipout% + \global\setbox\minidocument@box% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\minidocument@testshipout} +% The following macro is called by \verb|\afterassignment|. It checks via +% \verb|\lastkern| if it is called at the beginning of a box. In this case an +% \verb|\aftergroup| is inserted. Either way, when the box is finished the next +% macro is called. +% \begin{macrocode} +\def\minidocument@testshipout{% + \ifdim\lastkern=\z@% + \expandafter\aftergroup% + \fi% + \minidocument@makeshipout% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\minidocument@makeshipout} +% This macro ends the temporary box and the group. We now have the passed box +% in the box register. If the box register is not void, we do the virtual +% shipout. Therefore, we position the box at the right place of a page. +% Afterwards, we call \verb|\minidocumentshipout| to postprocess the page. We +% then add the page to the aggregation box. +% \begin{macrocode} +\def\minidocument@makeshipout{% + \egroup\endgroup% + \ifvoid\minidocument@box\else% + \global\setbox\minidocument@box\vbox to \paperheight { + \vskip1in% + \hbox to \paperwidth { + \hskip1in% + \box\minidocument@box% + \hfill + }% + \vfill + }% + \global\setbox\minidocument@aggrbox\hbox{\unhbox\minidocument@aggrbox% + \minidocumentshipout{\box\minidocument@box}% + \hskip0pt% + }% + \fi% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{minidocument} +% The \verb|minidocument| environment first saves the current vertical list. +% Therefore, the output routine is changed and a page break is enforced. Then, +% the shipout procedure is switched and the page counter is set to one. At the +% end of the environment, the shipout procedure and the page number are +% restored. Afterwards, the saved vertical list is reinserted. +% \begin{macrocode} +\newenvironment{minidocument}{% + \minidocument@orig@output\output% + \output{\global\setbox\minidocument@hold\box\@cclv}% + \penalty-\@Mi% + \output\minidocument@orig@output% + \let\minidocument@orig@shipout\shipout% + \let\shipout\minidocument@shipout% + \edef\minidocument@page{\the\c@page}% + \c@page\@ne% +}{% + \clearpage% + \let\shipout\minidocument@orig@shipout% + \global\c@page\minidocument@page% + \unvbox\minidocument@hold% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\lastminidocument} +% The macro \verb|\lastminidocument| unboxes the aggregated minidocument so +% that it can flow into the main document. +% \begin{macrocode} +\def\lastminidocument{% + \unhbox\minidocument@aggrbox\unskip% +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\minidocumentscale} +% We set the default scale factor to $1/3$, so that two pages can fit next to +% each other on a page with appropriate margins. +% \begin{macrocode} +\def\minidocumentscale{0.333} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\minidocumentshipout} +% The default \verb|\minidocumentshipout| draws a frame around the page and +% scales the page with \verb|\minidocumentscale|. +% \begin{macrocode} +\newcommand{\minidocumentshipout}[1]{% + \scalebox{\minidocumentscale}{\frame{#1}}% +} +% \end{macrocode} +% \end{macro} +% +% \iffalse +\endinput +% \fi +% +% \Finale diff --git a/macros/latex/contrib/minidocument/minidocument.ins b/macros/latex/contrib/minidocument/minidocument.ins new file mode 100644 index 0000000000..a9528ae084 --- /dev/null +++ b/macros/latex/contrib/minidocument/minidocument.ins @@ -0,0 +1,25 @@ +\input docstrip.tex +\keepsilent +\usedir{tex/latex/minidocument} +\preamble + +Copyright 2017 Maurice Leclaire + +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 this license is in: + + http://www.latex-project.org/lppl.txt + +and version 1.3 or later is part of all distributions of LaTeX +version 2005/12/01 or later. + +This work has the LPPL maintenance status `author-maintained'. + +This work consists of the files minidocument.dtx and minidocument.ins +and the derived file minidocument.sty. + +\endpreamble +\generate{\file{minidocument.sty}{\from{minidocument.dtx}{package}}} +\endbatchfile diff --git a/macros/latex/contrib/minidocument/minidocument.pdf b/macros/latex/contrib/minidocument/minidocument.pdf new file mode 100644 index 0000000000..193c5a78e4 Binary files /dev/null and b/macros/latex/contrib/minidocument/minidocument.pdf differ -- cgit v1.2.3