[Tex/LaTex] Debugging – any packages that will draw individual line (and word) frame boxes

boxesdebuggingframed

I was just wandering if there is a package (or an option to a package, like \usepackage[showframe]{geometry}) that could emphasize/draw borders(/lines/frame) around each (and every) word; and/or each line.

I'd prefer if this could work with lipsum (noting that something like \uline{\lipsum[1-10]} [via ulem package] crashes LaTeX). As the title says, I'd primarily need this for debugging purposes (e.g., say, seeing why and where rows do not align in a two-column document).

EDIT: found something similar in macros – Iterate over space-separated list – TeX – LaTeX – Stack Exchange;

\documentclass{article}

\makeatletter
\def\mboxed#1{%
    \@mboxed#1 \@empty
}
\def\@mboxed#1 #2{%
   \fbox{#1}\space  % fbox here to have a visual test
   \ifx #2\@empty\else
    \expandafter\@mboxed
   \fi
   #2%
}
\makeatother

\begin{document}

\def\ptest{Hello there, some words here.}
\mboxed{This should be tested \ptest}

\end{document}

… however, you will notice that only the 'verbatim' words in the \mboxed{} argument are boxed individually; while the contents of the command \ptest are boxed as a whole (and I want them too as individual words; think as using \lipsum instead); furthermore, there is no guarantee that this \mboxed macro doesn't disturb the typesetting (that would occur, if \mboxed wasn't present at all).

Best Answer

Here's a slightly modified version taken from Censor text spanning multiple lines using LaTeX:

\documentclass{article}
\begin{document}

\def\ptest{Hello there, some words here.}

\renewcommand{\fboxsep}{1pt}%
\def\boxwords#1{\boxloopword#1 \nil}
\def\boxloopword#1 #2\nil{%
  \fbox{\strut#1} % <- Note the space!
  \ifx&#2&% #2 is empty, then & equals &
    \let\next\relax
  \else
    \def\next{\expandafter\boxloopword#2\nil}% iterate
  \fi
  \next\ignorespaces}

\sloppy

\noindent \textbf{Boxed paragraph:} \medskip

\boxwords{Lorem ipsum dolor sit amet, \ptest{} consectetur adipiscing elit. Suspendisse massa lorem, malesuada 
ac imperdiet nec, adipiscing ut lorem. Nunc dignissim nibh erat. Phasellus fermentum lectus 
ut mi viverra a pulvinar turpis interdum. Maecenas mollis laoreet consequat. Etiam malesuada 
ultrices blandit. Praesent sem felis, consectetur eu consectetur id, tempor id quam. Cras id 
lectus vitae dolor varius laoreet. Suspendisse nec metus non justo iaculis ultricies quis 
vel enim. In porttitor dictum orci sit amet feugiat. Praesent pellentesque odio eu orci 
interdum pulvinar. Suspendisse potenti. Mauris lacus lacus, congue tincidunt condimentum 
vitae, elementum quis nibh. Cum sociis natoque penatibus et magnis dis parturient montes, 
nascetur ridiculus mus. Nulla venenatis iaculis mauris, vitae semper neque ullamcorper et. 
Integer et sem eu enim egestas pretium. Sed nulla sapien, pretium eget viverra ut, sollicitudin 
tempor urna. In accumsan euismod augue at sagittis. Sed molestie tincidunt erat eu suscipit. 
Nullam placerat, ipsum a facilisis venenatis, metus est adipiscing augue, at pharetra enim 
dui sit amet metus.}

\bigskip

\noindent \textbf{Unboxed paragraph:} \medskip

Lorem ipsum dolor sit amet, \ptest{} consectetur adipiscing elit. Suspendisse massa lorem, malesuada 
ac imperdiet nec, adipiscing ut lorem. Nunc dignissim nibh erat. Phasellus fermentum lectus 
ut mi viverra a pulvinar turpis interdum. Maecenas mollis laoreet consequat. Etiam malesuada 
ultrices blandit. Praesent sem felis, consectetur eu consectetur id, tempor id quam. Cras id 
lectus vitae dolor varius laoreet. Suspendisse nec metus non justo iaculis ultricies quis 
vel enim. In porttitor dictum orci sit amet feugiat. Praesent pellentesque odio eu orci 
interdum pulvinar. Suspendisse potenti. Mauris lacus lacus, congue tincidunt condimentum 
vitae, elementum quis nibh. Cum sociis natoque penatibus et magnis dis parturient montes, 
nascetur ridiculus mus. Nulla venenatis iaculis mauris, vitae semper neque ullamcorper et. 
Integer et sem eu enim egestas pretium. Sed nulla sapien, pretium eget viverra ut, sollicitudin 
tempor urna. In accumsan euismod augue at sagittis. Sed molestie tincidunt erat eu suscipit. 
Nullam placerat, ipsum a facilisis venenatis, metus est adipiscing augue, at pharetra enim 
dui sit amet metus.

\end{document}

You'll notice the different typesetting of each paragraph. Using \fbox removes hyphenation. Also, using \expandafter\boxloopword allows for the expansion of a macro within the \boxwords argument (like your \ptest example).

Blocked words

Perhaps the other solution using the soul package (also at the same link) would be helpful.

Related Question