Strikeout in math mode

How can I strikeout words in math mode (similar to \sout with \usepackage{ulem} in text mode)? I've tried \usepackage{cancel} and $$\cancel{1+1=2}$$ but that draws a diagonal line.

Use something like

\sout{$a^2+b^2=c^2$}


or

$\hbox{\sout{a^2+b^2}}=c^2$


And you can of course define a command for convenience.

• This does not work inside math mode, e.g. if I want to strikeout a portion of a phrase in math mode. – N.N. Jun 13 '11 at 12:20
• @N.N.: It's easy to generalize the solution. See update. – Leo Liu Jun 13 '11 at 12:28
• This method does not really work well. The ulem package is necessary, and it changes \emph{} to underlining. – Jeff Aug 29 '13 at 19:35
• @Jeff: Use \normalem. – Leo Liu Aug 30 '13 at 2:20
• @Jeff: or \usepackage[normalem]{ulem}. – sigvaldm Jan 17 at 10:54

version 2 (fine remark from Martin)

\documentclass{scrartcl}
\usepackage{xcolor,cancel}

\newcommand\hcancel[2][black]{\setbox0=\hbox{$#2$}%
\rlap{\raisebox{.45\ht0}{\textcolor{#1}{\rule{\wd0}{1pt}}}}#2}

\begin{document}

$x+\hcancel[red]{ \sum_a \mathcal{D}^a\mathcal{D}_a}=2x+ \sum_a \mathcal{D}^a\mathcal{D}_a+3$

\end{document}


• \hbox{#2} will typeset #2 in textmode, which is fine with y (except maybe a slightly wrong width), but will break horrible with real math expressions. – Martin Scharrer Jun 13 '11 at 12:44
• @Martin yes you are right, I forgot $...$ – Alain Matthes Jun 13 '11 at 12:56
• Does this solution rely on \documentclass{scrartcl}? – N.N. Jun 13 '11 at 17:16
• @N.N. no I think the package cancel is independent – Alain Matthes Jun 13 '11 at 17:47
• I removed the  from the \hbox and included them in the parameter (e.g., \hcancel{$2+2=4$} and it worked fine. Thanks! – cxw Dec 30 '16 at 21:26

Works in math and text mode

\documentclass{article}
\usepackage{calc}
\newsavebox\CBox
\newcommand\hcancel[2][0.5pt]{%
\ifmmode\sbox\CBox{$#2$}\else\sbox\CBox{#2}\fi%
\makebox[0pt][l]{\usebox\CBox}%
\rule[0.5\ht\CBox-#1/2]{\wd\CBox}{#1}}
\begin{document}

\hcancel{Test}
\hcancel[2pt]{Test}

\end{document}


• Indeed, but you need to restart the mathmode, don't you? E.g. $x+\hcancel{$y$}+z$. – Martin Scharrer Jun 13 '11 at 12:43

I'm using this hack with the ulem package in the preamble.

\usepackage[normalem]{ulem}
\usepackage{amsmath}
\newcommand{\stkout}[1]{\ifmmode\text{\sout{\ensuremath{#1}}}\else\sout{#1}\fi}


In the document, I use the command thus defined, \stkout

Lorem \stkout{ipsum}. $x + \stkout{y + z} = 1$.
$$A + \stkout{B + C + D} = E.$$


• If find the cancel package much more practical, but your method is anyway interesting :) – loved.by.Jesus Jul 7 '16 at 13:20
• I quite like this approach, but feel that it would work better by just patching this to \sout - you can do this with \let\isout\sout \renewcommand{\sout}[1]{\ifmmode\text{\isout{\ensuremath{#1}}}\else\isout{#1}\fi} in the premable of your document. Requires amsmath and ulem – Taylor Scott Apr 29 at 20:31