summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/newverbs
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-07-25 21:54:21 +0000
committerKarl Berry <karl@freefriends.org>2011-07-25 21:54:21 +0000
commitc8570fd6aff117b8caeec3dcc0039161c6e85049 (patch)
tree6e6f76bdbc01973a88234ba17087b569d51cd2fa /Master/texmf-dist/tex/latex/newverbs
parentf1615aae3ec6e6c8333f5c09987e5888bd5cd0c6 (diff)
newverbs (25jul11)
git-svn-id: svn://tug.org/texlive/trunk@23220 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/newverbs')
-rw-r--r--Master/texmf-dist/tex/latex/newverbs/newverbs.sty270
1 files changed, 235 insertions, 35 deletions
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 <martin@scharrer-online.de>
-%% 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]{<code>}
+% 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]{<code>}
+% 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]{<code>}{<char>}
+% 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}
+%