#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="")