2014-11-28 4 views
1

Я использую Lyx 2.1.2 с knitr на системе Fedora 20 x86_64. Я не уверен, как определить версию knitr, но она, безусловно, работает, как правило, обеспечивая очень хорошие результаты. Однако я вижу две проблемы: (1) Если я включаю final @ в любой фрагмент, он появляется буквально в тексте. Естественно, я не возражаю, если мне не нужно добавлять окончательный @. Во всяком случае, это подразумевает конец куска. Однако (2), если я НЕ включаю final @ в Chunk 3 (см. Ниже), тогда весь текст документа между кусками 3 и 4 исчезает из выхода PDF.Отсутствует текст в PDF после R chunk в Lyx/knitr

При создании минимального примера (извините за то, что он не был отправлен ранее), я обнаружил, что ключом к поведению является наличие среднего вертикального прохода сразу после фрагмента 3. Если я удалю его, текст документа будет выход просто отлично.

Я не вижу способа прикреплять файлы к этому сообщению, поэтому я включу их в текст. Просто дайте мне знать, есть ли лучший способ опубликовать примеры. Этот файл minimal.lyx:

#LyX 2.1 created this file. For more info see http://www.lyx.org/ 
\lyxformat 474 
\begin_document 
\begin_header 
\textclass article 
\use_default_options true 
\begin_modules 
knitr 
\end_modules 
\maintain_unincluded_children false 
\language american 
\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 a4paper 
\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 2 
\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 
\begin_inset Flex Chunk 
status open 

\begin_layout Plain Layout 

<<import-external-code,echo=FALSE>>= 
\end_layout 

\begin_layout Plain Layout 

read_chunk('mini.R') 
\end_layout 

\end_inset 


\end_layout 

\begin_layout Section 
Section A 
\end_layout 

\begin_layout Standard 
Some text 
\end_layout 

\begin_layout Standard 
\begin_inset Flex Chunk 
status open 

\begin_layout Plain Layout 

<<Mini1,echo=FALSE>>= 
\end_layout 

\end_inset 


\begin_inset VSpace medskip 
\end_inset 


\end_layout 

\begin_layout Standard 
Explanation of first graph 
\end_layout 

\begin_layout Subsection 
Subsection A1 
\end_layout 

\begin_layout Standard 
Some text 
\end_layout 

\begin_layout Standard 
\begin_inset Flex Chunk 
status open 

\begin_layout Plain Layout 

<<Mini2,echo=FALSE>>= 
\end_layout 

\end_inset 


\end_layout 

\begin_layout Standard 
Explanation of second graph 
\end_layout 

\end_body 
\end_document 

ссылаются, R-код (mini.R) тривиальна:

# ---- Mini1 
print("Hello World") 
# ---- Mini2 
print("Where did the explanation of the first graph go?") 

Это выход minimal.tex из pdflatex:

\batchmode 
\makeatletter 
\def\[email protected]{{/home/loga/bug//}} 
\makeatother 
\documentclass[a4paper,twoside,american]{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\[email protected]@width>\linewidth 
    \linewidth 
    \else 
    \[email protected]@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\[email protected]@[email protected]{}% 
\ifinner\ifhmode% 
    \def\[email protected]@[email protected]{\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\[email protected] \linewidth\hsize 
    \@setminipage}}% 
{\par\unskip\endMakeFramed% 
\[email protected]@[email protected]} 
\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. 
\pdfpageheight\paperheight 
\pdfpagewidth\paperwidth 


\makeatother 

\usepackage{babel} 
\IfFileExists{upquote.sty}{\usepackage{upquote}}{} 
\begin{document} 




\section{Section A} 

Some 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} 

\begin{knitrout} 
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe} 
\begin{verbatim} 
## [1] "Where did the explanation of the first graph go?" 
\end{verbatim} 
\end{kframe} 
\end{knitrout} 

Explanation of second graph 
\end{document} 

Как вы можете видеть, объяснение первого графика, заголовка подраздела и исходного текста в подразделе A1 не отображается в выводе. Он просто перескакивает на выход из Chunk 4. Отсутствующий текст восстанавливается в выходном файле, если я либо (a) добавляю символ «@» в конец Chunk 3, либо удаляю MedSkip после Chunk 3. Итак, кажется, что есть ошибка там где-то ...

Просто скажите, если что-нибудь еще поможет!

+1

Пожалуйста, напишите * оба * минимальный пример '.lyx' и файл' .tex', который вы получаете при экспорте в 'LaTeX (pdflatex)'. См. Здесь для получения дополнительной информации: wiki.lyx.org/FAQ/MinimalExample – scottkosty

+0

Я обновил публикацию, чтобы включить минимальный пример, но теперь я думаю, что это проявление более общей проблемы Lyx, связанной с объектами, которые появляются сразу после куска. В приведенном выше случае это вертикальный промах, однако такое же явление возникает, если вы вставляете кусок в ячейку таблицы. Я добавлю еще одну запись с примером этой ситуации. – user4294565

+0

Благодарим вас за MWE. Вы правы в этом, имея отношение к вертикальному пространству. – scottkosty

ответ

1

Короткий ответ: наведите курсор слева от «Вертикальное пространство» и нажмите «Возврат» (обратите внимание, что вы ничего не увидите). Затем скомпилируйте свой документ.

Длинный ответ: Вы столкнулись с ошибкой LyX http://www.lyx.org/trac/ticket/8875 (которая будет исправлена ​​в LyX 2.2.0). Проблема в том, что для того, чтобы knitr работал правильно, @ должен быть на одной линии.

Кроме того, ваш документ неправильно преобразован в формат LyX 2.1.x. Вы можете увидеть это, если экспортируете свой документ в .Rnw. Вы получаете что-то странное:

<<>>= 
<<import-external-code,echo=FALSE>>= 
read_chunk('mini.R') 
@ 

Это, похоже, не влияет на вывод документа. Я не знаю, почему. Я предполагаю, что второй < < >> = перезаписывает первый. Но я думаю, что было бы лучше очистить его.

Причина в том, что в кусках LyX 2.1.x < < и >> обрабатываются по-разному, поэтому вам не придется писать их самостоятельно. Чтобы исправить это, удалите < < и >> и выберите оставшийся текст (который был между ними раньше) и перейдите в «Вставка»> «Параметры» (или выполните «Alt + A 1» для «первого аргумента»).

Не могли бы вы открыть новый билет LyX по телефону http://www.lyx.org/trac и разместить свой минимальный пример? Таким образом, мы могли бы исправить неверное преобразование.

Смежные вопросы