我正在尝试编写可区分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
的其余部分做同样的事情。