匹配和更改列表值

时间:2018-07-02 15:37:01

标签: r markdown pandoc-citeproc

我正在尝试编写可区分Markdown脚注和引文边框(pandoc样式)的代码,因为两者共享相同的[]

paper=c('sometext^[footnote1. [@citation1] footnote.] sometext. moretext. ', 'sometext. moretext. ^[footnote2. [-@citation2; @citation3] footnote. [@citation4]] sometext. ^[footnote3]') %>% as.character
fs=gregexpr('\\^\\[', paper) # footnote start
cid=gregexpr('@', paper) # citation indicator
fcs=gregexpr('\\[', paper) # footnote/citation start
fce=gregexpr('\\]', paper, perl = T) # footnote/citation end

由于fs清楚地说明了脚注的开始位置,并且将成为fcs的子集,因此我要做的第一件事就是过滤掉fcs中的索引与fs重叠。

> paper[1]
[1] "sometext^[footnote1. [@citation1] footnote.] sometext. moretext. "

> fs[1][[1]]+1
[1] 10
attr(,"match.length")
[1] 2
attr(,"index.type")
[1] "chars"
attr(,"useBytes")
[1] TRUE

> fcs[1][[1]]
[1] 10 22
attr(,"match.length")
[1] 1 1
attr(,"index.type")
[1] "chars"
attr(,"useBytes")
[1] TRUE

我应该如何从10中删除匹配的fcs,以便仅留下指示22开头边界的@citation1?我想为paper的其余部分做同样的事情。

0 个答案:

没有答案