12

I'd like to mark one or more of my \item{...}'s in an enumeration with a squiggly line at the right so that I can easily see which parts I have to re-phrase/re-write later on. All I have found is how to make a paragraph a different color, but my printer really does not like this/prints it badly.

Any help is greatly appreciated.

Sorry I wasn't clear, I was thinking of something like this (except it can be smaller and less obstrusive, just enough of a squiggly line as not to oversee it later while reviewing):

This is what I am thinking of

Christian
  • 1,435

1 Answers1

19

Here's one possible solution that will draw the squiggly line and admits page breaks (well, one at most) in the affected paragraph(s); all you have to do is to enclose the desired paragraph(s) inside \Startsquiggly, \Endsquiggly:

\documentclass{article}
\usepackage{refcount}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing,calc}
\usepackage{lipsum}

\newcounter{tmp}
\newcommand\tikzmark[1]{%
  \tikz[overlay,remember picture] \node (#1) {};}

\newcommand\Startsquiggly{%
  \stepcounter{tmp}%
  \tikzmark{a}\label{a\thetmp}%
  \ifnum\getpagerefnumber{a\thetmp}=\getpagerefnumber{b\thetmp} \else
  \begin{tikzpicture}[overlay, remember picture]
    \draw [decoration={coil,aspect=0},decorate,ultra thick,gray]
      let \p1 = (a.north), \p2 = (b), \p3 = (current page.center) in
      ( $ (\x3,\y1) + (.55\textwidth,0) $ ) --  ( $ (\x3,\y3) + (0.55\textwidth,-0.5\textheight) $ );
  \end{tikzpicture}%
  \fi%
}

\newcommand\Endsquiggly{%
\tikzmark{b}\label{b\thetmp}
  \ifnum\getpagerefnumber{a\thetmp}=\getpagerefnumber{b\thetmp}
  \begin{tikzpicture}[overlay, remember picture]
    \draw [decoration={coil,aspect=0},decorate,ultra thick,gray]
      let \p1 = (a.north), \p2 = (b), \p3 = (current page.center) in
      ( $ (\x3,\y1) + (.55\textwidth,0) $ ) --  ( $ (\x3,\y2) + (.55\textwidth,0) $ );
  \end{tikzpicture}%
  \else
  \begin{tikzpicture}[overlay, remember picture]
    \draw [decoration={coil,aspect=0},decorate,ultra thick,gray]
      let \p1 = (a.north), \p2 = (b), \p3 = (current page.center) in
      ( $ (\x3,\y3) + (.55\textwidth,.5\textheight) $ ) -- ( $ (\x3,\y2) + (.55\textwidth,0) $ );
  \end{tikzpicture}%
  \fi
}

\newcommand\Squ[1]{\Startsquiggly#1\Endsquiggly}
\begin{document}

\begin{itemize}
\item \lipsum*[1]
\item \Startsquiggly\lipsum*[1]\Endsquiggly
\item \lipsum*[1]
\item \Startsquiggly\lipsum*[1]\Endsquiggly
\end{itemize}

\end{document}

enter image description here

The code might need two or three runs for the lines to stabilize.

Gonzalo Medina
  • 505,128
  • The Gods of stackexchange... ;) Thanks! Works like a charm (as long as I don't do \item{\Startsquiggly some text here... \Endsquiggly}, ie. it doesn't seem to like the curly braces. But I just noticed I don't necessarily need them anyways. So - this works! – Christian Apr 19 '12 at 14:25
  • I just noted that the document needs to be compiled twice for the squiggly lines to show whenever I have done a lot of edits in the text - am I doing something wrong? – Christian Apr 19 '12 at 14:32
  • @Christian: no, you're not doing nothing wrong; sometimes even three runs will be necessary for the lines to stabilize. – Gonzalo Medina Apr 19 '12 at 14:34
  • @Christian: I've updated my answer (I deleted a spurious blank space from the code). – Gonzalo Medina Apr 19 '12 at 15:23
  • Rest assured, it still works. ;) – Christian Apr 19 '12 at 16:38
  • 2
    @Gonzalo -- this approach reminds me of the use of changebars, but the changebar package provides only straight rules, albeit color is possible (but isn't great for b/w printers). requiring tikz isn't usually a problem these days, so i think this would make a nice package. – barbara beeton Apr 19 '12 at 17:59
  • 1
    @barbarabeeton: Thank you. I hadn't thought about the package, but you're right. I'll improve the code and hopefully, if I have the time, it'll end up as a package. – Gonzalo Medina Apr 20 '12 at 02:32