Numbered Paragraphs with Multiple Levels in Reportlab -
i'd create numbered list multiple levels in reportlab. i've looked everywhere , can find tag build numbered list. however, when write following code, list looks this:
contents.add(paragraph("<seq/>. level 1 header", h1)) contents.add(paragraph("<seq/>. level 2 header", h2)) contents.add(paragraph("<seq/>. level 1 header", h1))
- level 1 header
- level 2 header (< 1 2...stackoverflow not showing writing)
- level 1 header (< 2 3)
instead of this:
level 1 header
1.1 level 2 header
- level 2 header
does know how achieve that? lot in advance!
edit: @snoozer's comment, it's now:
1. level 1 header 2.1 level 2 header 3. level 1 header ...which still incorrect. can't find holds value maintain first level index.
edit: believe trying isn't possible, have couple of recommendations
if don't care precise #.# formatting, can accomplish using multiple seq tags. use multiple seq tags, start seqorder. has nice property whenever use higher level's seq tag, lower levels reset. make levels distinct, suggest formatting each 1 differently.
contents.add(paragraph( ('<seqchain order="lev1 lev2"/>' '<seqformat id="lev1" value="1">' '<seqformat id="lev2" value="a">' '<seq id="levelone"/>. level 1 header'), h1)) contents.add(paragraph('<seq id="leveltwo"/> level 2 header', h2)) contents.add(paragraph('<seq id="levelone"/>. level 1 header', h1)) #we didn't have reset level 2 tag because chain takes care of contents.add(paragraph('<seq id="leveltwo"/> level 2 header', h2)) i found page 47 of reportlab's rml userguide helpful here. attempted store value of current upper level using <name\> tag, after 1 use not appear <name\> tag can reassigned. thought other programmatic ways keep track of in python, @ point you're pretty writing list yourself. 1 example be
level1 = 1 contents.add(paragraph('{0}. level 1 header'.format(level1), h1)) level2 = 1 contents.add(paragraph('{0}.{1} level 2 header'.format(level1,level2), h2)) #now have automatically increment level1 level1 += 1 contents.add(paragraph('{0}. level 1 header'.format(level1), h1)) #and manually reset level 2 level2 = 1 contents.add(paragraph('{0}.{1} level 2 header'.format(level1,level2), h2)) although define function append paragraph , manually iterate/reset appropriate level values.
i'm not sure you're doing in python - know rml part of commercial version of reportlab, , i've never built document adding rml tags. if using python however, might want @ building document flowables, , there listflowable create these sorts of lists. still not able create list label in format desire, listflowable merely interface these rml tags. can learn more flowables in reportlab user guide on page 86
Comments
Post a Comment