From: Paul T. <pau...@gm...> - 2012-07-03 03:18:19
|
I have also found the need to format cells. I handled this difficulty by post processing my documents. Since I convert rst to xml, and then xml to docbook to fo to PDF, I have to post process my documents regardless. None-the-less, the ability to format cells directly in a document reduces the complexity of my stylesheets, since the stylesheets can handle table generically rather than having to create special rules. I like this addition quite a bit. Paul On 7/2/12 12:02 PM, Peter Davidson wrote:On 7/2/12 12:02 PM, Peter Davidson wrote: > I've been using rst for all of my technical reports, but found that the limited > formatting control of tables was a problem. In particular, I needed to be able > to set alignment (particularly for tables of numbers) and wanted to do some > highlighting/bold etc. I tried using in-cell interpreted text (i.e. > :bold:`text`) but the extra width required for the text role distorted the > layout of the table. I tried using 1 character roles, but they were still a > problem, because of the additional 4 character required to apply them (2 colons, > 2 backquotes). Even *emph* and **strong** can distort a tight table. > > I ended up modifying the Table directive to have an additional option - cell- > class.The cell-class option gives an interpreted text role to each cell in the > table according to the rules specified in the option. > > The simplest use is just > > .. Table:: Test Table > :cell-class: left+bold,right > > ===== ===== > Head1 Head2 > ===== ===== > Val1 Val2 > Val3 Val4 > ===== ===== > > All of the cells in column 1 end up with the custom interpreted text roles > 'left' and 'bold', and all of the cells in column two end up with the 'right' > role. > > For more complex use, the classes can be qualified, like this > > .. Table:: Test Table > :cell-class: :header: bold+lightshade+center > :body: bold,right+lightshade,right > :1,2,3,5: +lightshade > :H1,H2: +red > > ======= ======== ======== > Header Test > ------- ----------------- > Column One Two > ======= ======== ======== > Row 1 Value 1 Value 2 > Row 2 Value 3 Value 4 > Row 3 Value 5 Value 6 > Row 4 Value 7 Value 4 > Row 5 Value 9 Value 10 > ======= ======== ======== > > The first line says that all headers should be bold, lightly shaded and > centered. When the table has more columns than specified in the format (like > here) then the formats wrap - this makes it easy to give a single format, or to > give alternating formats. > > The second line gives the format for all rows in the body of the table. The > third line only applies to rows 1,2,3 and 5, and, because it begins with a plus, > is added to the existing format, rather than replacing it. Similarly, the last > line adds 'red' to lines 1 and 2 of the header. > > I had thought of having a :last: specifier, or allowing negative numbers to > locate rows from the bottom, but these would have required much more extensive > changes to the code. Also, they do not allow anything that can't be done with > this format. > > It would be easy to add :even:, :odd:, :>5:, :3-8: etc > > I had also thought of having a fixed and a repeating section like this > .. table:: Test > :body: *bold,noshade,shade > > === === === === === === === > H1 V1a V1b V2a V2b V3a V3b > === === === === === === === > > This would make the first column bold, and the other columns alternating between > shaded and not shaded. Again this didn't seem essential to me, but it could be > nice. > > I've tried to stay away from too complex a mini-format for this option, but this > seems as simple as I can make it. I'm not sure that :1,2,3: looks right. > Originally I just had 1,2,3: but this didn't look as consistent. There is also > an issue with what to put if you don't want a class. We could have multiple > commas -i.e. bold+left,,right but this is ugly. I tend to use left, since this > is the default assumption, although this could affect css formatting of tables > that don't assume this default. It may be that a magic role of 'none' could be > useful. > > > Before I tidy up my code and start patching documentation, I thought I would > check what you think of this. I note that David mentioned earlier that he had > some table role ideas that he was working on. > > It seems to me that some sort of table formatting is necessary (at least for the > sort of documents that I prepare) and this seems to me to be a minimal > implementation. It does more than just alignment, and is quite flexible. It > could be argued that some sort of in-line formatting would be better, but it > seems difficult to me because of the way that column widths are determined from > the content. Another approach would be to put the formatting on alternating > rows, or at the beginning of the row, but it's hard to see how this could be > attractive or clear. > > If this were to go into the core then it would also be good to have some > standard roles - at least left, right and center/centre. > > I have implemented this for the latex2e and html4css writers, since these are > the only ones that I use. I am less familiar with the other writers (I've never > looked at them) and may need some help. > > What do you think? Am I going in the right direction? > > Thanks, > Peter Davidson > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Docutils-develop mailing list > Doc...@li... > https://lists.sourceforge.net/lists/listinfo/docutils-develop > > Please use "Reply All" to reply to the list. > I've been using rst for all of my technical reports, but found that the limited > formatting control of tables was a problem. In particular, I needed to be able > to set alignment (particularly for tables of numbers) and wanted to do some > highlighting/bold etc. I tried using in-cell interpreted text (i.e. > :bold:`text`) but the extra width required for the text role distorted the > layout of the table. I tried using 1 character roles, but they were still a > problem, because of the additional 4 character required to apply them (2 colons, > 2 backquotes). Even *emph* and **strong** can distort a tight table. > > I ended up modifying the Table directive to have an additional option - cell- > class.The cell-class option gives an interpreted text role to each cell in the > table according to the rules specified in the option. > > The simplest use is just > > .. Table:: Test Table > :cell-class: left+bold,right > > ===== ===== > Head1 Head2 > ===== ===== > Val1 Val2 > Val3 Val4 > ===== ===== > > All of the cells in column 1 end up with the custom interpreted text roles > 'left' and 'bold', and all of the cells in column two end up with the 'right' > role. > > For more complex use, the classes can be qualified, like this > > .. Table:: Test Table > :cell-class: :header: bold+lightshade+center > :body: bold,right+lightshade,right > :1,2,3,5: +lightshade > :H1,H2: +red > > ======= ======== ======== > Header Test > ------- ----------------- > Column One Two > ======= ======== ======== > Row 1 Value 1 Value 2 > Row 2 Value 3 Value 4 > Row 3 Value 5 Value 6 > Row 4 Value 7 Value 4 > Row 5 Value 9 Value 10 > ======= ======== ======== > > The first line says that all headers should be bold, lightly shaded and > centered. When the table has more columns than specified in the format (like > here) then the formats wrap - this makes it easy to give a single format, or to > give alternating formats. > > The second line gives the format for all rows in the body of the table. The > third line only applies to rows 1,2,3 and 5, and, because it begins with a plus, > is added to the existing format, rather than replacing it. Similarly, the last > line adds 'red' to lines 1 and 2 of the header. > > I had thought of having a :last: specifier, or allowing negative numbers to > locate rows from the bottom, but these would have required much more extensive > changes to the code. Also, they do not allow anything that can't be done with > this format. > > It would be easy to add :even:, :odd:, :>5:, :3-8: etc > > I had also thought of having a fixed and a repeating section like this > .. table:: Test > :body: *bold,noshade,shade > > === === === === === === === > H1 V1a V1b V2a V2b V3a V3b > === === === === === === === > > This would make the first column bold, and the other columns alternating between > shaded and not shaded. Again this didn't seem essential to me, but it could be > nice. > > I've tried to stay away from too complex a mini-format for this option, but this > seems as simple as I can make it. I'm not sure that :1,2,3: looks right. > Originally I just had 1,2,3: but this didn't look as consistent. There is also > an issue with what to put if you don't want a class. We could have multiple > commas -i.e. bold+left,,right but this is ugly. I tend to use left, since this > is the default assumption, although this could affect css formatting of tables > that don't assume this default. It may be that a magic role of 'none' could be > useful. > > > Before I tidy up my code and start patching documentation, I thought I would > check what you think of this. I note that David mentioned earlier that he had > some table role ideas that he was working on. > > It seems to me that some sort of table formatting is necessary (at least for the > sort of documents that I prepare) and this seems to me to be a minimal > implementation. It does more than just alignment, and is quite flexible. It > could be argued that some sort of in-line formatting would be better, but it > seems difficult to me because of the way that column widths are determined from > the content. Another approach would be to put the formatting on alternating > rows, or at the beginning of the row, but it's hard to see how this could be > attractive or clear. > > If this were to go into the core then it would also be good to have some > standard roles - at least left, right and center/centre. > > I have implemented this for the latex2e and html4css writers, since these are > the only ones that I use. I am less familiar with the other writers (I've never > looked at them) and may need some help. > > What do you think? Am I going in the right direction? > > Thanks, > Peter Davidson > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Docutils-develop mailing list > Doc...@li... > https://lists.sourceforge.net/lists/listinfo/docutils-develop > > Please use "Reply All" to reply to the list. |