diff options
author | Karl Berry <karl@freefriends.org> | 2010-04-05 23:24:55 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-04-05 23:24:55 +0000 |
commit | c8341d201aa8f8dfccefe14289a4c9031ae066e4 (patch) | |
tree | 7db3e7ff43954af7b8ef72053236f10dcb5df41b /Master/texmf-dist/tex/latex/nicetext/niceverb.sty | |
parent | 90664c2e19fef7f53b58df6203416e812e98661d (diff) |
nicetext update (5apr10)
git-svn-id: svn://tug.org/texlive/trunk@17725 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/nicetext/niceverb.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/nicetext/niceverb.sty | 785 |
1 files changed, 7 insertions, 778 deletions
diff --git a/Master/texmf-dist/tex/latex/nicetext/niceverb.sty b/Master/texmf-dist/tex/latex/nicetext/niceverb.sty index 22e0ad3aa2a..a2f7b104f65 100644 --- a/Master/texmf-dist/tex/latex/nicetext/niceverb.sty +++ b/Master/texmf-dist/tex/latex/nicetext/niceverb.sty @@ -1,1546 +1,775 @@ \NeedsTeXFormat{LaTeX2e}[1994/12/01] - -\ProvidesPackage{niceverb}[2010/03/29 v0.4 - +\ProvidesPackage{niceverb}[2010/04/05 v0.41 minimize doc markup (UL)] - - %% Copyright (C) 2009, 2010 Uwe Lueck, - %% http://www.contact-ednotes.sty.de.vu - %% -- author-maintained in the sense of LPPL below -- - %% - %% This file can be redistributed and/or modified under - %% the terms of the LaTeX Project Public License; either - %% version 1.3a of the License, or any later version. - %% The latest version of this license is in - %% http://www.latex-project.org/lppl.txt - %% We did our best to help you, but there is NO WARRANTY. - %% - %% Please report bugs, problems, and suggestions via - %% - %% http://www.contact-ednotes.sty.de.vu - %% - %% === Switching Category Codes === - %% v0.3 introduces `\AssignCatCodeTo' and `\MakeNormal'. - %% - %% |\CatCode{\<character>}| - %% (or simply |\CatCode\<character>|) - %% saves one token per use and works when the category code - %% of \qtd{&`} (``single left quote") has changed. - \newcommand*{\CatCode}{\catcode`} - % \newcommand*{\CatCode}[1]{\catcode`#1 } %% no better 2010/02/27 - %% With |\AssignCatCodeTo{<number>}{\<char>}|, - %% `\CatCode' may still be useful for displaying - %% (debugging or playing). - %% Note that `\<char>' is the {\it second} argument here. - \newcommand*{\AssignCatCodeTo}[2]{\catcode`#2=#1\relax} - %% |\MakeLetter\<char>| is used for \emph{private letters}, i.e., - %% to allow <char> in ``internal", non-user control sequences - %% ({\it\TeX book} Chap.\,3). - %% |\MakeOther| is just a different implementation of - %% \LaTeX's \cs{@makeother}. - \newcommand*\MakeLetter{\AssignCatCodeTo{11}} - \def \MakeOther {\AssignCatCodeTo{12}} - %% ... overriding 'fifinddo' if ... %% TODO 2010/03/12 - %% - %% |\MakeActive\<char>| just revives the meaning of <char> - %% it had most recently - %% (as an &\active character ... - %% maybe ``Undefined control sequence" unless ...) - %% This is fine for reviving 'niceverb' functionality - %% after having disabled it by `\MakeNormal'\linebreak[0]---provided - %% no other package used <char> actively in the meantime ... - \providecommand*{\MakeActive}{\AssignCatCodeTo\active} %% used v0.3 - %% We take a copy |\MakeActiveHere| of `\MakeActive' - %% as the latter may become a dangerous thing for compatibility - %% with 'hyperref'. - \@ifdefinable\MakeActiveHere{% - \let\MakeActiveHere\MakeActive} - %% <- TODO aliascid + elsewhere 2010/03/12 - %% |\MakeActiveLet\<char><macro name>| activates <char> - %% and then gives it the meaning of <macro name>. - \newcommand*{\MakeActiveLet}[2]{%% cf. \@sverb/\do@noligs (doc.sty) - \MakeActiveHere#1% %% 2010/03/12 - \begingroup - \lccode`\~`#1\relax \lowercase{\endgroup \let~#2}} - %% We take a copy |\MakeActiveLetHere| as well. - \@ifdefinable\MakeActiveLetHere{% - \let\MakeActiveLetHere\MakeActiveLet} - %% %% |\MakeAlign\&| can be used to restore the meaning of `&' after we - %% %% have made it `\active'. - %% % \providecommand*{\MakeAlign} {\AssignCatCodeTo4} - %% We use the ``underscore" as a private letter - %% (the \LaTeX2 Project Team likes it as well). - %% Its usual meaning can be restored by |\MakeNormal\_| - %% For restoring the usual category codes of \TeX's special - %% characters later, we store them now. - %% (I.e., these characters are listed in the macro `\dospecials' - %% that expands to - %% $$\mbox{\tt\def\do{\string\do\unskip\string}\dospecials}$$ - %% their category codes are - %% {\AssignCatCodeTo{6}{\#}% - %% \AssignCatCodeTo{3}{\$}%% fifinddo-interference!? TODO 2010/02/27 - %% \AssignCatCodeTo{4}{\&}%% fifinddo-interference!? TODO 2010/02/27 - %% \def\do#1{\def\do##1{, - %% \the\CatCode##1}\the\CatCode#1}\dospecials} - %% 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 - \CatCode#1\relax} - \dospecials - %% Tests: - %% ``normal category code" of `\' is - %% \expandafter\the\csname normal_catcode_\string\\\endcsname, - %% ``normal category code" of `$' is - %% \expandafter\the\csname normal_catcode_\string\$\endcsname; - %% ``normal category code" of `&' is - %% \expandafter\the\csname normal_catcode_\string\&\endcsname.%%% - %% \footnote{\LaTeX's \cs{nfss@catcodes} is similar, - %% but it makes space-like characters ignored. - %% Also cf. 'ltfinal.dtx'. - %% TODO: &\RestoreNormalCatcodes.} %% 2010/03/06 - %% - %% Here we switch to the ``underscore" as a ``letter" indeed - %% (for the rest of the package): - \MakeLetter\_ - - % \newcommand*{\make_iii_other}{\MakeOther\\\MakeOther\{\MakeOther\}} - %% <- replaced 2009/04/05 - %% |\MakeNormal\<char>| saves you from remembering ... - \newcommand*{\MakeNormal}[1]{% - \@ifundefined{\norm_catc_str#1}% - {\MakeOther#1}% - {\AssignCatCodeTo{\csname\norm_catc_str#1\endcsname}#1}} - \newcommand*{\norm_catc_str}{normal_catcode_\string} - %% TODO add ^^I and ^^M - %% We take a copy |\MakeNormalHere| of `\MakeNormal' as - %% with `\MakeActive'. - \@ifdefinable\MakeNormalHere{\let\MakeNormalHere\MakeNormal} - %% - %% === Robustness by &\IfTypesetting === - %% It seems we need some own ways to achieve various - %% compatibilities---using |\IfTypesetting{<if>}{<unless>}|. - %% It also saves some `\expandafter's. - \providecommand*{\IfTypesetting}{% - % \relax - %% This `\relax' suppressed ligatures of single right quotes! - %% %% removed 2010/03/23 - \ifx \protect\@typeset@protect - \expandafter \@firstoftwo - \else \expandafter \@secondoftwo \fi} - %% - %% === &\NVerb === - %% `\begin_min_verb' is a beginning shared by some macros here. - %% It begins like \LaTeX's `\verb', apart from the final `\tt'. - \newcommand*{\begin_min_verb}{% - \relax \ifmmode \hbox \else \leavevmode\null \fi - \bgroup \tt} - %% |\NVerb<char><code><char>| - \newcommand*{\NVerb}{% - \_no_nice_meta_verb_false \nice_maybe_meta_verb} - %% |\HardNVerb<char><code><char>| does not recognize meta-variables: - \newcommand*{\HardNVerb}{% - \_no_nice_meta_verb_true \nice_maybe_meta_verb} - \newif\if_no_nice_meta_verb_ - \newcommand*{\nice_maybe_meta_verb}[1]{% - %% 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: - \MakeOther\|\MakeOther\`\MakeOther\'% - \if_no_nice_meta_verb_\MakeOther\<\fi - \MakeActiveLetHere #1\niceverb_egroup - \verb@eol@error %% TODO change message 2009/04/09 - }{\string\NVerb \string#1}} - %% 2009/04/11: about `etc.' [preceding a box!? 2010/03/14] - \newcommand*{\niceverb_normal_egroup}{\egroup \ifmmode\else\@\fi} - \@ifdefinable\niceverb_egroup - {\let\niceverb_egroup\niceverb_normal_egroup} - %% - %% === 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 - %% (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. - %% (A hook for `\relax'ing certain things in - %% `\markboth' and `\markright' would have been an alternative.) - \MakeActive\` - \newcommand*{\LQverb}{% - \IfTypesetting{\lq_double_test}{\protect`}} - \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): - \begingroup - \let\do\MakeOther \dospecials - \MakeOther\|%% 2010/03/09! - \futurelet\let_token \lq_double_decide} - \newcommand*{\lq_double_decide}{% - \ifx\let_token\LQverb - \endgroup - ``\expandafter \@gobble - %% 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 - \endgroup - \expandafter\expandafter\expandafter \NVerb - \expandafter\expandafter\expandafter \'% - \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 === - %% |\CmdSyntaxVerb| will be a permanent alias for the active `&'. - \MakeActive\& - \newcommand*{\CmdSyntaxVerb}{% - \IfTypesetting{% - \begin_min_verb - %% v0.3 moves the previous line from &\cmd_syntax_verb - %% %% <- shows bug is fixed 2010/03/09 - %% where it is too late to establish private letters - %% according to next line which was in `\begin_min_verb' - %% earlier---an important bug fix! - \MakeLetter\@\MakeLetter\_% - \cmd_syntax_verb - }{\protect&\string}} - \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 - %% \emph{sections bearing \cs{label}s}, - %% so we provide something like |\cs{<characters>}| from 'doc.sty'. - \DeclareRobustCommand*{\cs}[1]{% - \begin_min_verb \backslash_verb #1\egroup} - \newcommand*{\backslash_verb}{\char`\\} - %% Moreover, typing `&\par' in ``short" \emph{macro arguments} - %% fails, you better type `\cs{par}' then. Likewise, - %% `\cs{if<letters>}' and `\cs{fi}' is safer in case - %% you want to skip some part of the documentation - %% (e.g., a package option skips commented code) - %% 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. - \DeclareRobustCommand*{\cstx}[1]{% %% corr. 2010/03/17 - \begin_min_verb \backslash_verb #1\futurelet\let_token \after_cs} - \newcommand*{\after_cs}{% - \ifcat\noexpand\let_token a\egroup \space - \else \expandafter \decide_verb \fi} - \newcommand*{\test_more_verb}{\futurelet\let_token \decide_verb} - \newcommand*{\decide_verb}{% - \jumpteg_on_with\bgroup\braces_verb - \jumpteg_on_with[\brackets_verb - \jumpteg_on_with*\star_verb - \egroup} - %% CAUTION/TODO wrong before (... if cmd without arg - %% use \ then or choose usual verb... - %% or \MakeLetter\( etc. ... or \xspace - \newcommand*{\jumpteg_on_with}[2]{% - \ifx\let_token#1\do_jumpteg_with#2\fi} - %% TODO cf. 'xfor', 'xspace' (&\break@loop); - %% `\DoOrBranch#1...#1' or so. %% found 2010/03/05 - \def\do_jumpteg_with#1#2\egroup{\fi#1} - \def\braces_verb#1{\string{#1\string}\test_more_verb} - \def\brackets_verb[#1]{[#1]\test_more_verb} - \def\star_verb*{*\test_more_verb} - %% not needed with \Auto... OTHERWISE useful in args! - %% %%2010/03/15: - %% As 'latex.ltx' has `\endgraf' as a permanent alias for the - %% primitive version of `\par' and `\endline' for `\cr', - %% we offer |\endcell| as a replacement for the original `&': - \let\endcell& - %% - %% === Escape Character Typesets Meta-Code === - %% |\BuildCsSyntax| will be a permanent alias for the active escape - %% character. - \DeclareRobustCommand*{\BuildCsSyntax}{% - \futurelet\let_token \build_cs_syntax_sp} - \newcommand*{\build_cs_syntax_sp}{% - \ifx\let_token\@sptoken \else %% TODO ^^M!? - \expandafter \start_build_cs_syntax - \fi} - \newcommand*{\start_build_cs_syntax}[1]{% - \edef\string_built{\string#1}% - %% #1 may be active.---With Donald Arseneau's 'import.sty' (e.g.), - %% \qtd{&_} may be needed to be `\active' with the meaning of - %% `\textunderscore', therefore restoring its category code - %% needs some more care than with v0.32 and earlier: - \edef\before_build_cs_sub{\the\CatCode\_}% - \MakeLetter\_\MakeLetter\@%% CAUTION, cf. ... - \test_more_cs} - \newcommand*{\test_more_cs}{% - \futurelet\let_token \decide_more_cs} - \newcommand*{\decide_more_cs}{% - \ifcat\noexpand\let_token a\expandafter \add_to_cs - \else - % \MakeNormalHere\_ - -%% Restoring \qtd{&_} more carefully with v0.33 - +%% Restoring \qtd{&_} more carefully with v0.4 %% (`\begingroup' ... `\endgroup'!?): - %% %% 2010/03/27 - \CatCode\_\before_build_cs_sub - \MakeOther\@% - \expandafter \in@ \expandafter - {\csname \string_built \expandafter \endcsname - \expandafter}\expandafter{\niceverbNoVerbList}% - \ifin@ - \csname \string_built - \expandafter\expandafter\expandafter \endcsname - \else - \begin_min_verb \backslash_verb\string_built - \expandafter\expandafter\expandafter \test_more_verb - \fi - \fi} - %% TODO such \if nestings with ifthen!? - %% cf.: - % \let\let_token,\typeout{\meaning\let_token} - %% TEST TODO fuer xspace!? (\ifin@) - \newcommand*{\add_to_cs}[1]{% - \edef\string_built{\string_built#1}\test_more_cs} - %% - %% |\AutoCmdSyntaxVerb| starts, |\EndAutoCmdSyntaxVerb| \emph{ends} - %% ``auto mode." - \newcommand*{\AutoCmdSyntaxVerb}{% - \MakeActiveLetHere\\\BuildCsSyntax} - \newcommand*{\EndAutoCmdSyntaxVerb}{\CatCode\\\z@} - %% |\NormalCommand{<characters>}| executes `\<characters>' - %% in ``auto mode." - \newcommand*{\NormalCommand}{} \let\NormalCommand\@nameuse - %% %% 2010/03/11: - %% Once I may want to use this feature in {\it Wikipedia}-like - %% section titles as supported by 'makedoc', yet I cannot really - %% apply the present feature soon, so this must wait ... - %% (There is a special problem with `\newlabel' and 'hyperref' ...) - %% - %% Former tests: - % \futurelet\LetToken\relax \relax - % \show\LetToken \typeout{\ifcat\noexpand\LetToken aa\else x\fi} - %% - %% |\niceverbNoVerbList| is the list of macros that will be - %% \emph{executed} instead of being typeset. - \newcommand*{\niceverbNoVerbList}{% - \begin\end\item\verb\EndAutoCmdSyntaxVerb\NormalCommand - \section\subsection\subsubsection} %% TODO!? - %% |\AddToMacro{\niceverbNoVerbList}{<macros>}| can be used to - %% add <macros> to that list. - \providecommand*{\AddToMacro}[2]{% %% TODO move to ... 2010/03/05 - \expandafter \def \expandafter #1\expandafter {#1#2}} - %% <- was very wrong 2010/03/18 - %% Hey, or just |\AddToNoVerbList{<macros>}|: %% 2010/03/28 - \newcommand*{\AddToNoVerbList}{\AddToMacro\niceverbNoVerbList} - %% - %% ``Auto mode" probably ain't mean a thing if it ain't invoked using - %% \[|\AutoCmdInput{<file>}|\] for typesetting <file> in ``auto mode:" - \newcommand*{\AutoCmdInput}[1]{% - -%% I am not yet sure whether `\input' etc. should be in the exception - -%% list permanently: %% TODO 2010/03/18 - \begingroup - - \AddToMacro\niceverbNoVerbList{\ProvidesFile\endinput}% - - %% <- TODO? 2010/03/18 - + \AddToMacro\niceverbNoVerbList{\ProvidesFile}% + %% <- removed `\endinput', will be code! 2010/04/05 \AutoCmdSyntaxVerb - \input{#1}% - \EndAutoCmdSyntaxVerb - \endgroup - } - %% - %% === 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 - %% As opposed to 'ltxguide.cls', this works outside verbatim as well. - %% - %% === 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 === - %% |\RQsansserif| will be a permanent alias for the active single - %% right quote. - %% - %% The basic 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} - \MakeActive\' - \newcommand*{\RQsansserif}{% - \IfTypesetting{\niceverb_rq_sf_test}{\protect'}} - \MakeOther\' - %% Another macro just to avoid more sequences of `\expandafter': - \newcommand*{\niceverb_rq_sf_test}{% - \ifhmode - \ifdim\lastskip>\z@ - \expandafter\expandafter\expandafter \DoRQsansserif - \else - \ifnum\niceverb_spacefactor - \expandafter\expandafter\expandafter\expandafter - \expandafter\expandafter\expandafter - \DoRQsansserif - \else '\fi - \fi - \else \ifvmode - \expandafter\expandafter\expandafter \DoRQsansserif - \else '\fi - \fi} - %% |\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\' - %% The following cases are typical and cannot be decided by the - %% previous criteria: - %% (i)~parenthesis, (ii)~footnotes and after ``horizontal" - %% environments like `\[<math>\]', (iii)~section titles, - %% (iv)~`\noindent'. - %% We introduce some dangerous tricks---redefinitions of - %% % \LaTeX's internals `\@footnotetext' and `\@sect' - %% %% <- 2010/03/16 -> - %% \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}{% - \MakeActiveLetHere\'\RQsansserif - \niceverb_ignore} %% 2010/03/16 - %% These and the entire right quote functionality are - %% activated by %% removed todo 2010/03/10 - %% \[|\nvRightQuoteSansSerif| - %% \mbox{\quad and disabled by\quad} - %% |\nvRightQuoteNormal|\]---at - %% `\begin{document}'---where we collect previous settings---or - %% 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 - %% 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}} - %% 2010/03/20: - \newcommand*{\niceverb_spacefactor}{\spacefactor=1001\relax} - \newcommand*{\niceverb_noindent}{% - \before_niceverb_noindent \niceverb_spacefactor} - \newcommand*{\niceverb_ignore}{% - \ifhmode \niceverb_spacefactor \fi \before_niceverb_ignore} - %% - %% Here are the main switches: - \newcommand*{\nvRightQuoteSansSerif}{% - \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\@sect\niceverb_sect - \let\noindent\niceverb_noindent} %% 2010/03/08 - \newcommand*{\nvRightQuoteNormal}{% - \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 - %% |\nvAllRightQuotesSansSerif| %% 2010/03/10 - %% (after `\begin{document}'!) - %% forces the `\textsf' feature - %% \emph{without} testing for apostrophes. You then must be - %% 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. - \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}}} - %% - %% === Command-Highlighting Boxes === - %% 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 - %% |\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} - \newcommand*{\GenCmdBox} {\_no_nice_meta_verb_false \gen_cmd_box} - %% |\HardVerbBox| is a variant of `\GenCmdBox' with the meta-variable - %% feature disabled - %% (for the documentation of the present package). - \newcommand*{\HardVerbBox}{\_no_nice_meta_verb_true \gen_cmd_box} - \newcommand*{\gen_cmd_box}{% - \bgroup - \let\niceverb_egroup\nice_collect_verb_egroup - \global %% TODO!? for \cmdboxitem 2010/03/15 - %% <- TODO replace \niceverb_egroup by parameter, - %% save one nesting level 2010/03/15 - \setbox\niceverb_savebox \hbox\bgroup - \if_no_nice_meta_verb_ - \expandafter \HardNVerb - \else \expandafter \NVerb \fi} - \newcommand*{\nice_collect_verb_egroup}{% - \egroup \egroup - \ifvmode \expandafter \VerticalCmdBox - \else \ifmmode \hbox \fi - \expandafter \InlineCmdBox \fi - {\box\niceverb_savebox}% - \niceverb_normal_egroup} - %% |\nvCmdBox| will be the permanent alias for \qtd{&|}. - \newcommand*{\nvCmdBox}{\GenCmdBox\|} - %% |\VerticalCmdBox{<content>}| - %% may eventually start a `decl' environment - %% as in 'ltxguide.cls', looking ahead for another \qtd{&|} - %% in order to (perhaps) append another row. - %% Another possibility is first to do some - %% \[`\if@nobreak\else \pagebreak[2]\fi'\] - %% etc. and then invoke `\InlineCmdBox'. - %% 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\null\InlineCmdBox} - %% The command declaration boxes in the documentation of - %% Nicola Talbot's \ctanpkgref{datatool} - %% would be an especially nice realization of `\VerticalCmdBox'. - %% - %% |\InlineCmdBox{<content>}|, according to our idea, should not - %% change baseline skip, even with some `\fboxsep' and `\fboxrule'. - %% (However, it may be a good idea to increase the overall - %% normal baseline skip.) - %% We therefore replace actual height and depth of the content by - %% the height and depth of math parentheses. - \newcommand*{\InlineCmdBox}[1]{% - \bgroup - %% ... needed in math mode with `\begin_min_verb'. - \fboxsep 1pt - \kern\SetOffInlineCmdBoxOuter - \smash{\SetOffInlineCmdBox{\kern\SetOffInlineCmdBoxInner - \InlineCmdBoxArea{#1}% - \kern\SetOffInlineCmdBoxInner}}% - \mathstrut - \kern\SetOffInlineCmdBoxOuter - \egroup - } - %% The default choice for |\SetOffInlineCmdBox| is `\fbox': - \@ifdefinable\SetOffInlineCmdBox{\let\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: - %% %% 2010/03/10 - %% \begin{verbatim} - %% \RequirePackage{color} - %% \renewcommand*{\SetOffInlineCmdBox} - %% {\colorbox[cmyk]{.1,0,.2,.05}} - %% \end{verbatim} - %% |\SetOffInlineCmdBoxInner| enables controlling the inner - %% horizontal space to the box margin independently of - %% `\fboxsep'. - %% %% We set it to 0\,pt. as default (it is a macro only, - %% %% for a while). - \newcommand*{\SetOffInlineCmdBoxInner}{-\fboxsep\thinspace} - %% This choice is inspired by `\cstok' for ``boxed" things - %% in Knuth's 'manmac.tex' which formats {\it The \TeX book}. - %% %% <- 2010/03/10 - %% - %% |\SetOffInlineCmdBoxOuter| allows that the box hangs out into the - %% margin horizontally. - %% We set it to 0\,pt as default (it is a macro only, for a while). - \newcommand*{\SetOffInlineCmdBoxOuter}{\z@} - %% The height and depth of the frame should be the same for all - %% inline boxes, we think. - %% The present choice |\InnerCmdBoxArea| for the spacing - %% respects code characters rather than the height and depth - %% of the angle brackets that surround meta-variable names. - \newcommand*{\InlineCmdBoxArea}[1]{% - \smash{#1}\vphantom{gjpq\backslash_verb}} - %% \GenCmdBox+\cmdboxitem|<content>|+ is another variant of - %% `\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} - \newcommand*{\cmd_item_egroup}{% - \egroup \egroup \egroup - \item[\InlineCmdBox{\box\niceverb_savebox}]} - %% - %% === When 'niceverb' Gets Nasty === - %% These things are new with v0.3. - %% ==== 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: - %% % that the right quote \qtd{&'} is `\active'. - %% % - %% In order to get \emph{real} single quotes, you could use `\lq <text>\rq', - %% maybe appending a `\ ', but the code |\qtd{<text>}| may look better - %% and be easier to type. - \newcommand*{\qtd}[1]{`#1'} - %% However, here we get the problem that the left quote in - %% \NVerb\+\qtd{`<code>'}+ will be unable to switch into - %% 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 - % rather rare, & takes less space 2010/03/09 - %% |\dqtd{<text>}| can be used for enclosing in \emph{double} quotes - %% with the dangerous `\nvAllRightQuotesSansSerif' (see above). - \newcommand*{\dqtd}[1]{``#1"} - %% - %% ==== 'hyperref' ==== - %% This is for\slash about compatibility with the 'hyperref' package. - %% (One preliminary thing: in doubt, don't load 'niceverb' earlier - %% than 'hyperref'.) %% TODO 2010/03/14 - %% - %% We need some substitutions for PDF bookmarks with - %% 'hyperref'. We issue them at `\begin{document}' when we know - %% if 'hyperref' is at work.\footnote{An alternative approach would be - %% using - %% \ctanpkgref{afterpackage} - %% by Alex Rozhenko.} - \AtBeginDocument{% - \@ifpackageloaded{hyperref}{% - \newcommand*{\PDFcstring}{% %% moved here 2010/03/09 - \134\expandafter\@gobble\string}% %% ASCII octal encoding - \pdfstringdefDisableCommands{% - \let\nvAllowRQSS\empty %% not \relax 2010/03/12 - %% 2010/03/12 - \MakeActiveLetHere\`\lq \MakeActiveLetHere\'\rq - \MakeActiveLetHere\&\PDFcstring - \def\cs{\134}% %% 2010/03/17 - }% - %% Moreover, in order to avoid spurious %% 2010/03/14 - %% \texttt{Label(s) may have changed} with 'hyperref', - %% a single right quote must be \emph{read} as active - %% by a `\newlabel' if and only if it has been active when - %% `\@currentlabelname' was formed.\footnote{This uses - %% \cs{@onelevelsanitize}, therefore &\protect doesn't - %% change the behaviour of ``active" characters.} - %% as `\active'. We use `\protected@write' as this cares for - %% `\nofiles'. `\@auxout' may be `\@partaux' for `\include'. - \newcommand*{\niceverb_aux_cat}[2]{% %% 2010/03/14 - \protected@write\@auxout{}{\string#1\string#2}}% - \renewcommand*{\MakeActive}[1]{% - \MakeActiveHere#1% - \niceverb_aux_cat\MakeActiveHere#1}% - \renewcommand*{\MakeActiveLet}[2]{% - \MakeActiveLetHere#1#2% - \niceverb_aux_cat\MakeActiveHere#1}% - \renewcommand*{\MakeNormal}[1]{% - \MakeNormalHere#1% - \niceverb_aux_cat\MakeNormalHere#1}% - }{}% - } - %% 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 I - %% I have too little experience with this situation. - %% - %% ==== Turning off and on altogether ==== - %% These commands are new with v0.3. - %% - %% |\noNiceVerb| \emph{disables} all 'niceverb' features. - \newcommand*{\noNiceVerb} {\MakeNormal\`% - \MakeNormal\&% - \MakeNormal\<% - \MakeNormal\#% - \nvRightQuoteNormal - \MakeNormal\|} - %% |\useNiceVerb| \emph{activates} all the 'niceverb' features - %% (apart from ``auto mode"). - \newcommand*{\useNiceVerb}{\MakeActiveLet\`\LQverb - %% TODO to be changed with 'wiki.sty' v0.2 - \MakeActiveLet\&\CmdSyntaxVerb - \MakeActiveLet\<\MetaVar - \MakeActiveLet\#\HashVerb - \nvRightQuoteSansSerif - \MakeActiveLet\|\nvCmdBox} - %% - %% === 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 === - \MakeNormalHere\_ %% 2010/03/12 - \endinput - %% - %% === VERSION HISTORY === - - v0.1 2009/02/21 very first, sent to CTAN - v0.2 2009/04/04 ...NoVerbList: \subsubsection, \AddToMacro, - 2009/04/05 \SimpleVerb makes more other than iii - 2009/04/06 just uses \dospecials - 2009/04/08 debugging code for rq/sf, +\relax - 2009/04/09 +\verb@eol@error, prepared for new doc method, - removed spurious \makeat..., -\relax (ligature), - 2009/04/10 ('-trick - 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, - use \MakeActive for re-activating, \MakeNormal - 2010/02/28 fixed @ and _ with & by moving \begin_min_verb; - replaced \lq by `; Capitals in Titles - 2010/03/05 \SimpleVerb -> \NVerb; - use \MakeActive + \MakeNormal; \rq -> '; - renamed some sections; \lq_verb -> \LQverb, - \niceverb_meta -> \MetaVar, - \param_verb -> \HashVerb - 2010/03/06 removed \MakeAlign; removed @ and _ todo below; - \NVerb makes ` and ' other; - \nvAllowRQSF allows ' in column titles, - 2010/03/08 \LQverb and & work in column titles, - \RQverb works with \noindent; - bookmark substitutions - 2010/03/09 extended notes on 'hyperref' (in)compatibility; - \MakeLetter\@ in \CmdSyntaxVerb only; - |...| implemented as \prepareCmdBox etc.! - 2010/03/10 \colorbox example, \thinspace; ltxguide!; - removed todo; ..._exec -> \DoRQsansserif; - minor doc changes in ``Nasty" - 2010/03/11 doc changes in ``Escape Character ..." and - ``Ampersand" - 2010/03/12 \niceverb_aux_cat, \MakeActiveHere etc., - \IfTypesetting, \noNiceVerb, \useNiceVerb, - corr. bracing mistake in \MakeNormal! - 2010/03/14 0.31 -> 0.3; \HardNVerb, \GenCmdBox, - \prepareCmdBox -> \nvCmdBox - 2010/03/15 \endcell; \cmdboxitem; remark on \sfcode`/ - 2010/03/16 corr. -> \endline; - advice on \cs{par}, \cs{if...}, \cs{fi}; - redefined \ignorespaces for RQ feature - 2010/03/17 corr. `\fututelet', corr. \cs PDF substitution - 2010/03/18 |\niceverbNoVerbList|, |\AddToMacro| etc.; - corr. \AddToMacro; - \lastskip-fix of \niceverb_ignore, - another fix of \niceverb_noindent - 2010/03/19 another fix of \niceverb_ignore: \spacefactor - 2010/03/20 ... again: \niceverb_spacefactor - - NOT DISTRIBUTED, just stored saved as separate version - - v0.31 2010/03/20 right quote feauture: letters get \sfcode=1001 - `column title' -> `page headers', \ctanpkgref - - NOT DISTRIBUTED, just stored as separate version - - v0.32 2010/03/21 taking best things from v0.30 and v0.31 - 2010/03/23 removed \relax from \IfTypesetting - SENT TO CTAN - - v0.4 2010/03/27 restoring `_' with "auto mode" safer - 2010/03/28 \AddToNoVerbList - 2010/03/29 note above, renamed v0.4 +SENT TO CTAN +v0.41 2010/04/03 v0.33 -> v0.4 + 2010/04/05 corrected \AutoCmdInput list |