Argument of \someCustomCommand has an extra } encountered when command is put in \ul. How to fix this?
Have a look at section 5.2 of the soul
manual:
To convince
soul
not to feed font switching (or other) commands to the analyzer, but rather to execute them immediately, they have to be registered, too. The\soulregister
macro takes the\soulregister
name of a command name and either0
or1
for the number of arguments:
\soulregister{<command name>}{<number of arguments>}
That means even though \code
is essentially \texttt
, you have to make sure that soul
treats it appropriately by using \soulregister{\code}{1}
.
Minimal working example:
\documentclass{article}
\usepackage{soul}
\newcommand{\code}[1]{\texttt{#1}}
\soulregister{\code}{1}
\begin{document}
\ul{\code{Hello}} world
\end{document}
Related videos on Youtube
Shahbaz
Updated on March 06, 2020Comments
-
Shahbaz over 3 years
Possible Duplicate:
Custom command inside soul package's \hlTo make the document easier to understand (and easier to write), I have defined:
\newcommand{\code}[1]{\texttt{#1}}
I have used
\code{some code}
inhyperref
and many many other places and everything has been fine.However, now I used it with
\ul
(fromsoul
package), like this:\ul{\code{Hello}} world
and I get this warning:
! Argument of \code has an extra }. <inserted text> \par l.52 \ul{\code{Hello}} world
Is theresomething wrong with the way I am defining my command? If I use
\ul{\texttt{Hello}}
there is no problem. Shouldn't my code be effectively reduced to that?!Note: I'm not looking for
\code{\ul{Hello}}
as an answer or similar things that change the text. The main reason is that I generate the text from another file that may decide to put the underline around the code. It would be much more difficult for me to change that order in text, than to fix the definition, or even replace all\code
s with\texttt
s and forget about the macro altogether!-
Shahbaz over 11 yearsFunny how I didn't find that question! :-/
-
-
Shahbaz over 11 yearsGreat thanks! Could I ask a side question that is probably related? I see in section 6.4 of the manual how to use
soul
in section headings. It is very vague, but fine. However, it says how to apply asoul
command to the whole section, while I need to write something like\section{Only \ul{this} is underlined}
. Is such a thing possible? -
diabonas over 11 years@Shahbaz Using
\ul
and friends in sectioning commands should work fine (at least in the standard classes likearticle
etc.). You have to watch out, however, when using this in combination withhyperref
: In this case, you'll need to use something like\section{Only \texorpdfstring{\ul{this}}{this} is underlined}
. -
Shahbaz over 11 yearsYou are awesome!