I'm using Lyx 2.1.2 and knitr (not sure how to determine the version) on Fedora 20. I'm running into a problem with the termination of knitr chunks when the chunk is embedded in a table cell. If I do not enter the final @ line for the chunk, I get an error and the document cannot be created. If I do enter the final @ line for the chunk, it works, but the @ mark appears literally in the table cell after the output from the R code.
I suspect that this is part of a general problem that I mentioned in another posting, is related to LaTex objects immediately following a knitr chunk.
This is an example Lyx document that demonstrates the problem:
\lyxformat 474 \begin_document \begin_header \textclass article \use_default_options true \begin_modules knitr \end_modules \maintain_unincluded_children false \language english \language_package default \inputencoding auto \fontencoding global \font_roman default \font_sans default \font_typewriter default \font_math auto \font_default_family default \use_non_tex_fonts false \font_sc false \font_osf false \font_sf_scale 100 \font_tt_scale 100 \graphics default \default_output_format default \output_sync 0 \bibtex_command default \index_command default \paperfontsize default \spacing single \use_hyperref false \papersize default \use_geometry false \use_package amsmath 1 \use_package amssymb 1 \use_package cancel 1 \use_package esint 1 \use_package mathdots 1 \use_package mathtools 1 \use_package mhchem 1 \use_package stackrel 1 \use_package stmaryrd 1 \use_package undertilde 1 \cite_engine basic \cite_engine_type default \biblio_style plain \use_bibtopic false \use_indices false \paperorientation portrait \suppress_date false \justification true \use_refstyle 1 \index Index \shortcut idx \color #008000 \end_index \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \paragraph_indentation default \quotes_language english \papercolumns 1 \papersides 1 \paperpagestyle default \tracking_changes false \output_changes false \html_math_output 0 \html_css_as_file 0 \html_be_strict false \end_header \begin_body \begin_layout Standard This is an example of a problem that arises when knitr chunks are embedded in Lyx table cells. Here is the table: \end_layout \begin_layout Standard \begin_inset Tabular <lyxtabular version="3" rows="2" columns="2"> <features rotate="0" tabularvalignment="middle"> <column alignment="center" valignment="top"> <column alignment="center" valignment="top"> <row> <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none"> \begin_inset Text \begin_layout Plain Layout Text \end_layout \end_inset </cell> <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none"> \begin_inset Text \begin_layout Plain Layout Chunk \end_layout \end_inset </cell> </row> <row> <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none"> \begin_inset Text \begin_layout Plain Layout Arbitrary Text \end_layout \end_inset </cell> <cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none"> \begin_inset Text \begin_layout Plain Layout \begin_inset Flex Chunk status open \begin_layout Plain Layout <<example,echo=FALSE>>= \end_layout \begin_layout Plain Layout print("Hello World") \end_layout \begin_layout Plain Layout @ \end_layout \end_inset \end_layout \end_inset </cell> </row> </lyxtabular> \end_inset \end_layout \end_body \end_document This is the Tex output from pdflatex:
\batchmode \makeatletter \def\input@path{{/home/loga/bugs/cell-chunk//}} \makeatother \documentclass[english]{article}\usepackage[]{graphicx}\usepackage[]{color} %% maxwidth is the original width if it is less than linewidth %% otherwise use linewidth (to make sure the graphics do not exceed the margin) \makeatletter \def\maxwidth{ % \ifdim\Gin@nat@width>\linewidth \linewidth \else \Gin@nat@width \fi } \makeatother \definecolor{fgcolor}{rgb}{0.345, 0.345, 0.345} \newcommand{\hlnum}[1]{\textcolor[rgb]{0.686,0.059,0.569}{#1}}% \newcommand{\hlstr}[1]{\textcolor[rgb]{0.192,0.494,0.8}{#1}}% \newcommand{\hlcom}[1]{\textcolor[rgb]{0.678,0.584,0.686}{\textit{#1}}}% \newcommand{\hlopt}[1]{\textcolor[rgb]{0,0,0}{#1}}% \newcommand{\hlstd}[1]{\textcolor[rgb]{0.345,0.345,0.345}{#1}}% \newcommand{\hlkwa}[1]{\textcolor[rgb]{0.161,0.373,0.58}{\textbf{#1}}}% \newcommand{\hlkwb}[1]{\textcolor[rgb]{0.69,0.353,0.396}{#1}}% \newcommand{\hlkwc}[1]{\textcolor[rgb]{0.333,0.667,0.333}{#1}}% \newcommand{\hlkwd}[1]{\textcolor[rgb]{0.737,0.353,0.396}{\textbf{#1}}}% \usepackage{framed} \makeatletter \newenvironment{kframe}{% \def\at@end@of@kframe{}% \ifinner\ifhmode% \def\at@end@of@kframe{\end{minipage}}% \begin{minipage}{\columnwidth}% \fi\fi% \def\FrameCommand##1{\hskip\@totalleftmargin \hskip-\fboxsep \colorbox{shadecolor}{##1}\hskip-\fboxsep % There is no \\@totalrightmargin, so: \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}% \MakeFramed {\advance\hsize-\width \@totalleftmargin\z@ \linewidth\hsize \@setminipage}}% {\par\unskip\endMakeFramed% \at@end@of@kframe} \makeatother \definecolor{shadecolor}{rgb}{.97, .97, .97} \definecolor{messagecolor}{rgb}{0, 0, 0} \definecolor{warningcolor}{rgb}{1, 0, 1} \definecolor{errorcolor}{rgb}{1, 0, 0} \newenvironment{knitrout}{}{} % an empty environment to be redefined in TeX \usepackage{alltt} \usepackage[T1]{fontenc} \usepackage[latin9]{inputenc} \makeatletter %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands. %% Because html converters don't know tabularnewline \providecommand{\tabularnewline}{\\} \makeatother \usepackage{babel} \IfFileExists{upquote.sty}{\usepackage{upquote}}{} \begin{document} This is an example of a problem that arises when knitr chunks are embedded in Lyx table cells. Here is the table: \begin{tabular}{|c|c|} \hline Text & Chunk\tabularnewline \hline \hline Arbitrary Text & \begin{knitrout} \definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe} \begin{verbatim} ## [1] "Hello World" \end{verbatim} \end{kframe} \end{knitrout} @\tabularnewline \hline \end{tabular} \end{document} Looking at the Tex output (four lines from the bottom) the @ mark is appearing outside the knitrout environment, yet within the Lyx file, the @ mark is inside the chunk and (at least in WYSIWYM terms) obviously not intended to appear in the document.
Is there a way around this or is it a bug that needs fixing? Of course, if there is any other data I can post that would help, just let me know.
Thanks!