Ну, похоже, я отвечу на свой вопрос.
Во-первых, разметка документации лежит там, где она гласит: «В любой команде стиля индекс первой строки может быть установлен на одну из специальных строк« splitlast »или« splitfirst », чтобы указать, что стиль должен использоваться только для последней строка разделенной таблицы или первая строка продолжения. " В текущем выпуске индексы строк splitlast и splitfirst ломаются с вышеупомянутыми ошибками TypeErrors в командах TEXTCOLOR и BACKGROUND.
Мое подозрение, основанное на чтении исходного кода, заключается в том, что только команды строки табличного стиля (GRID, BOX, LINEABOVE и LINEBELOW) в настоящее время совместимы с индексами строк splitfirst и splitlast. Я подозреваю, что все команды ячейки ломаются с вышеупомянутыми ошибками TypeErrors.
Однако я смог сделать то, что хотел, подклассифицировав класс Table и переопределив метод onSplit. Вот мой код:
class XTable(Table):
def onSplit(self, T, byRow=1):
T.setStyle(TableStyle([
('TEXTCOLOR', (0, 1), (1, 1), colors.black)]))
Для этого применяется нанесение текста черного цвета на первую и вторую ячейку второго ряда каждой страницы. (Первая строка представляет собой заголовок, повторяемый параметром repeatRows таблицы.) Точнее, он делает это с первой и второй ячейкой каждого фрейма, но поскольку я использую SimpleDocTemplate, фреймы и страницы идентичны.