Hi, I'm trying to resolve citations inside attributes, i.e. something like
```{.c caption="nice piece, cf. [@FOO]"}
int main() {
return 42;
}
```
Since Pandoc/Citeproc currently do not handle citations of this kind, I'm trying to resolve this manually with a Lua filter: Put this piece into a new temporary document, run Pandoc+Citeproc on this document using `pandoc.utils.run_json_filter`, retrieve the processed string and put back it in the original place, i.e. the caption.
However, this approach seems to be not working?
As a MWE I've tried this document `test.md`:
```markdown
---
references:
- author:
- family: Wuppie
id: FOO
title: Lorem Ipsum
---
see [@FOO]
```
Running `pandoc -t json --citeproc test.md` the result is
```json
{"pandoc-api-version":[1,22],"meta":{"references":{"t":"MetaList","c":[{"t":"MetaMap","c":{"author":{"t":"MetaList","c":[{"t":"MetaMap","c":{"family":{"t":"MetaInlines","c":[{"t":"Str","c":"Wuppie"}]}}}]},"id":{"t":"MetaInlines","c":[{"t":"Str","c":"FOO"}]},"title":{"t":"MetaInlines","c":[{"t":"Str","c":"Lorem"},{"t":"Space"},{"t":"Str","c":"Ipsum"}]}}}]}},"blocks":[{"t":"Para","c":[{"t":"Str","c":"see"},{"t":"Space"},{"t":"Cite","c":[[{"citationId":"FOO","citationPrefix":[],"citationSuffix":[],"citationMode":{"t":"NormalCitation"},"citationNoteNum":1,"citationHash":0}],[{"t":"Str","c":"(Wuppie,"},{"t":"Space"},{"t":"Str","c":"n.d.)"}]]}]},{"t":"Div","c":[["refs",["references","csl-bib-body","hanging-indent"],[]],[{"t":"Div","c":[["ref-FOO",["csl-entry"],[]],[{"t":"Para","c":[{"t":"Str","c":"Wuppie."},{"t":"Space"},{"t":"Str","c":"n.d."},{"t":"Space"},{"t":"Span","c":[["",[],[]],[{"t":"Str","c":"“"},{"t":"Str","c":"Lorem"},{"t":"Space"},{"t":"Str","c":"Ipsum"},{"t":"Str","c":"."},{"t":"Str","c":"”"}]]}]}]]}]]}]}
```
, i.e. the citation is properly resolved (as expected).
However, using the Lua filter `codecite.lua` (for the sake of simplicity, I'll just replace the old block directly with a citation):
```lua
local meta
function render_blocks(b)
local blocks = {pandoc.Para{pandoc.Str("see [@FOO]")}}
local tmp = pandoc.utils.run_json_filter(
pandoc.Pandoc(blocks, meta),
'pandoc',
{'--from=json', '--to=json', '--citeproc'}
)
return tmp.blocks
end
return {
{ Meta = function (m) meta = m end },
{ Block = render_blocks }
}
```
and running `pandoc -L codecite.lua test.md -t json` the result is just
```json
{"pandoc-api-version":[1,22],"meta":{"references":{"t":"MetaList","c":[{"t":"MetaMap","c":{"author":{"t":"MetaList","c":[{"t":"MetaMap","c":{"family":{"t":"MetaInlines","c":[{"t":"Str","c":"Wuppie"}]}}}]},"id":{"t":"MetaInlines","c":[{"t":"Str","c":"FOO"}]},"title":{"t":"MetaInlines","c":[{"t":"Str","c":"Lorem"},{"t":"Space"},{"t":"Str","c":"Ipsum"}]}}}]}},"blocks":[{"t":"Para","c":[{"t":"Str","c":"see [@FOO]"}]}]}
```
, which is unexpected (citation is not resolved).
Clearly I'm missing something here. But what is it? Can you please advise?
`pandoc --version`: pandoc 2.14.2
Thanks!
Carsten
--
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/bcb42d1a-cd9f-45f1-a1f4-5f21cb9ae46an%40googlegroups.com.