@@ -120,27 +120,40 @@ local function new_cell(contents)
120120end
121121
122122local function process (div )
123- if (div .attr .classes [1 ] ~= " list-table" and
124- div .attr .classes [1 ] ~= " list-table-body" ) then return nil end
125- local class = div .attr .classes [1 ]
126- table.remove (div .attr .classes , 1 )
127-
123+ local class
124+ local target_classes = {" list-table" , " list-table-body" }
125+ for _ , target in ipairs (target_classes ) do
126+ if div .attr .classes :find (target ) then
127+ class = target
128+ div .attr .classes = div .attr .classes :filter (
129+ function (cls ) return cls ~= target end )
130+ end
131+ end
132+ if class == nil then return nil end
128133 if # div .content == 0 then return nil end
129134
130135 local content = blocks_skip_data_pos (div .content )
131136
132137 local caption = {}
138+
139+ -- look for a caption in front
133140 if content [1 ].t == " Para" then
134141 local para = table.remove (content , 1 )
135142 caption = {pandoc .Plain (para .content )}
136143 end
137-
138144 if # content == 0 then return nil end
139145
140146 assert_ (content [1 ].t == " BulletList" ,
141147 " expected bullet list, found " .. content [1 ].t , content [1 ])
142148 local list = content [1 ]
143149
150+ -- also look for a caption in back
151+ if content [2 ] and content [2 ].t == " Para" then
152+ local para = table.remove (content , 2 )
153+ caption = {pandoc .Plain (para .content )}
154+ end
155+
156+
144157 -- rows points to the current body's rows
145158 local bodies = {attr = nil , {rows = {}}}
146159 local rows = bodies [# bodies ].rows
0 commit comments