Hi, the script does not Work with the example below. Can somebody please help ? Tanks > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
1234
567
8912
345
> > Am Dienstag, 1. Juli 2014 03:59:26 UTC+2 schrieb Wagner Macedo: > > Hello guys. > > I don't like how *longtable* handle with tables, spanning across pages > without needing, so I took advantage of the filtering mechanism and I did a > filter in python to generate the tables in a more traditional way (in the > sense of Latex) and I'm sharing with you below. > > Please make suggestions, I did the things a few hardcoded because I didn't > see other way. > > To understand what the filter do, let's say I have a file with the > following table: > > *test.mkd* > > Code Name > ------ ------ > 1 Pandoc > 2 Latex > 3 Writer > > Table: My *best* tools > > The normal generated latex code would be > > *test-longtable.tex* > > \begin{longtable}[c]{@{}cl@{}} > \toprule\addlinespace > Code & Name > \\\addlinespace > \midrule\endhead > 1 & Pandoc > \\\addlinespace > 2 & Latex > \\\addlinespace > 3 & Writer > \\\addlinespace > \bottomrule > \addlinespace > \caption{My \emph{best} tools} > \end{longtable} > > But using the filter, the latex code will be > > *test-tabular.tex* > > \begin{table}[ht] > > \caption{My \emph{best} tools} > > \begin{tabular}{@{}cl@{}} > \toprule > > Code & Name \\\midrule > > 1 & Pandoc \\ > 2 & Latex \\ > 3 & Writer \\ > > \bottomrule > \end{tabular} > > \end{table} > > Note I put \caption above as is more common to my writings. > > *filter.py* > > import pandocfilters as pf > def latex(s): > return pf.RawBlock('latex', s) > def inlatex(s): > return pf.RawInline('latex', s) > def tbl_caption(s): > return pf.Para([inlatex(r'\caption{')] + s + [inlatex('}')]) > def tbl_alignment(s): > aligns = { > "AlignDefault": 'l', > "AlignLeft": 'l', > "AlignCenter": 'c', > "AlignRight": 'r', > } > return ''.join([aligns[e['t']] for e in s]) > def tbl_headers(s): > result = s[0][0]['c'][:] > for i in range(1, len(s)): > result.append(inlatex(' & ')) > result.extend(s[i][0]['c']) > result.append(inlatex(r' \\\midrule')) > return pf.Para(result) > def tbl_contents(s): > result = [] > for row in s: > para = [] > for col in row: > para.extend(col[0]['c']) > para.append(inlatex(' & ')) > result.extend(para) > result[-1] = inlatex(r' \\' '\n') > return pf.Para(result) > def do_filter(k, v, f, m): > if k == "Table": > return [latex(r'\begin{table}[ht]' '\n' r'\centering' '\n'), > tbl_caption(v[0]), > latex(r'\begin{tabular}{@{}%s@{}}' % tbl_alignment(v[1]) + > ('\n' r'\toprule')), > tbl_headers(v[3]), > tbl_contents(v[4]), > latex(r'\bottomrule' '\n' r'\end{tabular}'), > latex(r'\end{table}')] > > if __name__ == "__main__": > pf.toJSONFilter(do_filter) > > -- > Wagner Macedo > -- You received this message because you are subscribed to the Google Groups "pandoc-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/112d046a-8566-4d63-8af2-8bb001a5a1ce%40googlegroups.com.