(обходное решение в последнем комментарии) вывод в latex строки из R разделов в knitr с символами обратной косой черты

#regex #r #latex #knitr

#регулярное выражение #r #Латекс #knitr

Вопрос:

Я хочу использовать команду latex underbrace в разделе R документа knitr. Цель состоит в том, чтобы заменить все вхождения данного слова в тексте на то же слово, с помощью underbrace и какой-либо другой строки, скажем, ее перевод на какой-либо другой язык (тот, который назван «после» в приведенном ниже коде), и все это отображается в latex-> pdf

Это мой пример кода (я также пробовал с paste и cat вместо paste0 )

 <<echo=FALSE,results='asis'>>=

require(tm)
require(stringr)
require(textcat)
require(xtable)
require(koRpus)
require(dplyr)

my.text.before <- "the sea is blue."
string.before <- "blue"
string.underneath <- "colour"

string.after <- paste("$\underbrace{",string.before,"}_\textrm{",string.underneath,"}$",collapse="",sep="")
my.text.after <- str_replace_all(my.text.before,string.before,string.after) 
print(my.text.after)
@
  

но я не могу заставить его сгенерировать в конечном итоге

underbrace в моем файле latex. В зависимости от всех настроек, которые я пробовал (например, \\underbrace ), я получаю либо underbrace, либо \underbrace в моем файле .tex, но никогда не то, что нужно.

Мне удалось выполнить такую операцию с textbf помощью instead of underbrace , но textbf для этого не требуется находиться в математическом режиме latex, может быть, в этом суть (а может и нет). Я пытался $ вместо $ , но это не помогает.

Комментарии:

1. Неясно, что вы делаете, my.text.after чтобы включить его в документ. Пожалуйста, попробуйте создать полный, минимально воспроизводимый пример, который мы можем запустить и получить те же результаты, что и вы.

2. отредактировано в этом направлении, спасибо.

3. попробуйте str_replace_all(my.text.before,fixed(string.before),string.after)

4. В итоге я нашел удовлетворительный обходной путь следующим образом: renewcommand{textunderscore}[2]{$underbrace{textrm{#1}}_textrm{#2}$} чтобы избежать $ (latex math) и u запуска underbrace , который не будет выполняться правильно. за которым следует : paste("textunderscore{",string.before,"}{",string.underneath,"}",collapse="",sep="")