%% %% This is file `cprotect.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% cprotect.dtx (with options: `package') %% ---------------------------------------------------------------- %% cprotect --- verbatim in macro arguments %% E-mail: bruno@le-floch.fr %% Released under the LaTeX Project Public License v1.3c or later %% See http://www.latex-project.org/lppl.txt %% ---------------------------------------------------------------- %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{cprotect}[2010/12/30 v1.0 (Bruno Le Floch)] \RequirePackage{ifthen} \RequirePackage{suffix} \newwrite\CPT@WriteOut \newcounter{CPT@WriteCount} \newcommand{\CPT@Write}[1]{% \stepcounter{CPT@WriteCount}% \immediate\openout\CPT@WriteOut=\jobname-% \arabic{CPT@WriteCount}.cpt% \newlinechar`\^^M% \immediate\write\CPT@WriteOut{#1}% \immediate\closeout\CPT@WriteOut% \aftergroup\CPT@setLastFileName% } \newcommand{\CPT@setLastFileName}{% \def\CPT@lastFileName{\jobname-\arabic{CPT@WriteCount}.cpt}} \newcommand{\CPT@input@last}{% \expandafter\protect\expandafter\input \expandafter{\CPT@lastFileName}} \newcommand{\makeallletters}{% \count0=0\relax % \loop % \catcode\count0=11\relax % \advance\count0 by 1\relax % \ifnum\count0<256 % \repeat % } \newcommand\ReadVerbatimUntil[2][]{% \def\CPT@commandatend{#2}% \begingroup #1% \makeallletters% \CPT@setup} \WithSuffix\newcommand\ReadVerbatimUntil*[2][]{% \def\CPT@commandatend{#2}% \begingroup #1% \makeallletters% \CPT@starsetup} \newcommand{\CPT@def}[2]{\expandafter\def\expandafter#1% \expandafter##\expandafter1#2} \newcommand{\CPT@setup}[1]{% \def\CPT@delimiter{#1}% \CPT@def\CPT@readPreText\CPT@delimiter{% \def\CPT@preText{##1}\CPT@readPostText}% \CPT@def\CPT@readPostText\CPT@delimiter{% \def\CPT@postText{##1}\CPT@readBegin}% \CPT@def\CPT@readBegin\CPT@delimiter{% \def\CPT@begin{##1}\CPT@readEnd}% \CPT@def\CPT@readEnd\CPT@delimiter{% \def\CPT@end{##1}\CPT@readContent}% \CPT@readPreText% } \newcommand{\CPT@starsetup}[1]{\CPT@setup#1#1#1} \def\CPT@qend{\CPT@qend} \newcounter{CPT@numB} \newcommand{\CPT@store}[1]{\edef\CPT@storage{\CPT@storage#1}} \newcommand{\CPT@readContent}{% \CPT@def\CPT@gobbleOneB\CPT@begin##2{% \ifx\CPT@qend##2\CPT@store{##1}\addtocounter{CPT@numB}{-1}% \else\CPT@store{##1\CPT@begin}\stepcounter{CPT@numB}% \expandafter\CPT@gobbleOneB\expandafter##2\fi}% % \CPT@def\CPT@gobbleUntilE\CPT@end{% \edef\CPT@tempi{##1\CPT@begin}% \expandafter\CPT@gobbleOneB\CPT@tempi\CPT@qend% \ifthenelse{\value{CPT@numB}<0}{% \CPT@store{\CPT@postText}% \CPT@Write{\CPT@storage}\endgroup% \CPT@commandatend% }{% \CPT@store{\CPT@end}\CPT@gobbleUntilE% }% }% \setcounter{CPT@numB}{0}% \def\CPT@storage{\CPT@preText}% \CPT@gobbleUntilE% } \newcommand{\cprotect}[1]{\def\CPT@cs{#1}% \afterassignment\CPT@A\let\CPT@next} \begingroup \catcode`\{=11 \catcode`\}=11 \catcode`\+=11 \catcode`\(=1 \catcode`\)=2 \gdef\CPT@A(% \ifx\CPT@next\bgroup% \expandafter\CPT@n{% \else% \expandafter\CPT@N% \fi) \gdef\CPT@n{(\ReadVerbatimUntil*(% \CPT@cs(\CPT@input@last))+{+}+)% \gdef\CPT@N(\expandafter\CPT@n{\CPT@next })% \endgroup \newcommand{\cMakeRobust}[1]{% \def\CPT@cs@name{\expandafter\@gobble\string#1}% \expandafter\let\csname CPT@old@\CPT@cs@name\endcsname #1% \expandafter\def\csname\CPT@cs@name\endcsname{% \expandafter\cprotect\csname CPT@old@\CPT@cs@name\endcsname}% } \newcommand{\CPTbegin}[1]{% \def\CPT@commandatend{\begin{#1}\CPT@input@last\end{#1}}% \begingroup% \CPT@env@setup{#1}% \makeallletters% \CPT@readContent% } \begingroup\catcode`\/=0 /begingroup/catcode`/\=11 /catcode`/{=11 /catcode`/}=11 /catcode`/-=11 /catcode`/(=1 /catcode`/)=2 /gdef/CPT@env@setup#1(% /def/CPT@preText(\relax )% /def/CPT@postText(\relax )% /def/CPT@begin(\begin{#1})% /def/CPT@end(\end{#1})% ) /endgroup \endgroup \def\cprotEnv\begin{\CPTbegin} %% %% Copyright (C) 2010 by Bruno Le Floch %% %% 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 %% Bruno Le Floch. %% %% This work consists of the file cprotect.dtx %% and the derived files cprotect.ins, %% cprotect.pdf and %% cprotect.sty. %% %% %% End of file `cprotect.sty'.