заменить $ на \$; параметры фрагмента вязания: echo=TRUE, results='markup;$=\\$'

Я пытаюсь напечатать код R в документе Latex с помощью Knitr.

У меня есть следующий простой код:

  \begin{frame}{Plot Code}
  <<plotcode,eval=FALSE,echo=TRUE,results='markup;$=\\$'>>=

...простой лм из случайно нарисованных данных...

  yhat.fit <- yhat$fit[,"fit"]

... более простой код ...

 \end{frame}

Это будет работать, НО нет замены знака $. Вместо этого я получаю математический режим для fit[,"fit"] на слайде (вместе с ошибками "missing $ Inserted" из компиляции pdflatex.

Я бы предпочел не иметь математического режима; вместо этого я хотел бы видеть знак $, поскольку он является неотъемлемой частью кода R.

В качестве обходного пути я заменил $ на \$ в полученном файле .tex, но я надеюсь, что кто-нибудь сможет решить мою, казалось бы, простую проблему. Я предполагаю, что неправильно указываю разметку и структуру символов в параметрах, но я пробовал большое количество вариантов, но безуспешно.


person user3266196    schedule 03.02.2014    source источник


Ответы (1)


Я не понимаю, что на самом деле означает results='markup;$=\\$'. Параметр results не принимает такого значения; на данный момент он принимает только markup, asis, hide и hold.

Я тоже не вижу, как $ может быть проблемой в бимере. Вы, наверное, забыли опцию fragile. Минимальный пример:

\documentclass{beamer}
\begin{document}
\title{A Minimal Demo of knitr}
\author{Yihui Xie}

\maketitle

% very important to use option [fragile] for frames containing code output!

\begin{frame}[fragile]

You can test if \textbf{knitr} works with this minimal demo. OK, let's
get started with some boring random numbers:

<<boring-chunk>>=
fit = lm(dist ~ speed, data = cars)
fit$coefficients
print(sessionInfo(), locale = FALSE)
@

\end{frame}

\end{document}

Выход:

вязание с пучком

person Yihui Xie    schedule 07.02.2014
comment
Я думаю, что понимаю проблему: если вы используете results = 'asis', например. чтобы отобразить красивую таблицу, то любой завершающий знак $ в остальной части вывода для этого конкретного фрагмента (код R и т. Д.) Заставит LaTeX задохнуться. Предложение состоит в том, чтобы добавить необязательный фильтр постобработки, чтобы очистить вывод с помощью настраиваемых правил до того, как LaTeX обработает его. Я не думаю, что это хороший синтаксис для этого, возможно, новый аргумент sanitise = list("$") был бы полезен. - person baptiste; 07.02.2014
comment
@baptiste Я понимаю, но ОП, похоже, не использует results = 'asis'. Значение 'markup;$=\\$' будет обрабатываться как 'markup', поэтому я не знаю, как знак доллара может выйти из дословной среды. - person Yihui Xie; 08.02.2014
comment
Использование [fragile] в команде frame решает проблему, но я не знал, как проверить sanitise=list($). Я предполагаю, что это восходит к чему-то, что можно было бы использовать в среде xtable? - person user3266196; 09.02.2014
comment
Я не понимаю, зачем нужен вариант типа sanitise=list($). Как я уже сказал, вывод осуществляется в дословной среде, тогда зачем беспокоиться об экранировании специальных символов? - person Yihui Xie; 10.02.2014