The repository contains the bib resources of the KWARC group, most notably the
citation database kwarc.bib. It is generated automatically by concatenating
several source files via a GitHub Action workflow.
We additionally use the Workflow to generate
publication websites with the help of
LaTeXML - see (far below).
In the simplest case, just clone the repository, and extend your BIBINPUTS
environment variable so that it can find it. On a UNIX system something like the following
should work.
cd /path/to/your/setup
mkdir -p KWARC
cd KWARC
git clone https://github.com/KWARC/bibs
echo 'export BIBINPUTS="${BIBINPUTS}:/path/to/your/setup/KWARC/bibs:"' >> ~/.bashrc
Your BIBINPUTS should look something like this: ".//:/path/to/your/setup/KWARC/bibs:".
Of course you will have to replace /path/to/your/setup with a path appropriate to
your system.
If you want to use the KWARC in a revision control system for a larger group, read (far) below.
This repository contains two main folders: src/ and dist/. The first
folder contains the sources used to generate the content of the latter. All bib
files are toplevel.
The top-level bib files concatenated to create the unified kwarc.bib
file. The sources are:
preamble.bib– LaTeX preamble that defines shared macros and stringskwarcpubs.bib– individual publications of KWARC members (e.g.@article,@inproceedings)kwarccrossrefs.bib– crossref targets (e.g.@proceedings) edited by KWARC members (e.g. when one of us chaired a workshop)extpubs.bib– publications by external researchers (which may cross-reference targets inkwarccrossrefs.bib!)extcrossrefs.bib– crossref targets edited by external researchers, regardless of whether KWARC or external publications refer to them.deprecated.bibdeprecated citations that are still kept inkwarc.bibto format old papers. NOTE that they may contain double crossrefs that need to be fixed manually (the bib is mostly for documentation purposes), best by moving to the non-deprecated versions.
For making citations in your documents, you can simply continue to use the
all-in-one kwarc.bib (but keep in mind that it is not editable!), or
alternatively you can use the individual files. In the latter case, use the
following order:
preamble.bib- pubs.bib
- crossrefs.bib
The source files do not have any particular order.
Do not use any graphical frontend for editing, but use a text editor, as the latter makes sure that changes are easy to spot when using Git/Subversion's diff.
Do not touch anything that you don't understand.
It is easiest to create new entries by copying and modifying existing ones.
For online publications, it is strongly recommended to use
BibLaTeX's @online{foo:on} entries; see
http://trac.kwarc.info/KWARC/wiki/BibLaTeX
Most online publications come in multiple variants for compatibility with legacy publication workflows (such as LNCS). The naming scheme is:
@online{entry:on}-- BibLaTeXonlineentry@webpage{entry:webpage}-- alpha[h]url, an older solution for online citations@misc{entry:web}-- plain BibTeX entry@misc{entry:base}-- crossref'd by the others above, contains common fields, not suitable for citation
We use the GitHub workflow to generate
publication websites with the help of
LaTeXML. Additionally, we generate
specific publication pages for KWARC members,
KWARC projects, and theses. This behavior is triggered by
the pubs key in the bibTeX entries: an entry with pubs = {foo,bar} will be listed in
the publication pages http://kwarc.github.io/foo and http://kwarc.github.io/bar.
In a nutshell, the build process transforms kwarcpubs.bib and kwarccrossrefs.bib to LTXML format via
LaTeXML. Then we run the script src/pubs/publist.xsl
over it for all the values from the pubs= field in the bibTeX entries that are registered
in the bibs.do variable in the Makefile. publist.xsl
selects the respective items and makes a html file from that. The results are committed to
the gh-pages branch and are then hosted by GitHub.
For details see the top-level Makefile.
To add a person to the publication pages
- update the
bib.peopleorbib.projectsvariable in the top-levelMakefileand add the username of the person or project to add - update the
<xsl:choose>statement insrc/pubs/publist.xslto set the real name of the person or project to be added. GitHub actions will re-build the web page (takes about 20 min), but you should probably test by building locally first.
The website and concatenated files are generated and pushed automatically via
GitHub Actions. For building locally we use a Makefile. It has the following
targets:
all = distdist = bib pubsbibTakes the individual .bib files and concatenates them intokwarc.bibxmlTakes the individual .bib files and generates xml versions of them indist/ltxml/*.bib.xmlusinglatexml. The generated files are.gitignored as users should not need them.htmlTakes the generated xml files from above and uses latexml and xslt to first generate .tex files indist/tex/name-type.texand then html filesdist/html/name-type.html. Both types are gitignored. Uses an adapted version of thegenerate-pubwwwscript, now found insrc/html/generate.html.pubsTakes the generated html files and builds a nice-looking bibliography indist/pubs. The output is .gitignored and intended to be committed to a gh-pages branch later on. Although that would still need an index.html, but that should not be a problem.clean-bib,clean-xml,clean-html,clean-pubsRemoves files generated by an individual target.cleanRemoves all generated files
The xml and html targets depend on a working latexml installation. The html and pubs targets also need xsltproc.
We write most of our papers in git repositories, there it is usually a good idea to
make this repository into an external sub-repository that can be updated as necessary. In
the instructions below we assume that you - as the paper repos maintainer - want to add the
KWARC bibs as a sub-repository at path lib/kbibs from the top of the paper
repository.
is via the git-subrepo extension of git. Unfortunately this is not part of git
(yet). So you as the paper repos maintainer have to
install it first if you want to
install the KWARC bibs as a subrepos. Your users do not, they will get the subrepos
automatically on git clone or git pull.
- go to the top of your paper prehistory:
cd path/to/top(you can only make a "subrepo" from there) - add the KWARC bibs repos as a "subrepo":
git subrepo clone [email protected]:KWARC/bibs.git lib/kbibs
Note that under git-subrepo the "external" is not updated automatically, a
maintainer has to "pull" it. This can be seen as a feature and not a bug (there is less of
a chance to break things).
- go to the top of your paper repository:
cd path/to/top(you can only pull from there) - pull the KWARC bibs repos as a "subrepo":
git subrepo pull lib/kbibs
To contribute changes back to the the KWARC bibs repository, you analogously do
- go to the top of your paper prehistory:
cd path/to/top(you can only push from there) - pull the KWARC bibs repos as a "subrepo":
git subrepo push lib/kbibs
easypeasy!
is via git subtree.
- go to the top of your paper repository:
cd path/to/top - add the KWARC bibs repos as a remote:
git remote add kbibs [email protected]:KWARC/bibs.gitunder the namekbibs. - add the remote
kbibsas a subtree:git subtree add --prefix=lib/kbibs kbibs master --squash(here under the pathlib/kbibs). The--squashreduces history noise.
When you want to update the subrepository to the newest version, you have to "subtree pull" as above:
- go to the top of your paper repository:
cd path/to/top - subtree-pull:
git subtree pull --prefix=lib/kbibs kbibs master --squashthis is a bit inconvenient, but works well.
Contributing back to the KWARC bibs repository is somewhat more complex; RTFM!
In a subversion repository you can must make an external by
- go to the top of your paper prehistory:
cd path/to/top - make the
libsubdir if necessary:mkdir lib - add the external:
svn propedit svn:externals lib - an editor will appear, add the line
kbibs bibs https://github.com/KWARC/bibs/trunk - commit your work:
svn commit -m'adding external for the KWARC bibs'
Note that in SVN any svn update will update the KWARC bibs in the external as well.
Licensed under CC0 1.0 Universal