e0984a43a9
This deprecates the use of the external pandoc-citeproc filter; citation processing is now built in to pandoc. * Add dependency on citeproc library. * Add Text.Pandoc.Citeproc module (and some associated unexported modules under Text.Pandoc.Citeproc). Exports `processCitations`. [API change] * Add data files needed for Text.Pandoc.Citeproc: default.csl in the data directory, and a citeproc directory that is just used at compile-time. Note that we've added file-embed as a mandatory rather than a conditional depedency, because of the biblatex localization files. We might eventually want to use readDataFile for this, but it would take some code reorganization. * Text.Pandoc.Loging: Add `CiteprocWarning` to `LogMessage` and use it in `processCitations`. [API change] * Add tests from the pandoc-citeproc package as command tests (including some tests pandoc-citeproc did not pass). * Remove instructions for building pandoc-citeproc from CI and release binary build instructions. We will no longer distribute pandoc-citeproc. * Markdown reader: tweak abbreviation support. Don't insert a nonbreaking space after a potential abbreviation if it comes right before a note or citation. This messes up several things, including citeproc's moving of note citations. * Add `csljson` as and input and output format. This allows pandoc to convert between `csljson` and other bibliography formats, and to generate formatted versions of CSL JSON bibliographies. * Add module Text.Pandoc.Writers.CslJson, exporting `writeCslJson`. [API change] * Add module Text.Pandoc.Readers.CslJson, exporting `readCslJson`. [API change] * Added `bibtex`, `biblatex` as input formats. This allows pandoc to convert between BibLaTeX and BibTeX and other bibliography formats, and to generated formatted versions of BibTeX/BibLaTeX bibliographies. * Add module Text.Pandoc.Readers.BibTeX, exporting `readBibTeX` and `readBibLaTeX`. [API change] * Make "standalone" implicit if output format is a bibliography format. This is needed because pandoc readers for bibliography formats put the bibliographic information in the `references` field of metadata; and unless standalone is specified, metadata gets ignored. (TODO: This needs improvement. We should trigger standalone for the reader when the input format is bibliographic, and for the writer when the output format is markdown.) * Carry over `citationNoteNum` to `citationNoteNumber`. This was just ignored in pandoc-citeproc. * Text.Pandoc.Filter: Add `CiteprocFilter` constructor to Filter. [API change] This runs the processCitations transformation. We need to treat it like a filter so it can be placed in the sequence of filter runs (after some, before others). In FromYAML, this is parsed from `citeproc` or `{type: citeproc}`, so this special filter may be specified either way in a defaults file (or by `citeproc: true`, though this gives no control of positioning relative to other filters). TODO: we need to add something to the manual section on defaults files for this. * Add deprecation warning if `upandoc-citeproc` filter is used. * Add `--citeproc/-C` option to trigger citation processing. This behaves like a filter and will be positioned relative to filters as they appear on the command line. * Rewrote the manual on citatations, adding a dedicated Citations section which also includes some information formerly found in the pandoc-citeproc man page. * Look for CSL styles in the `csl` subdirectory of the pandoc user data directory. This changes the old pandoc-citeproc behavior, which looked in `~/.csl`. Users can simply symlink `~/.csl` to the `csl` subdirectory of their pandoc user data directory if they want the old behavior. * Add support for CSL bibliography entry formatting to LaTeX, HTML, Ms writers. Added CSL-related CSS to styles.html.
128 lines
3.7 KiB
Markdown
128 lines
3.7 KiB
Markdown
```
|
|
% pandoc -f biblatex -t markdown -s
|
|
@comment{
|
|
- contains:
|
|
- an article entry with just the required fields
|
|
- an article entry with required and all optional fields
|
|
- notes:
|
|
- year, month to be ignored if date is present
|
|
- journal to be ignored if journaltitle is present
|
|
- editortype, editoratype, editorbtype, editorctype, pubstate,
|
|
series contain keys which, unless corresponding CSL terms exist, require
|
|
locale-specific expansion
|
|
- limitations:
|
|
- annotator, commentator, eid, eprint, eprintclass, eprinttype,
|
|
issuetitle, issuesubtitle, language, origlanguage have no matching
|
|
counterparts in CSL
|
|
- for editor, editora, editorb, editorc (plus editortype,
|
|
editoratype, editorbtype, editorctype) only a subset, editor and director,
|
|
has matching counterparts in CSL
|
|
- kludges:
|
|
- note + addendum -> CSL note
|
|
- number + issue -> CSL issue
|
|
- handling of titleaddon
|
|
- handling of (journal) series
|
|
- done properly, this should be mapped to some CSL variable
|
|
(version? edition? collection-number?), CSL styles would have to be adapted
|
|
- slightly better kludge would map integer to ordinal + "ser."
|
|
("3" -> "3rd ser."); localization keys "newseries" -> "new ser.",
|
|
"oldseries" -> "old ser."; and print all other values as is -- but still
|
|
wouldn't fit all styles or locales.
|
|
}
|
|
|
|
@article{article-req,
|
|
Author = {Author, Ann},
|
|
Date = {2013-07-29},
|
|
Hyphenation = {english},
|
|
Journaltitle = {The Journaltitle},
|
|
Title = {An Article Entry with Just the Required Fields}}
|
|
|
|
@article{article-opt,
|
|
Addendum = {The Addendum},
|
|
Annotator = {Annotator, A.},
|
|
Author = {Author, Jr., Ann A.},
|
|
Commentator = {Commentator, C.},
|
|
Date = {2008-12-31},
|
|
Doi = {10.1086/520976},
|
|
Editor = {Editor, Edward},
|
|
Editora = {Editor, A.},
|
|
Editorb = {Editor, B.},
|
|
Editorc = {Editor, C.},
|
|
Eid = {eid},
|
|
Eprint = {eprint},
|
|
Eprintclass = {eprintclass},
|
|
Eprinttype = {eprinttype},
|
|
Hyphenation = {english},
|
|
Issn = {issn},
|
|
Issue = {issue},
|
|
Issuesubtitle = {The Issuesubtitle},
|
|
Issuetitle = {The Issuetitle},
|
|
Journalsubtitle = {The Journalsubtitle},
|
|
Journaltitle = {The Journaltitle},
|
|
Journal = {The Journal},
|
|
Language = {language},
|
|
Month = {08},
|
|
Year = {2007},
|
|
Note = {The Note},
|
|
Number = {number},
|
|
Origlanguage = {origlanguage},
|
|
Pages = {pages},
|
|
Pubstate = {inpress},
|
|
Series = {newseries},
|
|
Subtitle = {The Subtitle},
|
|
Title = {An Article Entry with the Required and All Optional Fields},
|
|
Titleaddon = {The Titleaddon},
|
|
Translator = {Translator, Ted},
|
|
Url = {http://foo.bar.baz/},
|
|
Urldate = {2013-07-29},
|
|
Version = {version},
|
|
Volume = {volume},
|
|
}
|
|
|
|
^D
|
|
---
|
|
nocite: '[@*]'
|
|
references:
|
|
- author:
|
|
- family: Author
|
|
given: Ann
|
|
container-title: The Journaltitle
|
|
id: 'article-req'
|
|
issued: '2013-07-29'
|
|
language: 'en-US'
|
|
title: An article entry with just the required fields
|
|
type: 'article-journal'
|
|
- accessed: '2013-07-29'
|
|
author:
|
|
- family: Author
|
|
given: Ann A.
|
|
suffix: Jr.
|
|
collection-title: new series
|
|
container-title: 'The Journaltitle: The Journalsubtitle'
|
|
doi: 10.1086/520976
|
|
editor:
|
|
- family: Editor
|
|
given: Edward
|
|
id: 'article-opt'
|
|
issn: issn
|
|
issue: 'number, issue'
|
|
issued: '2008-12-31'
|
|
language: 'en-US'
|
|
note: The Note. The Addendum
|
|
page: pages
|
|
status: in press
|
|
title: 'An article entry with the required and all optional fields:
|
|
The subtitle. The titleaddon'
|
|
title-short: An article entry with the required and all optional
|
|
fields
|
|
translator:
|
|
- family: Translator
|
|
given: Ted
|
|
type: 'article-journal'
|
|
url: 'http://foo.bar.baz/'
|
|
version: version
|
|
volume: volume
|
|
---
|
|
|
|
|
|
```
|