Merge pull request #8 from captn3m0/journal-support
Adds Journal Support
Diff
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(-)
@@ -7,4 +7,7 @@
docker image save muse-dl-static | tar xf - --wildcards "*/layer.tar" -O | tar xf - "muse-dl-static"
mv -f muse-dl-static bin/
mv -f muse-dl-static bin/
test:
crystal spec
@@ -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
@@ -15,4 +15,9 @@
myhtml:
github: kostya/myhtml
crest:
github: mamantoha/crest
github: mamantoha/crest
development_dependencies:
webmock:
github: manastech/webmock.cr
branch: master
@@ -1,7 +1,12 @@
require "./spec_helper"
require "webmock"
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
@@ -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
@@ -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
@@ -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
@@ -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
def open_access
return false
end
end
end
@@ -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
url = "https://muse.jhu.edu/chapter/#{chapter_id}/pdf"
uri = URI.parse(url)
http_client = HTTP::Client.new(uri)
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
@@ -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|
@@ -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
pdftk.add_bookmark tmp_pdf_file, chapter_title.strip
pdftk.add_bookmark tmp_pdf_file, bookmark_title
end
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
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}")
@@ -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"
@@ -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
@@ -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
@@ -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
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
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] }
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] }
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}"
if parser.cleanup
thing.chapters.each do |c|
Fetch.cleanup(parser.tmp, c[0])
end
end
elsif thing.is_a? Muse::Dl::Article
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
source = Fetch.article_file_name(thing.id, parser.tmp)
destination = "article-#{thing.id}.pdf"
FileUtils.cp source, destination
FileUtils.rm source if parser.cleanup
elsif thing.is_a? Muse::Dl::Issue
parser.force_set_output Util.slug_filename "#{thing.journal_title} - #{thing.title}.pdf"
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 }
temp_stitched_file = pdf_builder.stitch_articles article_ids
pdf_builder.add_metadata(temp_stitched_file, parser.output, thing)
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}"
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
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
@@ -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
@@ -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
@@ -70,7 +70,6 @@
def add_metadata(input_file : File, output_file : String, book : Book)
metadata_text_file = File.tempfile("muse-dl-metadata-tmp", ".txt")
keywords = "Publisher:#{book.publisher}, Published:#{book.date}"
@@ -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/
InfoValue:
InfoBegin
InfoKey: Title
InfoValue:
InfoValue:
InfoBegin
InfoKey: Keywords
InfoValue:
InfoBegin
InfoKey: Author
InfoValue:
InfoBegin
InfoKey: Subject
InfoValue:
InfoValue:
InfoBegin
InfoKey: ModDate
InfoValue:
InfoBegin
InfoKey: CreationDate
InfoValue:
EOT
unless author.nil?
metadata += <<-EOT
InfoBegin
InfoKey: Author
InfoValue:
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)
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
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
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")
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 @@
if !is_success
raise Muse::Dl::Errors::PDFOperationError.new("Error stitching chapters together.")
end
return output_file
end
def stitch_articles(article_ids : Array(String))
output_file = File.tempfile("muse-dl-stitched-tmp", ".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
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
if !is_success
puts args
raise Muse::Dl::Errors::PDFOperationError.new("Error stitching articles together.")
end
return output_file
@@ -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)
@@ -1,8 +1,8 @@
module Muse::Dl
class Util
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
@@ -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>
<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" />
<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 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>©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>©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>
@@ -1,0 +1,1263 @@
<!DOCTYPE html>
<html lang="en">
<head>
<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" />
<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 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>
<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>
<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&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 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>
<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>
<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>
<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>
<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>
<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>
</div>
</div>
</div>
</div>
</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>©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>©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>
@@ -1,0 +1,1603 @@
<!DOCTYPE html>
<html lang="en">
<head>
<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" />
<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 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>
<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>
<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&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 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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</div>
</div>
</div>
</div>
</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>©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>©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>
@@ -1,0 +1,1522 @@
<!DOCTYPE html>
<html lang="en">
<head>
<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" />
<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 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>
<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>
<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&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 small-30 toc_contain full">
<div class="toc_header_wrap">
<div class="option" id="toc_header">
<h2>Table of Contents</h2>
</div>
</div>
<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>
</div>
</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>©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>©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>
@@ -1,4 +1,0 @@
module Muse::Dl::Errors
class MissingChapter < Exception
end
end
@@ -1,0 +1,4 @@
module Muse::Dl::Errors
class MissingFile < Exception
end
end