11

I'm trying to use \cancel from the cancel package to strike out some colored text but it is apparent that the diagonal line is drawn first so it doesn't do a very good job of canceling. enter image description here

Minimal example.

\documentclass{article}
\usepackage{xcolor,cancel}
\begin{document}
\leavevmode
\cancel{\textcolor{red}{T}}
\textcolor{red}{T}\llap{\cancel{\phantom{T}}}
\end{document}

I can obviously use the \llap, but that is suboptimal. Is there a better way?

5
  • 7
    Probably the best answer is going to be 'take the code and alter it to reverse the order'!
    – Joseph Wright
    Apr 15, 2011 at 19:54
  • or use TikZ instead! Apr 15, 2011 at 21:01
  • @Joseph: You're probably right about that. Maybe I'll take a look when I get some spare time.
    – TH.
    Apr 15, 2011 at 22:51
  • 1
    I think your solution with \llap is the easiest way so far. I had a look at the docs, a hack is not easy. Suggestion cancel the word "suboptimal" in you question:) Certainly TikZ is not the answer for this. Apr 16, 2011 at 17:13
  • 2
    @Yiannis: That's herasy! TikZ is the answer to everything. Indeed, when computed according to the Magrathean system, the numerical value of TikZ is 42. Apr 16, 2011 at 17:57

1 Answer 1

11

Using Tikz :

\newcommand{\cancel}[1]{%
    \tikz[baseline=(tocancel.base)]{
        \node[inner sep=0pt,outer sep=0pt] (tocancel) {#1};
        \draw[red] (tocancel.south west) -- (tocancel.north east);
    }%
}%

This is a \cancel{test}

Another possibility with Tikz is to use the strike out shape:

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{shapes.misc}


\begin{document}
Strike \tikz[baseline] \node [strike out,draw=red,anchor=text] {me}; out!
\end{document}

Using pstricks, in the pstricks-add package :

%in preamble
\usepackage{pstricks,pstricks-add}

%in document
%example taken from pstricks-add documentation
\psCancel[linecolor=red]{Tikz :-)}

Edit 1 : I just realized that the \psCancel macro draws the mark before the text to cancel, same as for the cancel package. If you want the mark above the text, I guess you should use Tikz.

Edit 2 : Incorporated suggestions about baseline into the Tikz code

1
  • 1
    You should add the baseline=(tocancel.base) option to \tikz to make sure that the baseline doesn't change. Try a \cancel{Ag} or \cancel{test\strut} to see the difference. Also you need % after the first { and the closing } of \tikz to avoid spurious spaces. Apr 16, 2011 at 17:49

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.