24

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.

12

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.

| improve this answer | |
  • 2
    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
  • 1
    @Jeff: Use \normalem. – Leo Liu Aug 30 '13 at 2:20
  • @Jeff: or \usepackage[normalem]{ulem}. – sigvaldm Jan 17 at 10:54
18

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

| improve this answer | |
  • 1
    \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
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

| improve this answer | |
  • 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
7

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?

| improve this answer | |
  • 2
    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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.