TeX - LaTeX Asked on January 20, 2021
I have newcommanddd[2]{item[texttt{#1}] #2}
and later I have
dd{bc}{text verb#$(echo 5+4 | bc)# text verb#$((5+4))# text}
and I get
! You can't use `macro parameter character #' in math mode.
<argument> ...nicht mit verb ##$(echo 5+4 | bc)##
rechnen, sondern die neue...
l.74 ...ekten Rechnen, verb#$((5+4))#, benutzen.}
Sorry, but I'm not programmed to handle this case;
I'll just pretend that you didn't ask for it.
If you're in the wrong mode, you might be able to
return to the right one by typing `I}' or `I$' or `Ipar'.
How can I get the verbatim into my command without the command interpreting it wrongly?
I'm not sure I fully understand what you're trying to achieve, but I think the simplest solution may be something along the following model. Note that one has to "escape" the dollar sign by prefixing a backslash to it; on the other hand, it's not necessary to introduce verbatim strings explicitly.
documentclass{article}
newcommanddd[2]{item[texttt{#1}] #2}
begin{document}
begin{description}
dd{bc}{text texttt{$(echo 5+4 $|$ bc)} text texttt{$((5+4))} text}
end{description}
end{document}
Correct answer by Mico on January 20, 2021
As already mentioned in comment, verbatim
or its short form verb
is a different beast altogether. If you must pass verbatim
stuff as arguments, you could consider a fancyvrb
work-around.
Using fancyvrb
you can save and restore your verbatim
commands in the following way:
usepackage{fancyvrb}% http://ctan.org/pkg/fancyvrb
DefineShortVerb{#}% # denotes verbatim opening/closing character
SaveVerb{VerbA}#(echo 5+4 | bc)#
SaveVerb{VerbB}#$((5+4))#
This stores (echo 5+4 | bc)
as-is in VerbA
, and $((5+4))
in VerbB
, which can be used (restored) later by means of UseVerb{VerbA}
and UseVerb{VerbB}
respectively. Here is a minimal working example:
documentclass{article}
usepackage{fancyvrb}
newcommanddd[2]{item[texttt{#1}] #2}
begin{document}
DefineShortVerb{#}% # denotes verbatim opening/closing character
SaveVerb{VerbA}#(echo 5+4 | bc)#
SaveVerb{VerbB}#$((5+4))#
begin{description}
dd{bc}{text UseVerb{VerbA} text UseVerb{VerbB} text}
end{description}
end{document}
Edit: A similar work-around exist using the verbdef
package. It provides verbdef{<cmd>}{<verb>}
that defines <cmd>
with verbatim <verb>
content. The following MWE produces the same output as above:
documentclass{article}
usepackage{verbdef}
newcommanddd[2]{item[texttt{#1}] #2}
begin{document}
verbdefVerbA{(echo 5+4 | bc)}
verbdefVerbB{$((5+4))}
begin{description}
dd{bc}{text VerbA text VerbB text}
end{description}
end{document}
Answered by Werner on January 20, 2021
Use the following:
newcommanddd[2]{texttt{detokenize{#1}} #2}
This will print #1 vermbatim.
Answered by Alkis on January 20, 2021
Nowadays you can use the more "robust" Verb
from fvextra
package.
Note both Verb|...|
and Verb{...}
is supported (with some restrictions). Also when used as argument, don't use #
as delimiters.
documentclass{article}
usepackage{fvextra}
newcommanddd[2]{item[texttt{#1}] #2}
begin{document}
begin{description}
dd{bc}{text Verb{$(echo 5+4 | bc)} text Verb{$((5+4))} text}
end{description}
end{document}
Answered by muzimuzhi Z on January 20, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP