我希望能够即时将markdown斜体和粗体转换为乳胶版本(即,给文本字符串返回一个文本字符串)。我以为很容易。错误的!(它仍然可能是)。请参阅我在底部尝试的窗台业务和错误。
我所拥有的(注意在降价中已经转义的起始星号):
x <- "\\*note: I *like* chocolate **milk** too ***much***!"
我想要什么:
"*note: I \\emph{like} chocolate \\textbf{milk} too \\textbf{\\emph{much}}!"
我不喜欢正则表达式,但更喜欢基本解决方案(尽管不是必需的)。
傻事:
helper <- function(ins, outs, x) {
gsub(paste0(ins[1], ".+?", ins[2]), paste0(outs[1], ".+?", outs[2]), x)
}
helper(rep("***", 2), c("\\textbf{\\emph{", "}}"), x)
Error in gsub(paste0(ins[1], ".+?", ins[2]), paste0(outs[1], ".+?", outs[2]), :
invalid regular expression '***.+?***', reason 'Invalid use of repetition operators'
如果有用的话,我有Ananda Mahto 帮我制作的这个玩具。您可以通过以下方式从报告中访问它wheresPandoc <- reports:::wheresPandoc
编辑每本我试过的评论:
action <- paste0(" echo ", x, " | ", wheresPandoc(), " -t latex ")
system(action)
*note: I *like* chocolate **milk** too ***much***! | C:\PROGRA~2\Pandoc\bin\pandoc.exe -t latex
EDIT2 Per Dason 我试过的评论:
out <- paste("echo", shQuote(x), "|", wheresPandoc(), " -t latex"); system(out)
system(out, intern = T)
> system(out, intern = T)
\*note: I *like* chocolate **milk** too ***much***! | C:\PROGRA~2\Pandoc\bin\pandoc.exe -t latex