The first question on reader’s mind must be — why use LaTeX to blog?
Well, I have a pretty specific instance in mind, but I can imagine that others might be interested as well. This fall I am teaching a course on computational corpus linguistics at CU Boulder. I like to have some materials online for the students, such as the syllabus, course notes, etc. I thought about setting up a simple webpage, but then I decided instead to use wordpress, because it would give me extra functionality, such as auto-generating rss feeds, and with some plugins, would allow me to notify students via e-mail when I post lecture notes or slides, or homework tips. The one drawback I could see is that it would be hard to update the syllabus throughout the semester, as I tend to change the calendar some throughout the semester. Then I thought that maybe I could hack up a quick xml-rpc solution to the problem, and about an hour later, I had it done. All I needed was the WordPress::API perl module from CPAN.
Now I have a handy little publish script which first compiles my syllabus as pdf, then compiles it as html using plasTeX. Then I run it through tidy for formatting and hack in a few more things. Then I update the syllabus page on the course blog via xml-rpc. Finally, I rsync the pdf to the server. And with the post-notification plugin for wordpress, students will get an e-mail when the syllabus is updated.
Here are the scripts:
publish
#!/bin/bash
# this script compiles a pdf version, an html version, and then copies it to my
# webserver
# compile as pdf
pdflatex syllabus && pdflatex syllabus
# compile as html
plastex -c syllabus.cfg syllabus
# clean up code a bit
tidy --show-body-only true --ascii-chars true -asxhtml --input-encoding utf8 --output-encoding ascii -wrap 0 -indent --tab-size 4 syllabus/index.html > syllabus/syllabus.tmp
# add in link to pdf version in the html version
cat pdflink syllabus/syllabus.tmp > syllabus/syllabus.html
# update the syllabus page via xml-rpc
./updateSyllabusPage.pl
# upload the newest version of the pdf
rsync -avzu syllabus.pdf robfelty:/var/www/html/robfelty/teaching/ling5200Fall2009/ling5200Fall2009-syllabus.pdf
updateSyllabusPage.pl
#!/usr/bin/perl -w
use WordPress::API;
# get new syllabus content
my $contentFile = 'syllabus/syllabus.html';
open(CONTENT, $contentFile);
# slurp in content
$content = do {local ( $/ );
my $w = WordPress::API->new({
proxy => 'http://robfelty/teaching/ling5200Fall2009/xmlrpc.php',
username => 'myusername',
password => 'mypassword',
});
my $page = $w->page(3);
$page->description($content);
$page->save;
Finally, if you want to see how I customize content for pdf and html separately, you can check out the LaTeX source file