From a4f5c03912aaea9070b71eef71f86d5ca69556c9 Mon Sep 17 00:00:00 2001
From: Nemo <me@captnemo.in>
Date: Wed, 01 Jul 2020 18:27:39 +0530
Subject: [PATCH] Merge pull request #8 from captn3m0/journal-support

Adds Journal Support---
 Makefile                           |    5 ++++-
 shard.lock                         |   16 ++++++++++------
 shard.yml                          |    7 ++++++-
 spec/fetch_spec.cr                 |    5 +++++
 spec/issue_spec.cr                 |   85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 spec/journal_spec.cr               |   28 ++++++++++++++++++++++++++++
 spec/util_spec.cr                  |    9 +++++++++
 src/article.cr                     |   19 +++++++++++++++++++
 src/fetch.cr                       |   62 +++++++++++++++++++++++++++++++++++++++++++++++---------------
 src/infoparser.cr                  |   18 +++++++++++++++++-
 src/issue.cr                       |   97 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/journal.cr                     |   42 ++++++++++++++++++++++++++++++++++++++++--
 src/muse-dl.cr                     |  101 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/parser.cr                      |   12 +++++++-----
 src/pdftk.cr                       |   90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/thing.cr                       |    7 +++++++
 src/util.cr                        |    2 +-
 spec/fixtures/chapter-2379787.html |  359 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 spec/fixtures/issue-35852.html     | 1263 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 spec/fixtures/issue-41793.html     | 1603 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 spec/fixtures/journal-159.html     | 1522 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/errors/missing_chapter.cr      |    4 ----
 src/errors/missing_file.cr         |    4 ++++
 23 files changed, 5296 insertions(+), 64 deletions(-)

diff --git a/Makefile b/Makefile
index 98a984e..5dcf3dd 100644
--- a/Makefile
+++ a/Makefile
@@ -7,4 +7,7 @@
 	# Then extract the image | extract the layer.tar file (we only have one layer) | extract the muse-dl-static file
 	docker image save muse-dl-static | tar xf - --wildcards "*/layer.tar" -O | tar xf - "muse-dl-static"
 	# And move it to the bin/ directory
-	mv -f muse-dl-static bin/+	mv -f muse-dl-static bin/
+
+test:
+	crystal spec
diff --git a/shard.lock b/shard.lock
index 9984f5f..80ce5b8 100644
--- a/shard.lock
+++ a/shard.lock
@@ -1,14 +1,18 @@
-version: 1.0
+version: 2.0
 shards:
   crest:
-    github: mamantoha/crest
-    version: 0.24.1
+    git: https://github.com/mamantoha/crest.git
+    version: 0.25.1
 
   http-client-digest_auth:
-    github: mamantoha/http-client-digest_auth
-    version: 0.3.0
+    git: https://github.com/mamantoha/http-client-digest_auth.git
+    version: 0.4.0
 
   myhtml:
-    github: kostya/myhtml
+    git: https://github.com/kostya/myhtml.git
     version: 1.5.1
+
+  webmock:
+    git: https://github.com/manastech/webmock.cr.git
+    version: 0.13.0+git.commit.bb3eab30f6c7d1fdc0a7ff14cd136d68e860d1a7
 
diff --git a/shard.yml b/shard.yml
index 37050c5..4e42cbc 100644
--- a/shard.yml
+++ a/shard.yml
@@ -15,4 +15,9 @@
   myhtml:
     github: kostya/myhtml
   crest:
-    github: mamantoha/crest+    github: mamantoha/crest
+
+development_dependencies:
+  webmock:
+    github: manastech/webmock.cr
+    branch: masterdiff --git a/spec/fetch_spec.cr b/spec/fetch_spec.cr
index 6e97dfd..abe1a72 100644
--- a/spec/fetch_spec.cr
+++ a/spec/fetch_spec.cr
@@ -1,7 +1,12 @@
 require "./spec_helper"
+require "webmock"
 # require "errors/muse_corrupt_pdf.cr"
 
 describe Muse::Dl::Book do
+  headers = {"Content-Type" => "text/html"}
+  WebMock.stub(:get, "https://muse.jhu.edu/chapter/2379787/pdf")
+    .to_return(body_io: File.new("spec/fixtures/chapter-2379787.html"), headers: headers)
+
   it "should notice the unable to construct chapter PDF error" do
     f = "/tmp/chapter-2379787.pdf"
     File.delete(f) if File.exists? f
diff --git a/spec/issue_spec.cr b/spec/issue_spec.cr
new file mode 100644
index 0000000..5a42f69 100644
--- /dev/null
+++ a/spec/issue_spec.cr
@@ -1,0 +1,85 @@
+require "../src/issue"
+require "./spec_helper"
+require "webmock"
+
+describe Muse::Dl::Issue do
+  WebMock.stub(:get, "https://muse.jhu.edu/issue/41793")
+    .to_return(body: File.new("spec/fixtures/issue-41793.html").gets_to_end)
+
+  issue = Muse::Dl::Issue.new "41793"
+  issue.parse
+
+  it "should initialize correctly" do
+    issue.id.should eq "41793"
+    issue.url.should eq "https://muse.jhu.edu/issue/41793"
+  end
+
+  it "should parse info correctly" do
+    issue.info["ISSN"].should eq "1530-7131"
+    issue.info["Print ISSN"].should eq "1531-2542"
+    issue.info["Launched on MUSE"].should eq "2020-02-05"
+    issue.info["Open Access"].should eq "No"
+    issue.title.should eq "Volume 20, Number 1, January 2020"
+  end
+
+  it "should parse title correctly" do
+    issue.volume.should eq "20"
+    issue.number.should eq "1"
+    issue.date.should eq "January 2020"
+  end
+
+  it "should parser summary" do
+    issue.summary.should eq <<-EOT
+    Focusing on important research about the role of academic libraries and librarianship, portal also features commentary on issues in technology and publishing. Written for all those interested in the role of libraries within the academy, portal includes peer-reviewed articles addressing subjects such as library administration, information technology, and information policy. In its inaugural year, portal earned recognition as the runner-up for best new journal, awarded by the Council of Editors of Learned Journals (CELJ). An article in  portal, "Master's and Doctoral Thesis Citations: Analysis and Trends of a Longitudinal Study," won the Jesse H. Shera Award for Distinguished Published Research from the Library Research Round Table of the American Library Association.
+    EOT
+  end
+
+  it "should parse publisher" do
+    issue.publisher.should eq "Johns Hopkins University Press"
+  end
+  it "should parse the journal title" do
+    issue.journal_title.should eq "portal: Libraries and the Academy"
+  end
+
+  it "should parse non-numbered issues" do
+    WebMock.stub(:get, "https://muse.jhu.edu/issue/35852")
+      .to_return(body: File.new("spec/fixtures/issue-35852.html").gets_to_end)
+    issue = Muse::Dl::Issue.new "35852"
+    issue.parse
+
+    issue.volume.should eq "1"
+    issue.number.should eq "2"
+    issue.date.should eq "2016"
+
+    issue.info["ISSN"].should eq "2474-9419"
+    issue.info["Print ISSN"].should eq "2474-9427"
+    issue.info["Launched on MUSE"].should eq "2017-02-21"
+    issue.info["Open Access"].should eq "Yes"
+    issue.title.should eq "Volume 1, Issue 2, 2016"
+    issue.journal_title.should eq "Constitutional Studies"
+
+    expected_pages = [
+      [1, 22],
+      [23, 40],
+      [41, 58],
+      [59, 80],
+      [81, 95],
+      [97, 116],
+    ]
+
+    expected_titles = [
+      "The Limits of Veneration: Public Support for a New Constitutional Convention",
+      "Secession and Nullification as a Global Trend",
+      "Challenging Constitutionalism in Post-Apartheid South Africa",
+      "Democracy by Lawsuit: Or, Can Litigation Alleviate the European Union’s “Democratic Deficit?”",
+      "Private Enforcement of Constitutional Guarantees in the Ku Klux Act of 1871",
+      "Sober Second Thoughts: Evaluating the History of Horizontal Judicial Review by the U.S. Supreme Court",
+    ]
+
+    issue.articles.each_with_index do |a, i|
+      a.start_page.should eq expected_pages[i][0]
+      a.end_page.should eq expected_pages[i][1]
+      a.title.should eq expected_titles[i]
+    end
+  end
+end
diff --git a/spec/journal_spec.cr b/spec/journal_spec.cr
new file mode 100644
index 0000000..7e0e5ec 100644
--- /dev/null
+++ a/spec/journal_spec.cr
@@ -1,0 +1,28 @@
+require "./spec_helper"
+
+describe Muse::Dl::Journal do
+  html = File.new("spec/fixtures/journal-159.html").gets_to_end
+  j = Muse::Dl::Journal.new html
+
+  it "it should parse the infobox for 159" do
+    j.info["ISSN"].should eq "1530-7131"
+    j.info["Print ISSN"].should eq "1531-2542"
+    j.info["Coverage Statement"].should eq "Vol. 1 (2001) through current issue"
+    j.info["Open Access"].should eq "No"
+  end
+
+  it "should parser summary" do
+    j.summary.should eq <<-EOT
+    Focusing on important research about the role of academic libraries and librarianship, portal also features commentary on issues in technology and publishing. Written for all those interested in the role of libraries within the academy, portal includes peer-reviewed articles addressing subjects such as library administration, information technology, and information policy. In its inaugural year, portal earned recognition as the runner-up for best new journal, awarded by the Council of Editors of Learned Journals (CELJ). An article in  portal, "Master's and Doctoral Thesis Citations: Analysis and Trends of a Longitudinal Study," won the Jesse H. Shera Award for Distinguished Published Research from the Library Research Round Table of the American Library Association.
+    EOT
+  end
+
+  it "should parse publisher" do
+    j.publisher.should eq "Johns Hopkins University Press"
+  end
+
+  it "should return issues" do
+    j.issues[0].id.should eq "41793"
+    j.issues[-1].id.should eq "1578"
+  end
+end
diff --git a/spec/util_spec.cr b/spec/util_spec.cr
new file mode 100644
index 0000000..c808941 100644
--- /dev/null
+++ a/spec/util_spec.cr
@@ -1,0 +1,9 @@
+require "../src/util"
+require "./spec_helper"
+
+describe Muse::Dl::Util do
+  it "should sanitize filenames properly" do
+    fn = Muse::Dl::Util.slug_filename("Hello world - \" :A$3, a story; a poem|chapter")
+    fn.should eq "Hello world - - -A-3, a story- a poem-chapter"
+  end
+end
diff --git a/src/article.cr b/src/article.cr
new file mode 100644
index 0000000..bf6ac1c 100644
--- /dev/null
+++ a/src/article.cr
@@ -1,0 +1,19 @@
+require "./infoparser.cr"
+require "./issue.cr"
+
+module Muse::Dl
+  class Article
+    getter id : String, :start_page, :end_page, :title
+    setter title : String | Nil, start_page : Int32 | Nil, end_page : Int32 | Nil
+
+    def initialize(id : String)
+      @id = id
+      @url = "https://muse.jhu.edu/article/#{id}"
+    end
+
+    # TODO: Fix this
+    def open_access
+      return false
+    end
+  end
+end
diff --git a/src/fetch.cr b/src/fetch.cr
index 004f9e0..213bdc5 100644
--- a/src/fetch.cr
+++ a/src/fetch.cr
@@ -14,6 +14,10 @@
       "Connection"      => "keep-alive",
     }
 
+    def self.article_file_name(id : String, tmp_path : String)
+      "#{tmp_path}/article-#{id}.pdf"
+    end
+
     def self.chapter_file_name(id : String, tmp_path : String)
       "#{tmp_path}/chapter-#{id}.pdf"
     end
@@ -23,24 +27,25 @@
       File.delete(fns) if File.exists?(fns)
     end
 
-    def self.save_chapter(tmp_path : String, chapter_id : String, chapter_title : String, cookie : String | Nil = nil, add_bookmark = true, strip_first_page = true)
-      final_pdf_file = chapter_file_name chapter_id, tmp_path
-      tmp_pdf_file = "#{final_pdf_file}.tmp"
+    def self.cleanup_articles(tmp_path : String, id : String)
+      fns = article_file_name(id, tmp_path)
+      File.delete(fns) if File.exists?(fns)
+    end
 
-      if File.exists? final_pdf_file
-        puts "#{chapter_id} already downloaded"
+    def self.save_url(url : String, referer : String, file_name : String, tmp_path : String, cookie : String | Nil = nil, bookmark_title : String | Nil = nil, strip_first_page = true)
+      tmp_pdf_file = "#{file_name}.tmp"
+      if File.exists? file_name
+        puts "#{file_name} already downloaded"
         return
       end
 
-      # TODO: Remove this hardcoding, and make this more generic by generating it within the Book class
-      url = "https://muse.jhu.edu/chapter/#{chapter_id}/pdf"
       uri = URI.parse(url)
       http_client = HTTP::Client.new(uri)
       # Raise a IO::TimeoutError after 60 seconds.
       http_client.read_timeout = DOWNLOAD_TIMEOUT_SECS
 
       headers = HEADERS.merge({
-        "Referer" => "https://muse.jhu.edu/verify?url=%2Fchapter%2F#{chapter_id}%2Fpdf",
+        "Referer" => referer,
       })
 
       if cookie
@@ -52,7 +57,7 @@
       begin
         response = request.execute
       rescue ex : IO::TimeoutError
-        raise Muse::Dl::Errors::DownloadError.new("Error downloading chapter. Download took longer than #{DOWNLOAD_TIMEOUT_SECS} seconds.")
+        raise Muse::Dl::Errors::DownloadError.new("Error downloading #{url}. Download took longer than #{DOWNLOAD_TIMEOUT_SECS} seconds.")
       end
 
       # TODO: Add validation for the downloaded file (should be PDF)
@@ -63,7 +68,6 @@
       content_type = response.headers["Content-Type"]
       if content_type.is_a? String
         if /html/.match content_type
-          puts response
           response.body.each_line do |line|
             # https://muse.jhu.edu/chapter/2383438/pdf
             # https://muse.jhu.edu/book/67393
@@ -77,6 +81,7 @@
           end
         end
       end
+
       File.open(tmp_pdf_file, "w") do |file|
         file << response.body
         if file.size == 0
@@ -88,18 +93,41 @@
 
       pdftk.strip_first_page tmp_pdf_file if strip_first_page
 
-      if add_bookmark
+      if bookmark_title
         # Run pdftk and add the bookmark to the file
-        pdftk.add_bookmark tmp_pdf_file, chapter_title.strip
+        pdftk.add_bookmark tmp_pdf_file, bookmark_title
       end
 
       # Now we can move the file to the proper PDF filename
-      File.rename tmp_pdf_file, final_pdf_file
+      File.rename tmp_pdf_file, file_name
+    end
+
+    def self.save_chapter(tmp_path : String, chapter_id : String, chapter_title : String, cookie : String | Nil = nil, add_bookmark = true, strip_first_page = true)
+      final_pdf_file = chapter_file_name chapter_id, tmp_path
+
+      if File.exists? final_pdf_file
+        puts "#{chapter_id} already downloaded"
+        return
+      end
+
+      # TODO: Remove this hardcoding, and make this more generic by generating it within the Book class
+      url = "https://muse.jhu.edu/chapter/#{chapter_id}/pdf"
+      referer = "https://muse.jhu.edu/verify?url=%2Fchapter%2F#{chapter_id}%2Fpdf"
+
+      save_url(url, referer, final_pdf_file, tmp_path, cookie, chapter_title, strip_first_page)
+
       puts "Downloaded #{chapter_id}"
+    end
+
+    def self.save_article(tmp_path : String, article_id : String, cookie : String | Nil = nil, article_title = nil, strip_first_page = true)
+      file_name = article_file_name article_id, tmp_path
+      url = "https://muse.jhu.edu/article/#{article_id}/pdf"
+      referer = "https://muse.jhu.edu/article/#{article_id}"
+      save_url(url, referer, file_name, tmp_path, cookie, article_title, strip_first_page)
     end
 
-    def self.get_info(url : String) : Muse::Dl::Thing | Nil
-      match = /https:\/\/muse.jhu.edu\/(book|journal)\/(\d+)/.match url
+    def self.get_info(url : String)
+      match = /https:\/\/muse.jhu.edu\/(book|journal|issue|article)\/(\d+)/.match url
       if match
         begin
           response = Crest.get(url).to_s
@@ -108,6 +136,10 @@
             return Muse::Dl::Book.new response
           when "journal"
             return Muse::Dl::Journal.new response
+          when "issue"
+            return Muse::Dl::Issue.new match[2], response
+          when "article"
+            return Muse::Dl::Article.new match[2]
           end
         rescue ex : Crest::NotFound
           raise Muse::Dl::Errors::InvalidLink.new("Error - could not download url: #{url}")
diff --git a/src/infoparser.cr b/src/infoparser.cr
index c28252a..7e331db 100644
--- a/src/infoparser.cr
+++ a/src/infoparser.cr
@@ -34,6 +34,18 @@
       myhtml.css("#book_about_info .title").map(&.inner_text).to_a[0].strip
     end
 
+    def self.issue_title(myhtml : Myhtml::Parser)
+      begin
+        myhtml.css(".card_text .title").map(&.inner_text).to_a[0].strip
+      rescue
+        nil
+      end
+    end
+
+    def self.journal_title(myhtml : Myhtml::Parser)
+      myhtml.css("#journal_about_info .title").map(&.inner_text).to_a[0].strip
+    end
+
     def self.author(myhtml : Myhtml::Parser)
       myhtml.css("#book_about_info .author").map(&.inner_text).to_a[0].strip.gsub("<BR>", ", ").gsub("\n", " ")
     end
@@ -48,11 +60,15 @@
 
     def self.publisher(myhtml : Myhtml::Parser)
       myhtml.css("#book_about_info .pub a").map(&.inner_text).to_a[0].strip
