【发布时间】:2013-03-21 03:47:46
【问题描述】:
我希望能够即时将 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'
如果有帮助,我有 this toy Ananda Mahto 帮助我制作的。您可以通过wheresPandoc <- reports:::wheresPandoc从报告中访问它
编辑我试过的每个 Ben 的 cmets:
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 我试过的每个 Dason 的 cmets:
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
【问题讨论】:
-
不知道上下文,但是:使用 pandoc 将 Markdown 渲染为 LaTeX 的任何机会? ` echo '*注意:我也喜欢巧克力牛奶 很多!' | pandoc -t 乳胶`
-
可能我想过这个(可能使用
pander),但在这里或那里转换字符串似乎有点过头了(就像蚊子的火箭筒)。这可能是要走的路。另外,它需要一个外部文件并读回(我认为但可能是错误的)。 -
@TylerRinker 你不需要写入外部文件——你只需要正确使用命令行。
-
out <- paste("echo", shQuote(x), "| pandoc -t latex"); ans <- system(out, intern = T) -
pander有一个函数Pandoc.convert——我一辈子都不知道如何设置它不返回完整的乳胶文档。