diff options
author | Karl Berry <karl@freefriends.org> | 2008-11-18 00:38:13 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-11-18 00:38:13 +0000 |
commit | 702dcf050b18dfde338853a56a85375afce44ecf (patch) | |
tree | da7bca7d4b70369c3c33130ecf114366528637a5 /Master/texmf-dist/tex/latex/verbatimcopy | |
parent | d6a9cc9e6f60abfffdf4d15ac698a1da38799712 (diff) |
verbatimcopy update (17nov08)
git-svn-id: svn://tug.org/texlive/trunk@11335 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/verbatimcopy')
-rw-r--r-- | Master/texmf-dist/tex/latex/verbatimcopy/verbatimcopy.sty | 269 |
1 files changed, 211 insertions, 58 deletions
diff --git a/Master/texmf-dist/tex/latex/verbatimcopy/verbatimcopy.sty b/Master/texmf-dist/tex/latex/verbatimcopy/verbatimcopy.sty index d495d865bc7..fb2e74157a7 100644 --- a/Master/texmf-dist/tex/latex/verbatimcopy/verbatimcopy.sty +++ b/Master/texmf-dist/tex/latex/verbatimcopy/verbatimcopy.sty @@ -1,78 +1,231 @@ -\ProvidesPackage{verbatimcopy}[2007/05/10 v0.03 by Lars Madsen] +\ProvidesPackage{verbatimcopy}[2008/11/17 v0.06 by Lars Madsen and Ulrich Diez] - -% This package be distributed and/or modified under the +%% This package 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". -%% -%% The Current Maintainer of this work is Lars Madsen (daleif@imf.au.dk). %% - +%% The Current Maintainer of this work is Lars Madsen <daleif@imf.au.dk> +%% +%% Package code: Ulrich Diez <eu_angelion@web.de> +%% Packing and user documentation: Lars Madsen <daleif@imf.au.dk> +%% +%% +%% The implementation is as is, any questions about the implementaion +%% of this package should preferably be send to Ulrich Diez via the +%% email above. +%% +%% For usage information see the user manual +% \RequirePackage{verbatim} - - -% addition by Ulrich Diez, automatically adds a trailing / -\@ifdefinable\@setOutputDir{% - \def\@setOutputDir#1/\@nil#2\@nil/{% - \ifx\@nil#2\@nil - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi +% +% Directory-separator usually is slash. +% +\newcommand\VC@slash{/}% +\@onelevel@sanitize\VC@slash +% +% Enquote file-names with quotes. +% +\newcommand\VC@quote{"}% +\@onelevel@sanitize\VC@quote +% +\newcommand*\VC@@quote{}% +% +\newcommand*\VC@outputdir{}% +% +\begingroup +\long\def\@@setOutputDir#1{% + \endgroup + % + %\@@setOutputDir automatically adds a trailing / + % + \@ifdefinable\@@setOutputDir{% + \long\def\@@setOutputDir##1#1\@nil##2\@nil#1{% + \ifx\@nil##2\@nil + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + }% + }% + \newcommand\setOutputDir[1]{% + \@bsphack + \@@setOutputDir##1\@nil#1\@nil\@nil#1% + {\def\VC@outputdir{##1#1}}% + {\def\VC@outputdir{##1}}% + \@esphack }% }% -\newcommand\setOutputDir[1]{% - \@setOutputDir#1\@nil/\@nil\@nil/% - {\def\VC@outputdir{#1/}}% - {\def\VC@outputdir{#1}}% -}% - +\expandafter\@@setOutputDir\expandafter{\VC@slash}% +% % memoir defines this one, verbatim does not +% \@ifundefined{verbatim@out}{\newwrite\verbatim@out}{} - - -% the following is basically based on an idea +% +% the following is basically based on an idea % by Ulrich Diez on comp.text.tex -% (http://groups.google.com/group/comp.text.tex/msg/153e3dc7a8d0e548?hl=en&) - +% (http://groups.google.com/group/comp.text.tex/msg/153e3dc7a8d0e548?hl=en&) +% % be very carefull, this will overwrite without asking - +% % the idea is simply to mess with \verbatiminput such that it write % instead of read +% \newcommand*\VerbatimCopy[2]{% {from file}{to file} - \edef\VC@target{\VC@outputdir#2}% - \@bsphack - \IfFileExists{#1}% - {% - \bgroup - \def\@verbatim{% - \obeylines - \let\do\@makeother - \dospecials - }% - \let\endtrivlist\relax - \def\verbatim@processline{% - \immediate\write\verbatim@out{\the\verbatim@line}% - }% - \immediate\openout\verbatim@out\VC@target\relax - \verbatiminput{#1}% - \immediate\closeout\verbatim@out% - \egroup% - }% - {% - \PackageError{verbatimcopy}% - {Source-file cannot be found}% - {% - For copying source-file to target-file it would be nice to - have the source-file available.% - }% - }% - \@esphack + \@bsphack + \expandafter\def\expandafter\VC@target\expandafter{\VC@outputdir#2}% + \IfFileExists{\VC@@quote#1\VC@@quote}% + {% + \bgroup + \def\@verbatim{% + \obeylines + \let\do\@makeother + \dospecials + }% + \let\endtrivlist\relax + \def\verbatim@processline{% + \immediate\write\verbatim@out{\the\verbatim@line}% + }% + \immediate\openout\verbatim@out\VC@@quote\VC@target\VC@@quote\relax + \verbatiminput{\VC@@quote#1\VC@@quote}% + \immediate\closeout\verbatim@out% + \egroup% + }% + {% + \PackageError{verbatimcopy}% + {Source-file cannot be found}% + {% + For copying source-file to target-file it would be nice to + have the source-file available.% + }% + }% + \@esphack }% - +% +% Copy the original user-level-macros. +% +\@ifdefinable\OldVerbatimCopy{% + \let\OldVerbatimCopy\VerbatimCopy +}% +\@ifdefinable\OldsetOutputDir{% + \let\OldsetOutputDir\setOutputDir +}% +% +% Implement stuff for reading arguments "verbatim": +% +% Syntax of \VCverbaction: +% +% \VCverbaction{<Mandatory 1>}{<Mandatory 2>}<verbatim-Arg> +% +% yields: +% +% <Mandatory 1>{<Mandatory2>{<verbatim-Arg>}} +% +% The Mandatory-Arguments are mandatory. If they consist of several +% tokens, they must be nested into catcode-1/2-character-pair / braces. +% If reading is necessary, they will be read under normal catcode- +% conditions. +% The verbatim-Arg is also mandatory. It will be read under +% verbatim-catcode-conditions. If its first character is a brace, +% it will be "assumed" that the argument is nested into braces. +% Otherwise it will be assumed, that the argument is delimited +% by the first character - like the argument of \verb. +% +% Empty-lines will not be ignored. +% +% By nesting calls to \VCverbaction within \VCverbaction's first +% argument, you can collect "verbatim-arguments" within its second +% argument. +% +% E.g., +% +% \VCverbaction{\VCverbaction{\VCverbaction{\action}}}% <- Mandatory 1 +% {}% <- Mandatory 2 is empty! +% <verbatim-Arg1><verbatim-Arg2><verbatim-Arg3> +% +% yields: +% +% \VCverbaction{\VCverbaction{\action}}% <- Mandatory 1 +% {<verbatim-Arg1>}% <- Mandatory 2 +% <verbatim-Arg2><verbatim-Arg3> +% +% yields: +% +% \VCverbaction{\action}% <- Mandatory 1 +% {{<verbatim-Arg1>}{<verbatim-Arg2>}}% <- Mandatory 2 +% <verbatim-Arg3> +% +% yields: +% +% \action{{<verbatim-Arg1>}{<verbatim-Arg2>}{<verbatim-Arg3>}} +% +\newcommand\VCverbaction[2]{% + \@bsphack + \begingroup + \let\do\@makeother\dospecials + \catcode`\{=1 % + \catcode`\ =10 % + \@ifnextchar\bgroup + {\catcode`\}=2 \@@VCverbaction{#1}{#2}}% + {\do\{\@VCverbaction{#1}{#2}}% +}% +\newcommand\@VCverbaction[3]{% + \do\ % + \catcode`\^^M=14 % + \long\def\@tempb##1#3{% + \def\@tempb{##1}% + \@onelevel@sanitize\@tempb + \expandafter\@@@VCverbaction\expandafter{\@tempb}{#1}{#2}% + }% + \@tempb +}% +\newcommand\@@VCverbaction[2]{% + \do\ % + \catcode`\^^M=14 % + \long\def\@tempb##1{% + \def\@tempb{##1}% + \@onelevel@sanitize\@tempb + \expandafter\@@@VCverbaction\expandafter{\@tempb}{#1}{#2}% + }% + \@tempb +}% +\newcommand\@@@VCverbaction[3]{% + \endgroup + \@esphack + #2{#3{#1}}% +}% +% +% +\DeclareOption{compatibility}{\endinput} +\DeclareOption{enquotefilenames}{\let\VC@@quote=\VC@quote} +\ProcessOptions\relax +% +% If compatibility-option is provided, then package-loading is done +% and loading finishes via \endinput. +% +% Otherwise have the copies called when a nesting-chain of \VCverbaction +% has read and collected all the arguments needed for the copies +% "verbatimly". +% +\outer\def\VerbatimCopy{% + \@bsphack + \VCverbaction{% + \VCverbaction{% + \expandafter\@esphack\expandafter\OldVerbatimCopy\@firstofone + }% + }{}% +}% +% +\outer\def\setOutputDir{% + \@bsphack + \VCverbaction{% + \expandafter\@esphack\expandafter\OldsetOutputDir\@firstofone + }{}% +}% +% +\endinput |