+    end
+
+    def self.journal_publisher(myhtml : Myhtml::Parser)
+      myhtml.css(".card_publisher a").map(&.inner_text).to_a[0].strip
     end
 
     def self.summary(myhtml : Myhtml::Parser)
       begin
-        return myhtml.css("#book_about_info .card_summary").map(&.inner_text).to_a[0].strip
+        return myhtml.css(".card_summary").map(&.inner_text).to_a[0].strip
       rescue e : Exception
         STDERR.puts "Could not fetch summary"
         return "NA"
diff --git a/src/issue.cr b/src/issue.cr
new file mode 100644
index 0000000..73a83fb 100644
--- /dev/null
+++ a/src/issue.cr
@@ -1,0 +1,97 @@
+"./thing.cr"
+require "./fetch.cr"
+require "./article.cr"
+
+module Muse::Dl
+  class Issue
+    getter id : String,
+      title : String | Nil,
+      articles : Array(Muse::Dl::Article),
+      url : String,
+      summary : String | Nil,
+      publisher : String | Nil,
+      info : Hash(String, String),
+      volume : String | Nil,
+      number : String | Nil,
+      date : String | Nil,
+      journal_title : String | Nil
+
+    setter :journal_title
+
+    def initialize(id : String, response : String | Nil = nil)
+      @id = id
+      @url = "https://muse.jhu.edu/issue/#{id}"
+      @articles = [] of Muse::Dl::Article
+      parse(response) if response
+      @info = Hash(String, String).new
+    end
+
+    def open_access
+      if @info.has_key? "Open Access"
+        return @info["Open Access"] == "Yes"
+      end
+      false
+    end
+
+    def parse
+      html = Crest.get(@url).to_s
+      parse(html)
+    end
+
+    def parse(html : String)
+      h = Myhtml::Parser.new html
+      @info = InfoParser.infobox(h)
+      @title = InfoParser.issue_title(h)
+      @summary = InfoParser.summary(h)
+      @publisher = InfoParser.journal_publisher(h)
+      parse_title
+      parse_contents(h)
+    end
+
+    def parse_title
+      t = @title
+      unless t.nil?
+        @volume = /Volume (\d+)/.match(t).try &.[1]
+        @number = /Number (\d+)/.match(t).try &.[1]
+        @number = /Issue (\d+)/.match(t).try &.[1] unless @number
+        @date = /((January|February|March|April|May|June|July|August|September|October|November|December|Sring|Winter|Fall|Summer) (\d+))/.match(t).try &.[1]
+        @date = /(\d{4})/.match(t).try &.[1] unless @date
+      end
+    end
+
+    def parse_contents(myhtml : Myhtml::Parser)
+      unless @journal_title
+        journal_title_a = myhtml.css("#journal_banner_title a").first
+        if journal_title_a
+          @journal_title = journal_title_a.inner_text
+        end
+      end
+      myhtml.css(".articles_list_text ol").each do |ol|
+        link = ol.css("li.title a").first
+        title = link.inner_text
+
+        pages = ol.css("li.pg")
+        if pages.size > 0
+          p = pages.first.try &.inner_text
+          matches = /(\d+)-(\d+)/.match p
+          if matches
+            start_page = matches[1].to_i
+            end_page = matches[2].to_i
+          end
+        end
+
+        ol.css("a").each do |l|
+          url = l.attribute_by("href").to_s
+          matches = /\/article\/(\d+)\/pdf/.match url
+          if matches
+            a = Muse::Dl::Article.new matches[1]
+            a.title = title
+            a.start_page = start_page if start_page
+            a.end_page = end_page if end_page
+            @articles.push a
+          end
+        end
+      end
+    end
+  end
+end
diff --git a/src/journal.cr b/src/journal.cr
index 1f3323a..d431824 100644
--- a/src/journal.cr
+++ a/src/journal.cr
@@ -1,6 +1,44 @@
-require "./thing.cr"
+require "./infoparser.cr"
+require "./issue.cr"
 
 module Muse::Dl
-  class Journal < Muse::Dl::Thing
+  class Journal
+    getter :info, :summary, :publisher, :issues, :title
+    @info = Hash(String, String).new
+    @summary : String
+    @publisher : String
+    @issues = [] of Muse::Dl::Issue
+    @title : String
+
+    private getter :h
+
+    def initialize(html)
+      @h = Myhtml::Parser.new html
+      @info = InfoParser.infobox(h)
+      @summary = InfoParser.summary(h)
+      @publisher = InfoParser.journal_publisher(h)
+      @title = InfoParser.journal_title(h)
+      parse_volumes(h)
+    end
+
+    def open_access
+      if @info.has_key? "Open Access"
+        return @info["Open Access"] == "Yes"
+      end
+      false
+    end
+
+    def parse_volumes(myhtml : Myhtml::Parser)
+      myhtml.css("#available_issues_list_text a").each do |a|
+        link = a.attribute_by("href").to_s
+
+        matches = /\/issue\/(\d+)/.match link
+        if matches
+          issue = Muse::Dl::Issue.new matches[1]
+          issue.journal_title = @title
+          @issues.push issue
+        end
+      end
+    end
   end
 end
diff --git a/src/muse-dl.cr b/src/muse-dl.cr
index 9b71f65..93ccced 100644
--- a/src/muse-dl.cr
+++ a/src/muse-dl.cr
@@ -1,9 +1,10 @@
 require "./parser.cr"
 require "./pdftk.cr"
 require "./fetch.cr"
 require "./book.cr"
 require "./journal.cr"
 require "./util.cr"
+require "file_utils"
 
 module Muse::Dl
   VERSION = "1.1.2"
@@ -11,9 +12,15 @@
   class Main
     def self.dl(parser : Parser)
       url = parser.url
+      puts "Downloading #{url}"
       thing = Fetch.get_info(url) if url
       return unless thing
 
+      if (thing.open_access) && (parser.skip_oa)
+        STDERR.puts "Skipping #{url}, available under Open Access"
+        return
+      end
+
       if thing.is_a? Muse::Dl::Book
         unless thing.formats.includes? :pdf
           STDERR.puts "Book not available in PDF format, skipping: #{url}"
@@ -30,34 +37,92 @@
         temp_stitched_file = nil
         pdf_builder = Pdftk.new(parser.tmp)
 
-        unless parser.input_pdf
-          # Save each chapter
-          thing.chapters.each do |chapter|
-            begin
-              Fetch.save_chapter(parser.tmp, chapter[0], chapter[1], parser.cookie, parser.bookmarks, parser.strip_first)
-            rescue e : Muse::Dl::Errors::MuseCorruptPDF
-              STDERR.puts "Got a 'Unable to construct chapter PDF' error from MUSE, skipping: #{url}"
-              return
-            end
+        # Save each chapter
+        thing.chapters.each do |chapter|
+          begin
+            Fetch.save_chapter(parser.tmp, chapter[0], chapter[1], parser.cookie, parser.bookmarks, parser.strip_first)
+          rescue e : Muse::Dl::Errors::MuseCorruptPDF
+            STDERR.puts "Got a 'Unable to construct chapter PDF' error from MUSE, skipping: #{url}"
+            return
           end
-          chapter_ids = thing.chapters.map { |c| c[0] }
-
-          # Stitch the PDFs together
-          temp_stitched_file = pdf_builder.stitch chapter_ids
-          pdf_builder.add_metadata(temp_stitched_file, parser.output, thing)
-        else
-          x = parser.input_pdf
-          pdf_builder.add_metadata(File.open(x), parser.output, thing) if x
         end
+        chapter_ids = thing.chapters.map { |c| c[0] }
+
+        # Stitch the PDFs together
+        temp_stitched_file = pdf_builder.stitch chapter_ids
+        pdf_builder.add_metadata(temp_stitched_file, parser.output, thing)
 
         temp_stitched_file.delete if temp_stitched_file
-        puts "--dont-strip-first-page was on. Please validate PDF file for any errors."
+        puts "--dont-strip-first-page was on. Please validate PDF file for any errors." unless parser.strip_first
         puts "DL: #{url}. Saved final output to #{parser.output}"
 
         # Cleanup the chapter files
         if parser.cleanup
           thing.chapters.each do |c|
             Fetch.cleanup(parser.tmp, c[0])
+          end
+        end
+      elsif thing.is_a? Muse::Dl::Article
+        # No bookmarks are needed since this is just a single article PDF
+        begin
+          Fetch.save_article(parser.tmp, thing.id, parser.cookie, nil, parser.strip_first)
+        rescue e : Muse::Dl::Errors::MuseCorruptPDF
+          STDERR.puts "Got a 'Unable to construct chapter PDF' error from MUSE, skipping: #{url}"
+          return
+        end
+
+        # TODO: Move this code elsewhere
+        source = Fetch.article_file_name(thing.id, parser.tmp)
+        destination = "article-#{thing.id}.pdf"
+        # Needed because of https://github.com/crystal-lang/crystal/issues/7777
+        FileUtils.cp source, destination
+        FileUtils.rm source if parser.cleanup
+      elsif thing.is_a? Muse::Dl::Issue
+        # Will have no effect if parser has a custom title
+        parser.force_set_output Util.slug_filename "#{thing.journal_title} - #{thing.title}.pdf"
+
+        # If file exists and we can't clobber
+        if File.exists?(parser.output) && parser.clobber == false
+          STDERR.puts "Skipping #{url}, File already exists: #{parser.output}"
+          return
+        end
+        temp_stitched_file = nil
+        pdf_builder = Pdftk.new(parser.tmp)
+
+        thing.articles.each do |article|
+          begin
+            Fetch.save_article(parser.tmp, article.id, parser.cookie, article.title, parser.strip_first)
+          rescue e : Muse::Dl::Errors::MuseCorruptPDF
+            STDERR.puts "Got a 'Unable to construct chapter PDF' error from MUSE, skipping: #{url}"
+            return
+          end
+        end
+        article_ids = thing.articles.map { |a| a.id }
+
+        # Stitch the PDFs together
+        temp_stitched_file = pdf_builder.stitch_articles article_ids
+        pdf_builder.add_metadata(temp_stitched_file, parser.output, thing)
+
+        # temp_stitched_file.delete if temp_stitched_file
+        puts "--dont-strip-first-page was on. Please validate PDF file for any errors." unless parser.strip_first
+        puts "DL: #{url}. Saved final output to #{parser.output}"
+
+        # Cleanup the issue files
+        if parser.cleanup
+          thing.articles.each do |a|
+            Fetch.cleanup_articles(parser.tmp, a.id)
+          end
+        end
+      elsif thing.is_a? Muse::Dl::Journal
+        thing.issues.each do |issue|
+          begin
+            # Update the issue
+            issue.parse
+            parser.url = issue.url
+            Main.dl parser
+          rescue e
+            puts e.message
+            puts "Faced an exception with previous issue, continuing"
           end
         end
       end
diff --git a/src/parser.cr b/src/parser.cr
index 658b23b..e462445 100644
--- a/src/parser.cr
+++ a/src/parser.cr
@@ -10,15 +10,15 @@
     @strip_first = true
     @output = DEFAULT_FILE_NAME
     @url : String | Nil
-    @input_pdf : String | Nil
     @clobber = false
     @input_list : String | Nil
     @cookie : String | Nil
     @h : Bool | Nil
+    @skip_oa = false
 
     DEFAULT_FILE_NAME = "tempfilename.pdf"
 
-    getter :bookmarks, :tmp, :cleanup, :output, :url, :input_pdf, :clobber, :input_list, :cookie, :strip_first
+    getter :bookmarks, :tmp, :cleanup, :output, :url, :clobber, :input_list, :cookie, :strip_first, :skip_oa
     setter :url
 
     # Update the output filename unless we have a custom one passed
@@ -26,6 +26,10 @@
       @output = output_file unless @output != DEFAULT_FILE_NAME
     end
 
+    def force_set_output(output_file : String)
+      @output = output_file
+    end
+
     def reset_output_file
       @output = DEFAULT_FILE_NAME
     end
@@ -41,7 +45,6 @@
 
     def initialize(arg : Array(String) = [] of String)
       @tmp = Dir.tempdir
-      @input_pdf = nil
 
       parser = OptionParser.new
       parser.banner = <<-EOT
@@ -56,10 +59,10 @@
       parser.on(long_flag = "--tmp-dir PATH", description = "Temporary Directory to use") { |path| @tmp = path }
       parser.on(long_flag = "--output FILE", description = "Output Filename") { |file| @output = file }
       parser.on(long_flag = "--no-bookmarks", description = "Don't add bookmarks in the PDF") { @bookmarks = false }
-      parser.on(long_flag = "--input-pdf INPUT", description = "Input Stitched PDF. Will not download anything") { |input| @input_pdf = input }
       parser.on(long_flag = "--clobber", description = "Overwrite the output file, if it already exists. Not compatible with input-pdf") { @clobber = true }
       parser.on(long_flag = "--dont-strip-first-page", description = "Disables first page from being stripped. Use carefully") { @strip_first = false }
       parser.on(long_flag = "--cookie COOKIE", description = "Cookie-header") { |cookie| @cookie = cookie }
+      parser.on(long_flag = "--skip-open-access", description = "Don't download open access content") { @skip_oa = true }
       parser.on("-h", "--help", "Show this help") { @h = true; puts parser }
 
       parser.unknown_args do |args|
@@ -70,7 +73,6 @@
         end
         if File.exists? args[0]
           @input_list = args[0]
-          @input_pdf = nil
         else
           @url = args[0]
         end
diff --git a/src/pdftk.cr b/src/pdftk.cr
index 961f439..41ebcf0 100644
--- a/src/pdftk.cr
+++ a/src/pdftk.cr
@@ -70,7 +70,6 @@
 
     def add_metadata(input_file : File, output_file : String, book : Book)
       # First we have to dump the current metadata
-      metadata_text_file = File.tempfile("muse-dl-metadata-tmp", ".txt")
       keywords = "Publisher:#{book.publisher}, Published:#{book.date}"
 
       # Known Info keys, if they are present
@@ -79,47 +78,95 @@
           keywords += ", #{label}:#{book.info[label]}"
         end
       end
+
+      metadata_text = gen_metadata(book.title, keywords, book.summary.gsub(/\n\s+/, " "), book.author)
+      write_metadata(input_file, output_file, metadata_text)
+    end
 
-      text = <<-EOT
+    def gen_metadata(title : String, keywords : String, subject : String, author : String | Nil = nil)
+      metadata = <<-EOT
       InfoBegin
       InfoKey: Creator
