aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Evers <kristianevers@gmail.com>2018-06-14 10:57:23 +0200
committerGitHub <noreply@github.com>2018-06-14 10:57:23 +0200
commitb9b576795c0a0befe62544524d08b8c073257ed1 (patch)
tree14a6921dcdd599cc42d73e83647e9aeef6819956
parentab7de4874d83c9e7b8edd8b68bb1ac0eb98c8e73 (diff)
parent7796cb7e5c23b06aac9ce84245e11dd82730fbcf (diff)
downloadPROJ-b9b576795c0a0befe62544524d08b8c073257ed1.tar.gz
PROJ-b9b576795c0a0befe62544524d08b8c073257ed1.zip
Merge pull request #1043 from mwtoews/docs
Start a `customstyle` for bibliographic references
-rw-r--r--.gitignore2
-rw-r--r--docs/source/bibstyle.py64
-rw-r--r--docs/source/conf.py4
-rw-r--r--docs/source/references.bib2
-rw-r--r--docs/source/references.rst1
5 files changed, 71 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index 548aaf2f..d677c139 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
*~
+*.bak
+*.pyc
build.local.bat
build.local.sh
Makefile
diff --git a/docs/source/bibstyle.py b/docs/source/bibstyle.py
new file mode 100644
index 00000000..8e2cc02a
--- /dev/null
+++ b/docs/source/bibstyle.py
@@ -0,0 +1,64 @@
+###############################################################################
+#
+# Purpose: Configure custom bibliography style for sphinxcontrib-bibtex
+# Author: Mike Toews <mwtoews at gmail.com>
+#
+###############################################################################
+# Copyright (c) 2018, Mike Toews <mwtoews at gmail.com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+###############################################################################
+
+import re
+from pybtex.style.formatting.unsrt import Style as UnsrtStyle
+from pybtex.style.labels.alpha import LabelStyle
+from pybtex.plugin import register_plugin
+
+
+class LinkLabelStyle(LabelStyle):
+ """Citation label used in text, and before each item in the
+ References section"""
+
+ re_char_nums = re.compile(r'^[\d\w]+$')
+
+ def format_label(self, entry):
+ """Returns BibTeX key for label
+
+ Raises KeyError if BibTeX key has other characters other than letters
+ and numbers.
+ """
+ label = entry.key
+ if not self.re_char_nums.match(label):
+ raise KeyError(
+ 'BibTeX key must contain only letters and numbers '
+ '(found {0!r})'.format(label))
+ return label
+
+
+class CustomStyle(UnsrtStyle):
+ """Citation style in the References section"""
+
+ default_label_style = 'linklabel'
+ default_name_style = 'lastfirst'
+ default_sorting_style = 'author_year_title'
+ # TODO: Make more Harvard-like, i.e. year after name(s)
+
+
+register_plugin('pybtex.style.labels', 'linklabel', LinkLabelStyle)
+register_plugin('pybtex.style.formatting', 'customstyle', CustomStyle)
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 81a683d6..5df4ddf0 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -19,7 +19,9 @@ import datetime
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
+sys.path.insert(0, os.path.abspath('.'))
+
+import bibstyle
# -- General configuration ------------------------------------------------
diff --git a/docs/source/references.bib b/docs/source/references.bib
index 31f9a398..f8cde02f 100644
--- a/docs/source/references.bib
+++ b/docs/source/references.bib
@@ -156,7 +156,7 @@
}
@Article{Komsta2016,
- Title = {ATPOL geobotanical grid revisited -- a proposal of coordinate conversion algorithms},
+ Title = {{ATPOL} geobotanical grid revisited -- a proposal of coordinate conversion algorithms},
Author = {Ł. Komsta},
Journal = {Annales UMCS Sectio E Agricultura},
Year = {2016},
diff --git a/docs/source/references.rst b/docs/source/references.rst
index a76d6526..384281cd 100644
--- a/docs/source/references.rst
+++ b/docs/source/references.rst
@@ -8,3 +8,4 @@
.. bibliography:: references.bib
:cited:
+ :style: customstyle