aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Citeproc.hs
AgeCommit message (Collapse)AuthorFilesLines
2021-04-17Use document's lang for the lang parameter of citeproc...John MacFarlane1-2/+1
even if it differs from localeLanguage. (It is designed to be possible to override the locale language, and this is especially useful when one wants to use the unicode extension syntx, e.g. fr-u-kb.)
2021-04-17Remove Text.Pandoc.BCP47 module.John MacFarlane1-8/+2
[API change] Use Lang from UnicodeCollation.Lang instead. This is a richer implementation of BCP 47.
2021-03-12Citeproc: apply fixLinks correctly.John MacFarlane1-5/+5
This is code that incorporates a prefix like `https://doi.org/` into a following link when appropriate. But it didn't work because we were walking with a `[Inline] -> [Inline]` function on an `Inlines`. Changed the point of application of `fixLink` to resolve the issue. Closes #7130.
2021-02-26Fix/update URLs and use HTTP**S** where possible (#7122)Salim B1-1/+1
2021-01-21Text.Pandoc.Citeproc: use finer grained importsAlbert Krewinkel1-18/+21
This allows to import the module in writers without causing a circular dependency.
2021-01-10T.P.Citeproc: factor out and export `getStyle`.John MacFarlane1-45/+55
2021-01-10T.P.Citeproc: factor out getLang.John MacFarlane1-8/+15
2021-01-10T.P.Citeproc: refactor and export `getReferences`.John MacFarlane1-28/+51
See #7016.
2020-12-24Citeproc: fix handling of empty URL variables (`DOI`, etc.).John MacFarlane1-1/+3
The `linkifyVariables` function was changing these to links which then got treated as non-empty by citeproc, leading to wrong results (e.g. ignoring nonempty URL when empty DOI is present). Addresses part 2 of jgm/citeproc#41.
2020-12-16Fix citeproc regression with duplicate references.John MacFarlane1-1/+2
- Use dev version of citeproc, which handles duplicate ids better, preferring the last one in the list and discarding the rest. - Ensure that inline citations take priority over external ones. See jgm/citeproc#36. This restores the behavior of pandoc-citeproc.
2020-12-15Use fetchItem to get external bibliography.John MacFarlane1-8/+7
This means that: - a URL may be provided, and pandoc will fetch the resource. - Pandoc will search the resource path for the bibliography if it is not found relative to the working directory. Closes #6940.
2020-12-15Allow both inline and external references to be usedJohn MacFarlane1-14/+15
with `--citeproc`. This fixes a regression, since pandoc-citeproc allowed these to be combined. Closes #6951.
2020-12-02Citeproc: ensure that BCP47 lang codes can be used.John MacFarlane1-2/+17
We ignore the variants and just use the base lang code and country code when passing off to citeproc.
2020-11-25Fix truncation of `[Citation]` list in `Cite` inside footnotes...John MacFarlane1-2/+2
This affected author-in-text citations in footnotes. It didn't cause problems for the printed output, but for filters that expected the citation id and other information. Closes #6890.
2020-11-13Improve period suppression algorithm for citations in notes...John MacFarlane1-1/+22
in note citation styles. See #6835.
2020-11-07Lint code in PRs and when committing to master (#6790)Albert Krewinkel1-5/+1
* Remove unused LANGUAGE pragmata * Apply HLint suggestions * Configure HLint to ignore some warnings * Lint code when committing to master
2020-11-05Citeproc: improve punctuation in in-text note citations.John MacFarlane1-8/+15
Previously in-text note citations inside a footnote would sometimes have the final period stripped, even if it was needed (e.g. on the end of 'ibid'). See #6813.
2020-11-04Simplified idpred in citeproc.John MacFarlane1-2/+1
2020-11-01Citeproc: use comma for in-text citations inside footnotes.John MacFarlane1-8/+18
When an author-in-text citation like `@foo` occurs in a footnote, we now render it with: `AUTHOR NAME + COMMA + SPACE + REST`. Previously we rendered: `AUTHOR NAME + SPACE + "(" + REST + ")"`. This gives better results. Note that normal citations are still rendered in parentheses.
2020-11-01Improve deNote.John MacFarlane1-4/+5
2020-10-29Use new citeproc; do note capitalization here, not in citeproc.John MacFarlane1-2/+11
2020-10-27Remove obsolete commentJohn MacFarlane1-1/+0
2020-10-27Citeproc: properly handle `csl` field with `data:` URI.John MacFarlane1-1/+1
This is used with the JATS writer, so this fixes a regression in pandoc 2.11 with JATS output and citeproc. Closes #6783.
2020-10-26Add PandocBibliographyError and use it in parsing bibliographies.John MacFarlane1-5/+7
This ensures that bibliography parsing errors generate messages that include the bibliography file name -- otherwise it can be quite mysterious where it is coming from. [API change] New PandocBibliographyError constructor on PandocError type.
2020-10-21citeproc - improved removal of final period...John MacFarlane1-5/+8
...in citations inside notes in note-based styles. These citations are put in parentheses, but the final period must be removed. See jgm/citeproc#20
2020-10-14Fix typos in comments, doc strings, error messages, and testsAlbert Krewinkel1-4/+1
Typos reported by https://fossies.org/linux/test/pandoc-master.tar.gz/codespell.html See: #6738
2020-10-09In fetching parent of dependent CSL style, first...John MacFarlane1-1/+5
look locally, and only do an HTTP request if it's not found locally.
2020-10-07Raise informative errors when YAML metadata parsing fails.John MacFarlane1-2/+4
Closes #6730. Previously the command would succeed, returning empty metadata, with no errors or warnings. API changes: - Remove now unused CouldNotParseYamlMetadata constructor for LogMessage (T.P.Logging). - Add 'Maybe FilePath' parameter to yamlToMeta in T.P.Readers.Markdown.
2020-10-07Cleaner solution to #6723.John MacFarlane1-4/+4
2020-10-07Fix URL prefixes in citations also when they occur in notes.John MacFarlane1-3/+3
Update chicago-fullnote-bibliography.csl and adjust tests. Closes #6723.
2020-10-06Incorporate `https://doi.org/` prefix added by CSL style...John MacFarlane1-1/+12
...into linked DOI, and similarly for other URLs linked in the bibliography. We want to avoid having a URL in which only the latter part is linked. Closes #6723.
2020-10-06Fix URL for "short DOIs" in citations. See #6723.John MacFarlane1-1/+6
Short DOIs begin 10/abcd and should be links to `https://doi.org/abcd` (omitting the `10/`).
2020-10-05Fixed regresison in last commit.John MacFarlane1-1/+1
Parsing of YAML bibliographies was broken; this fixes it.
2020-10-05Removed the idpred from metaValueToReference.John MacFarlane1-3/+2
This isn't really necessary; we do filtering at other points now.
2020-10-05Add yamlToRefs, yamlBsToRefs.John MacFarlane1-7/+5
T.P.Readers.Markdown now exports yamlToRefs. [API change] T.P.Readers.Metadata exports yamlBsToRefs. [API change] These allow specifying an id filter so we parse only references that are used in the document. Improves timing with a 3M yaml references file from 36s to 17s.
2020-10-05Improve searching for CSL files...John MacFarlane1-6/+15
...and CSL abbreviation files. Use resource path to search in both USERDATADIR/csl and USERDATADIR/csl/dependent. Also, add .csl or .json extension as needed, so you can just do --csl zoology.
2020-10-05Use yamlToMeta for yaml bibliographyJohn MacFarlane1-5/+4
This speeds up parsing of external yaml bibliographies considerably (in one test 36s -> 17s).
2020-10-05Add filtering to metaValueToReference, and check other-ids field too.John MacFarlane1-4/+5
2020-09-24Slight improvement to last commit.John MacFarlane1-1/+4
We now add a space only if there isn't already one. (Some styles add a space at the end of the left-margin div.)
2020-09-24Citeproc: Insert space after csl-left-margin span contents...John MacFarlane1-2/+16
if they come before csl-right-inline. This ensures that the citation number or label will be separated from the rest by a space, even in formats (like plain) that don't yet have special handling for the display spans.
2020-09-21Add built-in citation support using new citeproc library.John MacFarlane1-0/+492
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.