summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/newverbs/newverbs.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/newverbs/newverbs.dtx')
-rw-r--r--Master/texmf-dist/source/latex/newverbs/newverbs.dtx235
1 files changed, 183 insertions, 52 deletions
diff --git a/Master/texmf-dist/source/latex/newverbs/newverbs.dtx b/Master/texmf-dist/source/latex/newverbs/newverbs.dtx
index f7014ef8d91..f2a79d35fde 100644
--- a/Master/texmf-dist/source/latex/newverbs/newverbs.dtx
+++ b/Master/texmf-dist/source/latex/newverbs/newverbs.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%<=*COPYRIGHT>
-%% Copyright (C) 2012 by Martin Scharrer <martin@scharrer-online.de>
+%% Copyright (C) 2012-2019 by Martin Scharrer <martin@scharrer-online.de>
%% --------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -23,10 +23,10 @@
%<*driver>
\ProvidesFile{newverbs.dtx}[%
%<=*DATE>
- 2012/05/08
+ 2019/09/09
%<=/DATE>
%<=*VERSION>
- v1.3a
+ v1.4
%<=/VERSION>
newverbs DTX file]
\documentclass{ydoc}
@@ -44,7 +44,7 @@
%</driver>
% \fi
%
-% \CheckSum{0}
+% \CheckSum{458}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -68,6 +68,7 @@
% \changes{v1.2}{2011/02/16}{Added support for 'tabularx' environments.}
% \changes{v1.2a}{2011/03/19}{Removed spurious spaces.}
% \changes{v1.3}{2011/07/24}{Added macros to collect verbatim arguments.}
+% \changes{v1.4}{2019/09/09}{Added several suggested changes.}
%
% \DoNotIndex{\newcommand,\newenvironment,\providecommand}
%
@@ -103,9 +104,9 @@
%
% \DescribeMacro\qverb<char><verbatim material><char>
% This macro adds quote characters around the verbatim material.
-% Two macros are used to insert the quotes: \cs{qverbbeginquote} (`) and \cs{qverbendquote} (').
+% Two macros are used to insert the quotes: \cs{qverbbeginquote} (``) and \cs{qverbendquote} ('').
% They can be redefined by the user if required. If the \pkg{csquotes} package was loaded beforehand
-% the above macros use its macros \cs{openinnerquote} and \cs{closeinnerquote} to take advantage of the language
+% the above macros use its macros \cs{openautoquote} and \cs{closeautoquote} to take advantage of the language
% dependent quotation marks. See the manual of \pkg{csquotes} for more details.
%
% Using \Macro\qverb<char><verbatim material><char> is equal to \\
@@ -133,7 +134,7 @@
%
% The new macro \Macro\MakeSpecialShortVerb*{\textbackslash\meta{verb variant}}{\textbackslash\meta{char}} does the same, but
% instead of \Macro\verb*\relax\relax\ it uses a \MacroArgs'\'<verb variant>*\relax which needs to be defined using \cs{newverbcommand}.
-% The package \pkg{shortvrb} must be loaded by the user in order to make this macro work. It is not loaded automatically by \pkg{newverbs}.
+% The package \pkg{shortvrb} must be installed in order to make this macro work. It is loaded automatically by \pkg{newverbs}.
%
% The special meaning of \meta{char} can be removed using \pkg{shortvrb}'s \cs{DeleteShortVerb}, i.e.\ the same way as for
% characters defined with the normal \cs{MakeShortVerb}.
@@ -170,7 +171,56 @@
% The starred version will make spaces appear as `\Collectverb*{}: :' when typeset but still be written to auxiliary files as normal spaces.
% An exception is if the following \meta{char} is `|{|', then `|}|' is taken as the end \meta{char} to simulate a normal argument to increase user friendliness.
% Afterwards \meta{code} is expanded with \marg{verbatim material} direct behind it. This macro does not add any group around the code.
-% Should the code be typeset after all a proper font (e.g.\ \Macro\ttfamily or \Macro\verbatim@font) must be enabled manually.
+% Should the material be typeset after all a proper font (e.g.\ \Macro\ttfamily or \Macro\newverbsfont) must be enabled manually.
+%
+%
+%
+% \DescribeMacro\collectverbenv{<code>}
+% \DescribeMacro\collectverbenv*{<code>}
+% This macro is supposed to be used with its \marg{code} argument at the end of the begin-code of an user or package environment definition.
+% It then collects the content of the environment as verbatim material and feeds it as an argument to the provided \meta{code} like \Macro\collectverb does
+% (see there for further details which also apply here).
+% This has the following limitations:
+% When used the \Macro\begin of the environment must end with a line break, i.e.\ the source line must not include any other material afterwards.
+% If the environment is defined with arguments, which is supported, the line break must be after the arguments.
+% The \Macro\end of the macro must be at the beginning of an own source code line.
+% If this conditions are not met incorrect results or an error may occur. Currently trailing material on the \Macro\begin line is simply ignored, but this
+% behaviour might change in future versions.
+%
+% The starred version will make the spaces inside the environment appear as `\collectverb*{}: :'.
+%
+% \noindent Example usage:\\
+% \leavevmode\noindent\bgroup\footnotesize
+% |\newenvironment{myenv}{\maybesomeothercode\collectverbenv{\mycmd}}{\someendcode}| \\
+%
+%
+% \DescribeMacro\Collectverbenv{<code>}
+% \DescribeMacro\Collectverbenv*{<code>}
+% This macro works like \Macro\collectverbenv but collects the environment content as plain verbatim material suitable to be
+% written in auxiliary files or log messages.
+% After collecting the environment the \meta{code} is expanded with \marg{verbatim material} direct behind it. This macro does not add any group around the code.
+% Should the material be typeset after all a proper font (e.g.\ \Macro\ttfamily or \Macro\newverbsfont) must be enabled manually.
+%
+% The starred version will make spaces appear as `\Collectverb*{}: :' when typeset but still be written to auxiliary files as normal spaces.
+%
+%
+% \DescribeMacro\newverbsfont
+% Macro which activates the font used by the \pkg{newverbs} package for the verbatim text.
+% This macro can be used manually if verbatim material collected with \Macro\Collectverb or \Macro\Collectverbenv should be typeset afterall.
+%
+% \DescribeMacro\verbdef<\textbackslash macro><char><verbatim material><char>
+% \DescribeMacro\verbdef*<\textbackslash macro><char><verbatim material><char>
+% \DescribeMacro\verbdef<\textbackslash macro>{<verbatim material>}
+% \DescribeMacro\verbdef*<\textbackslash macro>{<verbatim material>}
+% This macro defines the \meta{\textbackslash macro} as a robust macro which typesets the \meta{verbatim material} in the usual verbatim font.
+% For this the material is placed in a brace group with \Macro\newverbsfont. If a different font is wanted, this macro can be redefined locally.
+%
+% If the \meta{\textbackslash macro} existed before it will be overwritten silently. If an error should be raced instead use
+% \Macro\newcommand{\textbackslash macro}{} just before the \Macro\verbdef.
+%
+% Note that this macro is also provided by the \pkg{verbdef} package. If that package is loaded as well it definition of this macro is used,
+% independent on the order of loading the two packages.
+%
%
% \DescribeMacro\Verbdef<\textbackslash macro><char><verbatim material><char>
% \DescribeMacro\Verbdef*<\textbackslash macro><char><verbatim material><char>
@@ -178,7 +228,12 @@
% \DescribeMacro\Verbdef*<\textbackslash macro>{<verbatim material>}
% This macro uses \Macro\Collectverb internally to define \meta{\textbackslash macro} as the plain \meta{verbatim material}.
% This can be used to define macros for special characters, so these can be used in error or warning messages or be written into auxiliary files.
-% A corresponding \Macro\verbdef macro which defines macros with typesetable verbatim material is already provided by the \pkg{verbdef} package.
+%
+% If the \meta{\textbackslash macro} existed before it will be overwritten silently. If an error should be raced instead use
+% \Macro\newcommand{\textbackslash macro}{} just before the \Macro\Verbdef.
+%
+% Note that for maximum flexibility the such defined macros are not defined as robust macros. Therefore using them inside sectioning commands they should
+% be protected using \Macro\protect to avoid syntax issues in the |.aux| file due to verbatim characters.
%
%
% \section{Compatibility with other verbatim packages}
@@ -221,17 +276,37 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\new@verbcommand}[4]{underlying definition macro}{macro to define}{code before}{code after}
+% \begin{macro}{\new@verbcommand}[2]{underlying definition macro}{macro to be defined}
+% Checks for optional argument and calls \cs{new@@verbcommand} accordingly.
+% \begin{macrocode}
+\def\new@verbcommand#1#2{%
+ \@ifnextchar[%
+ {\new@@verbcommand{#1}{#2}}%
+ {\new@@verbcommand{#1}{#2}[\verb]}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\new@verbcommand}[5]{underlying definition macro}{verb macro to be used}{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{%
+\let\newverbs@end\@empty
+\def\new@@verbcommand#1#2[#3]#4#5{%
#1*#2{%
- \begingroup
+ \bgroup
\newverbcommand@settings
- \def\verb@egroup{\verb@orig@egroup#4\endgroup}%
- \def\newverbs@txend{#4\endgroup}%
- #3\verb
+ \ifx\newverbs@end\@empty
+ \expandafter\def\expandafter\verb@egroup\expandafter{\verb@egroup\newverbs@end}%
+ \fi
+ \begingroup\def\@tempa{#5}%
+ \expandafter\expandafter\expandafter\endgroup
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\newverbs@end
+ \expandafter\expandafter\expandafter{\expandafter\@tempa\newverbs@end\egroup}%
+ \def\newverbs@txend{#5\egroup}%
+ \verbatim@font\let\verbatim@font\relax
+ #4#3%
}%
}
% \end{macrocode}
@@ -306,11 +381,11 @@
% \changes{v1.1}{2010/04/13}{Added usage of 'csquotes' macros if loaded.}
% \begin{macrocode}
\@ifundefined{openinnerquote}{%
- \def\qverbbeginquote{`}%
- \def\qverbendquote{'}%
+ \def\qverbbeginquote{``}%
+ \def\qverbendquote{''}%
}{%
- \def\qverbbeginquote{\openinnerquote}%
- \def\qverbendquote{\closeinnerquote}%
+ \def\qverbbeginquote{\openautoquote}%
+ \def\qverbendquote{\closeautoquote}%
}
% \end{macrocode}
% \end{macro}
@@ -328,20 +403,66 @@
%
% \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]{%
+\RequirePackage{shortvrb}
+% \end{macrocode}
+%
+% \begin{macro}{\MakeShortVerb}
+% \begin{macrocode}
+\def\MakeShortVerb{%
\@ifstar
- {\def\@shortvrbdef{#1*}\@MakeShortVerb}%
- {\def\@shortvrbdef{#1}\@MakeShortVerb}%
+ {\newverbs@MakeShortVerb*}%
+ {\newverbs@MakeShortVerb{}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newverbs@MakeShortVerb}[1]{star or empty}
+% \begin{macrocode}
+\def\newverbs@MakeShortVerb#1{%
+ \@ifnextchar[%
+ {\newverbs@@MakeShortVerb{#1}}%
+ {\@MakeSpecialShortVerb{#1}{\verb}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newverbs@@MakeShortVerb}[2]{star or empty}{verbatim macro}
+% \begin{macrocode}
+\def\newverbs@@MakeShortVerb#1[#2]{%
+ \@MakeSpecialShortVerb{#1}{#2}%
}
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@MakeSpecialShortVerb}[3]{star or empty}{verbatim macro}{escaped short verbatim character}
+% Uses the definition of \cs{MakeShortVerb} from \pkg{shortvrb} except with \cs{verb} replaced with the first argument.
+% The last argument is then read by \cs{@MakeShortVerb}.
+% \begin{macrocode}
+\def\@MakeSpecialShortVerb#1#2#3{%
+ %\expandafter\ifx\csname cc\string#3\endcsname\relax
+ %\else
+ % \DeleteShortVerb{#3}%
+ %\fi
+ \def\@shortvrbdef{#2#1}%
+ \@MakeShortVerb{#3}%
+}
+% \end{macrocode}
+% \end{macro}
%
-% \subsection{Collect verbatim argument}
+% \begin{macro}{\MakeSpecialShortVerb}
+% Checks for the starred version and calls \cs{@MakeSpecialShortVerb} appropriately. The star needs to be added again
+% as \cs{@ifstar} removes it.
+% \begin{macrocode}
+\newcommand*\MakeSpecialShortVerb{%
+ \@ifstar
+ {\@MakeSpecialShortVerb{*}}%
+ {\@MakeSpecialShortVerb{}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%% \subsection{Collect verbatim argument}
%
% \begin{macro}{\collectverb}
% Collects verbatim text which can be typeset.
@@ -485,7 +606,7 @@
% \end{macro}
%
%
-% \begin{macro}{\@Collectverb}
+% \begin{macro}{\@Collectverb}[1]{<code to be executed afterwards>}
% \begin{macrocode}
\def\@Collectverb#1{%
\verb@eol@error
@@ -498,7 +619,7 @@
% \end{macro}
%
%
-% \begin{macro}{\@sCollectverb}
+% \begin{macro}{\@sCollectverb}[1]{<code to be executed afterwards>}
% \begin{macrocode}
\def\@sCollectverb#1{%
\verb@eol@error
@@ -510,7 +631,7 @@
% \end{macro}
%
%
-% \begin{macro}{\@@Collectverb}
+% \begin{macro}{\@@Collectverb}[2]{<code to be executed afterwards>}{<delimiter character>}
% \begin{macrocode}
\def\@@Collectverb#1#2{%
\ifnum`#2=`\{%
@@ -546,7 +667,7 @@
% \end{macro}
%
%
-% \begin{macro}{\@Collectverbenv}
+% \begin{macro}{\@Collectverbenv}[1]{<code to be executed afterwards>}
% \begin{macrocode}
\def\@Collectverbenv#1{%
\newverb@catcodes
@@ -582,7 +703,7 @@
% \end{macro}
%
%
-% \begin{macro}{\@sCollectverbenv}
+% \begin{macro}{\@sCollectverbenv}[1]{<code to be executed afterwards>}
% \begin{macrocode}
\def\@sCollectverbenv#1{%
\newverb@catcodes
@@ -613,25 +734,6 @@
% \end{macro}
%
%
-% \begin{macro}{\newverbenvironment}
-% \begin{macrocode}
-\newcommand\newverbenvironment{}
-\long\def\newverbenvironment#1#2#{%
- \@newverbenvironment{#1}{#2}%
-}
-\long\def\@newverbenvironment#1#2#3#4{%
- \newenvironment{#1}#2{%
- \begingroup
- \newverb@catcodes
- \obeyspaces
- #3%
- \expandafter\@@Collectverbenv\expandafter{\@currenvir}{\long\def\BODY}%
- }{#4}%
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
% \begin{macro}{\newverbsfont}
% \begin{macrocode}
\newcommand\newverbsfont{%
@@ -653,14 +755,43 @@
% \end{macro}
%
%
-% \begin{macro}{\@Verbdef}
+% \begin{macro}{\@Verbdef}[2]{<star or empty>}{<macro to be defined>}
% \begin{macrocode}
-\newcommand*\@Verbdef[2]{%
+\def\@Verbdef#1#2{%
\Collectverb#1{\def#2}%
}
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\verbdef}
+% Provides an own definition of \Macro\verbdef which is also defined by the \pkg{verbdef} package.
+% \begin{macrocode}
+\providecommand*\verbdef{%
+ \@ifstar
+ {\newverbs@verbdef*}%
+ {\newverbs@verbdef{}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@Verbdef}[2]{<star or empty>}{<macro to be defined>}
+% \begin{macrocode}
+\def\newverbs@verbdef#1#2{%
+ \Collectverb#1{\newverbs@@verbdef{#2}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@Verbdef}[2]{<star or empty>}{<macro to be defined>}
+% \begin{macrocode}
+\def\newverbs@@verbdef#1#2{%
+ \DeclareRobustCommand{#1}{{\newverbsfont#2}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
% \iffalse
%</newverbs.sty>
% \fi