3
votes

I am using pgfsweave with Lyx 1.6.8 and xtable. providing table captions by

<<result=tex>>=
print(xtable(<dataframe>,caption="Here is my caption"))
@.

How can I insert a label into the table caption that I can crossreference in the text from the lyx>Insert>Cross-reference menu?

I have tried to insert>float>table and inserted print(xtable(<dataframe>,floating=FALSE)) and "Here is my caption" in the Table caption inner frame but this results in (literally):

[float Table:
<...Table ...>
[Table 2: "Here is my caption" ] ]

Even a barefoot workaround to crossreference

<<result=tex>>=
print(xtable(<dataframe>,caption="Here is my caption",label = "tab:one"))
@

from an ERT-box would help.

1
I add code formatting to your question and answer.Marek

1 Answers

7
votes

SOLVED: Just use TWO arguments in the xtable-function call in the R-code:

xtable(<dataframe>
, caption = "My caption\\label{tab:MyTable1}"
,label="tab:MyTable1")

The \\label{tab:MyTable1} inside the caption is changed to \label{tab:MyTable1} by R and then interpreted by LaTeX.

The argument label="tab:MyTable1" is ignored by R and therefore at your disposal to trick Lyx into allowing for crossreferencing to the label table label. Use Insert>label to insert the label "tab:MyTable1" (excluding the quotes) here.