summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/bezos
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/bezos')
-rw-r--r--Master/texmf-dist/tex/latex/bezos/subdocs.sty152
1 files changed, 152 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/bezos/subdocs.sty b/Master/texmf-dist/tex/latex/bezos/subdocs.sty
new file mode 100644
index 00000000000..374fab2a182
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/bezos/subdocs.sty
@@ -0,0 +1,152 @@
+% +--------------------------------------------------+
+% | Documentation in clear text follows |
+% +--------------------------------------------------+
+%
+%% Copyright (C) 2009 Javier Bezos
+%% All Rights Reserved
+%% http://www.tex-tipografia.com
+%%
+%% 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 2003/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Javier Bezos.
+%%
+%% This work consists of this file.
+%
+% Usage
+% ~~~~~
+%
+% This is a tentative package aiming to provide a different approach
+% for multidocument works (mainly, books with a document per chapter).
+% Unlike the \include mechanism, every subdocument is a complete LaTeX
+% document and can be typeset separately. What the package does is
+% sharing the aux files. It's still an alpha version, and no attempt
+% has been done yet to make it to work with, say, hyperref.
+%
+% This approach has the following advantages:
+% 1) Packages can be loaded just when a part requires them.
+% 2) Generated pdf/dvi/ps files are kept.
+%
+% You need a driver tex file containing a \subdocuments command
+% listing the files. With an optional argument you can set
+% its behaviour:
+%
+% \subdocuments[clear=double]{file1, file2, file3}
+%
+% The option clear=double adds an empty page at the end to give a even
+% number of pages. clear=single doesn't and it's the default. Spaces
+% and new lines before and after commas are ignored, as well as empty
+% items. It relies on the keyval package, so names containing = must
+% be given within braces.
+%
+% This file can be used as a shared preample, with common settings
+% for all the documents.
+%
+% Documents must have the folowing line:
+%
+% \usepackage[master]{subdocs}
+%
+% where master is the name of the file described above.
+%
+% Since every subdocument reads all the aux files, \tableofcontents
+% may be used where desired.
+%
+% Code
+% ~~~~
+
+\ProvidesPackage{subdocs}[2009/06/12 v0.1 Subdocuments]
+
+\RequirePackage{keyval}
+
+% Los dos siguientes son lo encargados de hacer lo que
+% normalmente hace \include.
+
+\AtBeginDocument{%
+ \if@filesw
+ \immediate\write\@auxout{\noexpand\sdoc@readaux}%
+ \fi}
+
+% At end of document we write the counters using writeckpt
+% but with \@partaux redirected to \@auxout. Like \include
+% there is a \clearpage
+
+\AtEndDocument{%
+ \sdoc@clear
+ \let\@partaux\@auxout
+ \@writeckpt{\jobname}}
+
+\def\@wckptelt#1{%
+ \immediate\write\@partaux{%
+ \string\sdoc@setcounter{#1}{\the\@nameuse{c@#1}}}}
+
+\def\sdoc@setcounter#1{%
+ \@ifundefined{c@#1}%
+ {\@gobble}%
+ {\setcounter{#1}}}
+
+% Optional arguments
+
+\def\sdoc@opt@clearsingle{\let\sdoc@clear\clearpage}
+\def\sdoc@opt@cleardouble{\let\sdoc@clear\cleardoublepage}
+\sdoc@opt@clearsingle
+
+\define@key{sdoc@options}{clear}{\@nameuse{sdoc@opt@clear#1}}
+
+%
+
+\let\sdoc@loadaux\@empty
+
+\newcommand\subdocuments[2][]{%
+ \let\sdoc@save@kverrx\KV@errx
+ \def\KV@errx##1{% \@tempa contains the file name
+ {\let\sdoc@elt\relax % local
+ \edef\sdoc@a{\expandafter\strip@prefix\meaning\@tempa}%
+ \protected@xdef\sdoc@loadaux{\sdoc@loadaux\sdoc@elt{\sdoc@a}}}}%
+ \setkeys{sdoc@files}{#2}%
+ \let\KV@errx\sdoc@save@kverrx
+ \setkeys{sdoc@options}{#1}}
+
+% A "recursive" call. When a \jobname.aux file is
+% read the first thing is (or should be) \sdoc@readaux.
+% It reads all the aux files, and exits from the current
+% aux without further reading because it is already read.
+% This requires a file could \input itself, but, does
+% that work in all distributions?
+
+\def\sdoc@elt#1{%
+ \InputIfFileExists{#1.aux}{}%
+ {\PackageWarningNoLine{subdocs}{No file #1.aux -- Data may be wrong}}%
+ \sdoc@setcp{#1}}%
+
+\def\sdoc@readaux{%
+ \global\let\sdoc@readaux\relax
+ \sdoc@loadaux
+ \global\let\sdoc@readaux\sdoc@readaux@x
+ \endinput}
+
+\let\sdoc@readaux@x\sdoc@readaux
+
+\def\sdoc@setcp#1{%
+ \def\sdoc@a{#1}\edef\sdoc@b{\jobname}%
+ \ifx\sdoc@a\sdoc@b
+ \PackageInfo{subdocs}{Ignoring counters from #1 on, }%
+ \global\let\sdoc@setcp\@gobble
+ \else
+ \csname cp@#1\endcsname
+ \fi}
+
+% The master file name must be saved because it may contain
+% \usepackage's, not allowed before \ProcessOptions.
+
+\DeclareOption*{\edef\sdoc@a{\CurrentOption}}
+\ProcessOptions
+\InputIfFileExists{\sdoc@a}{}{}%
+
+\endinput \ No newline at end of file