Динамические ссылки LaTeX в комментарии R с помощью knitr

Я задавал аналогичный вопрос в отношении Sweave (Динамические ссылки на рисунки в комментарии R в документе Sweave) и хотелось бы узнать, есть ли у кого-нибудь аналогичный ответ при использовании knitr.

Цель состоит в том, чтобы получить следующий фрагмент кода

<<"example", fig.cap = "some figure", highlight = FALSE>>=
# the following code generated Figure \ref{fig:example}
plot(1:10, 1:10)
@

будут отображаться в результирующем .pdf как

# the following code generated Figure 1.1
plot(1:10, 1:10)

Пока что я обнаружил, что при установке highlight = FALSE код R помещается в среду verbatim в итоговом файле .tex. Если бы среда могла быть alltt вместо verbatim, тогда мы получили бы желаемый результат. Можно ли разместить невыделенные фрагменты кода в alltt средах с помощью параметра knitr?


person Peter    schedule 27.12.2012    source источник
comment
На основе этих комментариев (groups.google.com/forum/?fromgroups = #! topic / knitr / tgS5iCUpyhA), возможно, удаление пакета выделения и добавление \ usepackages {alltt} будет использовать соответствующую среду для выделения. Может тогда референция возможна?   -  person Roman Luštrik    schedule 27.12.2012


Ответы (1)


Я добавил пример 072-latex-reference.Rnw в репозитории knitr-examples. Основная идея состоит в том, чтобы восстановить экранированный \ref{} (который должен был быть \textbackslash{}ref\{\} в выводе по умолчанию).

person Yihui Xie    schedule 28.12.2012
comment
Изменение регулярного выражения на gsub('\\\\textbackslash\\{\\}(\\w?)ref\\\\\\{(.+)\\\\\\}', '\\\\\\1ref{\\2}', txt) расширяет совместимость со ссылками на стиль c/.../vref (надеюсь, без неприятных побочных эффектов). - person dynamo; 07.02.2013
comment
И - (.+) не должен быть жадным (.+?), иначе он работает только для одной ссылки на блок. txt = gsub('\\\\textbackslash\\{\\}(\\w?)ref\\\\\\{(.+?)\\\\\\}', '\\\\\\1ref{\\2}', txt) (я думаю.) - person dynamo; 07.02.2013