Index of /archives/text/CTAN/support/checkcites
Name Last modified Size Description
Parent Directory -
README 2024-03-04 22:59 5.3K
checkcites-doc.pdf 2024-03-04 23:00 289K
checkcites-doc.tex 2024-03-04 22:59 20K
checkcites.lua 2024-03-04 22:59 29K
checkcites.lua -- Version 2.7 from March 3, 2024
================================================
License
-------
Copyright (c) 2012, 2019, Enrico Gregorio, Paulo Cereda
Copyright (c) 2024, Enrico Gregorio, Island of TeX
- Enrico dot Gregorio at univr dot it
- https://gitlab.com/islandoftex
This script is licensed under the LaTeX Project Public License.
If you want to support LaTeX development by a donation, the best
way to do this is donating to the TeX Users Group.
About
-----
checkcites is a Lua script written for the sole purpose of detecting
unused or undefined references from both LaTeX auxiliary or bibliography
files. We use the term *unused reference* to refer to the reference
present the bibliography file -- with the '.bib' extension -- but not
cited in the '.tex' file. The term *undefined reference* is exactly the
opposite, i.e, the item cited in the '.tex' file, but not present in the
'.bib' file.
The original idea came from a question posted in the TEX community at
Stack Exchange about how to check which bibliography entries were not
used. We decided to write a script to check references. We opted for
Lua, since it's a very straightforward language and it has an
interpreter available on every modern TEX distribution.
Installation
------------
1. Create a new directory named 'checkcites' inside the 'scripts'
directory of your TEXMF tree and copy the 'checkcites.lua' inside
the new directory. In TeX Live, the new directory would be:
texlive/<year>/texmf/scripts/checkcites
2. Rebuild the filename databases with the proper distro tool,
e.g, running 'mktexlsr'.
3. Create a symbolic link to the newly created script inside
the 'bin' directory of your TeX distro. In TeX Live, the
full path is:
texlive/<year>/bin/<arch>
For TeX Live:
Win32: make a copy of 'runscript.exe' inside the very same
location (i.e, 'bin/win32') and rename it to
'checkcites.exe'.
Linux: create a symbolic link (i.e, 'ln -s') inside the 'bin'
directory, targeting the script set in #1. Name it
'checkcites' and give it proper execute ('x') permission.
Usage
-----
The script is pretty simple to use. The only requirement is a recent
TeX distribution, such as TeX Live.
checkcites uses the generated auxiliary files to start the analysis.
From version 2.0 on, the scripts supports two backends:
-> bibtex
Default behavior, the script checks '.aux' files looking for citations,
in the form of '\citation{a}'. For every \citation line found, checkcites
will extract the citations and add them to a table, even for multiple
citations separated by commas, like '\citation{a,b,c}'. The citation
table contains no duplicate values. At the same time checkcites also
looks for bibliography data, in the form of '\bibdata{a}'. Similarly,
for every '\bibdata' line found, the script will extract the bibliography
data and add them to a table, even if they are separated by commas, like
'\bibdata{d,e,f}'. Again, no duplicate values are allowed. Stick with this
backend if you are using BibTeX or BibLaTeX with the 'backend=bibtex'
package option.
-> biber
With this backend, the script checks '.bcf files' (which are XML-based)
looking for citations, in the form of 'bcf:citekey' tags. For every tag
found, checkcites will extract the corresponding values and add them to
a table. The citation table contains no duplicate values. At the same
time checkcites also looks for bibliography data, in the form of
'bcf:datasource' tags. Similarly, for every tag found, the script will
extract the bibliography data and add them to a table. Again, no duplicate
values are allowed. Stick with this backend if you are using BibLaTeX with
the default options or with the 'backend=biber' option explicitly set.
It is important to note, however, that the 'glob=true' option is not
supported yet.
Open a terminal and run checkcites:
$ checkcites
When you run checkcites without providing any argument to it, the a message
error will appear. Do not panic! Try again with the --help flag:
$ checkcites --help
If you are using BibTeX, simply provide the auxiliary file -- the one with
the '.aux' extension -- which is generated when you compile your main '.tex'
file. For example, if your main document is named 'foo.tex', you probably
have a 'foo.aux' file too. Then simply invoke
$ checkcites foo.aux
checkcites allows an additional argument that will tell it how to
behave. For example
$ checkcites --unused foo.aux
will make the script only look for unused references in your '.bib'
file. The argument order doesn't matter, you can also run
$ checkcites foo.aux --unused
and get the same behaviour. Similarly, you can use
$ checkcites --undefined foo.aux
to make the script only look for undefined references in your
'.tex' file. If you want checkcites to look for both unused and
undefined references, go with
$ checkcites --all foo.aux
If no special argument is provided, --all is set as default.
If you are using BibLaTeX, we need to inspect '.bcf' files instead. For
example, if your main document is named 'foo.tex', you probably have a
'foo.bcf' file too. Then invoke
$ checkcites foo.aux --backend biber
Note the --backend flag used for BibLaTeX support. We can even omit the
file extension, the script will automatically assign one based on the
current backend.
That is it, folks!
Official code repository
------------------------
http://gitlab.com/islandoftex/checkcites