[R] odfTable: table width and alignment

Max Kuhn mxkuhn at gmail.com
Tue Feb 16 22:31:58 CET 2010


Aleksey,

Go ahead and send me a test file.

Also: what version of OO are you using (or are you using something else)?

Thanks,

Max

On Tue, Feb 16, 2010 at 3:40 PM, Aleksey Naumov <anaumov at gmail.com> wrote:
> Max,
>
> Thank you for your help. Please see my responses below.
>
>
> On Tue, Feb 9, 2010 at 8:20 PM, Max Kuhn <mxkuhn at gmail.com> wrote:
>>
>> > I am trying to figure out how to control table width and alignment on
>> > the
>> > page for a table generated by odfTable. Based on reading odfWeave
>> > documentation (including formattingOut.odt), here is how I manipulate
>> > the
>> > styles:
>> >
>> st = getStyleDefs()
>>  # modify the table style
>>  tab = getStyles()$table
>> st[[tab]]$align = "center"            # seems to have no effect
>> st[[tab]]$marginLeft = "2.0 in"     # seems to have no effect
>> setStyleDefs(st)
>> >
>> > My table always ends up fully justified (taking all page width). When I
>> > check Table Format in the output .odf, Alignment is always "Automatic".
>> > When
>> > doing Column/Optimal Width on the table, the table shrinks but becomes
>> > left
>> > aligned, not centered.
>>
>> It's hard to tell without an actual file to test with (and what
>> versions of R and odfWeave, and what platform etc)
>
> I am working with R 2.10.1 om Windows XP Professional 2002, SP 3. My package
> versions are listed below:
>> pkgVersions(type = "matrix")
>      [,1]                [,2]                 [,3]
> [,4]
> [1,] "base (2.10.1)"     "grDevices (2.10.1)" "MASS (7.3-4)"      "stats
> (2.10.1)"
> [2,] "datasets (2.10.1)" "grid (2.10.1)"      "methods (2.10.1)"  "utils
> (2.10.1)"
> [3,] "graphics (2.10.1)" "lattice (0.17-26)"  "odfWeave (0.7.10)" "XML
> (2.6-0)"
>
> Would it help if I send you a small ODT file which concisely shows what I am
> trying to do?
>
>>
>> Did you read the example files in the examples directory of the
>> package? There are examples of what you are doing there and they seem
>> to work (last time I checked at least).
>>
>> Can you you reproduce those example tables?
>
> Yes, I looked into these examples, they are nice, thank you. I am able to
> run (odfWeave) 3 out of 4: "examples.odt", "simple.odt" and "testCases.odt",
> but they do not make use of the table style "align" or "margin" properties,
> so all tables are fully justified per default (except for the case where a
> code chuck lives in a small 1x1 table, which effectively restricts the
> output width -- in fact, this is a partial alternative to manipulating table
> margins).
>
> I cannot run odfWeave on "formatting.odt". The initial error message has to
> do with the fact that I do not have the "RTable2" style, which is referenced
> in chunk:
>
>    13 : echo term verbatim(label=showTableStyles)
>
> Error:  chunk 13 (label=showTableStyles)
> Error in names(x) <- value :
>   'names' attribute [1] must be the same length as the vector [0]
>
> However, once I comment out styleDetails("RTable2") from this chunk I get a
> different error, here is the full output:
>
>> odfWeave("formatting.odt", "[AN]_formatting_out.odt")
>   Copying  formatting.odt
>   Setting wd to
> C:\DOCUME~1\anaumov\LOCALS~1\Temp\RtmplqVqs5/odfWeave16142147610
>   Unzipping ODF file using unzip -o "formatting.odt"
> Archive:  formatting.odt
>  extracting: mimetype
>    creating: Configurations2/statusbar/
>   inflating: Configurations2/accelerator/current.xml
>    creating: Configurations2/floater/
>    creating: Configurations2/popupmenu/
>    creating: Configurations2/progressbar/
>    creating: Configurations2/menubar/
>    creating: Configurations2/toolbar/
>    creating: Configurations2/images/Bitmaps/
>  extracting: Pictures/1000000000000213000001899B642BA5.png
>  extracting: Pictures/10000000000000EA000001757E0E322B.png
>  extracting: Pictures/10000000000002110000018638600D3B.png
>   inflating: layout-cache
>   inflating: content.xml
>   inflating: styles.xml
>  extracting: meta.xml
>   inflating: Thumbnails/thumbnail.png
>   inflating: settings.xml
>   inflating: META-INF/manifest.xml
>
>   Removing  formatting.odt
>
>   Pre-processing the contents
> Error: cc$parentId == parentId is not TRUE
> In addition: Warning message:
> In function (name, .state)  : found start of code chunk in a code chunk
>
> Surprisingly, even if I remove the comment I still get the same message as
> above ("found start of code chunk ...") which is very puzzling. Is
> formatting.odt working for you with the latest R and package versions?
>
>
>> The table style is understood by odfWeave -- here is the output I get
>> after
>> sourcing my style definition file:
>>
>>> getStyles()$table
>> [1] "RTable1"
>>> getStyleDefs()[[getStyles()$table]]
>> $type
>> [1] "Table"
>>
>> $marginLeft
>> [1] "2.0 in"
>>
>> $marginRight
>> [1] "0.05in"
>>
>> $marginTop
>> [1] "0.05in"
>>
>> $marginBottom
>> [1] "0.05in"
>>
>> $align
>> [1] "center"
>>
>> I am not sure why these style options do not seem to have effect on the
>> output. My specific questions are:
>>
>> (1) How do I get table alignment to work?
>>
>> (2) Is the only way to control table width via setting the margins in the
>> $table style? What am I doing wrong in the above style code?
>
>> At present, yes.
>
> Ok, thank you, As I found out by looking at testCases.odt, another way which
> may work for simple tables is to embed a chuck into a 1x1 table with
> specified dimensions, even though this approach is not flexible (no way to
> control table dimensions at run time).
>
>>
>> > (3) What about column width -- is it possible to automatically size
>> > columns
>> > to fit the content, like selecting Column/Optimal Width but
>> > programmatically
>> > via odfWeave?
>>
>> It is on my (neglected) list of things to do. We could provide an
>> interface for users to specify the columns widths manually. I've
>> experimented with figuring it out automatically and it is subject to
>> the font specifications (obviously) and tricky.
>
> That would be very nice. As well, automatic column sizing would be a good
> thing to have, especially for data frames which have a mix of numeric and
> character/factor variables and/or variable names of different lengths. I
> have done much coding in R, but I am not familiar with R internals, neither
> am I good at C... Could I be of help to you in working on this as time
> permits?
>
> Thanks,
>
> Aleksey
>
>>
>> Max
>
>



-- 

Max



More information about the R-help mailing list