- if (sscanf (text, "{%u}", &i) == 1)
- {
- struct table *table;
-
- if (i >= n_tables)
- error (1, 0, "bad table number %u", i);
- table = table_ref (tables[i]);
-
- text = strchr (text, '}') + 1;
- while (*text)
- switch (*text++)
- {
- case 's':
- table = table_stomp (table);
- break;
-
- case 't':
- table = table_transpose (table);
- break;
-
- default:
- error (1, 0, "unexpected subtable modifier \"%c\"", *text);
- }
- tab_subtable (tab, c, r, c + cs - 1, r + rs - 1, opt, table);
- }
- else
- tab_joint_text (tab, c, r, c + cs - 1, r + rs - 1, opt, text);
+ char *pos = text;
+ char *content;
+ int i;
+
+ for (i = 0; (content = strsep (&pos, "#")) != NULL; i++)
+ if (!i)
+ {
+ table_joint_text (tab, c, r, c + cs - 1, r + rs - 1, 0,
+ content);
+ table_add_style (tab, c, r, style);
+ }
+ else
+ {
+ char marker[2] = { 'a' + n_footnotes, '\0' };
+ struct footnote *f = table_create_footnote (
+ tab, n_footnotes, content, marker,
+ table_area_style_clone (tab->container, &left_style));
+ table_add_footnote (tab, c, r, f);
+ n_footnotes++;
+ }