April 2, 2005 4:13 PM
As mentioned in Latex:verbatim Package, I use Latex to create reports that have a lot of code in it. I recently noticed that the verbatiminput command was silently ignoring all tabs making the code look ugly.

The solution for this was found on a mailing list. Apparently, ignoring tabs is a latex feature. To overcome this, you have to use the moreverb package and call verbatimtabinput rather than verbatiminput. If you'd rather not break existing code already written using verbatiminput, you can use the let command like so:

\usepackage{verbatim}
\usepackage{moreverb}
\let\verbatiminput=\verbatimtabinput


After doing this, latex should print tabs correctly with verbatiminput. If you want finer control over tabstops, you can re-define verbatimtabsize1 as so:

\def\verbatimtabsize{4\relax}


I wish I had known this before I came up with:

(defun replace-tabs ()
"Replaces all tab chars with equivalent spaces."
(interactive)
(let ((tabcnt 0))
(save-excursion
(while
(re-search-forward "\t" nil t)
(setq tabcnt (1+ tabcnt))
;assuming tab is 8 chars
(replace-match "        " t t nil nil)
))
(message "Replaced %d tabs." tabcnt)
))


[1] By default, it's eight.