So one of the things I heard from inside Amtrak after applying a lot of pressure was that they didn't like the problems related to manual copying of timetable data or data going stale (apparently small errors in publication had created some large problems in the past). Of course, Amtrak management has made that problem ten times worse now that there are dozens of fan timetables which may have copying errors, which is not very bright of them.
So I figured, "This, I can fix." Timetable design is an art (hence the need for templates), but plugging in the times should be mechanical and automated. My template format for a simple timetable like the Coast Starlight one would be a one-line file looking something like this:
stations of 11, 11, station names, 14
You also have to specify a key date to extract the times from GTFS which are valid on that date; and then the whole timetable would print out.
A more complex timetable like Carolinas Service would require that the list of all the stations to be included in the timetable be specified in the template, including the order; there's no way to autogenerate it, as it is an artistic decision, it turns out.
The template for the old Cascades southbound weekday schedule without buses might look like this:
,station names,503,501,11,513,507,509,517
vac,,,,,,,
bel,,,,,,,
mvw,,,,,,,
stw,,,,,,,
evr,,,,,,,
sea,,,,,,,
tac,,,,,,,
olw,,,,,,,
ctl,,,,,,,
kel,,,,,,,
van,,,,,,,
pdx,,,,,,,
slm,,,,,,,
aly,,,,,,,
eug,,,,,,,
,,,,To Los Angeles,,,
So basically, column IDs and row IDs, plus special legends like "To Los Angeles", and the program fills in the rest. I think I've got a pretty flexible design now.
Oh, and although I'm setting it up to produce a styled HTML table, it can also just produce CSV for people who want to restyle it themselves to add extra cool bits like that "Day 1 Day 2" thing.