summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/nicetext
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-11-09 22:44:22 +0000
committerKarl Berry <karl@freefriends.org>2015-11-09 22:44:22 +0000
commita83576956cae969d5f301b82d893b6f5a5949276 (patch)
tree15f57d70e5770dfe9f1229790f3c562edf6c491c /Master/texmf-dist/tex/latex/nicetext
parent6eb3a7b847e716cc912c1273d6d03bc960e4cdc1 (diff)
nicetext (9nov15)
git-svn-id: svn://tug.org/texlive/trunk@38808 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/nicetext')
-rw-r--r--Master/texmf-dist/tex/latex/nicetext/makedoc.cfg5
-rw-r--r--Master/texmf-dist/tex/latex/nicetext/nicetext.RLS1
-rw-r--r--Master/texmf-dist/tex/latex/nicetext/niceverb.sty749
3 files changed, 604 insertions, 151 deletions
diff --git a/Master/texmf-dist/tex/latex/nicetext/makedoc.cfg b/Master/texmf-dist/tex/latex/nicetext/makedoc.cfg
index 4af672f6b88..666c87706ec 100644
--- a/Master/texmf-dist/tex/latex/nicetext/makedoc.cfg
+++ b/Master/texmf-dist/tex/latex/nicetext/makedoc.cfg
@@ -1,4 +1,4 @@
-\ProvidesFile{makedoc.cfg}[{2012/11/30 documentation settings}]
+\ProvidesFile{makedoc.cfg}[{2013/03/25 documentation settings}]
%%
\author{Uwe L\"uck\thanks{%
\url{http://contact-ednotes.sty.de.vu}}}
@@ -69,8 +69,10 @@
%% |\MDfinaldatechecks[<tex-script>]| with \ctanpkgref{filedate}:
\newcommand*{\MDfinaldatechecks}[1][fdatechk]{%
\AtEndDocument{%
+% \clearpage %% 2013/03/25 no avail -- with `filedate'!
\def\@pkgextension{sty}%
\def\NeedsTeXFormat##1[##2]{}%
+ \noNiceVerb %% 2013/03/22
\input{#1}%
}}
\@onlypreamble\MDfinaldatechecks
@@ -84,6 +86,7 @@
\RequirePackage{color} %% 2011/08/06
\RequirePackage{lmodern} %% 2012/10/29
\RequirePackage{filedate} %% 2012/11/12
+\RequirePackage{filesdo} %% 2013/03/22
%% \pagebreak[3]
%% Logical markup:\qquad |\strong{<chars>}|, |\meta{<chars>}|,
%% |\acro{<chars>}|, |\pkg{<chars>}|,
diff --git a/Master/texmf-dist/tex/latex/nicetext/nicetext.RLS b/Master/texmf-dist/tex/latex/nicetext/nicetext.RLS
index 6398487036d..650994cffab 100644
--- a/Master/texmf-dist/tex/latex/nicetext/nicetext.RLS
+++ b/Master/texmf-dist/tex/latex/nicetext/nicetext.RLS
@@ -1,4 +1,5 @@
\ProvidesFile{nicetext.RLS} %% >RELEASE INFO<
+ [2015/11/09 r0.66 `niceverb.sty' robustness features]
[2012/11/30 r0.65 makedoc.cfg: \string\MDsamplecodeinput\space
corr., \string\ctanpkgdref]
[2012/11/27 r0.64 makedoc.cfg w/o bad pdfstartview,
diff --git a/Master/texmf-dist/tex/latex/nicetext/niceverb.sty b/Master/texmf-dist/tex/latex/nicetext/niceverb.sty
index 7b76ccc69a0..19366dddc62 100644
--- a/Master/texmf-dist/tex/latex/nicetext/niceverb.sty
+++ b/Master/texmf-dist/tex/latex/nicetext/niceverb.sty
@@ -1,8 +1,8 @@
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-\ProvidesPackage{niceverb}[2012/11/27 v0.51
+\ProvidesPackage{niceverb}[2015/11/09 v0.61
minimize doc markup (UL)]
-%% Copyright (C) 2009-2012 Uwe Lueck,
+%% Copyright (C) 2009-2012, 2014 2015 Uwe Lueck,
%% http://www.contact-ednotes.sty.de.vu
%% -- author-maintained in the sense of LPPL below --
%%
@@ -17,7 +17,13 @@
%%
%% http://www.contact-ednotes.sty.de.vu
%%
-%% === Switching Category Codes ===
+%% ==== &\newlet ====
+%% |\newlet<cmd><cnd>| counters the risk of mistyping <cmd>
+%% with `\@ifdefinable', and even saves some code lines:
+\providecommand*{\newlet}[2]{\@ifdefinable#1{\let#1#2}}
+\@onlypreamble\newlet
+%%
+%% ==== Switching Category Codes ====
%% Underscore as a ``private letter," using 'stacklet' with v0.5:
\RequirePackage{stacklet} \PushCatMakeLetter\_ %% 2012/08/27
%% v0.3 introduced `\AssignCatCodeTo' and `\MakeNormal'.
@@ -71,11 +77,10 @@
%% % We take a copy |\MakeActiveLetHere| as well:
%% likewise is in 'actcodes'. 'niceverb' takes a copy
%% |\MakeActiveLetHere| of it for dealing with 'hyperref'
-%% (see Section~\ref{sec:hyperref}).
+%% (see \secref{hyperref}).
%% 'hyperref'-compatibility of mere `\MakeActive'
%% is not provided any longer:
-\@ifdefinable\MakeActiveLetHere{%
- \let\MakeActiveLetHere\MakeActiveLet}
+\newlet\MakeActiveLetHere\MakeActiveLet
%% %% |\MakeAlign\&| can be used to restore the meaning of `&' after we
%% %% have made it `\active'.
%% % \providecommand*{\MakeAlign} {\AssignCatCodeTo4}
@@ -93,10 +98,14 @@
%% respectively; ``end of line", ``ignored", ``letter", ``other", and
%% ``invalid" are missing---cf. {\it \TeX book} Chap.\,7.)
\def\do#1{\expandafter
- \chardef \csname normal_catcode_\string#1\expandafter \endcsname
+% \chardef \csname normal_catcode_\string#1\expandafter \endcsname
+%% <- v0.6 2014/03/22: First I thought ``too few `\expandafter's";
+%% actually the original `\expandafter' has no effect ->
+ \chardef \csname normal_catcode_\string#1\endcsname
\CatCode#1\relax}
\dospecials
%% Tests:
+%% %\withcsname\show normal_catcode_\string\\\endcsname %% 2014/03/22
%% ``normal category code" of `\' is
%% \expandafter\the\csname normal_catcode_\string\\\endcsname,
%% ``normal category code" of `$' is
@@ -120,38 +129,169 @@
%% TODO save char tokens %% 2012/08/27
%% We take a copy |\MakeNormalHere| of `\MakeNormal' as
%% with `\MakeActive'.
-\@ifdefinable\MakeNormalHere{\let\MakeNormalHere\MakeNormal}
+\newlet\MakeNormalHere\MakeNormal
%%
-%% === Robustness by &\IfTypesetting ===
-%% It seems we need some own ways to achieve various
-%% compatibilities---using |\IfTypesetting{<if>}{<unless>}|.
+%% ==== Robustness by &\IfTypesetting\ or So ====
+%% \label{sec:iftype}
+%% It seems we need some own ways
+%% of robustifying (as opposed to \LaTeX's `\protect' and %% 2014/03/20
+%% `\DeclareRobustCommand'---sometimes,
+%% especially for certain active characters)
+%% to achieve various
+%% compatibilities---using
+%% %\begin{center}
+%% \[|\IfTypesetting{<if>}{<unless>}|\]%%%.
+%% %\end{center}
%% It also saves some `\expandafter's.
\providecommand*{\IfTypesetting}{%
% \relax
-%% This `\relax' suppressed ligatures of single right quotes!
+%% <- This `\relax' suppressed ligatures of single right quotes!
+%% %%^ arrow 2014/03/20
%% %% removed 2010/03/23
\ifx \protect\@typeset@protect
\expandafter \@firstoftwo
\else \expandafter \@secondoftwo \fi}
+%% %\begin{center}
+%% \[|\nvSelfProtect{<cmd-char>}{<typeset>}|\]
+%% %\end{center}
+%% is another idea.
+%% In ``typesetting mode," <typeset> is run.
+%% Otherwise a single unexpanded token <cmd-char> remains.
+%% TODO bad at `\shipout'.
+%% No `\protect' appears, and as opposed to \LaTeX's
+%% protection mechanism, running <typeset> does not
+%% require a second macro name.
+%% The idea is that
+%% %`\nvSelfProtect{<cmd-char>}{<typeset>}'
+%% `\nvSelfProtect{#1}{#2}'
+%% is the \emph{definition} (substitution text---on
+%% token level) of <cmd-char>.\footnote{This
+%% may go into a separate package under a different name later.}
+\newcommand*{\nvSelfProtect}[2]{%
+ \ifx \protect\@typeset@protect
+ \nv_expand_else{#2}% %% braces 2014/03/26
+% \else \protect#1\fi}
+ \else \noexpand#1\fi} %% works 2014/03/28
+\def\nv_expand_else#1\else#2\fi{\fi#1}
+%% %% 2014/03/27
+%% Sometimes ``control sequences" get definitions with
+%% `\svSelfProtect' below whose first argument then is
+%% an active character---the ``control sequence" then
+%% is the ``permanent alias" of the active character.
+%% This is a somewhat ``indirect self"-protection.
+%% At other places, the ``self"-protection is more
+%% direct. Then |\NewSelfProtectedCommand{<cmd>}{<def>}| avoids
+%% mistakes from mistyping <cmd> and saves some code.
+%% It works like `\newcommand*', provides the
+%% `\svSelfProtect', and your definition <def> needs to contain
+%% the second argument of `\svSelfProtect' only.
+%% \emph{Arguments} are not supported currently
+%% (TODO---well, 3 applications 2014/03/27):{\sloppy\par}
+\newcommand*{\NewSelfProtectedCommand}[2]{%
+ \newcommand*#1{\nvSelfProtect#1{#2}}}
+\@onlypreamble\NewSelfProtectedCommand
+%% TODO 3 applications for the permanent alias case,
+%% saving catcode changes ... %% 2014/03/28
+%%
+%% \strong{Testing:}
+\newcommand*{\nvShowProtectedEdef}[1]{%
+ \protected@edef\@tempa{#1}\show\@tempa}
%%
-%% === &\NVerb ===
-%% `\begin_min_verb' is a beginning shared by some macros here.
+%% ==== Shared Shorthand Macros ====
+%% |\begin_min_verb| is a beginning shared by some macros here.
%% It begins like \LaTeX's `\verb', apart from the final `\tt'.
+%% %% 2014/03/18:
+%% `\bgroup' is needed for `\hbox' and must be balanced by
+%% an `\egroup' counterpart later.
\newcommand*{\begin_min_verb}{%
\relax \ifmmode \hbox \else \leavevmode\null \fi
\bgroup \tt}
-%% |\NVerb<char><code><char>|
+%% For typographical additions (``decorations") to the verbatim material,
+%% we collect it in a box register addressed by |\niceverb_savebox|:
+\newsavebox\niceverb_savebox
+%% |\SetNiceVerbSaveBox| starts reading the (``meta-")verbatim
+%% material:
+\newcommand*{\SetNiceVerbSaveBox}{%
+ \setbox\niceverb_savebox\hbox\bgroup}
+%% |\NVerb|, |\HardNVerb|, or |\NiceMaybeMetaVerb|
+%% with an optional argument about as `[\<id>_egroup]' should follow, cf.
+%% \secref{nverb}.---There have been two applications
+%% only up to now (2014/03/19), but this may change soon.\footnote{%
+%% Thought of &\qtdnverb, but this doesn't need this kind
+%% of treatment.} %% 2014/03/20
+%%
+%% |\TheNiceVerbSaveBox| allows referring to the verbatim material
+%% collected, in order to place it a \emph{single time}---and no
+%% surrounding braces are needed:
+\newcommand*{\TheNiceVerbSaveBox}{\box\niceverb_savebox}
+%% TODO:
+%% \begin{center}
+%% |\NewNiceVerbDecoration{\<deco>}{\<end-name>}{<start>}{<end-code>}|
+%% \end{center}
+%% might save from typing `\<end-name>' twice and from typing
+%% the two `\egroup's.
+%%
+%% %\section{&\+*[<opt>]{<mand>} `{verbatim}' ``o''} %% 2014/03/28
+%% TODO left quote verb moving: braces get lost. %% 2014/03/28
+%% %\nvShowProtectedEdef{``''&\+<name>}
+%% === Implementation of the ``Nice" Syntax ===
+%% ==== &\NVerb ====
+%% \label{sec:nverb}
+%% Discovered mistakes in this section 2014/03/19, %% 2014/03/20
+%% with respect to robustness. \
+%% (i)~`\NVerb' not really was meant to be a user command,
+%% to appear in documentation code (rather to be internal). \
+%% (ii)~The attempt to make it robust was incomplete. \
+%% (iii)~The code for ``not typesetting" was strange. \
+%% (iv)~It is difficult to imagine that somebody attempts
+%% to use ``verbatim" code, e.g., in a section title
+%% (while with our `&'/`\string' it's ok).
+%% \emph{At least handy replacement for &\textsf.} \ %% 2014/03/28
+%% Well, let's see. May be I once find a useful application.
+%% So I repair the code---`\protect' before &\_...`_false'.
+%% |\NVerb<char><code><char>|:
\newcommand*{\NVerb}{%
- \_no_nice_meta_verb_false \nice_maybe_meta_verb}
+ \protect\_no_nice_meta_verb_false \NiceMaybeMetaVerb}
%% |\HardNVerb<char><code><char>| does not recognize meta-variables:
\newcommand*{\HardNVerb}{%
- \_no_nice_meta_verb_true \nice_maybe_meta_verb}
+ \protect\_no_nice_meta_verb_true \NiceMaybeMetaVerb}
\newif\if_no_nice_meta_verb_
-\newcommand*{\nice_maybe_meta_verb}[1]{%
+%% %\tracingmacros=1 \tracingonline=1
+%% %\pagebreak
+%% %\tracingmacros=0
+%% v0.6 equips both |\NVerb[<end-cmd>]| and %% 2014/03/18
+%% |\HardNVerb[<end-cmd>]| with an optional argument for a single
+%% parameter-less macro for what to do after reading
+%% verbatim text---for boxing or quoting etc.\footnote{The
+%% goal resembles that of &\collectverb in Martin Scharrer's
+%% \ctanpkgref{newverbs}. A difference in implementation is
+%% that the character delimiting the verbatim text
+%% is used as a parameter delimiter for a new/temporary macro.
+%% So the verbatim characters are fixed. Our approach will be
+%% collecting the verbatim material in a box, if we need
+%% something more complex than %&\niceverb_normal_egroup.
+%% \cs{niceverb_mormal_egroup}.
+%% This allows changing category codes with &\MetaVar again,
+%% although there hasn't been a need for this so far.
+%% It might be useful for allowing shorthand macros in
+%% &\MetaVar's argument.}
+%% |\niceverb_egroup| then is useless and removed.
+%% Macros that were assigned to it before v0.6 move into
+%% the new optional arguments.---Actually, the next macro
+%% |\NiceMaybeMetaVerb| shared by `\NVerb' and `\HardNVerb'
+%% gets the optional argument: TODO!?
+%% %\tracingmacros=1 \tracingonline=1
+% \newcommand*{\nice_maybe_meta_verb}[1]{%
+%% %\tracingmacros=0
+%% %TODO
+%% %\pagebreak %% makes difference with `
+\newcommand*{\NiceMaybeMetaVerb}[2][\niceverb_normal_egroup]{%
+%% `\newcommand' with v0.6 must suffice for robustness,
+%% so removing 2014/03/20:
+% \IfTypesetting{%
%% Mainly avoid `\verb''s noligs list which overrides definitions
%% of some active characters, while 'cmtt' doesn't have any
%% ligatures anyway.
- \IfTypesetting{%
\begin_min_verb
\let\do\MakeOther \dospecials
%% Turn off 'niceverb' specials:
@@ -160,37 +300,71 @@
%%% \else \MakeActiveLet\<\MetaVar %% 2010/12/31
\else \MakeActiveLetHere\<\MetaVar %% 2011/06/20
\fi
- \MakeActiveLetHere #1\niceverb_egroup
+% \MakeActiveLetHere #2\niceverb_egroup
+ \MakeActiveLetHere #2#1% %% 2014/03/18
+%% After the previous line has worked, we use `\def'
+%% instead of `\let', so there is no longer a need
+%% to choose a command name for the verbatim delimiter
+%% -- well, \strong{no}, don't define the same
+%% macro several times. Also, the same ``end" macro
+%% might be used for different purposes, e.g.,
+%% when a macro in an eventual expansion of the ``end" macro
+%% is modified.
+% \MakeActiveDef #2{#1}% %% 2014/03/18
\verb@eol@error %% TODO change message 2009/04/09
- }{\string\NVerb \string#1}}
-%% 2009/04/11: about `etc.' [preceding a box!? 2010/03/14]
+% }{\string\NVerb \string#1}}
+%% <- both `\string' very strange
+%% (second one finds <char>---maybe it's active---but
+%% then its next occurrence delimiting the verbatim code
+%% will harm too!),
+%% also redirecting to `\NVerb'.
+%% (May have been ok for entries to auxiliary files.)
+%% New difficulties come from the optional argument,
+%% which needs protection as well.---Ok, the optional
+%% argument is not protected, and active characters
+%% <char> must ``protect themselves," so use of
+%% `\IfTypesetting' changes, cf. \secref{iftype}.
+}
+%% %2009/04/11: about `etc.' [preceding a box!? 2010/03/14]
+%% [2014/03/19 removing/hiding
+%% remarks from 2009f. that I don't understand anymore~...]
\newcommand*{\niceverb_normal_egroup}{%
\egroup
-%% 2011/09/09 adding `\niceverb_maybe_rq' for `\AddQuotes':
- \niceverb_maybe_rq
+ \niceverb_maybe_rq %% 2011/09/09 for \AddQuotes
\ifmmode\else\@\fi}
-\@ifdefinable\niceverb_egroup
- {\let\niceverb_egroup\niceverb_normal_egroup}
+% \@ifdefinable\niceverb_egroup %% rm 2014/03/18
+% {\let\niceverb_egroup\niceverb_normal_egroup}
%%
-%% === Single Quotes Typeset Meta-Code ===
+%% ==== Single Quotes Typeset Meta-Code ====
%% |\LQverb| will be a ``permanent alias"
%% for the active left single quote.
%%
%% The verbatim feature must not act when another single left
-%% quote is ahead---we assume a double quote is intended then
+%% quote is ahead---we assume a double quote is intended then,
+%% and we typeset it
%% (thus the left quote feature does not allow to typeset
%% something verbatim that starts with a single left quote).
-%% Rather, double quotes should be typeset then.
-%% In page headers, a `\protect' may be in the way.
+%% %Rather, double quotes should be typeset then. rm. 2014/03/25
+%% In page headers, a `\protect'
+%% could %%% may %% 2014/03/28
+%% be in the way %%%.\footnote{%
+%% % See \code{\string\show\cs{let_token}} below---tried %% 2014/03/24
+%% % with section title in `niceverb.tex'.}
+%% before v0.6.
%% (A hook for `\relax'ing certain things in
-%% `\markboth' and `\markright' would have been an alternative.)
+%% `\markboth' and `\markright' would have been an alternative.
+%% TODO) %% 2014/03/24
\MakeActive\`
\newcommand*{\LQverb}{%
- \IfTypesetting{\lq_double_test}{\protect`}}
+% \IfTypesetting{\lq_double_test}{\protect`}}
+%% New approach v0.6:
+ \nvSelfProtect`\lq_double_test}
+% \IfTypesetting{\lq_double_test}{\noexpand`}}
\MakeOther\`
\newcommand*{\lq_double_test}{%
%% This test settles the next catcode, so better switch to ``other"
%% in advance (won't harm if left quote isn't next):
+%% TODO switch what? %% 2014/03/27
\begingroup
\let\do\MakeOther \dospecials
\MakeOther\|%% 2010/03/09!
@@ -199,24 +373,28 @@
\ifx\let_token\LQverb
\endgroup
``\expandafter \@gobble
-%% Corresponding right quotes will become ``other" due to
+%% ... alternative ...
+% \expandafter `%
+%% does not recognize next left quote---why? TODO---Corresponding
+%% right quotes will become ``other" due to
%% having no space at the left.
%% TODO to be changed with 'wiki.sty'.
\else
- \ifx\let_token\protect
- \expandafter\expandafter\expandafter \lq_double_decide_ii
- \else
+% \ifx\let_token\protect %% rm. 2014/03/28
+% % \show\let_token %% indeed before v0.6, 2014/03/24
+% \expandafter\expandafter\expandafter \lq_double_decide_ii
+% \else
\endgroup
- \niceverb_maybe_qs %% 2011/09/09
+ \niceverb_maybe_qs %% 2011/09/09
\expandafter\expandafter\expandafter \NVerb
\expandafter\expandafter\expandafter \'%
- \fi
+% \fi
\fi}
%% `\lq_double_decide_ii' continues test behind `\protect'.
\newcommand*{\lq_double_decide_ii}[1]{%
\futurelet\let_token \lq_double_decide}
%%
-%% === Ampersand (or &\cstx) Typesets Meta-Code ===
+%% ==== Ampersand (or &\cstx) Typesets Meta-Code ====
%% |\CmdSyntaxVerb| will be a permanent alias for the active `&'.
\MakeActive\&
\newcommand*{\CmdSyntaxVerb}{%
@@ -229,20 +407,31 @@
%% earlier---an important bug fix!
\private_letters %% v0.5
\cmd_syntax_verb
- }{\protect&\string}}
+% }{\protect&\string}}
+% }{\noexpand&\string}}
+%% ... with `\string', in an `\edef', the following
+%% command cannot be properly typeset, so
+ }{\noexpand&\noexpand}} %% 2014/03/26
+%% TODO actually test non-typesetting, maybe introduce
+%% macros that perform tests anywhere ...
+%% %e.g., `\typeout'~... %%% \typeout{``}\show& %% 2014/03/27
\MakeNormal\&
\newcommand*{\cmd_syntax_verb}[1]{%
\string#1\futurelet\let_token \after_cs}
%% However, `&' (or `\CmdSyntaxVerb')
-%% may fail with private letters
-%% (there should be a hook for them), %% TODO 2010/02/28
-%% especially in \emph{macro arguments} %% 2010/03/05
-%% and with 'hyperref' in titles of %% 2010/03/11
+%% may fail with private letters,
+%% % (there should be a hook for them), %% todo 2010/02/28,
+%% %% rm 2014/03/17 after v0.5
+%% especially in \emph{macro arguments}\footnote{%% 2010/03/05
+%% TODO: 'vfoot2e.sty' -- see notes.}
+%% and with 'hyperref' in titles of %% 2010/03/11
%% \emph{sections bearing \cs{label}s},
%% so we provide something like |\cs{<characters>}| from
%% '\ctanpkgref{tugboat}.sty'. %% 'doc.sty'.%% corr. 2011/05/27
\DeclareRobustCommand*{\cs}[1]{%
- \begin_min_verb \backslash_verb #1\egroup}
+% \begin_min_verb \backslash_verb #1\egroup}
+%% ... fails with `_' in footnote today (2014/03/19) so:
+ \begin_min_verb \withcsname\string#1\endcsname\egroup} %% v0.6
\newcommand*{\backslash_verb}{\char`\\}
%% %% 2011/06/27: undid 2011/05/27
%% Moreover, typing `&\par' in ``short" \emph{macro arguments}
@@ -253,9 +442,12 @@
%% by \cs{if}`<letters>'\cs{fi}.
%% Finally, there will be PDF bookmarks support for `\cs'
%% rather than for a real `&' or `\CmdSyntaxVerb' analogue like
-%% |\cstx{<charcters>}*[<opt>]{<mand>}| as follows.
+%% |\cstx{<characters>}*[<opt>]{<mand>}| as follows. %% corr. 2014/03/27
\DeclareRobustCommand*{\cstx}[1]{% %% corr. 2010/03/17
- \begin_min_verb \backslash_verb #1\futurelet\let_token \after_cs}
+% \begin_min_verb \backslash_verb #1%
+%% v0.6 like above:
+ \begin_min_verb \withcsname\string#1\endcsname
+ \futurelet\let_token \after_cs}
\newcommand*{\after_cs}{%
\ifcat\noexpand\let_token a\egroup \space
\else \expandafter \decide_verb \fi}
@@ -284,7 +476,8 @@
%% we offer |\endcell| as a replacement for the original `&':
\let\endcell&
%%
-%% === Escape Character Typesets Meta-Code ===
+%% ==== Escape Character Typesets Meta-Code ====
+%% \label{sec:esc}
%% |\BuildCsSyntax| will be a permanent alias for the active escape
%% character.
\DeclareRobustCommand*{\BuildCsSyntax}{%
@@ -315,9 +508,12 @@
%% %% 2010/03/27
\CatCode\_\before_build_cs_sub
\MakeOther\@%
- \expandafter \in@ \expandafter
- {\csname \string_built \expandafter \endcsname
- \expandafter}\expandafter{\niceverbNoVerbList}%
+% \expandafter \in@ \expandafter
+% {\csname \string_built \expandafter \endcsname
+% \expandafter}\expandafter{\niceverbNoVerbList}%
+ %% <- useless braces 2014/07/17 ->
+ \expandafter \in@ \csname \string_built \expandafter
+ \endcsname \expandafter {\niceverbNoVerbList}%
\ifin@
\csname \string_built
\expandafter\expandafter\expandafter \endcsname
@@ -376,58 +572,91 @@
\endgroup
}
%%
-%% === Meta-Variables ===
+%% ==== Meta-Variables ====
%% |\MetaVar<var-id>>| will be a permanent alias for the active \qtd{&<}.
-\def\MetaVar#1>{%
- \mbox{\normalfont\itshape $\langle$#1\/$\rangle$}}
- %% TODO offer without angles as well
+%% v0.6 simplifies `\pdfstringdefDisableCommands'. %% was \PDF...
+% \def\MetaVar#1>{%
+\MakeActive\<
+\newcommand*{\MetaVar}{\nvSelfProtect>\nvMetaVar}
+\MakeOther\<
+\def\nvMetaVar#1>{%
+ \mbox{\normalfont\itshape $\langle$#1\/$\rangle$}}
%% As opposed to 'ltxguide.cls', this works outside verbatim as well.
+%% TODO: offer without angles as well %% moved down 2014/03/25
%%
-%% === Hash Mark is Code ===
+%% ==== Hash Mark is Code ====
%% |\HashVerb<digit>| will be a permanent alias for the active hash mark.
\newcommand*{\HashVerb}[1]{{\tt\##1}}
%%
-%% === Single Right Quotes for &\textsf ===
+%% ==== Single Right Quotes for &\textsf ====
+%% \label{sec:rqsf}
%% |\RQsansserif| will be a permanent alias for the active single
%% right quote.
%%
-%% The basic problem with the ``single right quote feature"
+%% One essential %% 2014/03/25
+%% problem with the single right quote feature
+%% %problem with the ``single right quote feature"
%% is that a single right quote may be meant to be an apostrophe.
%% This is certainly the case at the right of a letter.
%% On the other hand, we assume that it is \emph{not} an apostrophe
%% (i)~in vertical mode (opening a new paragraph),
%% (ii)~after a horizontal skip.
%%
-%% For page headers, in expanding without typesetting,
-%% the expansion of `\RQsansserif' must contain another active
-%% single right quote.{\sloppy\par}
+%% %% 2014/03/25:
+%% Another problem is that with and \LaTeX\
+%% (as with Plain \TeX---\meta{The \TeX book}\ p.~357),
+%% the right single quote is needed for primes in math mode,
+%% and \LaTeX\ enforces this in `\@outputpage' preparing
+%% `\write's (why? TODO) as well as page headers.
\MakeActive\'
+ \newcommand*{\niceverb_rq_choice}[1]{% %% 2014/03/27
+%% We make a deal with `\active@math@prime': in math mode,
+%% the prime functionality acts; outside, the ``right quote
+%% sansserif mode" acts.
+%% Test: $a'$ now works with 'niceverb'.---For
+%% page headers, in expanding without typesetting,
+%% the expansion of `\RQsansserif' must contain another active
+%% single right quote.
+ \nvSelfProtect'{\ifmmode
+ \expandafter\active@math@prime
+ \else
+ \expandafter#1%
+ \fi}}
+%% The following `\do_rq_sansserif' is what |\DoRQsansserif|
+%% below was before v0.6. This, too, must be changed for
+%% `\active@math@char', and earlier use of `\DoRQsansserif'
+%% in `\niceverb_rq_sf_test' must be replaced.
+ \@ifdefinable\do_rq_sansserif
+ {\def\do_rq_sansserif#1'{\textsf{#1}}}
\newcommand*{\RQsansserif}{%
- \IfTypesetting{\niceverb_rq_sf_test}{\protect'}}
+% \IfTypesetting{\niceverb_rq_sf_test}{\protect'}}
+ \niceverb_rq_choice\niceverb_rq_sf_test}
\MakeOther\'
%% Another macro just to avoid more sequences of `\expandafter':
\newcommand*{\niceverb_rq_sf_test}{%
\ifhmode
\ifdim\lastskip>\z@
- \expandafter\expandafter\expandafter \DoRQsansserif
+% \expandafter\expandafter\expandafter \DoRQsansserif
+ \expandafter\expandafter\expandafter \do_rq_sansserif
\else
\ifnum\niceverb_spacefactor
\expandafter\expandafter\expandafter\expandafter
\expandafter\expandafter\expandafter
- \DoRQsansserif
+ \do_rq_sansserif %%% \DoRQsansserif
\else '\fi
\fi
\else \ifvmode
- \expandafter\expandafter\expandafter \DoRQsansserif
+% \expandafter\expandafter\expandafter \DoRQsansserif
+ \expandafter\expandafter\expandafter \do_rq_sansserif
\else '\fi
\fi}
+% \nvShowProtectedEdef{'niceverb'}
+\MakeOther\'
%% |\DoRQsansserif| %% 2010/03/10
%% is \emph{another} (possible) alias for the
-%% active single right quote, see below.
-\MakeActive\'
- \@ifdefinable\DoRQsansserif
- {\def\DoRQsansserif#1'{\textsf{#1}}}
-\MakeOther\'
+%% active single right quote, below.
+\newcommand*{\DoRQsansserif}{%
+ \niceverb_rq_choice\do_rq_sansserif} %% 2014/03/27
%% The following cases are typical and cannot be decided by the
%% previous criteria:
%% (i)~parenthesis, (ii)~footnotes and after ``horizontal"
@@ -439,10 +668,15 @@
%% \LaTeX's internal `\@sect' and of \TeX's primitives
%% `\noindent' and `\ignorespaces' as well as by
%% a signal `\spacefactor' value of 1001.
-%% In page headers, \LaTeX\ equips the single right quote with the
-%% meaning of `\active@math@prime' which must be overridden.
-\newcommand*{\nvAllowRQSS}{%
+%% %In page headers, \LaTeX\ equips the single right quote with the
+%% %meaning of `\active@math@prime' which must be overridden.
+%% %TODO more serious! v0.6
+%%
+%% |\nvAllowRQSS| becomes more powerful with v0.6,
+%% for \secref{listmv}:
+\NewSelfProtectedCommand{\nvAllowRQSS}{%
\MakeActiveLetHere\'\RQsansserif
+ \niceverb_rqsf %% 2014/03/27
\niceverb_ignore} %% 2010/03/16
%% These and the entire right quote functionality are
%% activated by %% removed todo 2010/03/10
@@ -453,17 +687,21 @@
%% later:
\AtBeginDocument{%
\edef\before_niceverb_parenthesis{\the\sfcode`\(}%
- \let \before_niceverb_ignore \ignorespaces %% 2010/03/16
- \let \before_niceverb_sect \@sect
- \let \before_niceverb_noindent \noindent} %% 2010/03/08
+ \newlet \before_niceverb_ignore \ignorespaces %% 2010/03/16
+ \newlet \before_niceverb_sect \@sect %% \newlet 2014/03/25
+ \newlet \before_niceverb_noindent \noindent} %% 2010/03/08
%% We assume that `\@sect' has the same
%% % We assume that `\@footnotetext' and `\@sect' have the same
%% parameters there as in \LaTeX\
%% (even if redefined by another package, like 'hyperref').
\def\niceverb_sect#1#2#3#4#5#6[#7]#8{%
\before_niceverb_sect{#1}{#2}{#3}{#4}{#5}{#6}%
- [{\protect\nvAllowRQSS #7}]%
- {\protect\nvAllowRQSS #8}}
+% [{\protect\nvAllowRQSS #7}]%
+% {\protect\nvAllowRQSS #8}}
+%% With v0.6, a more general |\NiceVerbMove{<text>}|
+%% is introduced, defined in \secref{listmv}:
+ [\NiceVerbMove{#7}]%
+ {\NiceVerbMove{#8}}}
%% 2010/03/20:
\newcommand*{\niceverb_spacefactor}{\spacefactor=1001\relax}
\newcommand*{\niceverb_noindent}{%
@@ -471,22 +709,47 @@
\newcommand*{\niceverb_ignore}{%
\ifhmode \niceverb_spacefactor \fi \before_niceverb_ignore}
%%
-%% Here are the main switches:
-\newcommand*{\nvRightQuoteSansSerif}{%
- \MakeActiveLet\'\RQsansserif
+%% Here are the main switches. With v0.6, |\nvRightQuoteSansSerif|
+%% is divided into two parts, for \secref{listmv}:
+\newcommand*{\niceverb_rqsf}{% %% 2014/03/27
+% \MakeActiveLet\'\RQsansserif
\sfcode`\(=1001 %% enable in parentheses 2009/04/10
%% I also added \HardNVerb+\sfcode`/=1001+ in the preamble
%% of 'makedoc.tex'. %% 2010/03/15
-% \let\@footnotetext\niceverb_footnotetext
- \let\ignorespaces\niceverb_ignore %% 2010/03/16
+% \let\@footnotetext\niceverb_footnotetext
+ \let\ignorespaces\niceverb_ignore %% 2010/03/16
+% \let\@sect\niceverb_sect
+ \let\noindent\niceverb_noindent} %% 2010/03/08
+\newcommand*{\nvRightQuoteSansSerif}{%
+ \niceverb_rqsf
+ \MakeActiveLet\'\RQsansserif
\let\@sect\niceverb_sect
- \let\noindent\niceverb_noindent} %% 2010/03/08
-\newcommand*{\nvRightQuoteNormal}{%
- \MakeNormal\'% %% 2010/03/21
+ \def\niceverb_rqsf_kind{\nvAllowRQSS}}
+%% <- It really must be `\def' in order to transmit the
+%% choice to the table of contents.
+%%
+%% With v0.6, in dealing with moving things in
+%% \secref{listmv}, section titles are handled
+%% in a more complex way. We divide the former
+%% |\nvRightQuoteNormal| into two parts:
+\newcommand*{\niceverb_rq_normal}{%
+% \MakeNormal\'% %% 2010/03/21
\sfcode`\(=\before_niceverb_parenthesis\relax
- \let\ignorespaces\before_niceverb_ignore %% 2010/03/16
- \let\@sect\before_niceverb_sect
- \let\noindent\before_niceverb_noindent} %% 2010/03/08
+ \let\ignorespaces\before_niceverb_ignore %% 2010/03/16
+ \let\noindent\before_niceverb_noindent} %% 2010/03/08
+\MakeActive\`
+\newcommand*{\nvRightQuoteNormal}{%
+ \MakeNormal\'% %% 2010/03/21
+ \niceverb_rq_normal
+ \let\nv_rqsf_kind\@empty
+ \ifnum\CatCode\`=\active %% `=' missing 2015/11/09
+ \ifx`\LQverb \else
+ \let\@sect\before_niceverb_sect
+ \fi
+ \else
+ \let\@sect\before_niceverb_sect
+ \fi}
+\MakeOther\`
%% |\nvAllRightQuotesSansSerif| %% 2010/03/10
%% (after `\begin{document}'!)
%% forces the `\textsf' feature
@@ -494,24 +757,31 @@
%% sure---DANGER! CARE!---to
%% use \qtd{&\rq} only for obtaining an apostrophe and the
%% double quote character \qtd{&"} for closing double quotes,
-%% or our `\dqtd{<text>}' for the entire quoting.
+%% or our `\dqtd{<text>}' for the entire quoting.{\sloppy\par}
\newcommand*{\nvAllRightQuotesSansSerif}{%
- \nvRightQuoteNormal
- \MakeActiveLet\'\DoRQsansserif}
-%% I started v0.31 (signal `\sfcode'=1000, lowercase letters
-%% get `\sfcode'=1001) because
-%% \NVerb+\href{http://ctan.org/pkg/<pkg>}{<pkg>}+ failed.
-%% However, what I actually needed was |\ctanpkgref{<pack-name>}|:
-% \DeclareRobustCommand*{\ctanpkgref}[1]{%
-% \href{http://ctan.org/pkg/#1}{\textsf{#1}}}
-%% ... moves to 'texlinks.sty' 2011/01/24.
-%%
-%% === Command-Highlighting Boxes ===
+ \niceverb_rq_normal %%% \nvRightQuoteNormal %% 2014/03/27
+%% That's one use of |\DoRQsansserif| with v0.6:
+ \MakeActiveLet\'\DoRQsansserif
+ \def\niceverb_rqsf_kind{\nvAllRQSS}} %% 2014/03/27
+%% <- must be `\def' for transmissions.
+\NewSelfProtectedCommand{\nvAllRQSS}{%
+ \niceverb_rq_normal
+%% That's the other use of |\DoRQsansserif| with v0.6:
+ \MakeActiveLetHere\'\DoRQsansserif}
+%% [Hiding remarks from 2010f.\ (`\ctanpkgref') 2014/03/23]
+%% %I started v0.31 (signal `\sfcode'=1000, lowercase letters
+%% %get `\sfcode'=1001) because
+%% %\NVerb+\href{http://ctan.org/pkg/<pkg>}{<pkg>}+ failed.
+%% %However, what I actually needed was |\ctanpkgref{<pack-name>}|:
+%% % \DeclareRobustCommand*{\ctanpkgref}[1]{%
+%% % \href{http://ctan.org/pkg/#1}{\textsf{#1}}}
+%% %... moves to 'texlinks.sty' 2011/01/24.
+%%
+%% ==== Boxes Highlighting Commands and Syntax ====
%% With v0.3, we include one kind of command syntax boxes
%% whose <content> is (in 'niceverb' syntax)
%% delimited as \GenCmdBox+|<content>|+.
-%% %% 2010/03/14:
-\newsavebox\niceverb_savebox
+%% %% 2010/03/14: %% \newsavebox!? moves up 2014/03/19
%% |\GenCmdBox<char><content><char>}| works like
%% `\NVerb<char><content><char>' except putting the latter's result
%% into a framed (or coloured or ...) box.{\sloppy\par}
@@ -521,24 +791,29 @@
%% (for the documentation of the present package).
\newcommand*{\HardVerbBox}{\_no_nice_meta_verb_true \gen_cmd_box}
\newcommand*{\gen_cmd_box}{%
-% \ifvmode\let\niceverb_boxtype\VerticalCmdBox %% 2011/11/05
-% \else\let\niceverb_boxtype\InlineCmdBox \fi
- \let\niceverb_egroup\nice_collect_verb_egroup
- \setbox\niceverb_savebox \hbox\bgroup
- \if_no_nice_meta_verb_
- \expandafter \HardNVerb
- \else \expandafter \NVerb \fi}
+% \let\niceverb_egroup\nice_collect_verb_egroup %% rm 2014/03/18
+% \setbox\niceverb_savebox \hbox\bgroup
+%% <- 2014/03/19 ->
+ \SetNiceVerbSaveBox
+% \if_no_nice_meta_verb_
+% \expandafter \HardNVerb
+% \else \expandafter \NVerb \fi
+%% <- 2014/03/19 -> [TODO use generalization]
+ \NiceMaybeMetaVerb[\nice_collect_verb_egroup]%
+}
\newcommand*{\nice_collect_verb_egroup}{%
\egroup \egroup
\ifvmode \expandafter \VerticalCmdBox
\else \ifmmode \hbox \fi
\expandafter \InlineCmdBox \fi
-% \ifmmode\hbox\fi \niceverb_boxtype %% 2011/11/05
- {\box\niceverb_savebox}%
-%% Modifying invocation of `\niceverb_normal_egroup' 2011/11/05
-%% according to remark of 2010/03/15 for saving nesting level:
+% {\box\niceverb_savebox}%
+%% <- 2014/03/19 ->
+ \TheNiceVerbSaveBox
+%% %Modifying invocation of `\niceverb_normal_egroup' 2011/11/05
+%% %according to remark of 2010/03/15 for saving nesting level:
+%% (Removing a remark that I don't understand 2014/03/19.)
\ifmmode\else\@\fi
- \let\niceverb_egroup\niceverb_normal_egroup
+% \let\niceverb_egroup\niceverb_normal_egroup %% rm 2014/03/19
}
%% |\nvCmdBox| will be the permanent alias for \qtd{&|}.
\newcommand*{\nvCmdBox}{\GenCmdBox\|}
@@ -552,11 +827,20 @@
%% The user can choose later by some `\renewcommand'.
%% We do the perhaps most essential thing here
%% (again cf. `\begin_min_verb'):{\sloppy\par}
-\newcommand*{\VerticalCmdBox}{\leavevmode\InlineCmdBox}
+\newcommand*{\VerticalCmdBox}{%
+%% v0.6 encourages a page break here
+%% according to the above idea, in order to avoid
+%% a page break after explaining subsequent code
+%% (TODO: that's a major functionality change):
+ \if@nobreak\else \pagebreak[2]\fi
+ \leavevmode\InlineCmdBox}
%% (2011/11/05 removing `\null'.)
%% The command declaration boxes in the documentation of
%% Nicola Talbot's \ctanpkgref{datatool}
-%% would be an especially nice realization of `\VerticalCmdBox'.
+%% would be an especially nice realization of
+%% `\VerticalCmdBox'.\footnote{I find the documentation
+%% of Martin Scharrer's \ctanpkgref{newverbs} package
+%% similarly impressive.}
%%
%% |\InlineCmdBox{<content>}|, according to our idea, should not
%% change baseline skip, even with some `\fboxsep' and `\fboxrule'.
@@ -577,7 +861,7 @@
\egroup
}
%% The default choice for |\SetOffInlineCmdBox| is `\fbox':
-\@ifdefinable\SetOffInlineCmdBox{\let\SetOffInlineCmdBox\fbox}
+\newlet\SetOffInlineCmdBox\fbox
%% You can `\renewcommand' it to change `\fboxsep', `\fboxrule'
%% etc. or to use a `\colorbox' with the 'color' package, e.g.,
%% I used the following setting so far:
@@ -612,16 +896,26 @@
%% `\GenCmdBox'. It should replace `\item[<content>]' in the
%% `description' environment. %% 2010/03/15
\newcommand*{\cmdboxitem}{%
- \bgroup
- \let\niceverb_egroup\cmd_item_egroup
- \global %% TODO!? 2010/03/15
- \setbox\niceverb_savebox \hbox\bgroup
- \NVerb}
+% \bgroup
+% \let\niceverb_egroup\cmd_item_egroup
+% \global %% TODO!? 2010/03/15
+% \setbox\niceverb_savebox \hbox\bgroup
+%% <- 2014/03/19 ->
+ \SetNiceVerbSaveBox
+% \NVerb}
+%% <- 2014/03/19 ->
+ \NVerb[\cmd_item_egroup]}
\newcommand*{\cmd_item_egroup}{%
- \egroup \egroup \egroup
- \item[\InlineCmdBox{\box\niceverb_savebox}]}
+ \egroup \egroup %%% \egroup %% 1 less 2014/03/19
+ \item[\InlineCmdBox\TheNiceVerbSaveBox]}
+%% %% 2014/03/19:
+%% Does it work?
+%% \begin{description}
+%% \cmdboxitem+\foo{<arg>}+ could be defined for a test.
+%% \cmdboxitem+\bar{<arg>}+ could be defined for a test as well.
+%% \end{description}
%%
-%% === When 'niceverb' Gets Nasty ===
+%% === When 'niceverb' Gets Nasty ===
%% These things are new with v0.3.
%% ==== Meta-Variables ====
%% This is even newer than v0.3. %% 2011/05/09
@@ -631,7 +925,7 @@
\providecommand*{\gt}{>}
\providecommand*{\lt}{<}
%%
-%% ==== Quotes ====
+%% ==== Quotes ====
%% %% WRONG 2010/03/05:
%% % The left quote feature for meta-code requires that the right quote
%% % feature---for replacing `\textsf'---is activated---no, rather:
@@ -646,8 +940,10 @@
%% verbatim mode entirely---then use `&',
%% e.g., \qtd{&\qtd{&&&&}} typesets \qtd{\qtd{&&}}, i.e.,
%% the ampersand in single (non-verbatim) quotes.
-% TODO \qtdverb!? alternative meaning for \LQverb!? 2010/03/06
+% todo \qtdverb!? alternative meaning for \LQverb!? 2010/03/06
% rather rare, & takes less space 2010/03/09
+%% ... see approaches below~...
+%%
%% |\AddQuotes| automatically surrounds code with single quotes.
%% I have so often felt that it was a design mistake
%% to drop them (2011/09/09):
@@ -658,17 +954,27 @@
\ifmmode\else
`\let\niceverb_maybe_rq\niceverb_rq
\fi}
-\@ifdefinable\niceverb_maybe_rq{\let\niceverb_maybe_rq\relax}
+\newlet\niceverb_maybe_rq\relax
\newcommand*{\niceverb_rq}{'\let\niceverb_maybe_rq\relax}
%% You can undo this by |\DontAddQuotes|:
\newcommand*{\DontAddQuotes}{\let\niceverb_maybe_qs\relax}
%% The default will be the behaviour that we had before:
\DontAddQuotes
+%% With v0.6, |\qtdnverb<char><m-verb><char>| encloses the
+%% ``meta-verbatim" material with single quotes:
+\newcommand*{\qtdnverb}{%
+%% Don't ... after `\AddQuotes':---TODO
+ \ifx\niceverb_maybe_qs\niceverb_add_qs
+ \expandafter\NVerb
+ \else
+ \lq
+% \expandafter\NVerb\expandafter[\expandafter\egroup\expandafter]
+ \fi}
%% |\dqtd{<text>}| can be used for enclosing in \emph{double} quotes
%% with the dangerous `\nvAllRightQuotesSansSerif' (see above).
\providecommand*{\dqtd}[1]{``#1"} %% 2012/11/27
%%
-%% ==== 'hyperref' ====
+%% ==== 'hyperref' ====
%% \label{sec:hyperref}
%% This is for\slash about compatibility with the 'hyperref' package.
%% (One preliminary thing: in doubt, don't load 'niceverb' earlier
@@ -686,10 +992,20 @@
\134\expandafter\@gobble\string}% %% ASCII octal encoding
\pdfstringdefDisableCommands{%
\let\nvAllowRQSS\empty %% not \relax 2010/03/12
+ \let\NiceVerbGeneral\empty %% 2014/03/27
+ \let\nvAllRQSS\empty %% 2014/03/27
+ \MakeActiveLetHere\<<% %% 2014/03/28
%% 2010/03/12
\MakeActiveLetHere\`\lq \MakeActiveLetHere\'\rq
\MakeActiveLetHere\&\PDFcstring
\def\cs{\134}% %% 2010/03/17, 2011/06/27
+%% The typesetting version of `\BuildCsSyntax' (\secref{esc}): 2014/07/16
+%% %% showfile.tex 2014/07/12
+ \withcsname\def BuildCsSyntax \endcsname{\cs}%
+%% ... disables `\niceverbNoVerbList'; better switch off
+%% auto mode with section headings TODO %% 2014/07/17
+%% (modify `\@startsection')
+ \let\decide_more_cs\bookmark_more_cs
}%
%% Moreover, in order to avoid spurious %% 2010/03/14
%% \texttt{Label(s) may have changed} with 'hyperref',
@@ -716,46 +1032,137 @@
\niceverb_aux_cat\MakeNormalHere#1}%
}{}%
}
-%% TODO doesn't 'babel' have the same problem? 2010/03/12
-%% ==== 'hyper-xr' ==== %% 2010/03/21
+%% % todo doesn't 'babel' have the same problem? 2010/03/12
+%% ==== 'hyper-xr' ==== %% 2010/03/21
%% With the 'hyper-xr' package creating links into external documents,
%% preceding `\externaldocument{<file>}' with
%% `\MakeActiveLet\&\CmdSyntaxVerb' may be needed.
%% I do not want to redefine something here right now as %% typo 2010/11/09
%% I have too little experience with this situation.
%%
+%% ==== Listings and Moving ==== %% 2014/03/26f.
+%% \label{sec:listmv}
+%% Working on v0.6, in testing I discovered a problem with
+%% the \emph{listing environments}. The present documentation
+%% uses code listings with 'makedoc', which build on the
+%% 'moreverb' package and eventually call \LaTeX's
+%% `\@noligs' macro.\footnote{\ctanpkgref{moreverb}
+%% is used, and its listing environments use \cs{@verbatim}
+%% from the \ctanpkgref{verbatim} package, then
+%% \cs{verbatim@font} calls \cs{@noligs}~...}
+%% The problem also appears with the `{verbatim}' environment
+%% from the \LaTeX\ kernel ('latex.ltx') as well as from the
+%% \ctanpkgref{verbatim} package---with anything that calls
+%% \LaTeX's `\@noligs'. The latter assigns special meangings
+%% to the active characters listed in the `\verbatim@nolig@list',
+%% three of them need a different meaning with 'niceverb'.
+%% When a page break happens after such an environment has been
+%% entered (this may well be when the environment falls to the
+%% beginning of the next page), these settings are used in
+%% \LaTeX's `\@outputpage' for running the `\write's of the page
+%% as well as for page headers. And this happens quite often
+%% in a package documentation!
+%%
+%% The problem was reported by Walter Schmidt with respect to
+%% math primes as `latex/3104' in 1999. I cannot reproduce %% rm. to 2015/11/09
+%% it, and I see two reasons in recent `latex.ltx' code
+%% why it cannot happen anymore. However, one remedy in `latex.ltx'
+%% is activating `\active@math@prime' in `\@resetactivechars'
+%% of `\@outputpage'.
+%% But this is bad for 'niceverb''s single right quote.
+%% We override the `\active@math@prime' functionality and
+%% verbatim `\@noligs' by appending
+%% some protection of the characters collected
+%% in `\verbatim@nolig@list'
+%% % local restorement |\useNiceVerbHere| of our syntax.
+%% to `\@resetactivechars'.
+%% This solves the problem for `\write's at `\shipout'.
+%% |\do_protect_noligs| is used for this purpose;
+%% actually it is applied in |\useNiceVerb|
+%% (\secref{allonoff}):{\sloppy\par}
+\newcommand*{\do_protect_noligs}[1]{% %% 2014/03/28
+ \MakeActiveLetHere#1\relax} %% `Here' missing 2015/11/09
+%% |\nvResetPages| can be used to restore \LaTeX's
+%% `\@resetactivechars'. I don't add it to `\noNiceVerb'
+%% because it could corrupt `\write's, so should be used with care.
+%% % Actually I think that our new version of `\@resetactivechars'
+%% % is better than \LaTeX's, I think I can recommend to use it
+%% % always and even to modify `latex.ltx' accordingly.
+%% % TODO!? math headings? without 'niceverb' restore right
+%% % single quote for math prime after `\shipout'.
+\AtBeginDocument{%
+ \newlet\latex_reset_actives\@resetactivechars}
+\newcommand*{\nvResetPages}{%
+ \let\@resetactivechars\latex_reset_actives}
+%% |\NiceVerbMove{<text>}| with v0.6 is for ``moving" arguments so that
+%% 'niceverb' syntax operates \emph{locally} at the destination,
+%% I think of table of contents and page headers.
+%% It is automatically used by 'niceverb''s variant of \LaTeX's
+%% sectioning commands (\secref{rqsf}); while with `\markboth', `\markright',
+%% `\addcontentsline' etc. you must it include yourself (currently, TODO?).
+%% This is meant as a remedy against \LaTeX's and \ctanpkgref{verbatim}'s
+%% `\@noligs' with respect to page headers. However,
+%% another purpose is that you could switch off the 'niceverb'
+%% syntax at the beginning of your document (by `\noNiceVerb'),
+%% though certain entries to the table of contents can use
+%% 'niceverb' syntax without affecting other entries
+%% (where some active characters may have different meanings,
+%% perhaps from a different package).
+\newcommand*{\NiceVerbMove}[1]{%
+%% What goes to `.aux' files must not have underscores:
+ {\NiceVerbGeneral\niceverb_rqsf_kind#1}}
+\NewSelfProtectedCommand{\NiceVerbGeneral}{%
+%% %... TODO only 2 applications of `\NewSelfProtectedCommand'!?
+%% %
+%% % Here is |\useNiceVerbHere|:
+% \newcommand*{\useNiceVerbHere}{% %% 2014/03/28
+ \let\MakeActiveLet\MakeActiveLetHere \useNiceVerbI}
+% \newcommand*{\NiceVerbGeneral}{%
+% \nvSelfProtect\NiceVerbGeneral\useNiceVerbHere}
+%%
%% ==== Turning off and on altogether ====
+%% \label{sec:allonoff}
%% These commands are new with v0.3.
%%
%% |\noNiceVerb| \emph{disables} all 'niceverb' features.
-\newcommand*{\noNiceVerb} {\MakeNormal\`%
- \MakeNormal\&%
- \MakeNormal\<%
- \MakeNormal\#%
- \nvRightQuoteNormal
- \MakeNormal\|}
+\newcommand*{\noNiceVerb} {\MakeNormal\`%
+ \MakeNormal\&%
+ \MakeNormal\<%
+ \MakeNormal\#%
+ \nvRightQuoteNormal
+ \MakeNormal\|%
+ \let\@sect\niceverb_before_sect} %% 2014/03/27
%% |\useNiceVerb| \emph{activates} all the 'niceverb' features
-%% (apart from ``auto mode").
-\newcommand*{\useNiceVerb}{\MakeActiveLet\`\LQverb
+%% (apart from ``auto mode"). With v0.6, it is divided
+%% into two parts for `\NiceVerbMove' in \secref{listmv}:
+\newcommand*{\useNiceVerbI}{\MakeActiveLet\`\LQverb
%% TODO to be changed with 'wiki.sty' v0.2
- \MakeActiveLet\&\CmdSyntaxVerb
- \MakeActiveLet\<\MetaVar
- \MakeActiveLet\#\HashVerb
- \nvRightQuoteSansSerif
- \MakeActiveLet\|\nvCmdBox}
+ \MakeActiveLet\&\CmdSyntaxVerb
+ \MakeActiveLet\<\MetaVar
+ \MakeActiveLet\#\HashVerb
+ \nvRightQuoteSansSerif
+ \MakeActiveLet\|\nvCmdBox}
+\newcommand*{\useNiceVerb} {\useNiceVerbI %% 2014/03/27
+ \let\@sect\niceverb_sect
+ \g@addto@macro\@resetactivechars{%
+% \useNiceVerbHere %% 2014/03/28
+ \let\do\do_protect_noligs \verbatim@nolig@list %% 2014/03/28
+}}
+%%
%%
-%% === Activating the 'niceverb' Syntax ===
+%% === Minor Final Things ===
+%% ==== Activating the 'niceverb' Syntax ====
%% 'niceverb' features are activated at `\begin{document}'
%% so (some) other packages can be loaded \emph{after} 'niceverb'.
%% For v0.3, we do this after possible settings for
%% compatibility with 'hyperref'.
\AtBeginDocument{\useNiceVerb}
%%
-%% === Leave Package Mode ===
+%% ==== Leave Package Mode ====
\PopLetterCat\_ %% 2012/08/27
\endinput
%%
-%% === VERSION HISTORY ===
+%%==== VERSION HISTORY ====
v0.1 2009/02/21 very first, sent to CTAN
v0.2 2009/04/04 ...NoVerbList: \subsubsection, \AddToMacro,
@@ -768,7 +1175,7 @@ v0.2 2009/04/04 ...NoVerbList: \subsubsection, \AddToMacro,
2009/04/11 \@ after \SimpleVerb
2009/04/14 noted TODO below
2009/04/15 change v0.1 to 2009/02/21
-v0.30 2010/02/27 short, more explained, \AssignCatCodeTo,
+v0.30 2010/02/27 short, more explained, \AssignCatCodeTo,
use \MakeActive for re-activating, \MakeNormal
2010/02/28 fixed @ and _ with & by moving \begin_min_verb;
replaced \lq by `; Capitals in Titles
@@ -847,10 +1254,52 @@ v0.45 2011/11/05 mod. \niceverb_collect_egroup/\VerticalCmdBox,
tried \output problem without avail
2011/12/05 clarified "r0.44"
with nicetext RELEASE r0.5
+
v0.5 2012/08/27 using 'catcodes', \providecommand\CatCode,
rm. \AssignCatCodeTo, \private_letters
2012/08/28 fixed \private_letters;
rewording for filling lines
2012/09/27 corrections about \MakeActive...
with nicetext RELEASE r0.6
-v0.51 2012/11/27 \[d]qtd only \provide'd
+
+v0.6 2012/11/27 \[d]qtd only \provide'd
+v0.61 2014/03/18 doc.: rm. TODO on private letters hook,
+ folding history tighter,
+ RM CODE COMMENTED OUT IN 2011;
+ \VerticalCmdBox gets \pagebreak[2]
+ 2014/03/19 doc.: strange replaced, restructured,
+ Command-Highlighting Boxes -> Boxes
+ Highlighting ...;
+ opt. arg. for \NVerb etc. replaces
+ \niceverb_egroup, \cs/\cstx enhanced,
+ reimpl.s with \SetNiceVerbSaveBox,
+ \nice_maybe_meta_verb -> \NiceMaybeMetaVerb
+ 2014/03/20 reworking robustness -- doc., ...; doc. on
+ `Shared ...', \qtdnverb
+ 2014/03/21 "debugging": \noexpand vs. \protect
+ 2014/03/22 ... continued; mod. \MakeNormal
+ 2014/03/23 ..., hiding ...
+ 2014/03/24 TODO on left quotes, doc. test there,
+ rm. babel-TODO
+ 2014/03/25 doc. about left quotes shorter, rm. earlier page
+ breaks, doc. problems with right quotes; \newlet;
+ dealing with \active@math@prime
+ 2014/03/26 corr. test for right single quote, more about
+ \active@math@prime, corr. \CmdSyntaxVerb
+ 2014/03/27 different treatment of \active@math@prime ...
+ main work for sec:listmv and independent
+ switching for rqsf, \NewSelfProtectedCommand
+ (3 applications); doc. corr., TODO;
+ \typeout test
+ 2014/03/28 test section; [TODO?]; \nvShowProtectedEdef,
+ \MetaVar: protection and hyperref version;
+ remark \NVerb; [\NiceVerbHere]; \protect test
+ with RQ removed; \do_protect_noligs fixed
+ and used
+ 2014/07/16 \BuildCsSyntax with hyperref
+ 2014/07/17 remarks on \BuildCsSyntax and removing useless
+ braces there (hours of trying better)
+ 2015/02/23 doc.: \PDFstring -> \pdfstring
+ 2015/04/07 doc.: page headings -> page headers
+ 2015/11/09 bugfixes \nvRightQuoteNormal and
+ \do_protect_noligs; doc. typo fix