39

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.

N.N.
  • 36,163

4 Answers4

25

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}

enter image description here

Alain Matthes
  • 95,075
21

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$.
\begin{equation}
    A + \stkout{B + C + D} = E.
\end{equation}

Screen capture of the example document

Reference: Opposite of \ensuremath: ensure that I'm *not* in math mode?

Cong Ma
  • 351
  • 3
    If find the cancel package much more practical, but your method is anyway interesting :) – loved.by.Jesus Jul 07 '16 at 13:20
  • 1
    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 Raine Apr 29 '20 at 20:31
  • Calling the ulem package seems to have unintended consequences for my bibliography. :(. – Till Jul 18 '22 at 09:24
  • Why does this preserve italics even though the math is inside \text? – sturgman Sep 02 '22 at 13:11
20

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.

Leo Liu
  • 77,365
13

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}

enter image description here