-      InfoValue: Project MUSE (https://muse.jhu.edu/)
+      InfoValue:
       InfoBegin
       InfoKey: Producer
-      InfoValue: Muse-DL/#{Muse::Dl::VERSION}
+      InfoValue:
       InfoBegin
       InfoKey: Title
-      InfoValue: #{book.title}
+      InfoValue: #{title}
       InfoBegin
       InfoKey: Keywords
       InfoValue: #{keywords}
-      InfoBegin
-      InfoKey: Author
-      InfoValue: #{book.author}
       InfoBegin
       InfoKey: Subject
-      InfoValue: #{book.summary.gsub(/\n\s+/, " ")}
+      InfoValue: #{subject}
       InfoBegin
       InfoKey: ModDate
       InfoValue:
       InfoBegin
       InfoKey: CreationDate
       InfoValue:
+
       EOT
+
+      unless author.nil?
+        metadata += <<-EOT
+        InfoBegin
+        InfoKey: Author
+        InfoValue: #{author}
+        EOT
+      end
 
+      return metadata
+    end
+
+    def write_metadata(input_file : File, output_file : String, text)
+      metadata_text_file = File.tempfile("muse-dl-metadata-tmp", ".txt")
       File.write(metadata_text_file.path, text)
+
       is_success = execute [input_file.path, "update_info_utf8", metadata_text_file.path, "output", output_file]
       if !is_success
         raise Muse::Dl::Errors::PDFOperationError.new("Error adding metadata to book.")
       end
       metadata_text_file.delete
+    end
+
+    def add_metadata(input_file : File, output_file : String, issue : Issue)
+      # First we have to dump the current metadata
+      metadata_text_file = File.tempfile("muse-dl-metadata-tmp", ".txt")
+      keywords = "Journal:#{issue.journal_title}, Published:#{issue.date},Volume:#{issue.volume},Number:#{issue.number}"
+      ["ISSN", "Print ISSN", "DOI", "Language", "Open Access"].each do |label|
+        if issue.info.has_key? label
+          keywords += ", #{label}:#{issue.info[label]}"
+        end
+      end
+
+      # TODO: Move this to Issue class
+
+      s = issue.summary
+      unless s.nil?
+        summary = s.gsub(/\n\s+/, " ")
+      else
+        summary = "NA"
+      end
+
+      t = issue.title
+
+      unless t.nil?
+        title = t
+      else
+        title = "NA"
+      end
+      # TODO: Add support for all authors in the PDF
+      metadata = gen_metadata(title, keywords, summary)
+      write_metadata(input_file, output_file, metadata)
     end
 
     def stitch(chapter_ids : Array(String))
       output_file = File.tempfile("muse-dl-stitched-tmp", ".pdf")
       # Do some sanity checks on each Chapter PDF
       chapter_ids.each do |id|
-        raise Muse::Dl::Errors::MissingChapter.new unless File.exists? Fetch.chapter_file_name(id, @tmp_file_path)
+        raise Muse::Dl::Errors::MissingFile.new unless File.exists? Fetch.chapter_file_name(id, @tmp_file_path)
         raise Muse::Dl::Errors::CorruptFile.new unless File.size(Fetch.chapter_file_name(id, @tmp_file_path)) > 0
       end
 
@@ -132,6 +179,29 @@
       # TODO: Validate final file here
       if !is_success
         raise Muse::Dl::Errors::PDFOperationError.new("Error stitching chapters together.")
+      end
+
+      return output_file
+    end
+
+    # TODO: Merge with stitch
+    def stitch_articles(article_ids : Array(String))
+      output_file = File.tempfile("muse-dl-stitched-tmp", ".pdf")
+      # Do some sanity checks on each Chapter PDF
+      article_ids.each do |id|
+        raise Muse::Dl::Errors::MissingFile.new unless File.exists? Fetch.article_file_name(id, @tmp_file_path)
+        raise Muse::Dl::Errors::CorruptFile.new unless File.size(Fetch.article_file_name(id, @tmp_file_path)) > 0
+      end
+
+      # Now let's stitch them together
+      article_files = article_ids.map { |id| Fetch.article_file_name(id, @tmp_file_path) }
+      args = article_files + ["cat", "output", output_file.path]
+      is_success = execute args
+
+      # TODO: Validate final file here
+      if !is_success
+        puts args
+        raise Muse::Dl::Errors::PDFOperationError.new("Error stitching articles together.")
       end
 
       return output_file
diff --git a/src/thing.cr b/src/thing.cr
index 96a105a..2b0e3fd 100644
--- a/src/thing.cr
+++ a/src/thing.cr
@@ -19,6 +19,13 @@
 
     private getter :h
 
+    def open_access
+      if @info.has_key? "Open Access"
+        return @info["Open Access"] == "Yes"
+      end
+      false
+    end
+
     def initialize(html : String)
       @h = Myhtml::Parser.new html
       @info = InfoParser.infobox(h)
diff --git a/src/util.cr b/src/util.cr
index 5ed414a..0ddd1ae 100644
--- a/src/util.cr
+++ a/src/util.cr
@@ -1,8 +1,8 @@
 module Muse::Dl
   class Util
     # Generates a safe filename
     def self.slug_filename(input : String)
-      input.strip.tr("\u{202E}%$|:;/\t\r\n\\", "-")
+      input.strip.tr("\u{202E}%$|:;/\"\t\r\n\\", "-")
     end
   end
 end
diff --git a/spec/fixtures/chapter-2379787.html b/spec/fixtures/chapter-2379787.html
new file mode 100644
index 0000000..2e5e3c2 100644
--- /dev/null
+++ a/spec/fixtures/chapter-2379787.html
@@ -1,0 +1,359 @@
+<style>
+.page404 {
+	display: table;
+	width: 100%;
+	padding: 60px 4em;
+	min-height: 350px;
+}
+.page404 .int {
+	display: table-cell;
+	vertical-align: middle;
+	text-align: left; 
+}
+.page404 h4 {
+	margin-bottom: 10px;
+	font-weight: 700;
+}
+.page404 .logo {
+	display: table-cell;
+	width: 23%;
+	vertical-align: middle;
+	padding-right: 30px;
+}
+.page404 blockquote {
+	border: none;
+	padding-left: 0;
+}
+</style>
+
+
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<!-- Global site tag (gtag.js) - Google Analytics -->
+		<script async src="https://www.googletagmanager.com/gtag/js?id=UA-58347753-2"></script>
+		<script>
+		  window.dataLayer = window.dataLayer || [];
+		  function gtag(){dataLayer.push(arguments);}
+		  gtag('js', new Date());		
+		  gtag('config', 'UA-58347753-2');
+		</script>
+		<meta charset="utf-8">
+		<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+		<meta property="og:image" content="/images/muselogo_dark.jpg" />
+
+		
+		
+		<title>Project MUSE</title>
+		<link rel="search" type="application/opensearchdescription+xml" title="Search Project MUSE from your browser's Searchbar" href="/plugins/muse-opensearch.xml" />
+		
+		
+		<link rel="stylesheet" type="text/css" href="/css/normalize.css"/>
+		<link href="/css/jquery.qtip2.css" rel="stylesheet" type="text/css" />
+<!-- 		foundation 6.4.1 custom float/typ/vis 250rem max width 30col float grid -->
+		<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,600,600i,700,700i" rel="stylesheet">
+		<link rel="stylesheet" type="text/css" href="/css/foundation.min.css"/>
+		<link rel="stylesheet" type="text/css" href="/css/style_home2.css?031820"/>
+		
+		
+		
+		
+		
+
+		<script type="text/javascript" src="/js/jquery3.js"></script>		
+		<script type="text/javascript" src="/js/pre.js"></script>
+		<script type="text/javascript" src="/js/core/head.js?new"></script>
+		
+		<script type="text/javascript" src="https://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4ecb5479089cb81a"></script>
+
+		
+		
+		
+		<title>Article</title>
+	</head>
+	<body>
+		<a id="skip" href="#skip_target">[Skip to Content]</a>
+		<span id="top"></span>
+		<div id="header" role="banner" aria-label="header">
+			<div class="row wrap" id="institution_banner">
+				<div class="content">
+					<div id="institution_wrap" class="columns small-15 medium-text-left">
+						<div id="institution" class="img_text_col">
+							<div class="img_contain_left"><img src="/images/institution.png" alt="institution icon" /></div>
+							<div class="text_contain_left"><span class="small"><a href='/account' class='color_white login_status'>Institutional Login</a></span></div>
+						</div>
+					</div>
+					<div id="person_wrap" class="columns small-15">
+						<div id="person" class="img_text_col">
+							<div class="img_contain_right"><img src="/images/person.png" alt="account icon" /></div>
+							<div class="text_contain_right"><span class="small"><a href="/account/" class="color_white login_status" onclick="gtag('event', 'click', {'event_category': 'Account link', 'event_label': 'account name link - header'});">LOG IN</a></span></div>
+						</div>
+					</div>
+				</div>
+			</div>
+			
+			
+			
+			<div class="row wrap" id="search_banner">
+				<div class="content">
+					<div class="medium-4 small-4 columns" id="header_logo_wrap">
+						<div id="header_logo">
+							<a href="/"><img src="/images/muselogo.png" alt="Project MUSE" class="show-for-large"/>
+							<img src="/images/muselogo_notext.png" alt="Project MUSE" class="hide-for-large"/></a>							
+						</div>
+					</div>
+					<div class="medium-21 small-22 columns" id="search_bar_wrap">				
+						<div class="row"> 
+							<div id="browse_button_wrap">
+								<a id="browse_button" href="/browse" onclick="gtag('event', 'click', {'event_category': 'Browse link', 'event_label': 'browse button - header'});"><span class="small">browse</span></a>
+							</div>
+							<div id="or_text_wrap" class="show-for-medium">
+								<div id="or_text">
+									<span class="small">or</span> 
+								</div>
+							</div>
+							<div id="search_input_wrap" class="small-30">
+								<div id="search_input">
+  								
+  								<noscript>
+										<form method="post" action="/search/">
+										<input name="no_js_header_query"/>
+										<input type="hidden" name="action" value="search"/>
+										<input type="hidden" name="t" value="header"/>
+										<a id="search_button">
+										
+										<input type="image" src="/images/search_white.png" alt="Search icon"/>
+										
+                    </a>
+										</form>
+									</noscript>
+								
+									<script>document.write('<input name="search_input_header" id="search_input_header" aria-label="search input"/>');</script>									
+									
+									<script>document.write('<a id="search_button"><img src="/images/search_white.png" alt="Search icon"/></a>');</script>
+									
+									
+								</div>
+							</div>
+						</div>				
+					</div>
+				
+					<div class="medium-5 small-4 columns" id="menu_wrap">
+						<div id="menu" class="menu-btn">
+	<div class="nav-toggle">
+		<div class="nav-toggle-btn">
+			<a href="#" class="menu-icon-wrap">
+				<span class="icon"></span>
+				<span class="small show-for-large">menu</span>
+			</a>
+		</div>
+
+		<div class="nav-mobile">
+			<a href="/search">Advanced Search</a>
+			<a href="/browse">Browse</a>
+			<script>
+				document.write('<div class="accordion">');
+			</script>
+			<noscript>
+				<div class="accordion noscript">
+			</noscript>
+				<a href="#" class="acc_trig open"><span>MyMUSE Account</span></a>
+				<div class="acc_block">
+					<a href="/account">Log In / Sign Up</a>
+					<a href="/account/change">Change My Account</a>
+					<a href="/account/user_settings">User Settings</a>
+					<a href="/account/">Access via Institution</a>
+					<a href="/account/saved_items">MyMUSE Library</a>
+					<a href="/account/search_history">Search History</a>
+					<a href="/account/view_history">View History</a>
+					<a href="/account/purchase_history">Purchase History</a>
+					<a href="/account/alerts">MyMUSE Alerts</a>
+																
+				</div>
+			</div>									
+			
+			<div class="nav-mobile-footer">
+				<!--<a class="modal_trigger">Contact Support</a>-->
+				<a href="/contact">Contact Support</a>
+			</div>
+		</div>
+	</div>
+</div>
+		
+ 
+					</div>
+				</div>
+			</div>
+			
+			
+			
+		</div>
+
+
+
+<div class="page404" id="main">
+	<div class="logo">
+		<img src="/images/muselogo_notext.png" alt="MUSE logo">
+	</div>
+	<div class="int">
+		<html><head><title>Error</title></head><body>Unable to construct chapter PDF</body></html>
+
+	</div>
+</div>
+
+
+		<div id="footer_block" role="banner" aria-label="footer">
+			<div class="content">
+				<div class="wrap row" id="about_wrap">
+					<div id="about">
+						<h3>Project MUSE Mission</h3>
+						<p>Project MUSE promotes the creation and dissemination of essential humanities and social science resources through collaboration with libraries, publishers, and scholars worldwide. Forged from a partnership between a university press and a library, Project MUSE is a trusted part of the academic and scholarly community it serves.</p>
+					</div>
+					<div id="about_logo" class="columns medium-10 show-for-large">
+						<img src="/images/muselogo_notext.png" alt="MUSE logo"/>
+					</div>
+				</div>
+			</div>
+			
+			<div class="footer_main">
+				<div class="footer_item_color wrap">
+					<div class="footer_item_left">
+						<div class="group">
+							<div class="footer_item_about cont_sub">
+								<h5 class="small">about</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/publishers">Publishers</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/discovery-partners/">Discovery Partners</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/advisory-board/">Advisory Board</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/journal-subscribers/">Journal Subscribers</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/book-customers">Book Customers</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/at-conferences/">Conferences</a></li>
+								</ul>
+							</div>
+							<div class="footer_item_res cont_sub">
+								<h5 class="small">resources</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/resources/news/">News & Announcements</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/promotional-materials">Promotional Material</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/alerts">Get Alerts</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/muse-presentations">Presentations</a></li>
+								</ul>
+							</div>
+							<div class="clear"></div>
+						</div>
+						<div class="group">
+							<div class="footer_item_what cont_sub">
+								<h5 class="small">what's on muse</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/muse">Open Access</a></li>
+									<li><a href="https://about.muse.jhu.edu/pub/journals">Journals</a></li>
+									<li><a href="https://about.muse.jhu.edu/pub/books">Books</a></li>
+								</ul>
+							</div>
+							<div class="footer_item_info cont_sub">
+								<h5 class="small">information for</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/publishers">Publishers</a></li>
+									<li><a href="https://about.muse.jhu.edu/librarians">Librarians</a></li>
+									<li><a href="https://about.muse.jhu.edu/individuals">Individuals</a></li>
+								</ul>
+							</div>
+							<div class="clear"></div>
+						</div>
+					</div>
+					<div class="footer_item_right">
+						<div class="group">
+							<div class="footer_item_social cont_sub">
+								<h5 class="small">Contact</h5>
+								<ul>
+									<li class="clear"><a href="/contact">Contact Us</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/help-overview">Help</a></li>
+								</ul>
+								<ul>
+									<li>
+										<ol class="social_icons">
+											<li class="list_h"><a href="https://www.facebook.com/ProjectMUSE"><img src="/images/footer_icon_fb.png" alt="Facebook" /></a></li>
+											<li class="list_h"><a href="https://www.linkedin.com/company/projectmuse/"><img src="/images/footer_icon_linkedin.png" alt="Linkedin" /></a></li>
+											<li class="list_h"><a href="https://twitter.com/ProjectMUSE"><img src="/images/footer_icon_twitter.png" alt="Twitter" /></a></li>
+										</ol>
+									</li>
+								</ul>
+							</div>
+							<div class="footer_item_policy cont_sub">
+								<h5 class="small">Policy & Terms</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/about/accessibility/">Accessibility</a></li>
+									<li><a href="/privacy_policy">Privacy Policy</a></li>
+									<li><a href="/terms_use">Terms of Use</a></li>	
+								</ul>
+							</div>
+							<div class="clear"></div>
+						</div>
+						<div class="group">
+							<div class="footer_item_addr cont_sub">
+								<p class="address"><span>2715 North Charles Street<br/>Baltimore, Maryland, USA 21218</span></p>
+								<p class="phone"><span><a href="tel:1-410-516-6989">+1 (410) 516-6989</a></span><br>
+								<span><a href="mailto:muse@press.jhu.edu">muse@press.jhu.edu</a></span></p>
+								<p class="footer_text_sm copy color_oxfordblue hide-for-small"><span>&copy;2020 Project MUSE. Produced by Johns Hopkins University Press in collaboration with The Sheridan Libraries.</span></p>
+							</div>
+							<div class="footer_item_logo cont_sub">
+								<p class="show-for-medium"><span class="semiboldit footer_text_sm">Now and always,<br/>The Trusted Content Your Research Requires.</span></p>
+								<p><span><a href="https://muse.jhu.edu">
+								
+								<img class="show-for-medium" src="/images/muselogoblack.png" alt="Project MUSE logo" />
+								
+								<img class="hide-for-medium" src="/images/muselogo.png" alt="Project MUSE logo" /></a></span></p>
+								<p class="hide-for-medium"><span class="semiboldit footer_text_sm">Now and always, The Trusted Content Your Research Requires.</span></p>
+								<p class="hide-for-small"><span class="footer_text_sm">Built on the Johns Hopkins University Campus</span></p>
+							</div>
+							<div class="clear"></div>
+						</div>
+					</div>
+					<div class="clear"></div>
+				</div>
+			</div>
+			<div class="footer_item_sub wrap hide-for-medium">
+				<p><span class="footer_text_sm">Built on the Johns Hopkins University Campus</span></p>		
+				<p class="footer_text_sm copy color_oxfordblue"><span>&copy;2020 Project MUSE. Produced by Johns Hopkins University Press in collaboration with The Sheridan Libraries.</span></p>			
+			</div>		
+		</div>
+		
+		
+		
+		
+		<div id="btn_top">
+			<a href="#top"><span>Back To Top</span></a>
+		</div>
+		
+		
+		
+		  <input type="hidden" name="cookie_acknowledgement_type"  id="cookie_acknowledgement_type" value="cookie_acknowledgement">
+		
+		
+		
+			<div id="cookies_msg">
+				<p>This website uses cookies to ensure you get the best experience on our website. Without cookies your experience may not be seamless.</p>
+				<script>document.writeln('<a href="javascript://" class="btn_accept" id="accept_cookie_msg">Accept</a>');</script>
+				<noscript>	
+						
+								<form method="post" action="/account/set_attribute_no_ajax/cookie_acknowledgement/1">
+						
+						<input type="submit" class="btn_accept" value="accept">
+						</form>
+				</noscript>
+			</div>
+		
+		
+		<script type="text/javascript" src="/js/lightbox.js"></script>
+		<script type="text/javascript" src="/js/jquery.qtip2.min.js"></script>
+		<script type="text/javascript" src="/js/post.js"></script>
+		
+		<script type="text/javascript" src="/js/footnotes.js"></script>
+		
+		
+		<script type="text/javascript" src="/js/references.js"></script>
+		
+	</body>
+</html>
+
diff --git a/spec/fixtures/issue-35852.html b/spec/fixtures/issue-35852.html
new file mode 100644
index 0000000..7e50f60 100644
--- /dev/null
+++ a/spec/fixtures/issue-35852.html
@@ -1,0 +1,1263 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<!-- Global site tag (gtag.js) - Google Analytics -->
+		<script async src="https://www.googletagmanager.com/gtag/js?id=UA-58347753-2"></script>
+		<script>
+		  window.dataLayer = window.dataLayer || [];
+		  function gtag(){dataLayer.push(arguments);}
+		  gtag('js', new Date());		
+		  gtag('config', 'UA-58347753-2');
+		</script>
+		<meta charset="utf-8">
+		<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+		<meta property="og:image" content="/issue/35852/og_image.jpg" />
+		
+		
+		
+		
+		<title>Project MUSE - Constitutional Studies-Volume 1, Issue 2, 2016</title>
+		<link rel="search" type="application/opensearchdescription+xml" title="Search Project MUSE from your browser's Searchbar" href="/plugins/muse-opensearch.xml" />
+		
+		
+		<link rel="stylesheet" type="text/css" href="/css/normalize.css"/>
+		<link href="/css/jquery.qtip2.css" rel="stylesheet" type="text/css" />
+<!-- 		foundation 6.4.1 custom float/typ/vis 250rem max width 30col float grid -->
+		<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,600,600i,700,700i" rel="stylesheet">
+		<link rel="stylesheet" type="text/css" href="/css/foundation.min.css"/>
+		<link rel="stylesheet" type="text/css" href="/css/style_home2.css?031820"/>
+		
+		
+		
+		
+		
+
+		<script type="text/javascript" src="/js/jquery3.js"></script>		
+		<script type="text/javascript" src="/js/pre.js"></script>
+		<script type="text/javascript" src="/js/core/head.js?new"></script>
+		
+		<script type="text/javascript" src="https://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4ecb5479089cb81a"></script>
+
+		
+		
+		
+		<title>Article</title>
+	</head>
+	<body>
+		<a id="skip" href="#skip_target">[Skip to Content]</a>
+		<span id="top"></span>
+		<div id="header" role="banner" aria-label="header">
+			<div class="row wrap" id="institution_banner">
+				<div class="content">
+					<div id="institution_wrap" class="columns small-15 medium-text-left">
+						<div id="institution" class="img_text_col">
+							<div class="img_contain_left"><img src="/images/institution.png" alt="institution icon" /></div>
+							<div class="text_contain_left"><span class="small"><a href='/account' class='color_white login_status'>Institutional Login</a></span></div>
+						</div>
+					</div>
+					<div id="person_wrap" class="columns small-15">
+						<div id="person" class="img_text_col">
+							<div class="img_contain_right"><img src="/images/person.png" alt="account icon" /></div>
+							<div class="text_contain_right"><span class="small"><a href="/account/" class="color_white login_status" onclick="gtag('event', 'click', {'event_category': 'Account link', 'event_label': 'account name link - header'});"><span class="login_statement_unauthenticated">LOG IN</span></a></span></div>
+						</div>
+					</div>
+				</div>
+			</div>
+			
+			
+			
+			<div class="row wrap" id="search_banner">
+				<div class="content">
+					<div class="medium-4 small-4 columns" id="header_logo_wrap">
+						<div id="header_logo">
+							<a href="/"><img src="/images/muselogo.png" alt="Project MUSE" class="show-for-large"/>
+							<img src="/images/muselogo_notext.png" alt="Project MUSE" class="hide-for-large"/></a>							
+						</div>
+					</div>
+					<div class="medium-21 small-22 columns" id="search_bar_wrap">				
+						<div class="row"> 
+							<div id="browse_button_wrap">
+								<a id="browse_button" href="/browse" onclick="gtag('event', 'click', {'event_category': 'Browse link', 'event_label': 'browse button - header'});"><span class="small">browse</span></a>
+							</div>
+							<div id="or_text_wrap" class="show-for-medium">
+								<div id="or_text">
+									<span class="small">or</span> 
+								</div>
+							</div>
+							<div id="search_input_wrap" class="small-30">
+								<div id="search_input">
+  								
+  								<noscript>
+										<form method="post" action="/search/">
+										<input name="no_js_header_query"/>
+										<input type="hidden" name="action" value="search"/>
+										<input type="hidden" name="t" value="header"/>
+										<a id="search_button">
+										
+										<input type="image" src="/images/search_white.png" alt="Search icon"/>
+										
+                    </a>
+										</form>
+									</noscript>
+								
+									<script>document.write('<input name="search_input_header" id="search_input_header" aria-label="search input"/>');</script>									
+									
+									<script>document.write('<a id="search_button"><img src="/images/search_white.png" alt="Search icon"/></a>');</script>
+									
+									
+								</div>
+							</div>
+						</div>				
+					</div>
+				
+					<div class="medium-5 small-4 columns" id="menu_wrap">
+						<div id="menu" class="menu-btn">
+	<div class="nav-toggle">
+		<div class="nav-toggle-btn">
+			<a href="#" class="menu-icon-wrap">
+				<span class="icon"></span>
+				<span class="small show-for-large">menu</span>
+			</a>
+		</div>
+
+		<div class="nav-mobile">
+			<a href="/search">Advanced Search</a>
+			<a href="/browse">Browse</a>
+			<script>
+				document.write('<div class="accordion">');
+			</script>
+			<noscript>
+				<div class="accordion noscript">
+			</noscript>
+				<a href="#" class="acc_trig open"><span>MyMUSE Account</span></a>
+				<div class="acc_block">
+					<a href="/account">Log In / Sign Up</a>
+					<a href="/account/change">Change My Account</a>
+					<a href="/account/user_settings">User Settings</a>
+					<a href="/account/">Access via Institution</a>
+					<a href="/account/saved_items">MyMUSE Library</a>
+					<a href="/account/search_history">Search History</a>
+					<a href="/account/view_history">View History</a>
+					<a href="/account/purchase_history">Purchase History</a>
+					<a href="/account/alerts">MyMUSE Alerts</a>
+																
+				</div>
+			</div>									
+			
+			<div class="nav-mobile-footer">
+				<!--<a class="modal_trigger">Contact Support</a>-->
+				<a href="/contact">Contact Support</a>
+			</div>
+		</div>
+	</div>
+</div>
+		
+ 
+					</div>
+				</div>
+			</div>
+			
+			
+			
+		</div>
+
+<script type="text/javascript">
+  var next_iid = 0;
+</script>
+<script src="/js/jquery.bullseye.js"></script>
+<script src="/js/serval/issue.js"></script>
+  
+<script type="text/javascript">
+  $(document).ready(function() {
+    var window_w = $(window).width();
+    var img_w = "";
+    var img_h = "";
+    var opt_w = img_w;
+    var opt_h = img_h;    
+    var ratio = 1;
+    if(img_w >= window_w) { 
+      opt_w = window_w - 60; 
+      ratio = opt_w/img_w;
+    }    
+    opt_h = ratio*img_h;
+    $('#issue_cover_thumb').qtip({
+      content: {
+        text: "<div class='qtip-cover'><p><a href='/issue/35852/image/front_cover.jpg'>View Full Resolution</a></p><img height='"+opt_h+"' width='"+opt_w+"' src='/issue/35852/image/front_cover.jpg' /><div class='qtip-caption'><p><b>Front Cover</b>:  Bronze statue of John Marshall by American sculptor William Wetmore Story. (Image courtesy of Shutterstock.com.)</p></div> </div>",
+        title: {
+          text: 'Cover for Volume 1, Issue 2, 2016',
+          button: 'Close'
+        }, 
+      },
+      show: 'click',
+      hide: false,
+      position: {
+        my: 'top left',
+        at: 'top left',
+        target: $('.content')
+      },
+      style: {
+        classes: 'ui-tooltip-dark ui-tooltip-rounded ui-tooltip-shadow qtip-journalcover'
+      },
+      hide: 'unfocus'      
+    });
+  });
+</script>
+  
+<script>
+  $(document).ready(function() {
+    $("#login_alert").click(function(){
+       if (confirm("You must be logged into a MyMUSE account in order to create an alert for this journal.\n\nContinue to login?")){
+	  $("#login_alert_form").submit();
+       }
+    });
+  });
+</script>
+<div id="main">
+	<div id="journal_about_wrap" class="about_wrap">
+		<div id="journal_banner_wrap" class="banner_wrap">
+			<div class="content" style="background-color:rgb(153,153,153);background:linear-gradient(to right, rgb(0,0,0),rgb(153,153,153) 70%); filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#000000', endColorstr='#999999');">
+				<div id="journal_banner_title_wrap" class="wrap left banner_title_wrap">
+					<div id="journal_banner_title" class="banner_title">
+						<h2><a href="/journal/714">Constitutional Studies</a></h2>
+					</div>
+				</div>
+				<div id="journal_banner_search_wrap" class="show-for-medium wrap banner_search_wrap">
+					<div id="journal_banner_search" role="search" aria-label="search inside this journal">
+						<div>
+							<!-- nojs variant -->
+							<noscript>
+							  <form method="post" action="/search/" aria-label="search within this journal text input" title="search within this journal text input">
+								<input type="text" name="no_js_header_query" aria-label="search within this journal text input" placeholder="Search Within Journal"/>
+								<input type="hidden" name="action" value="search" />
+								<input type="hidden" name="t" value="search_journal_header" />
+								<input type="hidden" name="search_within_journal_id" id="search_within_journal_id" value="714" />
+								<a id="search_within_journal_button">
+								  
+									<input type="image" alt="a magnifying glass search icon" src="/images/search_blue.png" aria-label="submit search"/>
+								  
+								</a>
+							  </form>
+							</noscript>  
+							<!-- js variant -->
+							<script>
+							  // hook for js, journal limiter
+							  document.write('<input type="hidden" name="search_within_journal_id" id="search_within_journal_id" value="714" />');
+							  // text input
+							  document.write('<input type="text" name="search_within_journal_input" id="search_within_journal_input" title="search within journal" aria-label="search within journal" placeholder="Search Within Journal"/>');
+							</script>
+							
+							<script>
+							  // light mode button
+							  document.write('<a id="search_within_journal_button"><img src="/images/search_blue.png" alt="a magnifying glass search icon"/></a>');
+							</script>
+							
+						</div>
+					</div>
+				</div>
+				<div class="clear"></div>
+			</div>	
+		</div>
+		<div id="journal_about" class="wrap about">
+		
+		
+		  
+		    <form id="login_alert_form" method="POST" action="/account/">					
+		    <input type="hidden" name="return_on_login" value="/issue/35852">
+		    <a id="login_alert" class="btn_add_alert">+ MUSE Alert</a>
+		    </form>
+		  
+		
+		
+		
+		<script>
+			var html = '<div id="share_block">'+
+			'<div id="share_block_text">'+
+			'<div class="social">'+
+			'<ul class="addthis_toolbox addthis_default_style rightnav_links_share" addthis:url="https://muse.jhu.edu/issue/35852" addthis:title="Project MUSE - Constitutional Studies: Volume 1, Issue 2, 2016">'+
+			'<li><a class="addthis_button_citeulike addthis_24x24_style"></a>'+
+			'<a class="addthis_button_facebook addthis_24x24_style"></a>'+
+			'<a class="addthis_button_delicious addthis_24x24_style"></a>'+
+			'<a class="addthis_button_twitter addthis_24x24_style" tw:screen_name="ProjectMUSE"></a>'+
+			'<a class="addthis_button_google addthis_24x24_style"></a>'+
+			'<a href="http://www.addthis.com/bookmark.php?v=250&amp;pubid=xa-4ecac55a1fd58a05" tabindex="-1" class="addthis_button_compact addthis_24x24_style"></a></li>'+
+			''+
+			'</div>'+
+			'</div>'+
+			'</div>';
+			document.write(html);
+		</script>
+			<div class="title_wrap">
+				<h2>In this Issue</h2>
+			</div>
+		
+			<div id="journal_about_info_wrap" class="about_info_wrap">
+				<div id="journal_about_info" class="cards_wrap about_info" role="complementary" aria-label="journal information">
+					<div class="card">
+						
+						<div class="card_image">
+							<img id="issue_cover_thumb" src="/issue/35852/image/front_cover.jpg?format=180" alt="issue cover image"/>
+							
+							
+							<div style="text-align: center; padding-top: 10px; font-size: 15px;">
+								<a href="#info_wrap">Additional Information</a>
+							</div>
+						</div>
+						
+						<div class="card_text ">
+							<ul>
+							<li class="title"><span><a href="/journal/714">Volume 1, Issue 2, 2016</a></span></li>
+							
+							
+								<li class="type"><span class="issue">Issue</span></li>
+								<li>
+								
+								<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/open_access.png" alt="open access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+<a href="/issue/35852">
+
+	
+
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="issue:35852"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/issue:35852/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+</ul>
+  <a href="/issue/035852" style="display:none" tabindex="-1">contents</a>
+</div>
+
+                                                                                                                                
+								</li>
+								
+								
+								
+								
+								<!--
+								
+								-->
+								
+								
+								
+								
+							</ul>
+						</div>
+						
+						
+						<div class="card_summary_wrap">
+							<div class="card_summary">
+								<p><i>Constitutional Studies</i> publishes work from a variety of disciplines that addresses the theory and practice of constitutional government. The journal seeks work of the highest quality that expands our understanding of constitutional democratic institutions and the bases for their legitimacy, practices of constitutional self-government, formal and informal constitutional systems, approaches to constitutional jurisprudence, and related subjects.</p>
+							</div>
+							<div class="card_publisher_image">
+								
+									
+									<a href="/search?action=browse&limit=publisher_id:19"><img src="/publisher/19/image/colophon.jpg" alt="publisher colophon"/></a>
+									
+								
+							</div>							
+							<div class="card_publisher">
+								
+								<h4 class="small">published by</h4>
+								<span><a href="/search?action=browse&limit=publisher_id:19">University of Wisconsin Press</a></span>
+								
+							</div>
+							<div class="card_current">
+								
+								<h4 class="small">viewing issue</h4>
+								<span>Volume 1, Issue 2, 2016</span>
+								
+							</div>
+
+							
+						</div>
+					</div>
+				</div>
+				
+			
+				<div id="journal_about_content_select" class="row about_content_select">
+					
+<!-- 					<div class="columns large-20 full"> -->
+					<div class="columns small-30 full">
+						<div class="toc_header_wrap">
+							<div class="option" id="toc_header">
+								<h2>Table of Contents</h2>
+							</div>
+							
+								<div id="toc_format_wrap" class="option">
+								  <a class="toc_format_button" href="/issue/35852/print">View Formatted Version</a>
+								</div>
+								
+						</div>
+						
+						<div id="articles_list_wrap" class="alternate_content_render">
+							<div class="articles_list_text toc " role="main" aria-label="articles in this issue">
+								
+							  <a id="skip_target"></a>
+
+								<div class="cards_wrap vertical_list">
+		<!-- 
+									<div class="title_wrap partial">
+										<h2>Articles</h2>
+									</div>
+		 -->
+
+
+									
+
+									<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/648783">The Limits of Veneration: Public Support for a New Constitutional Convention</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22William D. Blake%22">William D. Blake</a>, </span>
+			 
+			 <a href="/search?action=search&&query=author:%22Sanford V. Levinson%22">Sanford V. Levinson</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 1-22</li>
+						
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/open_access.png" alt="open access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+<a href="/article/648783">
+
+	<img src="/images/html_icon.png" class="icon" alt="View HTML">
+
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/648783/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:648783"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:648783/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+</ul>
+  <a href="/article/0648783" style="display:none" tabindex="-1">contents</a>
+</div>
+
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 648783 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/648784">Secession and Nullification as a Global Trend</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Ran Hirschl%22">Ran Hirschl</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 23-40</li>
+						
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/open_access.png" alt="open access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+<a href="/article/648784">
+
+	<img src="/images/html_icon.png" class="icon" alt="View HTML">
+
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/648784/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:648784"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:648784/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+</ul>
+  <a href="/article/0648784" style="display:none" tabindex="-1">contents</a>
+</div>
+
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 648784 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/648785">Challenging Constitutionalism in Post-Apartheid South Africa</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Heinz Klug%22">Heinz Klug</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 41-58</li>
+						
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/open_access.png" alt="open access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+<a href="/article/648785">
+
+	<img src="/images/html_icon.png" class="icon" alt="View HTML">
+
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/648785/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:648785"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:648785/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+</ul>
+  <a href="/article/0648785" style="display:none" tabindex="-1">contents</a>
+</div>
+
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 648785 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/648786">Democracy by Lawsuit: Or, Can Litigation Alleviate the European Union’s “Democratic Deficit?”</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Tommaso Pavone%22">Tommaso Pavone</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 59-80</li>
+						
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/open_access.png" alt="open access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+<a href="/article/648786">
+
+	<img src="/images/html_icon.png" class="icon" alt="View HTML">
+
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/648786/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:648786"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:648786/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+</ul>
+  <a href="/article/0648786" style="display:none" tabindex="-1">contents</a>
+</div>
+
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 648786 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/648787">Private Enforcement of Constitutional Guarantees in the Ku Klux Act of 1871</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Paul J. Gardner%22">Paul J. Gardner</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 81-95</li>
+						
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/open_access.png" alt="open access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+<a href="/article/648787">
+
+	<img src="/images/html_icon.png" class="icon" alt="View HTML">
+
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/648787/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:648787"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:648787/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+</ul>
+  <a href="/article/0648787" style="display:none" tabindex="-1">contents</a>
+</div>
+
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 648787 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/648788">Sober Second Thoughts: Evaluating the History of Horizontal Judicial Review by the U.S. Supreme Court</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Keith E. Whittington%22">Keith E. Whittington</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 97-116</li>
+						
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/open_access.png" alt="open access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+<a href="/article/648788">
+
+	<img src="/images/html_icon.png" class="icon" alt="View HTML">
+
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/648788/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:648788"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:648788/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+</ul>
+  <a href="/article/0648788" style="display:none" tabindex="-1">contents</a>
+</div>
+
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 648788 -->
+
+
+							
+								</div>
+							</div>
+							
+						</div>
+					</div>
+					
+					
+					
+<!-- rightnav here -->
+				
+				
+									
+				</div>
+
+
+
+
+
+<!-- 
+<div style="background-color: orange; width: 100%; padding: 25px;">
+ 
+  <div>PREV: <a href="/article/35402">Volume 1, Issue 1, 2016</a></div>
+ 
+ 
+</div>
+ -->
+
+
+			</div>
+		</div>
+		<div id="previous_next_interface" class="row wrap">
+			<div class="columns small-30 large-15 full">
+			
+				<div class="title_wrap">
+					<h2>Previous Issue</h2>
+				</div>
+				<p><a href="/issue/35402">Volume 1, Issue 1, 2016</a></p>
+			
+			</div>
+			<div class="columns small-30 large-15 full">
+			
+			</div>	
+		</div>
+		
+		<div id="info_wrap" class="row wrap">
+	<div class="column full">
+		<div class="title_wrap details">
+			<h2>Additional Information</h2>
+		</div>
+		<div class="details_tbl">		
+							
+			<div class="details_row">
+				<div class="cell label">
+					ISSN
+				</div>
+				<div class="cell">
+					2474-9419
+				</div>
+			</div>
+			
+			
+			<div class="details_row">
+				<div class="cell label">
+					Print ISSN
+				</div>
+				<div class="cell">
+					2474-9427
+				</div>
+			</div>
+			
+			
+			
+			
+			
+			
+									
+			
+			<div class="details_row">
+				<div class="cell label">
+					Launched on MUSE
+				</div>
+				<div class="cell">
+					2017-02-21
+				</div>
+			</div>
+			
+			
+			
+			
+			<div class="details_row">
+				<div class="cell label">
+					Open Access
+				</div>
+				<div class="cell">
+					
+					Yes
+					
+				</div>
+			</div>
+			
+			
+			
+				
+			
+			
+		</div>
+	</div>
+	<div class="column full">
+		
+		
+		<div class="title_wrap">
+			<h2>Copyright</h2>
+		</div>
+		<div class="copyright">
+			<p>© the Board of Regents of the University of Wisconsin System</p>
+		</div>
+		
+
+		
+		
+		<div class="supp">
+			
+
+			
+			<div class="title_wrap">
+				<h2>Additional Issue Materials</h2>
+			</div>			
+			<div class="edboard_wrap">
+			<ul class="edboards ">
+			
+				<li>
+				<a href="/issue/35852/doc/editorial.html#toc_header">
+				Editorial Board
+				
+				
+				</a></li>
+			
+			</ul>
+			</div>
+			
+		</div>
+		
+
+	</div>
+</div>
+
+		
+
+		
+	</div>	
+</div>
+
+		<div id="footer_block" role="banner" aria-label="footer">
+			<div class="content">
+				<div class="wrap row" id="about_wrap">
+					<div id="about">
+						<h3>Project MUSE Mission</h3>
+						<p>Project MUSE promotes the creation and dissemination of essential humanities and social science resources through collaboration with libraries, publishers, and scholars worldwide. Forged from a partnership between a university press and a library, Project MUSE is a trusted part of the academic and scholarly community it serves.</p>
+					</div>
+					<div id="about_logo" class="columns medium-10 show-for-large">
+						<img src="/images/muselogo_notext.png" alt="MUSE logo"/>
+					</div>
+				</div>
+			</div>
+			
+			<div class="footer_main">
+				<div class="footer_item_color wrap">
+					<div class="footer_item_left">
+						<div class="group">
+							<div class="footer_item_about cont_sub">
+								<h5 class="small">about</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/about/story" target="_blank">MUSE Story</a></li>
+									<li><a href="https://about.muse.jhu.edu/publishers" target="_blank">Publishers</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/discovery-partners/" target="_blank">Discovery Partners</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/advisory-board/" target="_blank">Advisory Board</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/journal-subscribers/" target="_blank">Journal Subscribers</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/book-customers" target="_blank">Book Customers</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/at-conferences/" target="_blank">Conferences</a></li>
+								</ul>
+							</div>
+							<div class="footer_item_what cont_sub">
+								<h5 class="small">what's on muse</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/muse" target="_blank">Open Access</a></li>
+									<li><a href="https://about.muse.jhu.edu/pub/journals" target="_blank">Journals</a></li>
+									<li><a href="https://about.muse.jhu.edu/pub/books" target="_blank">Books</a></li>
+									<li><a href="https://about.muse.jhu.edu/muse/eliot-prose/" target="_blank">T.S. Eliot Prose</a></li>
+								</ul>
+							</div>
+							<div class="clear"></div>
+						</div>
+						<div class="group">
+						  <div class="footer_item_res cont_sub">
+								<h5 class="small">resources</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/resources/news/" target="_blank">News & Announcements</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/promotional-materials" target="_blank">Promotional Material</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/alerts" target="_blank">Get Alerts</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/muse-presentations" target="_blank">Presentations</a></li>
+								</ul>
+							</div>
+							<div class="footer_item_info cont_sub">
+								<h5 class="small">information for</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/publishers" target="_blank">Publishers</a></li>
+									<li><a href="https://about.muse.jhu.edu/librarians" target="_blank">Librarians</a></li>
+									<li><a href="https://about.muse.jhu.edu/individuals" target="_blank">Individuals</a></li>
+								  <li><a href="https://about.muse.jhu.edu/instructors" target="_blank">Instructors</a></li>
+								</ul>
+							</div>
+							<div class="clear"></div>
+						</div>
+					</div>
+					<div class="footer_item_right">
+						<div class="group">
+							<div class="footer_item_social cont_sub">
+								<h5 class="small">Contact</h5>
+								<ul>
+									<li class="clear"><a href="/contact">Contact Us</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/help-overview" target="_blank">Help</a></li>
+								</ul>
+								<ul>
+									<li>
+										<ol class="social_icons">
+											<li class="list_h"><a href="https://www.facebook.com/ProjectMUSE" target="_blank"><img src="/images/footer_icon_fb.png" alt="Facebook" /></a></li>
+											<li class="list_h"><a href="https://www.linkedin.com/company/projectmuse/" target="_blank"><img src="/images/footer_icon_linkedin.png" alt="Linkedin" /></a></li>
+											<li class="list_h"><a href="https://twitter.com/ProjectMUSE" target="_blank"><img src="/images/footer_icon_twitter.png" alt="Twitter" /></a></li>
+										</ol>
+									</li>
+								</ul>
+							</div>
+							<div class="footer_item_policy cont_sub">
+								<h5 class="small">Policy & Terms</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/about/accessibility/" target="_blank">Accessibility</a></li>
+									<li><a href="/privacy_policy">Privacy Policy</a></li>
+									<li><a href="/terms_use">Terms of Use</a></li>	
+								</ul>
+							</div>
+							<div class="clear"></div>
+						</div>
+						<div class="group">
+							<div class="footer_item_addr cont_sub">
+								<p class="address"><span>2715 North Charles Street<br/>Baltimore, Maryland, USA 21218</span></p>
+								<p class="phone"><span><a href="tel:1-410-516-6989">+1 (410) 516-6989</a></span><br>
+								<span><a href="mailto:muse@press.jhu.edu">muse@press.jhu.edu</a></span></p>
+								<p class="footer_text_sm copy color_oxfordblue hide-for-small"><span>&copy;2020 Project MUSE. Produced by Johns Hopkins University Press in collaboration with The Sheridan Libraries.</span></p>
+							</div>
+							<div class="footer_item_logo cont_sub">
+								<p class="show-for-medium"><span class="semiboldit footer_text_sm">Now and always,<br/>The Trusted Content Your Research Requires.</span></p>
+								<p><span><a href="https://muse.jhu.edu">
+								
+								<img class="show-for-medium" src="/images/muselogoblack.png" alt="Project MUSE logo" />
+								
+								<img class="hide-for-medium" src="/images/muselogo.png" alt="Project MUSE logo" /></a></span></p>
+								<p class="hide-for-medium"><span class="semiboldit footer_text_sm">Now and always, The Trusted Content Your Research Requires.</span></p>
+								<p class="hide-for-small"><span class="footer_text_sm">Built on the Johns Hopkins University Campus</span></p>
+							</div>
+							<div class="clear"></div>
+						</div>
+					</div>
+					<div class="clear"></div>
+				</div>
+			</div>
+			<div class="footer_item_sub wrap hide-for-medium">
+				<p><span class="footer_text_sm">Built on the Johns Hopkins University Campus</span></p>		
+				<p class="footer_text_sm copy color_oxfordblue"><span>&copy;2020 Project MUSE. Produced by Johns Hopkins University Press in collaboration with The Sheridan Libraries.</span></p>			
+			</div>		
+		</div>
+		
+		
+		
+		
+		<div id="btn_top">
+			<a href="#top"><span>Back To Top</span></a>
+		</div>
+		
+		
+		
+		  <input type="hidden" name="cookie_acknowledgement_type"  id="cookie_acknowledgement_type" value="cookie_acknowledgement">
+		
+		
+		
+			<div id="cookies_msg">
+				<p>This website uses cookies to ensure you get the best experience on our website. Without cookies your experience may not be seamless.</p>
+				<script>document.writeln('<a href="javascript://" class="btn_accept" id="accept_cookie_msg">Accept</a>');</script>
+				<noscript>	
+						
+								<form method="post" action="/account/set_attribute_no_ajax/cookie_acknowledgement/1">
+						
+						<input type="submit" class="btn_accept" value="accept">
+						</form>
+				</noscript>
+			</div>
+		
+		
+		<script type="text/javascript" src="/js/lightbox.js"></script>
+		<script type="text/javascript" src="/js/jquery.qtip2.min.js"></script>
+		<script type="text/javascript" src="/js/post.js"></script>
+		
+		<script type="text/javascript" src="/js/footnotes.js"></script>
+		
+		
+		<script type="text/javascript" src="/js/references.js"></script>
+		
+		
+	</body>
+</html>
diff --git a/spec/fixtures/issue-41793.html b/spec/fixtures/issue-41793.html
new file mode 100644
index 0000000..753844a 100644
--- /dev/null
+++ a/spec/fixtures/issue-41793.html
@@ -1,0 +1,1603 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<!-- Global site tag (gtag.js) - Google Analytics -->
+		<script async src="https://www.googletagmanager.com/gtag/js?id=UA-58347753-2"></script>
+		<script>
+		  window.dataLayer = window.dataLayer || [];
+		  function gtag(){dataLayer.push(arguments);}
+		  gtag('js', new Date());		
+		  gtag('config', 'UA-58347753-2');
+		</script>
+		<meta charset="utf-8">
+		<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+		<meta property="og:image" content="/issue/41793/og_image.jpg" />
+		
+
+		
+		
+		<title>Project MUSE - portal: Libraries and the Academy-Volume 20, Number 1, January 2020</title>
+		<link rel="search" type="application/opensearchdescription+xml" title="Search Project MUSE from your browser's Searchbar" href="/plugins/muse-opensearch.xml" />
+		
+		
+		<link rel="stylesheet" type="text/css" href="/css/normalize.css"/>
+		<link href="/css/jquery.qtip2.css" rel="stylesheet" type="text/css" />
+<!-- 		foundation 6.4.1 custom float/typ/vis 250rem max width 30col float grid -->
+		<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,600,600i,700,700i" rel="stylesheet">
+		<link rel="stylesheet" type="text/css" href="/css/foundation.min.css"/>
+		<link rel="stylesheet" type="text/css" href="/css/style_home2.css?031820"/>
+		
+		
+		
+		
+		
+
+		<script type="text/javascript" src="/js/jquery3.js"></script>		
+		<script type="text/javascript" src="/js/pre.js"></script>
+		<script type="text/javascript" src="/js/core/head.js?new"></script>
+		
+		<script type="text/javascript" src="https://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4ecb5479089cb81a"></script>
+
+		
+		
+		
+		<title>Article</title>
+	</head>
+	<body>
+		<a id="skip" href="#skip_target">[Skip to Content]</a>
+		<span id="top"></span>
+		<div id="header" role="banner" aria-label="header">
+			<div class="row wrap" id="institution_banner">
+				<div class="content">
+					<div id="institution_wrap" class="columns small-15 medium-text-left">
+						<div id="institution" class="img_text_col">
+							<div class="img_contain_left"><img src="/images/institution.png" alt="institution icon" /></div>
+							<div class="text_contain_left"><span class="small"><a href='/account' class='color_white login_status'>Institutional Login</a></span></div>
+						</div>
+					</div>
+					<div id="person_wrap" class="columns small-15">
+						<div id="person" class="img_text_col">
+							<div class="img_contain_right"><img src="/images/person.png" alt="account icon" /></div>
+							<div class="text_contain_right"><span class="small"><a href="/account/" class="color_white login_status" onclick="gtag('event', 'click', {'event_category': 'Account link', 'event_label': 'account name link - header'});">LOG IN</a></span></div>
+						</div>
+					</div>
+				</div>
+			</div>
+			
+			
+			
+			<div class="row wrap" id="search_banner">
+				<div class="content">
+					<div class="medium-4 small-4 columns" id="header_logo_wrap">
+						<div id="header_logo">
+							<a href="/"><img src="/images/muselogo.png" alt="Project MUSE" class="show-for-large"/>
+							<img src="/images/muselogo_notext.png" alt="Project MUSE" class="hide-for-large"/></a>							
+						</div>
+					</div>
+					<div class="medium-21 small-22 columns" id="search_bar_wrap">				
+						<div class="row"> 
+							<div id="browse_button_wrap">
+								<a id="browse_button" href="/browse" onclick="gtag('event', 'click', {'event_category': 'Browse link', 'event_label': 'browse button - header'});"><span class="small">browse</span></a>
+							</div>
+							<div id="or_text_wrap" class="show-for-medium">
+								<div id="or_text">
+									<span class="small">or</span> 
+								</div>
+							</div>
+							<div id="search_input_wrap" class="small-30">
+								<div id="search_input">
+  								
+  								<noscript>
+										<form method="post" action="/search/">
+										<input name="no_js_header_query"/>
+										<input type="hidden" name="action" value="search"/>
+										<input type="hidden" name="t" value="header"/>
+										<a id="search_button">
+										
+										<input type="image" src="/images/search_white.png" alt="Search icon"/>
+										
+                    </a>
+										</form>
+									</noscript>
+								
+									<script>document.write('<input name="search_input_header" id="search_input_header" aria-label="search input"/>');</script>									
+									
+									<script>document.write('<a id="search_button"><img src="/images/search_white.png" alt="Search icon"/></a>');</script>
+									
+									
+								</div>
+							</div>
+						</div>				
+					</div>
+				
+					<div class="medium-5 small-4 columns" id="menu_wrap">
+						<div id="menu" class="menu-btn">
+	<div class="nav-toggle">
+		<div class="nav-toggle-btn">
+			<a href="#" class="menu-icon-wrap">
+				<span class="icon"></span>
+				<span class="small show-for-large">menu</span>
+			</a>
+		</div>
+
+		<div class="nav-mobile">
+			<a href="/search">Advanced Search</a>
+			<a href="/browse">Browse</a>
+			<script>
+				document.write('<div class="accordion">');
+			</script>
+			<noscript>
+				<div class="accordion noscript">
+			</noscript>
+				<a href="#" class="acc_trig open"><span>MyMUSE Account</span></a>
+				<div class="acc_block">
+					<a href="/account">Log In / Sign Up</a>
+					<a href="/account/change">Change My Account</a>
+					<a href="/account/user_settings">User Settings</a>
+					<a href="/account/">Access via Institution</a>
+					<a href="/account/saved_items">MyMUSE Library</a>
+					<a href="/account/search_history">Search History</a>
+					<a href="/account/view_history">View History</a>
+					<a href="/account/purchase_history">Purchase History</a>
+					<a href="/account/alerts">MyMUSE Alerts</a>
+																
+				</div>
+			</div>									
+			
+			<div class="nav-mobile-footer">
+				<!--<a class="modal_trigger">Contact Support</a>-->
+				<a href="/contact">Contact Support</a>
+			</div>
+		</div>
+	</div>
+</div>
+		
+ 
+					</div>
+				</div>
+			</div>
+			
+			
+			
+		</div>
+
+<script type="text/javascript">
+  var next_iid = 0;
+</script>
+<script src="/js/jquery.bullseye.js"></script>
+<script src="/js/serval/issue.js"></script>
+  
+<script type="text/javascript">
+  $(document).ready(function() {
+    var window_w = $(window).width();
+    var img_w = "";
+    var img_h = "";
+    var opt_w = img_w;
+    var opt_h = img_h;    
+    var ratio = 1;
+    if(img_w >= window_w) { 
+      opt_w = window_w - 60; 
+      ratio = opt_w/img_w;
+    }    
+    opt_h = ratio*img_h;
+    $('#issue_cover_thumb').qtip({
+      content: {
+        text: "<div class='qtip-cover'><p><a href='/issue/41793/image/front_cover.jpg'>View Full Resolution</a></p><img height='"+opt_h+"' width='"+opt_w+"' src='/issue/41793/image/front_cover.jpg' /> </div>",
+        title: {
+          text: 'Cover for Volume 20, Number 1, January 2020',
+          button: 'Close'
+        }, 
+      },
+      show: 'click',
+      hide: false,
+      position: {
+        my: 'top left',
+        at: 'top left',
+        target: $('.content')
+      },
+      style: {
+        classes: 'ui-tooltip-dark ui-tooltip-rounded ui-tooltip-shadow qtip-journalcover'
+      },
+      hide: 'unfocus'      
+    });
+  });
+</script>
+  
+<script>
+  $(document).ready(function() {
+    $("#login_alert").click(function(){
+       if (confirm("You must be logged into a MyMUSE account in order to create an alert for this journal.\n\nContinue to login?")){
+	  $("#login_alert_form").submit();
+       }
+    });
+  });
+</script>
+<div id="main">
+	<div id="journal_about_wrap" class="about_wrap">
+		<div id="journal_banner_wrap" class="banner_wrap">
+			<div class="content" style="background-color:rgb(102,153,153);background:linear-gradient(to right, rgb(0,0,0),rgb(102,153,153) 70%); filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#000000', endColorstr='#669999');">
+				<div id="journal_banner_title_wrap" class="wrap left banner_title_wrap">
+					<div id="journal_banner_title" class="banner_title">
+						<h2><a href="/journal/159">portal: Libraries and the Academy</a></h2>
+					</div>
+				</div>
+				<div id="journal_banner_search_wrap" class="show-for-medium wrap banner_search_wrap">
+					<div id="journal_banner_search" role="search" aria-label="search inside this journal">
+						<div>
+							<!-- nojs variant -->
+							<noscript>
+							  <form method="post" action="/search/" aria-label="search within this journal text input" title="search within this journal text input">
+								<input type="text" name="no_js_header_query" aria-label="search within this journal text input" placeholder="Search Within Journal"/>
+								<input type="hidden" name="action" value="search" />
+								<input type="hidden" name="t" value="search_journal_header" />
+								<input type="hidden" name="search_within_journal_id" id="search_within_journal_id" value="159" />
+								<a id="search_within_journal_button">
+								  
+									<input type="image" alt="a magnifying glass search icon" src="/images/search_blue.png" aria-label="submit search"/>
+								  
+								</a>
+							  </form>
+							</noscript>  
+							<!-- js variant -->
+							<script>
+							  // hook for js, journal limiter
+							  document.write('<input type="hidden" name="search_within_journal_id" id="search_within_journal_id" value="159" />');
+							  // text input
+							  document.write('<input type="text" name="search_within_journal_input" id="search_within_journal_input" title="search within journal" aria-label="search within journal" placeholder="Search Within Journal"/>');
+							</script>
+							
+							<script>
+							  // light mode button
+							  document.write('<a id="search_within_journal_button"><img src="/images/search_blue.png" alt="a magnifying glass search icon"/></a>');
+							</script>
+							
+						</div>
+					</div>
+				</div>
+				<div class="clear"></div>
+			</div>	
+		</div>
+		<div id="journal_about" class="wrap about">
+		
+		
+		  
+		    <form id="login_alert_form" method="POST" action="/account/">					
+		    <input type="hidden" name="return_on_login" value="/issue/41793">
+		    <a id="login_alert" class="btn_add_alert">+ MUSE Alert</a>
+		    </form>
+		  
+		
+		
+		
+		<script>
+			var html = '<div id="share_block">'+
+			'<div id="share_block_text">'+
+			'<div class="social">'+
+			'<ul class="addthis_toolbox addthis_default_style rightnav_links_share" addthis:url="https://muse.jhu.edu/issue/41793" addthis:title="Project MUSE - portal: Libraries and the Academy: Volume 20, Number 1, January 2020">'+
+			'<li><a class="addthis_button_citeulike addthis_24x24_style"></a>'+
+			'<a class="addthis_button_facebook addthis_24x24_style"></a>'+
+			'<a class="addthis_button_delicious addthis_24x24_style"></a>'+
+			'<a class="addthis_button_twitter addthis_24x24_style" tw:screen_name="ProjectMUSE"></a>'+
+			'<a class="addthis_button_google addthis_24x24_style"></a>'+
+			'<a href="http://www.addthis.com/bookmark.php?v=250&amp;pubid=xa-4ecac55a1fd58a05" tabindex="-1" class="addthis_button_compact addthis_24x24_style"></a></li>'+
+			''+
+			'</div>'+
+			'</div>'+
+			'</div>';
+			document.write(html);
+		</script>
+			<div class="title_wrap">
+				<h2>In this Issue</h2>
+			</div>
+		
+			<div id="journal_about_info_wrap" class="about_info_wrap">
+				<div id="journal_about_info" class="cards_wrap about_info" role="complementary" aria-label="journal information">
+					<div class="card">
+						
+						<div class="card_image">
+							<img id="issue_cover_thumb" src="/issue/41793/image/front_cover.jpg?format=180" alt="issue cover image"/>
+							
+							
+							<div style="text-align: center; padding-top: 10px; font-size: 15px;">
+								<a href="#info_wrap">Additional Information</a>
+							</div>
+						</div>
+						
+						<div class="card_text ">
+							<ul>
+							<li class="title"><span><a href="/journal/159">Volume 20, Number 1, January 2020</a></span></li>
+							
+							
+								<li class="type"><span class="issue">Issue</span></li>
+								<li>
+								
+								<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/free_access.png" alt="free access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+	<a href="/issue/41793">
+  
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="issue:41793"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/issue:41793/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+
+</ul>
+
+</div>
+                                                                                                                                
+								</li>
+								
+								
+								
+								
+								<!--
+								
+								-->
+								
+								
+								
+								
+							</ul>
+						</div>
+						
+						
+						<div class="card_summary_wrap">
+							<div class="card_summary">
+								<p>Focusing on important research about the role of academic libraries and librarianship, <i>portal</i> also features commentary on issues in technology and publishing. Written for all those interested in the role of libraries within the academy, <i>portal</i> includes peer-reviewed articles addressing subjects such as library administration, information technology, and information policy. In its inaugural year, <i>portal</i> earned recognition as the runner-up for best new journal, awarded by the Council of Editors of Learned Journals (CELJ). An article in  <i>portal</i>, "Master's and Doctoral Thesis Citations: Analysis and Trends of a Longitudinal Study," won the Jesse H. Shera Award for Distinguished Published Research from the Library Research Round Table of the American Library Association.</p>
+							</div>
+							<div class="card_publisher_image">
+								
+									
+									<a href="/search?action=browse&limit=publisher_id:1"><img src="/publisher/1/image/colophon.jpg" alt="publisher colophon"/></a>
+									
+								
+							</div>							
+							<div class="card_publisher">
+								
+								<h4 class="small">published by</h4>
+								<span><a href="/search?action=browse&limit=publisher_id:1">Johns Hopkins University Press</a></span>
+								
+							</div>
+							<div class="card_current">
+								
+								<h4 class="small">viewing issue</h4>
+								<span>Volume 20, Number 1, January 2020</span>
+								
+							</div>
+
+							
+						</div>
+					</div>
+				</div>
+				
+			
+				<div id="journal_about_content_select" class="row about_content_select">
+					
+<!-- 					<div class="columns large-20 full"> -->
+					<div class="columns small-30 full">
+						<div class="toc_header_wrap">
+							<div class="option" id="toc_header">
+								<h2>Table of Contents</h2>
+							</div>
+							
+								<div id="toc_format_wrap" class="option">
+								  <a class="toc_format_button" href="/issue/41793/print">View Formatted Version</a>
+								</div>
+								
+						</div>
+						
+						<div id="articles_list_wrap" class="alternate_content_render">
+							<div class="articles_list_text toc " role="main" aria-label="articles in this issue">
+								
+							  <a id="skip_target"></a>
+
+								<div class="cards_wrap vertical_list">
+		<!-- 
+									<div class="title_wrap partial">
+										<h2>Articles</h2>
+									</div>
+		 -->
+
+
+									
+
+									<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/747551">Coming of Age: <i>portal</i> at 20</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Marianne Ryan%22">Marianne Ryan</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 1-5</li>
+			<li class="doi">DOI: <a href="https://doi.org/10.1353/pla.2020.0000">10.1353/pla.2020.0000</a></li>			
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/free_access.png" alt="free access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+	<a href="/article/747551">
+  <img src="/images/html_icon.png" class="icon" alt="View HTML">
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/747551/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:747551"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:747551/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+
+</ul>
+
+</div>
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 747551 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/747552">Techniques to Imagine, Fund, and Build the Academic Library of Your Dreams</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Janette S. Blackburn%22">Janette S. Blackburn</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 7-14</li>
+			<li class="doi">DOI: <a href="https://doi.org/10.1353/pla.2020.0001">10.1353/pla.2020.0001</a></li>			
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/free_access.png" alt="free access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+	<a href="/article/747552">
+  <img src="/images/html_icon.png" class="icon" alt="View HTML">
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/747552/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:747552"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:747552/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+
+</ul>
+
+</div>
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 747552 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/747553">The International Open Access Movement and Its Status in Pakistan</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Arslan Sheikh%22">Arslan Sheikh</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 15-31</li>
+			<li class="doi">DOI: <a href="https://doi.org/10.1353/pla.2020.0002">10.1353/pla.2020.0002</a></li>			
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/free_access.png" alt="free access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+	<a href="/article/747553">
+  <img src="/images/html_icon.png" class="icon" alt="View HTML">
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/747553/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:747553"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:747553/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+
+</ul>
+
+</div>
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 747553 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/747554">Big Data and Academic Libraries: The Quest for Informed Decision-Making</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Tiffini A. Travis%22">Tiffini A. Travis</a>, </span>
+			 
+			 <a href="/search?action=search&&query=author:%22Christian Ramirez%22">Christian Ramirez</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 33-47</li>
+			<li class="doi">DOI: <a href="https://doi.org/10.1353/pla.2020.0003">10.1353/pla.2020.0003</a></li>			
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/free_access.png" alt="free access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+	<a href="/article/747554">
+  <img src="/images/html_icon.png" class="icon" alt="View HTML">
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/747554/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:747554"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:747554/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+
+</ul>
+
+</div>
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 747554 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/747555">From Service Role to Partnership: Faculty Voices on Collaboration with Librarians</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Maria A. Perez-Stable%22">Maria A. Perez-Stable</a>, </span>
+			 
+			 <a href="/search?action=search&&query=author:%22Judith M. Arnold%22">Judith M. Arnold</a>, </span>
+			 
+			 <a href="/search?action=search&&query=author:%22LuMarie F. Guth%22">LuMarie F. Guth</a>, </span>
+			 
+			 <a href="/search?action=search&&query=author:%22Patricia Fravel Vander Meer%22">Patricia Fravel Vander Meer</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 49-72</li>
+			<li class="doi">DOI: <a href="https://doi.org/10.1353/pla.2020.0004">10.1353/pla.2020.0004</a></li>			
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/free_access.png" alt="free access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+	<a href="/article/747555">
+  <img src="/images/html_icon.png" class="icon" alt="View HTML">
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/747555/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:747555"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:747555/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+
+</ul>
+
+</div>
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 747555 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/747556">Attitudes of North American Academics toward Open Access Scholarly Journals</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Elizabeth D. Dalton%22">Elizabeth D. Dalton</a>, </span>
+			 
+			 <a href="/search?action=search&&query=author:%22Carol Tenopir%22">Carol Tenopir</a>, </span>
+			 
+			 <a href="/search?action=search&&query=author:%22Bo-Christer Björk%22">Bo-Christer Björk</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 73-100</li>
+			<li class="doi">DOI: <a href="https://doi.org/10.1353/pla.2020.0005">10.1353/pla.2020.0005</a></li>			
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/free_access.png" alt="free access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+	<a href="/article/747556">
+  <img src="/images/html_icon.png" class="icon" alt="View HTML">
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/747556/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:747556"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:747556/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+
+</ul>
+
+</div>
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 747556 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/747557">A Multi-Method Information Literacy Assessment Program: Foundation and Early Results</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22William H. Walters%22">William H. Walters</a>, </span>
+			 
+			 <a href="/search?action=search&&query=author:%22Sarah E. Sheehan%22">Sarah E. Sheehan</a>, </span>
+			 
+			 <a href="/search?action=search&&query=author:%22Amy E. Handfield%22">Amy E. Handfield</a>, </span>
+			 
+			 <a href="/search?action=search&&query=author:%22Bernadette M. López-Fitzsimmons%22">Bernadette M. López-Fitzsimmons</a>, </span>
+			 
+			 <a href="/search?action=search&&query=author:%22Susanne Markgren%22">Susanne Markgren</a>, </span>
+			 
+			 <a href="/search?action=search&&query=author:%22Laurin Paradise%22">Laurin Paradise</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 101-135</li>
+			<li class="doi">DOI: <a href="https://doi.org/10.1353/pla.2020.0006">10.1353/pla.2020.0006</a></li>			
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/free_access.png" alt="free access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+	<a href="/article/747557">
+  <img src="/images/html_icon.png" class="icon" alt="View HTML">
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/747557/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:747557"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:747557/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+
+</ul>
+
+</div>
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 747557 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/747558">The Problem with Grit: Dismantling Deficit Thinking in Library Instruction</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Eamon Tewell%22">Eamon Tewell</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 137-159</li>
+			<li class="doi">DOI: <a href="https://doi.org/10.1353/pla.2020.0007">10.1353/pla.2020.0007</a></li>			
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/free_access.png" alt="free access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+	<a href="/article/747558">
+  <img src="/images/html_icon.png" class="icon" alt="View HTML">
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/747558/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:747558"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:747558/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+
+</ul>
+
+</div>
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 747558 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/747559">Apprenticing Researchers: Exploring Upper-Division Students' Information Literacy Competencies</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Sara L. Davidson Squibb%22">Sara L. Davidson Squibb</a>, </span>
+			 
+			 <a href="/search?action=search&&query=author:%22Anne Zanzucchi%22">Anne Zanzucchi</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 161-185</li>
+			<li class="doi">DOI: <a href="https://doi.org/10.1353/pla.2020.0008">10.1353/pla.2020.0008</a></li>			
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/free_access.png" alt="free access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+	<a href="/article/747559">
+  <img src="/images/html_icon.png" class="icon" alt="View HTML">
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/747559/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:747559"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:747559/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+
+</ul>
+
+</div>
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 747559 -->
+
+<div class="card row small-30 no_image">
+	<div class="card_text">
+		<ol>
+			
+			<li class="title"><span>
+				<a href="/article/747560">E-Book Information Behaviors and Formats among Graduate Students in Information Sciences</a>
+				
+      </span></li>
+			
+			
+			<li class="author"><span>
+			 
+			 <a href="/search?action=search&&query=author:%22Daniel G. Tracy%22">Daniel G. Tracy</a></span>
+			 
+			</li> 
+			
+
+			
+			<li class="pg">pp. 187-220</li>
+			<li class="doi">DOI: <a href="https://doi.org/10.1353/pla.2020.0009">10.1353/pla.2020.0009</a></li>			
+			<li class="interact">
+			<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/free_access.png" alt="free access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+<li>
+	<a href="/article/747560">
+  <img src="/images/html_icon.png" class="icon" alt="View HTML">
+	<span class="link_text">
+	View
+	</span>
+	</a>
+</li>
+
+
+
+
+<li>
+  <a href="/article/747560/pdf">
+  <img src="/images/pdf.png" alt="Download PDF" class="icon">
+  <span class="link_text">
+	  
+    Download
+  	
+  </span>
+	</a>
+</li>
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="article:747560"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/article:747560/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+
+</ul>
+
+</div>
+			
+			
+			</li>
+			
+			
+		</ol>
+	</div>
+</div>
+
+<!-- article 747560 -->
+
+
+							
+								</div>
+							</div>
+							
+						</div>
+					</div>
+					
+					
+					
+<!-- rightnav here -->
+				
+				
+									
+				</div>
+
+
+
+
+
+<!-- 
+<div style="background-color: orange; width: 100%; padding: 25px;">
+ 
+  <div>PREV: <a href="/article/41038">Volume 19, Number 4, October 2019</a></div>
+ 
+ 
+</div>
+ -->
+
+
+			</div>
+		</div>
+		<div id="previous_next_interface" class="row wrap">
+			<div class="columns small-30 large-15 full">
+			
+				<div class="title_wrap">
+					<h2>Previous Issue</h2>
+				</div>
+				<p><a href="/issue/41038">Volume 19, Number 4, October 2019</a></p>
+			
+			</div>
+			<div class="columns small-30 large-15 full">
+			
+			</div>	
+		</div>
+		
+		<div id="info_wrap" class="row wrap">
+	<div class="column full">
+		<div class="title_wrap details">
+			<h2>Additional Information</h2>
+		</div>
+		<div class="details_tbl">		
+							
+			<div class="details_row">
+				<div class="cell label">
+					ISSN
+				</div>
+				<div class="cell">
+					1530-7131
+				</div>
+			</div>
+			
+			
+			<div class="details_row">
+				<div class="cell label">
+					Print ISSN
+				</div>
+				<div class="cell">
+					1531-2542
+				</div>
+			</div>
+			
+			
+			
+			
+			
+			
+									
+			
+			<div class="details_row">
+				<div class="cell label">
+					Launched on MUSE
+				</div>
+				<div class="cell">
+					2020-02-05
+				</div>
+			</div>
+			
+			
+			
+			
+			<div class="details_row">
+				<div class="cell label">
+					Open Access
+				</div>
+				<div class="cell">
+					
+					No
+					
+				</div>
+			</div>
+			
+			
+			
+				
+			
+			
+		</div>
+	</div>
+	<div class="column full">
+		
+		
+		<div class="title_wrap">
+			<h2>Copyright</h2>
+		</div>
+		<div class="copyright">
+			<p>Copyright © The Johns Hopkins University Press.</p>
+		</div>
+		
+
+		
+		
+		<div class="supp">
+			
+
+			
+			<div class="title_wrap">
+				<h2>Additional Issue Materials</h2>
+			</div>			
+			<div class="edboard_wrap">
+			<ul class="edboards ">
+			
+				<li>
+				<a href="/issue/41793/doc/editorial.html#toc_header">
+				Editorial Board
+				
+				
+				</a></li>
+			
+			</ul>
+			</div>
+			
+		</div>
+		
+
+	</div>
+</div>
+
+		
+
+		
+	</div>	
+</div>
+
+		<div id="footer_block" role="banner" aria-label="footer">
+			<div class="content">
+				<div class="wrap row" id="about_wrap">
+					<div id="about">
+						<h3>Project MUSE Mission</h3>
+						<p>Project MUSE promotes the creation and dissemination of essential humanities and social science resources through collaboration with libraries, publishers, and scholars worldwide. Forged from a partnership between a university press and a library, Project MUSE is a trusted part of the academic and scholarly community it serves.</p>
+					</div>
+					<div id="about_logo" class="columns medium-10 show-for-large">
+						<img src="/images/muselogo_notext.png" alt="MUSE logo"/>
+					</div>
+				</div>
+			</div>
+			
+			<div class="footer_main">
+				<div class="footer_item_color wrap">
+					<div class="footer_item_left">
+						<div class="group">
+							<div class="footer_item_about cont_sub">
+								<h5 class="small">about</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/publishers">Publishers</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/discovery-partners/">Discovery Partners</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/advisory-board/">Advisory Board</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/journal-subscribers/">Journal Subscribers</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/book-customers">Book Customers</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/at-conferences/">Conferences</a></li>
+								</ul>
+							</div>
+							<div class="footer_item_res cont_sub">
+								<h5 class="small">resources</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/resources/news/">News & Announcements</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/promotional-materials">Promotional Material</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/alerts">Get Alerts</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/muse-presentations">Presentations</a></li>
+								</ul>
+							</div>
+							<div class="clear"></div>
+						</div>
+						<div class="group">
+							<div class="footer_item_what cont_sub">
+								<h5 class="small">what's on muse</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/muse">Open Access</a></li>
+									<li><a href="https://about.muse.jhu.edu/pub/journals">Journals</a></li>
+									<li><a href="https://about.muse.jhu.edu/pub/books">Books</a></li>
+								</ul>
+							</div>
+							<div class="footer_item_info cont_sub">
+								<h5 class="small">information for</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/publishers">Publishers</a></li>
+									<li><a href="https://about.muse.jhu.edu/librarians">Librarians</a></li>
+									<li><a href="https://about.muse.jhu.edu/individuals">Individuals</a></li>
+								</ul>
+							</div>
+							<div class="clear"></div>
+						</div>
+					</div>
+					<div class="footer_item_right">
+						<div class="group">
+							<div class="footer_item_social cont_sub">
+								<h5 class="small">Contact</h5>
+								<ul>
+									<li class="clear"><a href="/contact">Contact Us</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/help-overview">Help</a></li>
+								</ul>
+								<ul>
+									<li>
+										<ol class="social_icons">
+											<li class="list_h"><a href="https://www.facebook.com/ProjectMUSE"><img src="/images/footer_icon_fb.png" alt="Facebook" /></a></li>
+											<li class="list_h"><a href="https://www.linkedin.com/company/projectmuse/"><img src="/images/footer_icon_linkedin.png" alt="Linkedin" /></a></li>
+											<li class="list_h"><a href="https://twitter.com/ProjectMUSE"><img src="/images/footer_icon_twitter.png" alt="Twitter" /></a></li>
+										</ol>
+									</li>
+								</ul>
+							</div>
+							<div class="footer_item_policy cont_sub">
+								<h5 class="small">Policy & Terms</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/about/accessibility/">Accessibility</a></li>
+									<li><a href="/privacy_policy">Privacy Policy</a></li>
+									<li><a href="/terms_use">Terms of Use</a></li>	
+								</ul>
+							</div>
+							<div class="clear"></div>
+						</div>
+						<div class="group">
+							<div class="footer_item_addr cont_sub">
+								<p class="address"><span>2715 North Charles Street<br/>Baltimore, Maryland, USA 21218</span></p>
+								<p class="phone"><span><a href="tel:1-410-516-6989">+1 (410) 516-6989</a></span><br>
+								<span><a href="mailto:muse@press.jhu.edu">muse@press.jhu.edu</a></span></p>
+								<p class="footer_text_sm copy color_oxfordblue hide-for-small"><span>&copy;2020 Project MUSE. Produced by Johns Hopkins University Press in collaboration with The Sheridan Libraries.</span></p>
+							</div>
+							<div class="footer_item_logo cont_sub">
+								<p class="show-for-medium"><span class="semiboldit footer_text_sm">Now and always,<br/>The Trusted Content Your Research Requires.</span></p>
+								<p><span><a href="https://muse.jhu.edu">
+								
+								<img class="show-for-medium" src="/images/muselogoblack.png" alt="Project MUSE logo" />
+								
+								<img class="hide-for-medium" src="/images/muselogo.png" alt="Project MUSE logo" /></a></span></p>
+								<p class="hide-for-medium"><span class="semiboldit footer_text_sm">Now and always, The Trusted Content Your Research Requires.</span></p>
+								<p class="hide-for-small"><span class="footer_text_sm">Built on the Johns Hopkins University Campus</span></p>
+							</div>
+							<div class="clear"></div>
+						</div>
+					</div>
+					<div class="clear"></div>
+				</div>
+			</div>
+			<div class="footer_item_sub wrap hide-for-medium">
+				<p><span class="footer_text_sm">Built on the Johns Hopkins University Campus</span></p>		
+				<p class="footer_text_sm copy color_oxfordblue"><span>&copy;2020 Project MUSE. Produced by Johns Hopkins University Press in collaboration with The Sheridan Libraries.</span></p>			
+			</div>		
+		</div>
+		
+		
+		
+		
+		<div id="btn_top">
+			<a href="#top"><span>Back To Top</span></a>
+		</div>
+		
+		
+		
+		  <input type="hidden" name="cookie_acknowledgement_type"  id="cookie_acknowledgement_type" value="cookie_acknowledgement">
+		
+		
+		
+			<div id="cookies_msg">
+				<p>This website uses cookies to ensure you get the best experience on our website. Without cookies your experience may not be seamless.</p>
+				<script>document.writeln('<a href="javascript://" class="btn_accept" id="accept_cookie_msg">Accept</a>');</script>
+				<noscript>	
+						
+								<form method="post" action="/account/set_attribute_no_ajax/cookie_acknowledgement/1">
+						
+						<input type="submit" class="btn_accept" value="accept">
+						</form>
+				</noscript>
+			</div>
+		
+		
+		<script type="text/javascript" src="/js/lightbox.js"></script>
+		<script type="text/javascript" src="/js/jquery.qtip2.min.js"></script>
+		<script type="text/javascript" src="/js/post.js"></script>
+		
+		<script type="text/javascript" src="/js/footnotes.js"></script>
+		
+		
+		<script type="text/javascript" src="/js/references.js"></script>
+		
+	</body>
+</html>
diff --git a/spec/fixtures/journal-159.html b/spec/fixtures/journal-159.html
new file mode 100644
index 0000000..e46aded 100644
--- /dev/null
+++ a/spec/fixtures/journal-159.html
@@ -1,0 +1,1522 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+		<!-- Global site tag (gtag.js) - Google Analytics -->
+		<script async src="https://www.googletagmanager.com/gtag/js?id=UA-58347753-2"></script>
+		<script>
+		  window.dataLayer = window.dataLayer || [];
+		  function gtag(){dataLayer.push(arguments);}
+		  gtag('js', new Date());		
+		  gtag('config', 'UA-58347753-2');
+		</script>
+		<meta charset="utf-8">
+		<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+		<meta property="og:image" content="/journal/159/og_image.jpg" />
+		
+
+		
+		
+		<title>Project MUSE - portal: Libraries and the Academy</title>
+		<link rel="search" type="application/opensearchdescription+xml" title="Search Project MUSE from your browser's Searchbar" href="/plugins/muse-opensearch.xml" />
+		
+		
+		<link rel="stylesheet" type="text/css" href="/css/normalize.css"/>
+		<link href="/css/jquery.qtip2.css" rel="stylesheet" type="text/css" />
+<!-- 		foundation 6.4.1 custom float/typ/vis 250rem max width 30col float grid -->
+		<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,600,600i,700,700i" rel="stylesheet">
+		<link rel="stylesheet" type="text/css" href="/css/foundation.min.css"/>
+		<link rel="stylesheet" type="text/css" href="/css/style_home2.css?031820"/>
+		
+		
+		
+		
+		
+
+		<script type="text/javascript" src="/js/jquery3.js"></script>		
+		<script type="text/javascript" src="/js/pre.js"></script>
+		<script type="text/javascript" src="/js/core/head.js?new"></script>
+		
+		<script type="text/javascript" src="https://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4ecb5479089cb81a"></script>
+
+		
+		
+		
+		<title>Article</title>
+	</head>
+	<body>
+		<a id="skip" href="#skip_target">[Skip to Content]</a>
+		<span id="top"></span>
+		<div id="header" role="banner" aria-label="header">
+			<div class="row wrap" id="institution_banner">
+				<div class="content">
+					<div id="institution_wrap" class="columns small-15 medium-text-left">
+						<div id="institution" class="img_text_col">
+							<div class="img_contain_left"><img src="/images/institution.png" alt="institution icon" /></div>
+							<div class="text_contain_left"><span class="small"><a href='/account' class='color_white login_status'>Institutional Login</a></span></div>
+						</div>
+					</div>
+					<div id="person_wrap" class="columns small-15">
+						<div id="person" class="img_text_col">
+							<div class="img_contain_right"><img src="/images/person.png" alt="account icon" /></div>
+							<div class="text_contain_right"><span class="small"><a href="/account/" class="color_white login_status" onclick="gtag('event', 'click', {'event_category': 'Account link', 'event_label': 'account name link - header'});">LOG IN</a></span></div>
+						</div>
+					</div>
+				</div>
+			</div>
+			
+			
+			
+			<div class="row wrap" id="search_banner">
+				<div class="content">
+					<div class="medium-4 small-4 columns" id="header_logo_wrap">
+						<div id="header_logo">
+							<a href="/"><img src="/images/muselogo.png" alt="Project MUSE" class="show-for-large"/>
+							<img src="/images/muselogo_notext.png" alt="Project MUSE" class="hide-for-large"/></a>							
+						</div>
+					</div>
+					<div class="medium-21 small-22 columns" id="search_bar_wrap">				
+						<div class="row"> 
+							<div id="browse_button_wrap">
+								<a id="browse_button" href="/browse" onclick="gtag('event', 'click', {'event_category': 'Browse link', 'event_label': 'browse button - header'});"><span class="small">browse</span></a>
+							</div>
+							<div id="or_text_wrap" class="show-for-medium">
+								<div id="or_text">
+									<span class="small">or</span> 
+								</div>
+							</div>
+							<div id="search_input_wrap" class="small-30">
+								<div id="search_input">
+  								
+  								<noscript>
+										<form method="post" action="/search/">
+										<input name="no_js_header_query"/>
+										<input type="hidden" name="action" value="search"/>
+										<input type="hidden" name="t" value="header"/>
+										<a id="search_button">
+										
+										<input type="image" src="/images/search_white.png" alt="Search icon"/>
+										
+                    </a>
+										</form>
+									</noscript>
+								
+									<script>document.write('<input name="search_input_header" id="search_input_header" aria-label="search input"/>');</script>									
+									
+									<script>document.write('<a id="search_button"><img src="/images/search_white.png" alt="Search icon"/></a>');</script>
+									
+									
+								</div>
+							</div>
+						</div>				
+					</div>
+				
+					<div class="medium-5 small-4 columns" id="menu_wrap">
+						<div id="menu" class="menu-btn">
+	<div class="nav-toggle">
+		<div class="nav-toggle-btn">
+			<a href="#" class="menu-icon-wrap">
+				<span class="icon"></span>
+				<span class="small show-for-large">menu</span>
+			</a>
+		</div>
+
+		<div class="nav-mobile">
+			<a href="/search">Advanced Search</a>
+			<a href="/browse">Browse</a>
+			<script>
+				document.write('<div class="accordion">');
+			</script>
+			<noscript>
+				<div class="accordion noscript">
+			</noscript>
+				<a href="#" class="acc_trig open"><span>MyMUSE Account</span></a>
+				<div class="acc_block">
+					<a href="/account">Log In / Sign Up</a>
+					<a href="/account/change">Change My Account</a>
+					<a href="/account/user_settings">User Settings</a>
+					<a href="/account/">Access via Institution</a>
+					<a href="/account/saved_items">MyMUSE Library</a>
+					<a href="/account/search_history">Search History</a>
+					<a href="/account/view_history">View History</a>
+					<a href="/account/purchase_history">Purchase History</a>
+					<a href="/account/alerts">MyMUSE Alerts</a>
+																
+				</div>
+			</div>									
+			
+			<div class="nav-mobile-footer">
+				<!--<a class="modal_trigger">Contact Support</a>-->
+				<a href="/contact">Contact Support</a>
+			</div>
+		</div>
+	</div>
+</div>
+		
+ 
+					</div>
+				</div>
+			</div>
+			
+			
+			
+		</div>
+
+  
+<script type="text/javascript">
+  $(document).ready(function() {
+    var window_w = $(window).width();
+    var img_w = "";
+    var img_h = "";
+    var opt_w = img_w;
+    var opt_h = img_h;    
+    var ratio = 1;
+    if(img_w >= window_w) { 
+      opt_w = window_w - 60; 
+      ratio = opt_w/img_w;
+    }    
+    opt_h = ratio*img_h;
+    $('#journal_cover_thumb').qtip({
+      content: {
+        text: "<div class='qtip-cover'><p><a href='/journal/159/image/front_cover.jpg'>View Full Resolution</a></p><img height='"+opt_h+"' width='"+opt_w+"' src='/journal/159/image/front_cover.jpg' /> </div>",
+        title: {
+          text: 'Cover for portal: Libraries and the Academy',
+          button: 'Close'
+        }, 
+      },
+      show: 'click',
+      hide: false,
+      position: {
+        my: 'top left',
+        at: 'top left',
+        target: $('.content')
+      },
+      style: {
+        classes: 'ui-tooltip-dark ui-tooltip-rounded ui-tooltip-shadow qtip-journalcover'
+      },
+      hide: 'unfocus'      
+    });
+    
+  
+  
+  });
+  
+</script>
+ 
+<script>
+  $(document).ready(function() {
+    $("#login_alert").click(function(){
+       if (confirm("You must be logged into a MyMUSE account in order to create an alert for this journal.\n\nContinue to login?")){
+	  $("#login_alert_form").submit();
+       }
+    });
+  });
+</script>
+
+<div id="main">
+	<div id="journal_about_wrap" class="about_wrap">
+		<div id="journal_banner_wrap" class="banner_wrap">
+			<div class="content row"  style="background-color:rgb(102,153,153);background:linear-gradient(to right, rgb(0,0,0),rgb(102,153,153) 70%); filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#000000', endColorstr='#669999');">
+	
+				<div id="journal_banner_title_wrap" class="wrap left banner_title_wrap">
+					<div id="journal_banner_title" class="banner_title">
+						<h2>portal: Libraries and the Academy</h2>
+					</div>
+				</div>
+				<div id="journal_banner_search_wrap" class="show-for-medium wrap banner_search_wrap">
+					<div id="journal_banner_search" role="search" aria-label="search inside this journal">
+						<div>
+							<!-- nojs variant -->
+							<noscript>
+							  <form method="post" action="/search/" aria-label="search within this journal text input" title="search within this journal text input">
+								<input type="text" name="no_js_header_query" aria-label="search within this journal text input" placeholder="Search Within Journal"/>
+								<input type="hidden" name="action" value="search" />
+								<input type="hidden" name="t" value="search_journal_header" />
+								<input type="hidden" name="search_within_journal_id" id="search_within_journal_id" value="159" />
+								<a id="search_within_journal_button">
+								  
+									<input type="image" alt="a magnifying glass search icon" src="/images/search_blue.png" aria-label="submit search"/>
+								  
+								</a>
+							  </form>
+							</noscript>
+  
+							<!-- js variant -->
+							<script>
+							  // hook for js, journal limiter
+							  document.write('<input type="hidden" name="search_within_journal_id" id="search_within_journal_id" value="159" />');
+							  // text input
+							  document.write('<input type="text" name="search_within_journal_input" id="search_within_journal_input" title="search within journal" aria-label="search within journal" placeholder="Search Within Journal"/>');
+							</script>
+							
+							<script>
+							  // light mode button
+							  document.write('<a id="search_within_journal_button"><img src="/images/search_blue.png" alt="a magnifying glass search icon"/></a>');
+							</script>
+							
+						</div>
+					</div>
+				</div>
+		
+		
+			</div>	
+		</div>
+		
+		<div id="journal_about" class="wrap about">
+		
+		  
+		    <form id="login_alert_form" method="POST" action="/account/">					
+		    <input type="hidden" name="return_on_login" value="/journal/159">
+		    <a id="login_alert" class="btn_add_alert">+ MUSE Alert</a>
+		    </form>
+		  
+		
+			<script>
+				var html = '<div id="share_block">'+
+				'<div id="share_block_text">'+
+				'<div class="social">'+
+				'<ul class="addthis_toolbox addthis_default_style rightnav_links_share" addthis:url="https://muse.jhu.edu/journal/159" addthis:title="Project MUSE - portal: Libraries and the Academy">'+
+				'<li><a class="addthis_button_citeulike addthis_24x24_style"></a>'+
+				'<a class="addthis_button_facebook addthis_24x24_style"></a>'+
+				'<a class="addthis_button_delicious addthis_24x24_style"></a>'+
+				'<a class="addthis_button_twitter addthis_24x24_style" tw:screen_name="ProjectMUSE"></a>'+
+				'<a class="addthis_button_google addthis_24x24_style"></a>'+
+				'<a href="http://www.addthis.com/bookmark.php?v=250&amp;pubid=xa-4ecac55a1fd58a05" tabindex="-1" class="addthis_button_compact addthis_24x24_style"></a></li>'+
+				'</div>'+
+				'</div>'+
+				'</div>';
+				document.write(html);
+			</script>
+
+			<div class="title_wrap">
+				<h2>About this Journal</h2>
+			</div>
+		
+			<div id="journal_about_info_wrap" class="about_info_wrap">
+				<div id="journal_about_info" class="cards_wrap about_info" role="complementary" aria-label="journal information">
+					<div class="card">
+						
+						<div class="card_image">
+							<img src="/journal/159/image/front_cover.jpg?format=180" id="journal_cover_thumb" alt="journal cover image"/>
+							<div style="text-align: center; padding-top: 10px; font-size: 15px;">
+								<a href="#info_wrap">Additional Information</a>
+							</div>
+						</div>
+						
+						
+						
+                                                
+
+                                              
+                                                
+                                                
+						<div class="card_text promo_1">
+							<ul>
+								<li class="title"><span>portal: Libraries and the Academy</span></li>
+								<li class="type"><span class="journal">Journal</span></li>
+								<li><span>
+								
+								<div id="content_action">
+
+<span id="content_access_icon">
+<img src="/images/access/free_access.png" alt="free access"/>
+</span>
+
+<ul id="action_btns">
+
+
+
+
+
+
+	
+
+<li>
+	
+		<script>
+			document.write('<span class="save_content link_text" id="journal:159"><a tabindex="0">Save</a></span>');
+		</script>	
+		<noscript>
+			<span class="link_text"><a class="save_content" href="/account/save/journal:159/non_js">Save</a></span>
+		</noscript>
+	
+</li>
+
+
+</ul>
+
+</div>
+								</br>
+																
+								</span></li>
+								                               
+                                                                
+							  
+								
+						
+                                                                
+                                                                
+								
+								<li class="promo hide-for-small">
+								<div class="promo_right">
+								
+								
+								  
+								
+									
+								  
+									 
+									  <a href="https://muse.jhu.edu/search?action=browse&limit=subscription:n&limit=publisher_id:1&limit=format:journal&min=1&max=20" target="_new">
+									  <img src="http://www.journalsconcierge.com/MUSE_advertising/FreeMuse.gif" alt="Free Muse"/>
+									  </a>
+									
+								
+									
+								  
+									
+								
+								
+								  
+							    
+							  
+							 </div>
+							 </li>
+							 
+							</ul>
+						</div>
+						
+						<div class="promo promo_1 show-for-small">
+						<div class="promo_right">
+						
+						
+						   
+						   
+							 
+							 
+							  
+							   <a href="https://muse.jhu.edu/search?action=browse&limit=subscription:n&limit=publisher_id:1&limit=format:journal&min=1&max=20" target="_new">
+							   <img src="http://www.journalsconcierge.com/MUSE_advertising/FreeMuse.gif" alt="Free Muse"/>
+							   </a>
+							 
+						   
+							
+							 
+							 
+						   
+						   
+						   
+
+						   
+						</div>
+						</div>
+						
+						<div class="card_summary_wrap">
+							<div class="card_summary"><p>Focusing on important research about the role of academic libraries and librarianship, <i>portal</i> also features commentary on issues in technology and publishing. Written for all those interested in the role of libraries within the academy, <i>portal</i> includes peer-reviewed articles addressing subjects such as library administration, information technology, and information policy. In its inaugural year, <i>portal</i> earned recognition as the runner-up for best new journal, awarded by the Council of Editors of Learned Journals (CELJ). An article in  <i>portal</i>, "Master's and Doctoral Thesis Citations: Analysis and Trends of a Longitudinal Study," won the Jesse H. Shera Award for Distinguished Published Research from the Library Research Round Table of the American Library Association.</p></div>
+							
+							<div class="card_publisher_image">
+								
+								<a href="/search?action=browse&limit=publisher_id:1"><img src="/publisher/1/image/colophon.jpg" alt="publisher colophon"/></a>
+								
+							</div>
+							
+							
+							<div class="card_publisher">
+								<h4 class="small">published by</h4>
+								<span><a href="/search?action=browse&limit=publisher_id:1">Johns Hopkins University Press</a></span>
+							</div>
+							
+							
+							<div class="card_current">
+								<h4 class="small">Available Issues</h4>
+								
+								<span>Vol. 1 (2001) through current issue</span>
+							</div>
+							
+						
+						
+						</div>								
+					</div>
+				</div>
+				
+							<a id="skip_target"></a>
+				<div id="journal_about_content_select" class="row about_content_select">
+<!-- 					<div class="columns large-20 toc_contain full"> -->
+					<div class="columns small-30 toc_contain full">
+						<div class="toc_header_wrap">
+							<div class="option" id="toc_header">
+								<h2>Table of Contents</h2>
+							</div>
+						</div>
+
+
+<!-- issue list -->
+
+						<div id="available_issues_list_wrap">
+							<div id="available_issues_list_text" class="results columns small-30 medium-30 large-30">
+					
+							
+							
+							   
+							   <h3>Volume 20, 2020</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/41793">Volume 20, Number 1, January 2020</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 19, 2019</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/41038">Volume 19, Number 4, October 2019</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/40636">Volume 19, Number 3, July 2019</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/40167">Volume 19, Number 2, April 2019</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/39832">Volume 19, Number 1, January 2019</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 18, 2018</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/39145">Volume 18, Number 4, October 2018</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/38757">Volume 18, Number 3, July 2018</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/38273">Volume 18, Number 2, April 2018</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/37790">Volume 18, Number 1, January 2018</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 17, 2017</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/37112">Volume 17, Number 4, October 2017</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/36615">Volume 17, Number 3, July 2017</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/36089">Volume 17, Number 2, April 2017</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/35630">Volume 17, Number 1, January 2017</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 16, 2016</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/35031">Volume 16, Number 4, October 2016</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/33776">Volume 16, Number 3, July 2016</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/33346">Volume 16, Number 2, April 2016</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/33091">Volume 16, Number 1, January 2016</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 15, 2015</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/32535">Volume 15, Number 4, October 2015</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/32174">Volume 15, Number 3, July 2015</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/31728">Volume 15, Number 2, April 2015</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/31341">Volume 15, Number 1, January 2015</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 14, 2014</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/30801">Volume 14, Number 4, October 2014</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/30352">Volume 14, Number 3, July 2014</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/29664">Volume 14, Number 2, April 2014</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/29209">Volume 14, Number 1, January 2014</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 13, 2013</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/28358">Volume 13, Number 4, October 2013</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/27936">Volume 13, Number 3, July 2013</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/27285">Volume 13, Number 2, April 2013</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/27046">Volume 13, Number 1, January 2013</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 12, 2012</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/26199">Volume 12, Number 4, October 2012</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/25852">Volume 12, Number 3, July 2012</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/25438">Volume 12, Number 2, April 2012</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/24755">Volume 12, Number 1, January 2012</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 11, 2011</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/24149">Volume 11, Number 4, October 2011</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/23705">Volume 11, Number 3, July 2011</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/22456">Volume 11, Number 2, April 2011</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/21764">Volume 11, Number 1, January 2011</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 10, 2010</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/21148">Volume 10, Number 4, October 2010</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/20706">Volume 10, Number 3, July 2010</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/19746">Volume 10, Number 2, April 2010</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/19524">Volume 10, Number 1, January 2010</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 9, 2009</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/16536">Volume 9, Number 4, October 2009</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/14499">Volume 9, Number 3, July 2009</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/14105">Volume 9, Number 2, April 2009</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/13678">Volume 9, Number 1, January 2009</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 8, 2008</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/13286">Volume 8, Number 4, October 2008</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/12854">Volume 8, Number 3, July 2008</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/12676">Volume 8, Number 2, April 2008</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/12140">Volume 8, Number 1, January 2008</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 7, 2007</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/11964">Volume 7, Number 4, October 2007</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/11705">Volume 7, Number 3, July 2007</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/11447">Volume 7, Number 2, April 2007</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/11217">Volume 7, Number 1, January 2007</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 6, 2006</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/10943">Volume 6, Number 4, October 2006</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/10772">Volume 6, Number 3, July 2006</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/10600">Volume 6, Number 2, April 2006</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/10376">Volume 6, Number 1, January 2006</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 5, 2005</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/10145">Volume 5, Number 4, October 2005</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/9928">Volume 5, Number 3, July 2005</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/9731">Volume 5, Number 2, April 2005</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/9540">Volume 5, Number 1, January 2005</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 4, 2004</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/9293">Volume 4, Number 4, October 2004</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/9138">Volume 4, Number 3, July 2004</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/8932">Volume 4, Number 2, April 2004</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/6232">Volume 4, Number 1, January 2004</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 3, 2003</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/6125">Volume 3, Number 4, October 2003</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/2805">Volume 3, Number 3, July 2003</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/2641">Volume 3, Number 2, April 2003</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/2382">Volume 3, Number 1, January 2003</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 2, 2002</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/2252">Volume 2, Number 4, October 2002</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/1584">Volume 2, Number 3, July 2002</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/1583">Volume 2, Number 2, April 2002</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/1582">Volume 2, Number 1, January 2002</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+							   <h3>Volume 1, 2001</h3>
+							 <ol>
+							 
+						   
+								 <li class="volume">
+									 <span><a href="/issue/1581">Volume 1, Number 4, October 2001</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/1580">Volume 1, Number 3, July 2001</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/1579">Volume 1, Number 2, April 2001</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							
+							   
+								 <li class="volume">
+									 <span><a href="/issue/1578">Volume 1, Number 1, January 2001</a></span>
+									 <span class="access"><img alt="Free Access" src="/images/free_access.gif"></span>								 
+								 </li>
+							 
+							 </ol>
+							 
+							
+							</div>
+							
+						</div>
+<!-- /issue list -->
+
+					</div>
+
+<!-- 					rightnav here -->
+					
+				
+				
+				</div>		
+		</div>
+	</div>
+	
+	<div id="info_wrap" class="row wrap">
+	<div class="column full">
+		<div class="title_wrap details">
+			<h2>Additional Information</h2>
+		</div>
+		<div class="details_tbl">		
+							
+			<div class="details_row">
+				<div class="cell label">
+					ISSN
+				</div>
+				<div class="cell">
+					1530-7131
+				</div>
+			</div>
+			
+			
+			<div class="details_row">
+				<div class="cell label">
+					Print ISSN
+				</div>
+				<div class="cell">
+					1531-2542
+				</div>
+			</div>
+			
+			
+			
+			
+			
+			
+									
+			
+			
+			<div class="details_row">
+				<div class="cell label">
+					Coverage Statement
+				</div>
+				<div class="cell">
+					Vol. 1 (2001) through current issue
+				</div>
+			</div>
+			
+			
+			
+			<div class="details_row">
+				<div class="cell label">
+					Open Access
+				</div>
+				<div class="cell">
+					
+					No
+					
+				</div>
+			</div>
+			
+			
+			
+				
+			
+			
+		</div>
+	</div>
+	<div class="column full">
+		
+		
+
+		
+		
+		<div class="title_wrap">
+			<h2>Additional Materials</h2>
+		</div>
+		
+		<div class="supp">
+			
+			<ul>
+			
+				<li>
+				<a href="http://www.press.jhu.edu/journals/portal_libraries_and_the_academy/indexing.html#toc_header" target="_blank">Indexing/Abstracting
+				 <img src="/images/link_blue.png" alt="external link">
+				</a></li>
+			
+				<li>
+				<a href="http://www.press.jhu.edu/journals/portal_libraries_and_the_academy/rate_card.html#toc_header" target="_blank">Advertising Information
+				 <img src="/images/link_blue.png" alt="external link">
+				</a></li>
+			
+				<li>
+				<a href="http://www.press.jhu.edu/journals/portal_libraries_and_the_academy/guidelines.html#toc_header" target="_blank">Submission Guidelines
+				 <img src="/images/link_blue.png" alt="external link">
+				</a></li>
+			
+			</ul>
+			
+
+			
+			<div class="title_wrap">
+				<h2>Additional Issue Materials</h2>
+			</div>			
+			<div class="edboard_wrap">
+			<ul class="edboards active">
+			
+				<li>
+				<a href="/issue/42156/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 20, Number 2, April 2020
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/41793/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 20, Number 1, January 2020
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/41038/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 19, Number 4, October 2019
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/40636/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 19, Number 3, July 2019
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/40167/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 19, Number 2, April 2019
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/39832/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 19, Number 1, January 2019
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/39145/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 18, Number 4, October 2018
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/38757/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 18, Number 3, July 2018
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/38273/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 18, Number 2, April 2018
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/37790/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 18, Number 1, January 2018
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/37112/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 17, Number 4, October 2017
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/36615/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 17, Number 3, July 2017
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/36089/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 17, Number 2, April 2017
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/35630/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 17, Number 1, January 2017
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/35031/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 16, Number 4, October 2016
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/33776/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 16, Number 3, July 2016
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/33346/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 16, Number 2, April 2016
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/33091/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 16, Number 1, January 2016
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/32535/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 15, Number 4, October 2015
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/32174/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 15, Number 3, July 2015
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/31728/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 15, Number 2, April 2015
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/31341/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 15, Number 1, January 2015
+				
+				</a></li>
+			
+				<li>
+				<a href="/issue/30801/doc/editorial.html#toc_header">
+				Editorial Board
+				 -- Volume 14, Number 4, October 2014
+				
+				</a></li>
+			
+			</ul>
+			</div>
+			
+		</div>
+		
+
+	</div>
+</div>
+
+
+</div>
+
+		<div id="footer_block" role="banner" aria-label="footer">
+			<div class="content">
+				<div class="wrap row" id="about_wrap">
+					<div id="about">
+						<h3>Project MUSE Mission</h3>
+						<p>Project MUSE promotes the creation and dissemination of essential humanities and social science resources through collaboration with libraries, publishers, and scholars worldwide. Forged from a partnership between a university press and a library, Project MUSE is a trusted part of the academic and scholarly community it serves.</p>
+					</div>
+					<div id="about_logo" class="columns medium-10 show-for-large">
+						<img src="/images/muselogo_notext.png" alt="MUSE logo"/>
+					</div>
+				</div>
+			</div>
+			
+			<div class="footer_main">
+				<div class="footer_item_color wrap">
+					<div class="footer_item_left">
+						<div class="group">
+							<div class="footer_item_about cont_sub">
+								<h5 class="small">about</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/publishers">Publishers</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/discovery-partners/">Discovery Partners</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/advisory-board/">Advisory Board</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/journal-subscribers/">Journal Subscribers</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/book-customers">Book Customers</a></li>
+									<li><a href="https://about.muse.jhu.edu/about/at-conferences/">Conferences</a></li>
+								</ul>
+							</div>
+							<div class="footer_item_res cont_sub">
+								<h5 class="small">resources</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/resources/news/">News & Announcements</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/promotional-materials">Promotional Material</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/alerts">Get Alerts</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/muse-presentations">Presentations</a></li>
+								</ul>
+							</div>
+							<div class="clear"></div>
+						</div>
+						<div class="group">
+							<div class="footer_item_what cont_sub">
+								<h5 class="small">what's on muse</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/muse">Open Access</a></li>
+									<li><a href="https://about.muse.jhu.edu/pub/journals">Journals</a></li>
+									<li><a href="https://about.muse.jhu.edu/pub/books">Books</a></li>
+								</ul>
+							</div>
+							<div class="footer_item_info cont_sub">
+								<h5 class="small">information for</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/publishers">Publishers</a></li>
+									<li><a href="https://about.muse.jhu.edu/librarians">Librarians</a></li>
+									<li><a href="https://about.muse.jhu.edu/individuals">Individuals</a></li>
+								</ul>
+							</div>
+							<div class="clear"></div>
+						</div>
+					</div>
+					<div class="footer_item_right">
+						<div class="group">
+							<div class="footer_item_social cont_sub">
+								<h5 class="small">Contact</h5>
+								<ul>
+									<li class="clear"><a href="/contact">Contact Us</a></li>
+									<li><a href="https://about.muse.jhu.edu/resources/help-overview">Help</a></li>
+								</ul>
+								<ul>
+									<li>
+										<ol class="social_icons">
+											<li class="list_h"><a href="https://www.facebook.com/ProjectMUSE"><img src="/images/footer_icon_fb.png" alt="Facebook" /></a></li>
+											<li class="list_h"><a href="https://www.linkedin.com/company/projectmuse/"><img src="/images/footer_icon_linkedin.png" alt="Linkedin" /></a></li>
+											<li class="list_h"><a href="https://twitter.com/ProjectMUSE"><img src="/images/footer_icon_twitter.png" alt="Twitter" /></a></li>
+										</ol>
+									</li>
+								</ul>
+							</div>
+							<div class="footer_item_policy cont_sub">
+								<h5 class="small">Policy & Terms</h5>
+								<ul>
+									<li><a href="https://about.muse.jhu.edu/about/accessibility/">Accessibility</a></li>
+									<li><a href="/privacy_policy">Privacy Policy</a></li>
+									<li><a href="/terms_use">Terms of Use</a></li>	
+								</ul>
+							</div>
+							<div class="clear"></div>
+						</div>
+						<div class="group">
+							<div class="footer_item_addr cont_sub">
+								<p class="address"><span>2715 North Charles Street<br/>Baltimore, Maryland, USA 21218</span></p>
+								<p class="phone"><span><a href="tel:1-410-516-6989">+1 (410) 516-6989</a></span><br>
+								<span><a href="mailto:muse@press.jhu.edu">muse@press.jhu.edu</a></span></p>
+								<p class="footer_text_sm copy color_oxfordblue hide-for-small"><span>&copy;2020 Project MUSE. Produced by Johns Hopkins University Press in collaboration with The Sheridan Libraries.</span></p>
+							</div>
+							<div class="footer_item_logo cont_sub">
+								<p class="show-for-medium"><span class="semiboldit footer_text_sm">Now and always,<br/>The Trusted Content Your Research Requires.</span></p>
+								<p><span><a href="https://muse.jhu.edu">
+								
+								<img class="show-for-medium" src="/images/muselogoblack.png" alt="Project MUSE logo" />
+								
+								<img class="hide-for-medium" src="/images/muselogo.png" alt="Project MUSE logo" /></a></span></p>
+								<p class="hide-for-medium"><span class="semiboldit footer_text_sm">Now and always, The Trusted Content Your Research Requires.</span></p>
+								<p class="hide-for-small"><span class="footer_text_sm">Built on the Johns Hopkins University Campus</span></p>
+							</div>
+							<div class="clear"></div>
+						</div>
+					</div>
+					<div class="clear"></div>
+				</div>
+			</div>
+			<div class="footer_item_sub wrap hide-for-medium">
+				<p><span class="footer_text_sm">Built on the Johns Hopkins University Campus</span></p>		
+				<p class="footer_text_sm copy color_oxfordblue"><span>&copy;2020 Project MUSE. Produced by Johns Hopkins University Press in collaboration with The Sheridan Libraries.</span></p>			
+			</div>		
+		</div>
+		
+		
+		
+		
+		<div id="btn_top">
+			<a href="#top"><span>Back To Top</span></a>
+		</div>
+		
+		
+		
+		  <input type="hidden" name="cookie_acknowledgement_type"  id="cookie_acknowledgement_type" value="cookie_acknowledgement">
+		
+		
+		
+			<div id="cookies_msg">
+				<p>This website uses cookies to ensure you get the best experience on our website. Without cookies your experience may not be seamless.</p>
+				<script>document.writeln('<a href="javascript://" class="btn_accept" id="accept_cookie_msg">Accept</a>');</script>
+				<noscript>	
+						
+								<form method="post" action="/account/set_attribute_no_ajax/cookie_acknowledgement/1">
+						
+						<input type="submit" class="btn_accept" value="accept">
+						</form>
+				</noscript>
+			</div>
+		
+		
+		<script type="text/javascript" src="/js/lightbox.js"></script>
+		<script type="text/javascript" src="/js/jquery.qtip2.min.js"></script>
+		<script type="text/javascript" src="/js/post.js"></script>
+		
+		<script type="text/javascript" src="/js/footnotes.js"></script>
+		
+		
+		<script type="text/javascript" src="/js/references.js"></script>
+		
+	</body>
+</html>
diff --git a/src/errors/missing_chapter.cr b/src/errors/missing_chapter.cr
deleted file mode 100644
index b33487f..0000000 100644
--- a/src/errors/missing_chapter.cr
+++ /dev/null
@@ -1,4 +1,0 @@
-module Muse::Dl::Errors
-  class MissingChapter < Exception
-  end
-end
diff --git a/src/errors/missing_file.cr b/src/errors/missing_file.cr
new file mode 100644
index 0000000..f11f6fd 100644
--- /dev/null
+++ a/src/errors/missing_file.cr
@@ -1,0 +1,4 @@
+module Muse::Dl::Errors
+  class MissingFile < Exception
+  end
+end
--
rgit 0.1.5