diff options
Diffstat (limited to 'Master/texmf-doc/doc/english/FAQ-en/html/FAQ-verbwithin.html')
-rw-r--r-- | Master/texmf-doc/doc/english/FAQ-en/html/FAQ-verbwithin.html | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-verbwithin.html b/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-verbwithin.html new file mode 100644 index 00000000000..7f6a82228dc --- /dev/null +++ b/Master/texmf-doc/doc/english/FAQ-en/html/FAQ-verbwithin.html @@ -0,0 +1,109 @@ +<head> +<title>UK TeX FAQ -- question label verbwithin</title> +</head><body> +<h3>Why doesn't <code>\</code><code>verb</code> work within ...?</h3> +<p>The LaTeX verbatim commands work by changing category codes. Knuth +says of this sort of thing "Some care is needed to get the timing +right...", since once the category code has been assigned to a +character, it doesn't change. So <code>\</code><code>verb</code> has to assume that it is +getting the first look at its parameter text; if it isn't, TeX has +already assigned category codes so that <code>\</code><code>verb</code> doesn't have a +chance. For example: +<blockquote> +<pre> +\verb+\error+ +</pre> +</blockquote> +will work (typesetting '<code>\</code><code>error</code>'), but +<blockquote> +<pre> +\newcommand{\unbrace}[1]{#1} +\unbrace{\verb+\error+} +</pre> +</blockquote> +will not (it will attempt to execute <code>\</code><code>error</code>). Other errors one +may encounter are '<code>\</code><code>verb</code> ended by end of line', or even '<code>\</code><code>verb</code> +illegal in command argument'. +<p>This is why the LaTeX book insists that verbatim +commands must not appear in the argument of any other command; they +aren't just fragile, they're quite unusable in any command parameter, +regardless of <a href="FAQ-protect.html"><code>\</code><code>protect</code>ion</a>. (The <code>\</code><code>verb</code> +command tries hard to detect if you're misusing it; unfortunately, it +can't always do so, and the error message is therefore not a reliable +indication of problems.) +<p>The first question to ask yourself is: "is <code>\</code><code>verb</code> actually +necessary?". +<ul> +<li> If <code>\</code><code>texttt{<em>your text</em>}</code> produces the same result + as <code>\</code><code>verb</code><code>+<em>your text</em>+</code>, then there's no need of + <code>\</code><code>verb</code> in the first place. +<li> If you're using <code>\</code><code>verb</code> to typeset a URL or email + address or the like, then the <code>\</code><code>url</code> command from the + <i>url</i> package will help: it doesn't suffer from the problems + of <code>\</code><code>verb</code>. +<li> If you're putting <code>\</code><code>verb</code> into the argument of a boxing + command (such as <code>\</code><code>fbox</code>), consider using the <code>lrbox</code> + environment: +<blockquote> +<pre> +\newsavebox{\mybox} +... +\begin{lrbox}{\mybox} + \verb!VerbatimStuff! +\end{lrbox} +\fbox{\usebox{\mybox}} +</pre> +</blockquote> +</ul> +<p>Otherwise, there are three partial solutions to the problem. +<ul> +<li> Some packages have macros which are designed to be responsive + to verbatim text in their arguments. For example, + the <i>fancyvrb</i> package defines a command + <code>\</code><code>VerbatimFootnotes</code>, which redefines the <code>\</code><code>footnotetext</code> (and + hence the <code>\</code><code>footnote</code>) commands in such a way that you can include + <code>\</code><code>verb</code> commands in its argument. This approach could in + principle be extended to the arguments of other commands, but it can + clash with other packages: for example, <code>\</code><code>VerbatimFootnotes</code> + interacts poorly with the <code>para</code> option to the <i>footmisc</i> + package. +<p> The <i>memoir</i> class defines its <code>\</code><code>footnote</code> command so that + it will accept verbatim in its arguments, without any supporting package. +<li> The <i>fancyvrb</i> package defines a command <code>\</code><code>SaveVerb</code>, + with a corresponding <code>\</code><code>UseVerb</code> command, that allow you to save + and then to reuse the content of its argument; for details of this + extremely powerful facility, see the package documentation. +<p> Rather simpler is the <i>verbdef</i> package, which defines a + (robust) command which expands to the verbatim argument given. +<li> If you have a single character that is giving trouble (in + its absence you could simply use <code>\</code><code>texttt</code>), consider using + <code>\</code><code>string</code>. <code>\</code><code>texttt{my<code>\</code><code>string</code>_</code>name} + typesets the same as + <code>\verb+my_name+</code>, and will work in the argument of a command. It + won't, however, work in a moving argument, and no amount of + <a href="FAQ-protect.html"><code>\</code><code>protect</code>ion</a> will make it work in + such a case. +<p> A robust alternative is: + <blockquote> +<pre> +\chardef\bs=`\_ +... +\section{... \texttt{my\bs name}} +</pre> + </blockquote> + Such a definition is 'naturally' robust; the construction + "<<i>back-tick</i>><code>\</code><code><<i>char</i>></code>" may be used for any + troublesome character (though it's plainly not necessary for things + like percent signs for which (La)TeX already provides + robust macros). +</ul> +Documentation of both <i>url</i> and <i>verbdef</i> is in the +package files. +<dl> +<dt><tt><i>fancyvrb.sty</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/fancyvrb.zip">macros/latex/contrib/fancyvrb</a> (<a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/fancyvrb.tar.gz">gzipped tar</a>, <a href="http://www.tex.ac.uk/tex-archive/macros/latex/contrib/fancyvrb/">browse</a>) +<dt><tt><i>memoir.cls</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/memoir.zip">macros/latex/contrib/memoir</a> (<a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/memoir.tar.gz">gzipped tar</a>, <a href="http://www.tex.ac.uk/tex-archive/macros/latex/contrib/memoir/">browse</a>) +<dt><tt><i>url.sty</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/misc/url.sty">macros/latex/contrib/misc/url.sty</a> +<dt><tt><i>verbdef.sty</i></tt><dd><a href="ftp://cam.ctan.org/tex-archive/macros/latex/contrib/misc/verbdef.sty">macros/latex/contrib/misc/verbdef.sty</a> +</dl> +<p><p>This question on the Web: <a href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=verbwithin">http://www.tex.ac.uk/cgi-bin/texfaq2html?label=verbwithin</a> +</body> |