block style of highligh.js.
+ * We have to override the padding and the background-color, since we style this
+ * part ourselves. Specifically, we style the surrounding the , while
+ * highlight.js applies the .hljs style directly to the tag.
+ */
+.hljs {
+ background-color: transparent;
+ padding: 0;
+}
+
+@media only screen and (max-width: 768px) {
+ nav.toc {
+ position: fixed;
+ overflow-y: scroll;
+ width: 16em;
+ left: -16em;
+ -webkit-overflow-scrolling: touch;
+ -webkit-transition-property: left; /* Safari */
+ -webkit-transition-duration: 0.3s; /* Safari */
+ transition-property: left;
+ transition-duration: 0.3s;
+ -webkit-transition-timing-function: ease-out; /* Safari */
+ transition-timing-function: ease-out;
+ z-index: 2;
+ }
+
+ nav.toc.show {
+ left: 0;
+ }
+
+ article {
+ margin-left: 0;
+ padding: 3em 0.9em 0 0.9em; /* top right bottom left */
+ overflow-wrap: break-word;
+ }
+
+ article > header {
+ position: fixed;
+ left: 0;
+ z-index: 1;
+ }
+
+ article > header nav, hr {
+ display: none;
+ }
+
+ article > header div#topbar {
+ display: block; /* is mobile */
+ position: fixed;
+ width: 100%;
+ height: 1.5em;
+ padding-top: 1em;
+ padding-bottom: 1em;
+ background-color: #fcfcfc;
+ box-shadow: 0 1px 3px rgba(0,0,0,.26);
+ top: 0;
+ -webkit-transition-property: top; /* Safari */
+ -webkit-transition-duration: 0.3s; /* Safari */
+ transition-property: top;
+ transition-duration: 0.3s;
+ }
+
+ article > header div#topbar.headroom--unpinned.headroom--not-top.headroom--not-bottom {
+ top: -4em;
+ -webkit-transition-property: top; /* Safari */
+ -webkit-transition-duration: 0.7s; /* Safari */
+ transition-property: top;
+ transition-duration: 0.7s;
+ }
+
+ article > header div#topbar span {
+ position: fixed;
+ width: 80%;
+ height: 1.5em;
+ margin-top: -0.1em;
+ margin-left: 0.9em;
+ font-size: 1.2em;
+ overflow: hidden;
+ }
+
+ article > header div#topbar a.fa-bars {
+ float: right;
+ padding: 0.6em;
+ margin-top: -0.6em;
+ margin-right: 0.3em;
+ font-size: 1.5em;
+ }
+
+ article > header div#topbar a.fa-bars:visited {
+ color: #3091d1;
+ }
+
+ article table {
+ overflow-x: auto;
+ display: block;
+ }
+
+ article div.MathJax_Display {
+ overflow: scroll;
+ }
+
+ article span.MathJax {
+ overflow: hidden;
+ }
+}
+
+@media only screen and (max-width: 320px) {
+ body {
+ font-size: 15px;
+ }
+}
diff --git a/latest/assets/documenter.js b/latest/assets/documenter.js
new file mode 100644
index 0000000..5d31622
--- /dev/null
+++ b/latest/assets/documenter.js
@@ -0,0 +1,129 @@
+/*
+ * Part of Documenter.jl
+ * https://github.com/JuliaDocs/Documenter.jl
+ *
+ * License: MIT
+ */
+
+requirejs.config({
+ paths: {
+ 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min',
+ 'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min',
+ 'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.3/headroom.min',
+ 'mathjax': 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML',
+ 'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min',
+ 'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/julia.min',
+ 'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/julia-repl.min',
+ },
+ shim: {
+ 'mathjax' : {
+ exports: "MathJax"
+ },
+ 'highlight-julia': ['highlight'],
+ 'highlight-julia-repl': ['highlight'],
+ }
+});
+
+// Load MathJax
+require(['mathjax'], function(MathJax) {
+ MathJax.Hub.Config({
+ "tex2jax": {
+ inlineMath: [['$','$'], ['\\(','\\)']],
+ processEscapes: true
+ }
+ });
+ MathJax.Hub.Config({
+ config: ["MMLorHTML.js"],
+ jax: [
+ "input/TeX",
+ "output/HTML-CSS",
+ "output/NativeMML"
+ ],
+ extensions: [
+ "MathMenu.js",
+ "MathZoom.js",
+ "TeX/AMSmath.js",
+ "TeX/AMSsymbols.js",
+ "TeX/autobold.js",
+ "TeX/autoload-all.js"
+ ]
+ });
+ MathJax.Hub.Config({
+ TeX: { equationNumbers: { autoNumber: "AMS" } }
+ });
+})
+
+require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($, hljs) {
+ $(document).ready(function() {
+ hljs.initHighlighting();
+ })
+
+})
+
+// update the version selector with info from the siteinfo.js and ../versions.js files
+require(['jquery'], function($) {
+ $(document).ready(function() {
+ var version_selector = $("#version-selector");
+
+ // add the current version to the selector based on siteinfo.js, but only if the selector is empty
+ if (typeof DOCUMENTER_CURRENT_VERSION !== 'undefined' && $('#version-selector > option').length == 0) {
+ var option = $("");
+ version_selector.append(option);
+ }
+
+ if (typeof DOC_VERSIONS !== 'undefined') {
+ var existing_versions = $('#version-selector > option');
+ var existing_versions_texts = existing_versions.map(function(i,x){return x.text});
+ DOC_VERSIONS.forEach(function(each) {
+ var version_url = documenterBaseURL + "/../" + each;
+ var existing_id = $.inArray(each, existing_versions_texts);
+ // if not already in the version selector, add it as a new option,
+ // otherwise update the old option with the URL and enable it
+ if (existing_id == -1) {
+ var option = $("");
+ version_selector.append(option);
+ } else {
+ var option = existing_versions[existing_id];
+ option.value = version_url;
+ option.disabled = false;
+ }
+ });
+ }
+
+ // only show the version selector if the selector has been populated
+ if ($('#version-selector > option').length > 0) {
+ version_selector.css("visibility", "visible");
+ }
+ })
+
+})
+
+// mobile
+require(['jquery', 'headroom'], function($, Headroom) {
+ $(document).ready(function() {
+ var navtoc = $("nav.toc");
+ $("nav.toc li.current a.toctext").click(function() {
+ navtoc.toggleClass('show');
+ });
+ $("article > header div#topbar a.fa-bars").click(function(ev) {
+ ev.preventDefault();
+ navtoc.toggleClass('show');
+ if (navtoc.hasClass('show')) {
+ var title = $("article > header div#topbar span").text();
+ $("nav.toc ul li a:contains('" + title + "')").focus();
+ }
+ });
+ $("article#docs").bind('click', function(ev) {
+ if ($(ev.target).is('div#topbar a.fa-bars')) {
+ return;
+ }
+ if (navtoc.hasClass('show')) {
+ navtoc.removeClass('show');
+ }
+ });
+ if ($("article > header div#topbar").css('display') == 'block') {
+ var headroom = new Headroom(document.querySelector("article > header div#topbar"), {"tolerance": {"up": 10, "down": 10}});
+ headroom.init();
+ }
+ })
+})
diff --git a/latest/assets/search.js b/latest/assets/search.js
new file mode 100644
index 0000000..4e3e9a4
--- /dev/null
+++ b/latest/assets/search.js
@@ -0,0 +1,91 @@
+/*
+ * Part of Documenter.jl
+ * https://github.com/JuliaDocs/Documenter.jl
+ *
+ * License: MIT
+ */
+
+// parseUri 1.2.2
+// (c) Steven Levithan
+// MIT License
+function parseUri (str) {
+ var o = parseUri.options,
+ m = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
+ uri = {},
+ i = 14;
+
+ while (i--) uri[o.key[i]] = m[i] || "";
+
+ uri[o.q.name] = {};
+ uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
+ if ($1) uri[o.q.name][$1] = $2;
+ });
+
+ return uri;
+};
+parseUri.options = {
+ strictMode: false,
+ key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
+ q: {
+ name: "queryKey",
+ parser: /(?:^|&)([^&=]*)=?([^&]*)/g
+ },
+ parser: {
+ strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
+ loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
+ }
+};
+
+requirejs.config({
+ paths: {
+ 'jquery': 'https://code.jquery.com/jquery-3.1.0.js?',
+ 'lunr': 'https://cdnjs.cloudflare.com/ajax/libs/lunr.js/0.7.1/lunr.min',
+ }
+});
+
+var currentScript = document.currentScript;
+
+require(["jquery", "lunr"], function($, lunr) {
+ var index = lunr(function () {
+ this.ref('location')
+ this.field('title', {boost: 10})
+ this.field('text')
+ })
+ var store = {}
+
+ documenterSearchIndex['docs'].forEach(function(e) {
+ index.add(e)
+ store[e.location] = e
+ })
+
+ $(function(){
+ function update_search(query) {
+ results = index.search(query)
+ $('#search-info').text("Number of results: " + results.length)
+ $('#search-results').empty()
+ results.forEach(function(result) {
+ data = store[result.ref]
+ link = $('')
+ link.text(data.title)
+ link.attr('href', documenterBaseURL+'/'+result.ref)
+ cat = $('('+data.category+')')
+ li = $('').append(link).append(cat)
+ $('#search-results').append(li)
+ })
+ }
+
+ function update_search_box() {
+ query = $('#search-query').val()
+ update_search(query)
+ }
+
+ $('#search-query').keyup(update_search_box)
+ $('#search-query').change(update_search_box)
+
+ search_query = parseUri(window.location).queryKey["q"]
+ if(search_query !== undefined) {
+ $("#search-query").val(search_query)
+ }
+ update_search_box();
+ })
+})
diff --git a/latest/index.html b/latest/index.html
new file mode 100644
index 0000000..861743a
--- /dev/null
+++ b/latest/index.html
@@ -0,0 +1,32 @@
+
+Home · BibTeX.jlparse_bibtex(text)
This is a simple, input parser for BibTex. I had trouble finding a standard specification, but I've included several features of real BibTex.
julia> using BibTeX
+
+julia> result = parse_bibtex("""
+ @comment blah blah
+ @string{short = long}
+ @a{b,
+ c = {c {c}}, % blah blah
+ d = "d d",
+ e = f # short
+ }
+ """);
+
+julia> result["b"]["type"]
+"a"
+
+julia> result["b"]["c"]
+"c c"
+
+julia> result["b"]["d"]
+"d d"
+
+julia> result["b"]["e"]
+"f short"
+
+julia> parse_bibtex("@book")
+ERROR: Expected { on line 1
+[...]
+
+julia> parse_bibtex("@book@")
+ERROR: Expected { on line 1
+[...]
source
diff --git a/latest/search.html b/latest/search.html
new file mode 100644
index 0000000..5cdd6cb
--- /dev/null
+++ b/latest/search.html
@@ -0,0 +1,2 @@
+
+Search · BibTeX.jlSearch
Number of results: loading...
diff --git a/latest/search_index.js b/latest/search_index.js
new file mode 100644
index 0000000..0f50132
--- /dev/null
+++ b/latest/search_index.js
@@ -0,0 +1,27 @@
+var documenterSearchIndex = {"docs": [
+
+{
+ "location": "index.html#",
+ "page": "Home",
+ "title": "Home",
+ "category": "page",
+ "text": ""
+},
+
+{
+ "location": "index.html#BibTeX.parse_bibtex-Tuple{Any}",
+ "page": "Home",
+ "title": "BibTeX.parse_bibtex",
+ "category": "Method",
+ "text": "parse_bibtex(text)\n\nThis is a simple, input parser for BibTex. I had trouble finding a standard specification, but I've included several features of real BibTex.\n\njulia> using BibTeX\n\njulia> result = parse_bibtex(\"\"\"\n @comment blah blah\n @string{short = long}\n @a{b,\n c = {c {c}}, % blah blah\n d = \"d d\",\n e = f # short\n }\n \"\"\");\n\njulia> result[\"b\"][\"type\"]\n\"a\"\n\njulia> result[\"b\"][\"c\"]\n\"c c\"\n\njulia> result[\"b\"][\"d\"]\n\"d d\"\n\njulia> result[\"b\"][\"e\"]\n\"f short\"\n\njulia> parse_bibtex(\"@book\")\nERROR: Expected { on line 1\n[...]\n\njulia> parse_bibtex(\"@book@\")\nERROR: Expected { on line 1\n[...]\n\n\n\n"
+},
+
+{
+ "location": "index.html#BibTeX.jl-1",
+ "page": "Home",
+ "title": "BibTeX.jl",
+ "category": "section",
+ "text": "Modules = [BibTeX]"
+},
+
+]}
diff --git a/latest/siteinfo.js b/latest/siteinfo.js
new file mode 100644
index 0000000..ecacf6d
--- /dev/null
+++ b/latest/siteinfo.js
@@ -0,0 +1 @@
+var DOCUMENTER_CURRENT_VERSION = "latest";
diff --git a/versions.js b/versions.js
new file mode 100644
index 0000000..af16252
--- /dev/null
+++ b/versions.js
@@ -0,0 +1,3 @@
+var DOC_VERSIONS = [
+ "latest",
+];