From c8570fd6aff117b8caeec3dcc0039161c6e85049 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 25 Jul 2011 21:54:21 +0000 Subject: newverbs (25jul11) git-svn-id: svn://tug.org/texlive/trunk@23220 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/newverbs/newverbs.sty | 270 +++++++++++++++++++--- 1 file changed, 235 insertions(+), 35 deletions(-) (limited to 'Master/texmf-dist/tex/latex/newverbs') diff --git a/Master/texmf-dist/tex/latex/newverbs/newverbs.sty b/Master/texmf-dist/tex/latex/newverbs/newverbs.sty index 4c856f47d88..5097031b1b8 100644 --- a/Master/texmf-dist/tex/latex/newverbs/newverbs.sty +++ b/Master/texmf-dist/tex/latex/newverbs/newverbs.sty @@ -1,70 +1,101 @@ -%% -%% This is file `newverbs.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% newverbs.dtx (with options: `package') -%% -%% Copyright (c) 2010-2011 by Martin Scharrer -%% WWW: http://latex.scharrer-online.de/ -%% -%% 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 `maintained'. -%% -%% The Current Maintainer of this work is Martin Scharrer. -%% -%% This work consists of the files newverbs.dtx and newverbs.ins -%% and the derived file newverbs.sty. -%% -%% $Id: newverbs.dtx 2161 2011-02-16 16:19:38Z martin $ -\ProvidesPackage{newverbs} - [2011/02/16 v1.2 Define new 'verb' commands and short verb. characters] +% \begin{macrocode} +\ProvidesPackage{newverbs}[2011/02/16 v1.2 Define new 'verb' commands and short verb. characters] +% \end{macrocode} +% +% \subsection{Verb Definition Commands} +% +% \begin{macro}{\newverbcommand} +% \begin{macro}{\renewverbcommand} +% \begin{macro}{\provideverbcommand} +% This macro calls the real macro with the to be used definition macro. +% \begin{macrocode} \newcommand*\newverbcommand{\new@verbcommand\newcommand} \newcommand*\renewverbcommand{\new@verbcommand\renewcommand} \newcommand*\provideverbcommand{\new@verbcommand\providecommand} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\new@verbcommand}[4]{underlying definition macro}{macro to define}{code before}{code after} +% The trailing code is inserted by patching \cs{verb@egroup} which is called by \cs{verb} +% after the verbatim content. +% \begin{macrocode} \def\new@verbcommand#1#2#3#4{% #1*#2{% \begingroup \newverbcommand@settings \def\verb@egroup{\verb@orig@egroup#4\endgroup}% - \def\newverbs@txend{#4\endgroup} + \def\newverbs@txend{#4\endgroup}% #3\verb }% } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newverbs@tabularxsupport} +% Enables support for the new verbatim macros inside \env{tabularx} environments. +% This environment defines its own almost-verbatim form of |\verb|%^^A| +% which lacks the end-macro we patch above. The following code inserts such +% an end-macro. +% \begin{macrocode} \def\newverbs@tabularxsupport{% \begingroup \def\orig@TX@vb##1{\def\@tempa####1##1{\toks@{####1}\edef\@tempa{\the\toks@}% - \expandafter\TX@v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!} + \expandafter\TX@v\meaning\@tempa\\\\\ifnum0=`{\fi}}\@tempa!}% \ifx\TX@vb\orig@TX@vb \endgroup \PackageInfo{newverbs}{Patching 'TX@vb' macro of the 'tabularx' package.}% \def\TX@vb##1{\def\@tempa####1##1{\toks@{####1}\edef\@tempa{\the\toks@}% - \expandafter\TX@v\meaning\@tempa\\ \\\ifnum0=`{\fi}\newverbs@txend}\@tempa!} + \expandafter\TX@v\meaning\@tempa\\\\\ifnum0=`{\fi}\newverbs@txend}\@tempa!}% \else \endgroup \PackageWarning{newverbs}{Couldn't patch 'TX@vb' macro of the 'tabularx' package. Definition unknown.}% \fi \let\newverbs@tabularxsupport\relax } +% \end{macrocode} +% The end-macro is initially empty and is set for every call of a new verb macro. +% \begin{macrocode} \def\newverbs@txend{} +% \end{macrocode} +% The support is activated either now or at the begin of the document if the \pkg{tabularx} is loaded. +% \begin{macrocode} \@ifpackageloaded{tabularx}{% \newverbs@tabularxsupport }{% \AtBeginDocument{\@ifpackageloaded{tabularx}{\newverbs@tabularxsupport}{}}% } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newverbcommand@settings} +% Some settings required for all new \cs{verb}-like commands. +% The original end group macro from \cs{verb} is saved away. +% Also the `temp box a' is provided with a user friendly name. +% \begin{macrocode} \def\newverbcommand@settings{% \let\verb@orig@egroup\verb@egroup \let\verbbox\@tempboxa } +% \end{macrocode} +% \end{macro} +% +% \subsection{Provided New Verb Commands}\label{sec:impl} +% +% \begin{macro}{\qverb} +% Quoting version of \cs{verb}. Places a quote character before and after the verbatim content: "verb". +% \begin{macrocode} \provideverbcommand{\qverb}{\qverbbeginquote}{\qverbendquote} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\qverbbeginquote} +% \begin{macro}{\qverbendquote} +% This macros insert the actual quotes. They can be redefined by the user to contain the required quotes. +% If available the quoting macros of \pkg{csquotes} are used. +% \changes{v1.1}{2010/04/13}{Added usage of 'csquotes' macros if loaded.} +% \begin{macrocode} \@ifundefined{openinnerquote}{% \def\qverbbeginquote{`}% \def\qverbendquote{'}% @@ -72,14 +103,183 @@ \def\qverbbeginquote{\openinnerquote}% \def\qverbendquote{\closeinnerquote}% } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\fverb} +% A framed version of \cs{verb}. Stores the verbatim content first into a box. Then the box content is framed. +% \begin{macrocode} \newverbcommand{\fverb} {\setbox\verbbox\hbox\bgroup\color@setgroup} {\color@endgroup\egroup\fbox{\box\verbbox}} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Make Special Short Verbatim Characters} +% +% \begin{macro}{\MakeSpecialShortVerb}[1]{verbatim macro} +% Uses the definition of \cs{MakeShortVerb} from \pkg{shortvrb} except with \cs{verb} replaced with the first argument. +% The second argument is then read by \cs{@MakeShortVerb}. +% \begin{macrocode} \newcommand*\MakeSpecialShortVerb[1]{% \@ifstar {\def\@shortvrbdef{#1*}\@MakeShortVerb}% {\def\@shortvrbdef{#1}\@MakeShortVerb}% } -\endinput -%% -%% End of file `newverbs.sty'. +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Collect verbatim argument} +% +% \begin{macro}{\collectverb} +% Collects verbatim text which can be typeset. +% Checks for an existing star. +% \begin{macrocode} +\newcommand*\collectverb{% + \begingroup + \verbatim@font + \@ifstar + \@scollectverb + \@collectverb +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@collectverb}[1]{} +% Changes catcodes and ensures that spaces are displayed normally. +% \begin{macrocode} +\def\@collectverb#1{% + \verb@eol@error + \let\do\@makeother + \dospecials + \@vobeyspaces + \frenchspacing + \@noligs + \@@collectverb{#1}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@scollectverb}[1]{} +% Changes catcodes. +% \begin{macrocode} +\def\@scollectverb#1{% + \verb@eol@error + \let\do\@makeother + \dospecials + \@noligs + \@@collectverb{#1}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@@collectverb}[2]{}{} +% Defines \Macro\@@@collectverb to read everything to the next occurrence of \meta{char} +% and feed it to the given \meta{code}. +% \begin{macrocode} +\def\@@collectverb#1#2{% + \ifnum`#2=`\{% + \catcode`\}\active + \else + \catcode`#2\active + \fi + \begingroup + \ifnum`#2=`\{% + \lccode`\~`\}% + \else + \lccode`\~`#2% + \fi + \lowercase{\endgroup + \def\@@@collectverb##1~}{#1{##1}\endgroup}% + \@@@collectverb +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Collectverb} +% Collects argument as plain verbatim and feeds it to the given code. +% The text is suitable to be printed to auxiliary files. +% \begin{macrocode} +\newcommand*\Collectverb{% + \begingroup + \@ifstar + \@sCollectverb + \@Collectverb +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@Collectverb} +% \begin{macrocode} +\def\@Collectverb#1{% + \verb@eol@error + \let\do\@makeother + \dospecials + \obeyspaces + \@@Collectverb{#1}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@sCollectverb} +% \begin{macrocode} +\def\@sCollectverb#1{% + \verb@eol@error + \let\do\@makeother + \dospecials + \@@Collectverb{#1}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@@Collectverb} +% \begin{macrocode} +\def\@@Collectverb#1#2{% + \ifnum`#2=`\{% + \catcode`\}\active + \else + \catcode`#2\active + \fi + \begingroup + \ifnum`#2=`\{% + \lccode`\~`\}% + \else + \lccode`\~`#2% + \fi + \lowercase{\endgroup + \def\@@@Collectverb##1~}{\endgroup#1{##1}}% + \@@@Collectverb +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\Verbdef} +% \begin{macrocode} +\newcommand*\Verbdef{% + \@ifstar + {\@Verbdef*}% + {\@Verbdef{}}% +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\@Verbdef} +% \begin{macrocode} +\newcommand*\@Verbdef[2]{% + \Collectverb#1{\def#2}% +} +% \end{macrocode} +% \end{macro} +% -- cgit v1.2.3