Changes

2.2.1 (16 May 2021)

  • The LaTeX output now uses hyperlink instead of sphinxcite. This fixes issues with double brackets and other mismatches between LaTeX and HTML outputs (see issue #244 reported by zhi-wang).

  • The setup function now also returns the version of the extension (see issue #239 reported by lcnittl).

2.2.0 (5 March 2021)

  • Support the :any: role (see issue #232).

  • New natbib/biblatex inspired roles for textual and parenthetical citation references (see issue #203 reported by matthew-brett). For textual citation references, use :cite:t: and for parenthetical citation references, use :cite:p:. The old :cite: role is an alias for :cite:p:.

  • Use the s suffix to include the full author list rather than abbreviating it with “et al.”: :cite:ts:, :cite:ps:.

  • For textual citation references, use the c prefix to capitalize the first letter: :cite:ct:, :cite:cts:.

  • New natbib inspired roles for citing just the author, year, or label, optionally with brackets, and optionally capitalizing the first letter of the author: :cite:author:, :cite:authorpar:, :cite:cauthor:, :cite:cauthorpar: :cite:year:, :cite:yearpar:, :cite:label:, :cite:labelpar: (see issue #71 reported by bk322).

  • To configure your referencing style, an optional config setting bibtex_reference_style has been added. If not specified, this defaults to the label style, which will use the label to format citation references, matching the referencing style as in previous versions. The other style currently available is author_year, for author-year style referencing.

  • Reference styles can be fully customized to your heart’s desire (see issue #203 reported by amichuda). They are based on pybtex’s template system, which was already used for customizing bibliography styles. Refer to the user documentation for examples, and to the API documentation for full details.

  • Other packages can register custom reference styles through entry points. Refer to the user documentation for details.

  • Propagate pybtex FieldIsMissing exception as a warning (see issue #235 reported by Zac-HD).

2.1.4 (8 January 2021)

  • Fix ValueError exception when having citations from orphans (see issue #228, reported by VincentRouvreau).

2.1.3 (1 January 2021)

  • Sphinx 2.1 or later is now formally required (up from 2.0).

  • Fix unresolved references when running the latex build immediately after the html build, or when rerunning the html build after deleting the generated html files without deleting the pickled doctrees/environment (see issue #226, reported by skirpichev).

  • No longer insert user defined header for bibliography directives if there are no citations in it.

  • Warnings now consistently provide source file and line number of where the issue originated.

  • Simpler and faster implementation of footcite and footbibliography.

  • Improved type annotations throughout the API, now using forward declarations where possible.

2.1.2 (30 December 2020)

  • Fix KeyError exception when building documents with footbibliography directives but without any footnotes needing to be generated for this directive (see issue #223, reported by drammock).

2.1.1 (29 December 2020)

  • Fix latex builder KeyError exception (see issue #221, reported by jedbrown).

  • Fix citation references across documents in latex build.

2.1.0 (28 December 2020)

  • The extension no longer relies on the bibtex.json method. Instead, the extension now postpones identifying all citation cross-references to Sphinx’s consistency check phase. The actual citation references and bibliography citations are then generated in the resolve phase using post-transforms. As a result, bibtex.json is no longer needed and thus Sphinx no longer needs to run twice as in the past if the file did not exist (closes issues #214 and #215). Thanks to everyone who chimed in on this, especially everyone who made helpful suggestions to find better implementation approaches, and everyone who helped with testing.

  • Citations with multiple keys will now reside in the same bracket (closes issue #94).

  • Consistent use of doctutils note_explicit_target to set ids, to ensure no clashing ids.

  • Improved and robustified test suite, using regular expressions to verify generated html.

  • The test suite now includes a patched version of the awesome but abandoned sphinx-natbib extension, to help comparing and testing implementations and features. The long term intention is to fully support sphinx-natbib style citations.

  • BACKWARD INCOMPATIBLE The API has been refactored to accommodate the new design. Refer to the API documentation for details.

2.0.0 (12 December 2020)

  • There is a new footcite role and a new footbibliography directive, to allow easy and simple local (per document) bibliographies through footnotes. See issues #184 and #185.

  • Parallel builds are now finally supported. See issues #80, #96, and #164, as well as pull request #210.

  • BACKWARD INCOMPATIBLE To enable parallel builds, a new mandatory config setting bibtex_bibfiles has been added. This setting specifies all bib files used throughout the project, relative to the source folder.

  • BACKWARD INCOMPATIBLE The encoding of bib files has been moved to an optional config setting bibtex_encoding. The :encoding: option is no longer supported.

  • Headers for bibliography and footbibliography directives can be configured via the bibtex_bibliography_header and bibtex_footbibliography_header config setting.

  • The bibliography directive no longer requires the bib files to be specified as an argument. However, if you do, citations will be constrained to those bib files.

  • Support newlines/whitespace around cite keys when multiple keys are specified. Thanks to dizcza for help with testing. See issue #205 and pull request #206.

  • Improve citation ordering code (reported by ukos-git, see issue #182).

  • The unresolved citations across documents issue has been resolved. The extension stores all citation information in a bibtex.json file. If it does not exist, the file will be created on your first sphinx build, and you will have to rerun the build to make use of it. The file is automatically kept up to date, with a warning whenever you need to rerun the build. Thanks to dizcza for help with testing. See issues #197 and #204. Also see pull request #208.

  • Migrate test suite to pytest, using sphinx’s testing fixtures.

  • BACKWARD INCOMPATIBLE The API has been refactored. Some functions have moved to different modules. Refer to the API documentation for details.

  • Drop Python 3.5 support.

  • Add Python 3.9 support.

1.0.0 (20 September 2019)

  • Drop Python 2.7 and 3.4 support (as upstream sphinx has dropped support for these as well).

  • Add Python 3.8 support (contributed by hroncok).

  • Update for Sphinx 2.x, and drop Sphinx 1.x support (as there is too much difference between the two versions).

  • Non-bibtex citations will now no longer issue warnings (fix contributed by chrisjsewell).

  • Switch to codecov for coverage reporting.

0.4.2 (7 January 2018)

  • Drop Python 3.3 support, add Python 3.7 support.

  • Work around issue with sphinx-testing on Fedora (reported by jamesjer in issue #157, fix contributed by mitya57 in pull request #158).

0.4.1 (28 November 2018)

  • Disable tinkerer test due to upstream bug.

  • Remove crossref test due to changed upstream behaviour in pybtex.

  • Fix latex test to match new upstream code generation.

  • Fix documentation of encoding option (contributed by Kai Mühlbauer).

  • Migrate to sphinx.util.logging in favour of old deprecated logging method.

0.4.0 (19 April 2018)

  • Remove latexcodec and curly bracket strip functionality, as this is now supported by pybtex natively (see issue #127, reported by erosennin).

  • Fix tests failures with Sphinx 1.7 (see pull request #136, reported and fixed by mitya57).

0.3.6 (25 September 2017)

  • Real fix for issue #111 (again reported by jamesjer).

  • Fix test regressions due to latest Sphinx updates (see issues #115, #120, #121, and #122, reported by ndarmage and ghisvail).

  • Fix test regressions on ascii locale (see issue #121, reported by ghisvail).

  • Support and test Python 3.6.

0.3.5 (22 February 2017)

  • Fix extremely high memory usage when handling large bibliographies (reported by agjohnson, see issue #102).

  • Fix tests for Sphinx 1.5.1 (see issue #111, reported by jamesjer).

0.3.4 (20 May 2016)

  • Document LaTeX workaround for :cite: in figure captions (contributed by xuhdev, see issue #92 and pull request #93).

  • Add bibtex_default_style config value to override the default bibliography style (see issue #91 and pull request #97).

  • Support Python 3.5 (see issue #100).

0.3.3 (23 October 2015)

  • Add per-bibliography key prefixes, enabling local bibliographies to be used in isolation from each other (see issue #87, reported by marscher).

  • Documentation now points to new location of pybtex on bitbucket.

  • Simplified testing code by using the new sphinx_testing package.

0.3.2 (20 March 2015)

  • Document how to create custom label styles (see issue #77, reported by tino).

  • Disable parallel_read_safe for Sphinx 1.3 and later (see issue #80, reported by andreacassioli).

0.3.1 (10 July 2014)

  • Fix for type_.lower() bug: pybtex 0.18 expects type to be a string (this fixes issue #68 reported by jluttine).

0.3.0 (4 May 2014)

  • BACKWARD INCOMPATIBLE The alpha style is now default, so citations are labelled in a way that is more standard for Sphinx. To get the old behaviour back, add :style: plain to your bibliography directives.

  • BACKWARD INCOMPATIBLE is_cited() has been removed. Use get_cited_docnames() instead, which will return an empty list for keys that are not cited.

  • Improved support for local bibliographies (see issues #52, #62, and #63; test case provided by Boris Kheyfets):

    • New docname and docnames filter identifiers.

    • Filter expressions now also support set literals and the operators in, not in, &, and |.

    See documentation for details.

  • Multiple comma-separated citation keys per cite command (see issue #61, suggested by Boris Kheyfets).

  • Add support for pypy and Python 3.4.

  • Drop support for Python 2.6 and Python 3.2.

  • Drop 2to3 and instead use six to support both Python 2 and 3 from a single code base.

  • Simplify instructions for custom styles.

  • Various test suite improvements.

0.2.9 (9 October 2013)

  • Upgrade to the latest pybtex-docutils to produce more optimal html output (specifically: no more nested <span>s).

  • Remove latex codec code, and rely on latexcodec package instead.

  • FilterVisitor has been removed from the public API. Use get_bibliography_entries() instead.

  • Fix upstream Sphinx bug concerning LaTeX citation hyperlinks (contributed by erikb85; see pull request #45).

  • Fix most pylint warnings, refactor code.

0.2.8 (7 August 2013)

  • Use pybtex-docutils to remove dependency on pybtex.backends.doctree.

0.2.7 (4 August 2013)

  • Integrate with coveralls.io, first release with 100% test coverage.

  • Minor bug fixes and code improvements.

  • Remove ordereddict dependency for Python 2.7 and higher (contributed by Paul Romano, see pull requests #27 and #28).

  • New :filter: option for advanced filtering (contributed by d9pouces, see pull requests #30 and #31).

  • Refactor documentation of advanced features.

  • Document how to create custom pybtex styles (see issues #25, #29, and #34).

  • Code is now mostly pep8 compliant.

0.2.6 (2 March 2013)

  • For unsorted styles, citation entries are now sorted in the order they are cited, instead of following the order in the bib file, to reflect more closely the way LaTeX handles unsorted styles (addresses issue #15).

  • Skip citation label warnings on Sphinx [source] links (issue #17, contributed by Simon Clift).

0.2.5 (18 October 2012)

  • Duplicate label detection (issue #14).

  • New :labelprefix: option to avoid duplicate labels when having multiple bibliographies with a numeric label style (addresses issue #14).

0.2.4 (24 August 2012)

  • New options for the bibliography directive for rendering the bibliography as bullet lists or enumerated lists: :list:, :enumtype:, and :start:.

  • Minor latex codec fixes.

  • Turn exception into warning when a citation cannot be relabeled (fixes issue #2).

  • Document LaTeX encoding, and how to turn it off (issue #4).

  • Use pybtex labels (fixes issue #6 and issue #7).

  • Cache tracked citation keys and labels, and bibliography enumeration counts (fixes issues with citations in repeated Sphinx runs).

  • Bibliography ids are now unique across documents (fixes issue that could cause the wrong bibliography to be inserted).

  • The plain style is now the default (addresses issue #9).

0.2.3 (30 July 2012)

  • Document workaround for Tinkerer (issue #1).

  • Use tox for testing.

  • Full 2to3 compatibility.

  • Document supported versions of Python (2.6, 2.7, 3.1, and 3.2).

0.2.2 (6 July 2012)

  • Documentation and manifest fixes.

0.2.1 (19 June 2012)

  • First public release.