From edff6978ed8be78204ec233620efc63086eedf27 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 11 Oct 2009 00:13:29 +0000 Subject: new latex package docmute (10oct09) git-svn-id: svn://tug.org/texlive/trunk@15754 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/docmute/README | 3 + Master/texmf-dist/doc/latex/docmute/docmute.pdf | Bin 0 -> 146598 bytes Master/texmf-dist/source/latex/docmute/docmute.dtx | 202 +++++++++++++++++++++ Master/texmf-dist/source/latex/docmute/docmute.ins | 5 + Master/texmf-dist/tex/latex/docmute/docmute.sty | 38 ++++ Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc | 1 + Master/tlpkg/tlpsrc/docmute.tlpsrc | 0 8 files changed, 250 insertions(+), 1 deletion(-) create mode 100644 Master/texmf-dist/doc/latex/docmute/README create mode 100644 Master/texmf-dist/doc/latex/docmute/docmute.pdf create mode 100644 Master/texmf-dist/source/latex/docmute/docmute.dtx create mode 100644 Master/texmf-dist/source/latex/docmute/docmute.ins create mode 100644 Master/texmf-dist/tex/latex/docmute/docmute.sty create mode 100644 Master/tlpkg/tlpsrc/docmute.tlpsrc (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/docmute/README b/Master/texmf-dist/doc/latex/docmute/README new file mode 100644 index 00000000000..3784915fb38 --- /dev/null +++ b/Master/texmf-dist/doc/latex/docmute/README @@ -0,0 +1,3 @@ +The docmute package enables to input or include standalone +LaTeX documents as if they consisted of only the content +between \begin{document} and \end{document}. diff --git a/Master/texmf-dist/doc/latex/docmute/docmute.pdf b/Master/texmf-dist/doc/latex/docmute/docmute.pdf new file mode 100644 index 00000000000..00c2d7849ab Binary files /dev/null and b/Master/texmf-dist/doc/latex/docmute/docmute.pdf differ diff --git a/Master/texmf-dist/source/latex/docmute/docmute.dtx b/Master/texmf-dist/source/latex/docmute/docmute.dtx new file mode 100644 index 00000000000..cc4a1e0e71b --- /dev/null +++ b/Master/texmf-dist/source/latex/docmute/docmute.dtx @@ -0,0 +1,202 @@ +% \iffalse +%<*internal> +\iffalse +% +% +%<*license> +Copyright (C) 2009 by T.M. Trzeciak + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License (LPPL), either +version 1.3c of this license or (at your option) any later +version. The latest version of this license is in the file: + +http://www.latex-project.org/lppl.txt + +This work is "maintained" (as per LPPL maintenance status) by +T.M. Trzeciak. + +This work consists of the file docmute.dtx +and the derived files docmute.ins, + docmute.pdf + docmute.sty. +% +% +%<*readme> +The docmute package enables to input or include standalone +LaTeX documents as if they consisted of only the content +between \begin{document} and \end{document}. +% +% +%<*internal> +\fi +\begingroup +% +% +%<*batchfile> +\input docstrip.tex +\keepsilent\askforoverwritefalse +\nopreamble\nopostamble +\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}} +% +%\endbatchfile +% +%<*internal> +\generate{\file{\jobname.ins}{\from{\jobname.dtx}{batchfile}}} +\generate{\file{README.TXT}{\from{\jobname.dtx}{readme}}} +\endgroup +% +% \fi +% +% \begin{comment} +% +%<*documentation> +\documentclass{ltxdoc} +\usepackage{verbatim} +\usepackage{docmute} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +%\OnlyDescription +% +\begin{document} + +\GetFileInfo{docmute.sty} +\title{The \textsf{docmute} package% +\thanks{This file describes version \fileversion, last revised \filedate.}} +\author{T.\,M. Trzeciak\thanks{E-mail: \texttt{t34www@googlemail.com}}} +\maketitle + +\section{Intoduction} + +The structure of \LaTeX\ documents doesn't allow one document to be included as a part of another (at least not without some hacking). This package tries to remove this limitation and enable the standard |\input| and |\include| commands to be used on standalone documents just as if they contained no preamble. + +\section{Usage} + +The package is loaded with the usual |\usepackage{docmute}|. It redefines the |\documentclass| command in such a way that everything between this command and the |\begin{document}| is skipped, as well as everything after the |\end{document}|. No attempts are made to analyse the actual content of the preamble. It is up to you to ensure that the main document loads all packages required by subsidiary documents. + +\DescribeMacro{\docmute} +In rare cases some commands might be already present already before the |\documentclass| command. These commands would be then normally executed by the main document. You can prevent that by putting |\csname docmute\endcsname| at the top of the inputted document. The |\docmute| command has the same effect as the redefined |\documentclass|. Executing it through the control sequence forming primitive rather than directly ensures that standalone compilation is still possible. In that case |\csname docmute\endcsname| will have the same effect as |\relax|. + +By default, nesting of inputted documents is not allowed, i.e. inputted documents cannot themselves input other documents. This behaviour can be changed with the package option |nested|. With this option inputted documents are surrounded by a group and nesting becomes possible. Note, that due to grouping only global macro (re)definitions will be visible in the parent document. + +\section{Known limitations} + +The |\documentclass| and/or |\csname docmute\endcsname| command has to be in the same file as |\begin{document}|. This is due to employed preamble gobbling method, which relies on scanning for delimited macro arguments and which doesn't work across the file boundaries. + +\DocInput{\jobname.dtx} + +\end{document} +% +% +% \end{comment} +% +% \StopEventually{} +% +% \section{Implementation} +% +% \iffalse +%<*package> +% \fi +% +% Initial boilerplate code. +% +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{docmute}[2009/10/08 v1.1 Input standalone documents] +% \end{macrocode} +% +% Macro used for comparison to see if we already reached +% |\begin{document}|. +% +% \begin{macrocode} +\def\docmute@docenv{document} +% \end{macrocode} +% +% The main macro of this package. Grab everything before the +% |\begin| command and check what argument was passed to it. +% +% \begin{macrocode} +\long\def\docmute@gobblepreamble#1\begin#2{% + \def\docmute@thisenv{#2}% +% \end{macrocode} +% +% If |\begin{document}| was reached we can stop gobbling, +% otherwise we continue with tail recursive call. +% +% \begin{macrocode} + \ifx\docmute@thisenv\docmute@docenv + \docmute@afterpreamble + \else + \expandafter\docmute@gobblepreamble + \fi +} +% \end{macrocode} +% +% After gobbling stops, |\enddocument| is redefined to stop +% input when it's executed. Excess spaces, if any, are taken +% care of by |\ignorespaces|. +% +% \begin{macrocode} +\def\docmute@afterpreamble{% + \docmute@atbegindoc + \def\enddocument{% + \docmute@atenddoc + \aftergroup\ignorespaces + \endinput + }% + \ignorespaces +} +% \end{macrocode} +% +% Save original definitions of |\document| and |\enddocument| +% +% \begin{macrocode} +\let\docmute@document=\document +\let\docmute@enddocument=\enddocument +% \end{macrocode} +% +% Hooks to implement nesting. +% +% \begin{macrocode} +\let\docmute@atbegindoc=\relax +\def\docmute@atenddoc{% + \let\enddocument=\docmute@enddocument + \begingroup +} +% \end{macrocode} +% +% Define the |\docmute| command +% +% \begin{macrocode} +\let\docmute=\docmute@gobblepreamble +% \end{macrocode} +% +% Redefine the |\documentclass| command at the beginning of +% the document. |\AtBeginDocument| happens to early to be used +% for that, so we need to append directly to the |\document|. +% +% \begin{macrocode} +\def\document{% + \docmute@document + \let\documentclass=\docmute + \ignorespaces +} +% \end{macrocode} +% +% Finally, handle the only option we have and that's it. +% +% \begin{macrocode} +\DeclareOption{nested}{% + \let\docmute@atbegindoc=\begingroup + \let\docmute@atenddoc=\relax +} +\ProcessOptions +\endinput +% \end{macrocode} +% \iffalse +% +% \fi +% +% \Finale + diff --git a/Master/texmf-dist/source/latex/docmute/docmute.ins b/Master/texmf-dist/source/latex/docmute/docmute.ins new file mode 100644 index 00000000000..0c9335da606 --- /dev/null +++ b/Master/texmf-dist/source/latex/docmute/docmute.ins @@ -0,0 +1,5 @@ +\input docstrip.tex +\keepsilent\askforoverwritefalse +\nopreamble\nopostamble +\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}} +\endbatchfile diff --git a/Master/texmf-dist/tex/latex/docmute/docmute.sty b/Master/texmf-dist/tex/latex/docmute/docmute.sty new file mode 100644 index 00000000000..644178c3862 --- /dev/null +++ b/Master/texmf-dist/tex/latex/docmute/docmute.sty @@ -0,0 +1,38 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{docmute}[2009/10/08 v1.1 Input standalone documents] +\def\docmute@docenv{document} +\long\def\docmute@gobblepreamble#1\begin#2{% + \def\docmute@thisenv{#2}% + \ifx\docmute@thisenv\docmute@docenv + \docmute@afterpreamble + \else + \expandafter\docmute@gobblepreamble + \fi +} +\def\docmute@afterpreamble{% + \docmute@atbegindoc + \def\enddocument{% + \docmute@atenddoc + \aftergroup\ignorespaces + \endinput + }% + \ignorespaces +} +\let\docmute@document=\document +\let\docmute@enddocument=\enddocument +\let\docmute@atbegindoc=\relax +\def\docmute@atenddoc{% + \let\enddocument=\docmute@enddocument + \begingroup +} +\let\docmute=\docmute@gobblepreamble +\def\document{% + \docmute@document + \let\documentclass=\docmute + \ignorespaces +} +\DeclareOption{nested}{% + \let\docmute@atbegindoc=\begingroup + \let\docmute@atenddoc=\relax +} +\ProcessOptions diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 16f273513df..68b8fd5280f 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -78,7 +78,7 @@ my @WorkingTLP = qw( dateiliste datetime dcpic decimal dehyph-exptl delimtxt diagmac2 digiconfigs din1505 dinat dingbat directory dirtree disser dk-bib dlfltxb - doc-pictex docmfp doi doipubmed + doc-pictex docmfp docmute doi doipubmed dotarrow dot2texi dottex doublestroke dox dozenal dpfloat dprogress drac draftcopy draftwatermark dramatist dratex drv dtxgallery diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index 01c8c243a98..2856fb23fc6 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -121,6 +121,7 @@ depend directory depend dlfltxb depend dnaseq depend docmfp +depend docmute depend doi depend dotarrow depend dotseqn diff --git a/Master/tlpkg/tlpsrc/docmute.tlpsrc b/Master/tlpkg/tlpsrc/docmute.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d -- cgit v1.2.3