Release notes
August 19, 2026 · View on GitHub
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Version 1.5.0 - 2026-08-19
Added
- The recommended CSS for formatting the bibliography is now shipped with the package (in
assets/citations.css) and inserted automatically by a newDocumenterCitations.InjectAssetspipeline step. Manually addingassets=String["assets/citations.css"]to theDocumenter.HTMLformat indocs/make.jlis no longer required. Custom CSS can still be added that way, and takes precedence over the bundled stylesheet. [#115, #116] - An
insert_csskeyword argument forCitationBibliography. The default isinsert_css=true. Withinsert_css=false, the bundledcitations.cssis not inserted, which gives full control over the CSS for citations and bibliographies to theassetsofDocumenter.HTML. [#116] - A warning if any of the
assetsofDocumenter.HTMLis an unmodified copy of acitations.cssbundled with some version ofDocumenterCitations. Such a copy is redundant, as the stylesheet is now inserted automatically, and it would mask any future update of the bundled stylesheet. Customized stylesheets do not trigger the warning. [#116] - Hovering over a citation link in the HTML documentation now shows the corresponding bibliography entry in a popup, similar to the footnote previews in
Documenter. This is enabled by default; instantiate the plugin withshow_hover=falseto disable it. [#67, #119] - Each entry in a canonical
@bibliographyblock in the HTML documentation now ends with backlinks (↩) to the places where the reference is cited. After following a citation, the backlink that leads back to it is marked. This is enabled by default; instantiate the plugin withshow_backlinks=falseto disable it. [#69, #120] - An unofficial and unsupported hook that allows seeding the plugin from multiple
.bibfiles. Seetest/test_multiple_bibfiles.jlfor a worked example. [#72, #121] - Support for a relative
bibfilepath, resolved relative to the script currently being executed (assumed to bemake.jl) [#122]
Changed
- Widened the
[compat]bound forBibliographyto include the v0.4 release. The v0.4 API is fully compatible with the functions used by this package. [#114] - Widened the
[compat]bound forOrderedCollectionsto include the v2 release. [#117, in lieu of #111] - Updated links to
Bibliography.jl,BibParser.jl, andBibInternal.jl, which have moved from theHumans-of-JuliaGitHub organization toJuliaBibliographies. [#114]
Upgrade guidelines:
If you followed the instructions in previous versions of DocumenterCitations to create a citations.css file (based on the content given in the documentation), and passed it as a member of the list of assets to Documenter.HTML, you should now either delete that file from your docs/src/assets/ folder and from the assets list, or change the instantiation of CitationBibliography to have insert_css=false. Otherwise, the existing citations.css will be applied on top of the new built-in citations.css. Most likely, this is harmless (the two files are identical), but it may lead to conflicts and unexpected behavior if the built-in CSS ever changes in future versions. If you are deliberately using a custom CSS, you should investigate how your CSS interacts with the built-in definitions, and whether they should be applied on top (insert_css=true) or whether you want to take over the CSS styling completely (insert_css=false).
Version 1.4.1 - 2025-08-26
Fixed
- The LaTeX special symbol
\Sin a.bibfile is now correctly translated to the section sign§. [#102]
Version 1.4.0 - 2025-06-14
Added
- The
CitationBibliographyplugin object now has an internal fieldanchor_keysthat is a bijective mapping of citation keys to HTML anchor names. The anchor names are normalized versions of the citation keys that are restricted to ASCII alphanumerics, dashes (-) and underscores (_). This provides compatibility with HTML4 and additionally avoids issues with CSS selectors. It also works around restrictions of theDocumenter.DOMframework that is used internally to render HTML content. [#95]
Fixed
- Citation keys the contain special characters (like colons) no longer produce broken links. This is achieved by normalizing HTML anchor names to contain only alphanumeric ASCII characters, dashes, and underscores [#86, #95]
Version 1.3.7 - 2025-03-29
Fixed
- Show error file paths consistently with
Documenter. WithDocumenter < 1.10, paths in error messages are relative to thedocsfolder. WithDocumenter >= 1.10, they are relative to the current working directory [#89]
Version 1.3.6 - 2025-03-01
Fixed
- The
format_authoryear_bibliography_referencefunction witharticle_link_doi_in_title = truewould link the DOI both from the journal reference and from the title. Now, the DOI is linked from the journal whenarticle_link_doi_in_title = falseand from the title whenarticle_link_doi_in_title = true. [#87]
Version 1.3.5 - 2024-11-14
Fixed
- Compatibility with BibInternals v0.3.7 [#80, #83]
- Allow LaTeX escape codes to appear at the beginning of a first name. That is, names are now un-escaped before generating name initials. [#78, #83]
Internal Changes
- The internal
format_labeled_bibliography_referencefunction now forwards keyword arguments to the internalformat_namesfunctions. This makes it easier to customize styles, e.g., to limit the number of author before "et al." is used. [#79]
Version 1.3.4 - 2024-09-19
Internal Changes
- Added an
article_link_doi_in_titleoption to the internalformat_published_inandformat_labeled_bibliography_referencefunctions. This allows custom styles to change how links appear in bibliography entries for articles. By setting the option totrue, the title of the article,instead of the "published in" information, will be used as the link text for a DOI . This makes the bibliography for articles more consistent with other types or entries, but is recommended only if no entries have both a DOI and a URL. [#73, #74]
Version 1.3.3 - 2024-03-08
Fixed
- The recommended CSS (
citations.css) now includes a fix to be compatible with the dark-mode CSS of Documenter. Existing pages should update theircitations.cssto add!importantto thelist-styleof.citation ul. [#70]
Version 1.3.2 - 2023-11-29
Fixed
- Warn about markdown link syntax in
.bibfiles [#60] - Warn about invalid DOIs in
.bibfiles. The DOI field should never contain a URL (https://doi.org/...). However, such usage is detected as a special case, and the DOI is automatically extracted from the URL. - Automatically link both URL and DOI fields. This fixes a regression in
v1.3.0, which would throw an error for@bookand@proceedingentries with both a URL and a DOI field. Now, the URL in such a case will be automatically linked via theTitlefield, and the DOI via theorganization/publisher/addressfields, similar to the behavior inv1.2.0. You may prefer to have the DOI linked via thatTitle, in which case you should add aNotefield containing theURL(using\url/\href, as appropriate). [#65] - Calling
makedocswithlinkcheck=truenow also checks links (e.g., DOIs) inside the bibliography. Note that the correct behavior requires Documenter 1.2. With older versions of Documenter, broken links in the bibliography will be silently ignored. [#58, #62, Documenter#2329, Documenter#2330]
Version 1.3.1 - 2023-11-02
Fixed
-
Added a fallback for the
Pagesattribute in a@bibliographyblock to behave as in pre-1.3.0: IfPagesreferences a file with a path relative to thedocs/srcdirectory (which was the unintentional requirement pre-1.3.0), this now works again, but shows a warning that the name should be updated to be relative to the folder containing the file that contains the@bibliographyblock. [#61]This fixes the
v1.3.0release arguably having been "breaking" [#59] in that anybody who was usingPagespre-1.3.0 would have had to use paths relative todocs/src, even though that was a workaround for a known bug [#22]. Note that wheneverPagesreferences the current file,@__FILE__should be used.
Version 1.3.0 - 2023-11-01
Fixed
- Skip the expansion of citations and bibliographies when running in doctest mode [#34]
- Support underscores in citation keys [#14]
- The
Pagesin a@bibliographyblock are now relative to the folder containing the current file. The behavior is consistent withPagesin Documenter's@indexand@contentsblocks. [#22] - The parsing of LaTeX strings has improved significantly. In particular, curly braces should now be stripped correctly [#15]. Note that that braces in titles are never needed for
DocumenterCitations, but handling them correctly makes it easier to use the same.bibfile for LaTeX andDocumenterCitations. - Fixed the rendering of references other than
@article, especially@inproceedings,@incollection,@inbooks, mimicking RevTeX. The DOI/URL are now linked via the Title and/or Booktitle. Added support forChapter,Volume,Number,Edition,Monthfields. [#56]
Added
- Allow multiple citations in a single
@citelink. In the default numeric style, these can be compressed, e.g. "Refs. [1–3]" [#6] - In general (depending on the style and citation syntax), citation links may now render to arbitrarily complex expressions.
- Citation comments can now have inline markdown elements, e.g.,
[GoerzQ2022; definition of $J$ in section *Running costs*](@cite) - When running in non-strict mode, missing bibliographic references (either because the
.bibfile does not contain an entry with a specific BibTeX key, or because of a missing@biblographyblock) are now handled similarly to missing references in LaTeX: They will show as (unlinked) question marks. - Support for bibliographies in PDFs generate via LaTeX (
format=Documenter.LaTeX()). Citations and references are rendered exactly as in the HTML version. Specifically, the support does not depend onbibtex/biblatexand supports any style (including custom styles). [#18] - Functions
DocumenterCitations.set_latex_optionsandDocumenterCitations.reset_latex_optionsto tweak the rendering of bibliographies in PDFs. - The
Pagesin a@bibliographyblock can now use@__FILE__to refer to the current file. [#22] - You may now use
\urland\hrefcommands in the@miscfield of an entry. - The
Urldatefield is now supported for citing websites. [#53]
Internal Changes
- Removed the redundant
CitationLink.link_textfield. - Added
read_citation_linkreplacing the formerCitationLinkconstructor. CitationLinkcan now be instantiated directly from markdown strings (for documentation / testing purposes)- Added
DirectCitationLinktype to represent citations of the form[text](@cite key). - Exposed
CitationLinkto users who want to implement a custom style (see changes informat_citation) - The interface for the
format_citationfunction has changed: Before, the signature wasformat_citation(style, entry, citations; note, cite_cmd, capitalize, starred)and the function would return as string that would replace the link text of the citation link. Now, the signature isformat_citation(style, cit, entries, citations)wherecitis aCitationLinkobject, and the function returns a string of markdown code that replaces the entire citation link (not just the link text). Generally, the returned markdown code is expected to contain direct citation links which, are automatically expanded subsequently. That is,format_citationnow generally converts indirect citation links (CitationLink) into direct citation links (DirectCitationLink). - Exposed the internal function
format_labeled_citationthat implementsformat_citationfor the built-in styles:numericand:alphaand may be useful for custom styles that are variations of these. - Exposed the internal function
format_authoryear_citationthat implementsformat_citationfor the built-in style:authoryear - Exposed the internal function
format_labeled_bibliography_referencethat implementsformat_bibliography_referencefor the built-in styles:numericand:alpha. - Exposed the internal function
format_authoryear_bibliography_referencethat implementsformat_bibliography_referencefor the built-in style:authoryear:. - The example custom styles
:enumauthoryearand:keylabelshave been rewritten using the above internal functions, illustrating that custom styles will usually not have to rely on the undocumented and even more internal functions likeformat_namesandtex2unicode. - Any
@bibliographyblock is now internally expanded into an internalBibliographyNodeinstead of a raw HTML node. ThisBibliographyNodecan then be translated into the desired output format byDocumenter.HTMLWriterorDocumenter.LaTeXWriter. This is how support for bibliographies withformat=Documenter.LaTeX()can be achieved. - The routine
format_bibliography_referencemust now return a markdown string instead of an HTML string.
Upgrade guidelines:
For anyone who was using custom styles, which rely on the Internals of DocumenterCitations, this release will almost certainly break the customization. See the above list of internal changes.
There were several bugs and limitations in version 1.2.x for which some existing documentations may have been using workarounds. These workarounds may cause some breakage in the new version 1.3.0. In particular:
-
The
Pagesattribute in a@bibliographyblock in version1.2.xrequired any names to be relative to thedocs/srcdirectory [#22]. This was both unintentional and undocumented. These names must now be updated to be relative to to the folder containing the file which contains the@bibliographyblock. This is consistent with howPagesis used, e.g., in@contentsor@indexblocks. For the common usage wherePageswas referring to the current file,@__FILE__should be used. -
Pre-
1.3.0, strings in entries in the.bibfile were extremely limited. There was no official support for any kind oftexmacros: only plain-text (unicode) was fully supported. As a workaround, some users exploited an (undocumented/buggy) implementation detail that would cause html or markdown strings inside the.bibfile to "work", e.g. for adding links in anotefield. These workarounds may break inv1.3.0. While unicode is still very much supported (öover\"{o}),.bibfiles should otherwise be written to be fully compatible withbibtex. For links in particular, the LaTeX\hrefmacro should be used. Anytexcommands that are not supported (Error: Unsupported command) should be reported. Sometexcharacters ($%@{}&) that may have worked directly pre-1.3.0will have to be escaped in version1.3.0.
Version 1.2.1 - 2023-09-22
Fixed
- Collect citations that only occur in docstrings [#39, #40]
- It is now possible to have a page that contains a
@bibliographyblock listed in@contents[#16, #42].
Version 1.2.0 - 2023-09-16
Version changes
- Update to Documenter 1.0. The most notable user-facing breaking change in Documenter 1.0 affecting DocumenterCitations is that the
CitationBibliographyplugin object now has to be passed tomakedocsas an element of thepluginskeyword argument, instead of as a positional argument.
Fixed
- The plugin no longer conflicts with the
linkcheckoption ofmakedocs[#19]
Version 1.1.0 - 2023-09-15
Fixed
- Avoid duplicate labels in
:alphastyle. This is implemented via the new statefulAlphaStyle(), but is handled automatically with (style=:alpha) [#31] - With the alphabetic style (
:alpha/AlphaStyle), include up to 4 names in the label, not 3 (but 5 or more names results in 3 names and "+"). Also, include the first letter of a "particle" in the label, e.g. "vWB08" for a first author "von Winckel". Both of these are consistent with LaTeX's behavior. - Handle missing author/year, especially for
:authoryarand:alphastyles. You end up with:alphalabels likeAnon04(missing authors) orCW??(missing year), and:authoryearcitations like "(Anonymous, 2004)" and "(Corcovilos and Weiss, undated)". - Consistent punctuation in the rendered bibliography, including for cases of missing fields.
Added
- New
style=AlphaStyle()that generates unique citation labels. This can mostly be considered internal, asstyle=:alphais automatically upgraded tostyle=AlphaStyle(). - Support for
eprintfield. It is recommended to add the arXiv ID in theeprintfield for any article whose DOI is behind a paywall [#32] - Support for non-arXiv preprint servers BiorXiv and HAL [#35, #36]
- Support for
notefield. [#20]
Changed
- In the rendered bibliography, the BibTeX "URL" field is now linked via the title, while the "DOI" is linked via the journal information. This allows to have a DOI and URL at the same time, or a URL for an
@unpublished/@misccitation. If there is a URL but no title, the URL is used as the title.
Internal Changes
- Added an internal function
init_bibliography!that is called at the beginning of theExpandBibliographypipeline step. This function is intended to initialize internal state either of thestyleobject or theCitationBibliographyplugin object before rendering any@bibliographyblocks. This is used to generate unique citation labels for the newAlphaStyle(). For the other builtin styles, it is a no-op. Generally,init_bibliography!can help with implementing custom "stateful" styles.
Version 1.0.0 - 2023-07-12
Version changes
- The minimum supported Julia version has been raised from 1.4 to 1.6.
Breaking
- The default citation style has changed to
:numeric. To restore the author-year style used pre-1.0, instantiateCitationBibliographywith the optionstyle=:authoryearindocs/make.jlbefore passing it tomakedocs. - Only cited references are included in the main bibliography by default, as opposed to all references defined in the underlying
.bibfile.
Added
- A
stylekeyword argument forCitationBibliography. The default style isstyle=:numeric. Other built-in styles arestyle=:authoryear(corresponding to the pre-1.0 style) andstyle=:alpha. - It is now possible to implement custom citation styles.
- The
@bibligraphyblock can now have additional options to customize which references are included, see Syntax for the Bibliography Block. - It is possible to generate secondary bibliographies, e.g., for a specific page.
- There is new syntax to create links to bibliographic references with arbitrary text.
- The following variations of the
@citecommand are now supported:@citet,@citep,@cite*,@citet*,@citep*,@Citet,@Citep,@Cite*,@Citet*,@Citep*. See the syntax for citations for details. - Citations can now include notes, e.g.,
See Ref. [GoerzQ2022; Eq. (1)](@cite).
Other
- DocumenterCitations is now hosted under the JuliaDocs organization.