# Syntax Highlighting for Plain TeX

I would like to find out what options there are for applying syntax highlighting to Plain TeX, to turn Plain TeX documents into highlighted HTML.

The aim is to facilitate sharing tracked changes to the Plain TeX document. The document I wish to work with is fairly simple, but it does hand define several fonts, a bibliography environment, and make heavy use of \halign macros. Some automatic or semi-automatic handling of these would be an advantage. At a pinch I could do this with a sed script, but I would rather save myself some time.

Pygments does not seem to have support for Plain TeX. Emacs' AUCTeX has TeX-mode for Plain TeX, but although I seem to recall that it is possible to export HTML from AUCTeX, I cannot recall any details.

-
I'd try to look at ConTeXt's verbatim-like features (with syntax highlighting) together with xml export. (I am by no means a ConTeXt expert, but I wouldn't be surprised if such a solution worked (maybe almost) out-of-the-box.) –  mbork Feb 26 '12 at 15:04
You should be able to use the listings package to highlight plain TeX. –  Peter Grill Feb 26 '12 at 17:07
@Peter: It's not obvious to me that listings will help me get HTML output. –  Charles Stewart Feb 26 '12 at 17:38
@mbork: Your thinking of t-vim (cf. Code highlighting in ConTeXt), I take it? That might work; I'll look into it. I guess I should upgrade my version of Context. –  Charles Stewart Feb 26 '12 at 17:42
I have an idea. If I'm not mistaken, Vim can highlight both plain TeX and LaTeX. Open your file with Vim, make sure the plain TeX syntax is selected, then use this magic trick: :TOhtml . The color scheme together with your file will be exported to a html file right in your Vim buffer. :) –  Paulo Cereda Feb 26 '12 at 17:49

Converting my comment to an answer. :)

There is a plugin shipped with recent versions of Vim called 2html.vim. The idea is to export the current buffer - including the color scheme - to HTML. For example, I'll use Herbert's code from How to get started with plain TeX:

% gettingstarted.tex
\input pstricks
\parindent=0pt
\special{papersize=72.27pt,72.27pt}

\pspicture(72.27pt,72.27pt)
\psframe(72.27pt,72.27pt)
\endpspicture

\bye

To use this plugin, put Vim in the normal mode and type:

:TOhtml

A new file named yourcode.ext.html is generated. The output is as follows:

If I'm not mistaken, the choice of colors is related to the editor color scheme.

The generated HTML is full of inline styles. If you want a better output, I found the following entries to be added to your _vimrc file:

let html_use_css = 1 " Replaces the inline styles by CSS stylesheets. Values: 0 or 1
let html_number_lines = 0 " Shows line numbers. Values: 0 or 1
let html_no_pre = 1 " Don't wrap lines. Values: 0 or 1

Hope it helps. :)

-
I must have a really old version of 2html.vim - the HTML I get gives a completely different header. But the output is useful and most definitely helps, so accepted. I've written a small script to turn the font/color tag/attributes into span/class, which is far easier than writing a highlighter from scratch. I'll post the code if there is any interest. –  Charles Stewart Feb 27 '12 at 20:28
@Charles: TOHtml has an option to use CSS instead of raw font attributes. See :he TOHtml for details. –  Aditya Dec 8 '12 at 12:27
Actually Paulo aleady mentions it. Use let html_use_css =1. –  Aditya Dec 8 '12 at 12:29

You can do the same thing with emacs. Load the code into emacs and do M-x ps-print-buffer-with-faces. It will print a postscript image of the buffer.

-