Martin Paul Eve bio photo

Martin Paul Eve

Professor of Literature, Technology and Publishing at Birkbeck, University of London

Email Books Twitter Google+ Github Stackoverflow MLA CORE Institutional Repo Hypothes.is ORCID ID   ORCID iD

Email Updates

CaSSiuS Announcing CaSSius: a tool to create beautiful paginated PDF documents from HTML content using CSS regions. It is intended to be part of XML-first/XML-in workflows for scholarly communications but may have alternative uses.

CaSSius: heavyweight typesetting with lightweight technology.

Usage and Quick Start Guide

CaSSius takes standard HTML content in a pre-specified form and flows it between CSS regions (see “document structure” below). To begin using CaSSius follow these steps:

  1. Move or copy the “cassius” directory from this repository into the root of your website.
  2. Insert the following code into the head tag of your HTML document:

     <link rel="stylesheet" href="cassius/cassius.css">
     <link rel="stylesheet" href="cassius/cassius-content.css">
     <script type="text/javascript" src="cassius/jquery.js"></script>
     <script type="text/javascript" src="cassius/cassius.js"></script>
     <script src="cassius/regions/css-regions-polyfill.min.js"></script>
    
  3. Optionally, insert the javascript code for Adobe typekit (you will need to sign up for an account).
  4. Format your document according to the “document structure” guide below.
  5. Replace cassius/images/logo.png with your own logo.
  6. Load the page in a browser, wait until it has finished typesetting and then use the browser’s “print to PDF” option to create your document.

Document Structure

The following rules should be strictly adhered to in order to produce correct documents.

Every HTML file should contain a CaSSius metadata block. A CaSSius metadata block should be wrapped inside a script tag with type set to “text/cassius” and an id attribute of “cassius-metadata. A CaSSius metadata block may contain the following elements:

    <script type="text/cassius" id="cassius-metadata">
        <div id="cassius-metadata-block">
            <div id="cassius-title">Article typeset by CaSSius: heavyweight typesetting with lightweight technology</div>
            <div id="cassius-publication">CaSSius</div>
            <div id="cassius-authors">Martin Paul Eve</div>
            <div id="cassius-affiliations">Department of English and Humanities, School of Arts, Birkbeck, University of London, United Kingdom</div>
            <div id="cassius-doi">10.16995/olh.001</div>
            <div id="cassius-date">September 2015</div>
        </div>
    </script>

If the “cassius-title” metadata div is not present, CaSSius will use the HTML document’s “title” element in the “head” of the document.

The basic structure of a CaSSius document is as follows (also available in template.html):

<body>
    <div id="cassius-content">
      <h1 class="articletitle"></h1>
      <div class="authors"></div>
      <div class="affiliations"></div>


      <div class="abstract">
          <h2>Abstract</h2>
          <p>Your abstract content here.</p>
          <p>As many paragraphs as needed.</p>
          <p class="oa-info">&copy; 2015 Martin Paul Eve. This is an open-access article distributed under the terms of the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited.</p>
      </div>

      <div class="main">
          <div class="section">
              <h1>A section title</h1>
              <p>A paragraph.</p>
          </div>

          <div class="section">
              <h1>A section title</h1>
              <p>A paragraph with a footnote.<a href="#fn1--fragment" id="xr1"><sup>1</sup></a></p>
          </div>

          <div class="notes">
              <h1>Notes</h1>
              <div class="footnote"><p><span class="generated"><a href="#xr1--fragment" id="fn1">1</a></span> Footnote content goes here.</p></div>
          </div>

          <div class="references">
              <h1 class="ref-title">References</h1>
              <div class="section ref-list">
                  <ul>
                      <li class="ref-content">Adorno, Theodor W., <i>Negative Dialectics</i>, trans. by E.B. Ashton (London: Routledge, 1973)</li>
                  </ul>
              </div>
          </div>
      </div>
    </div>

    <article id="article"></article>

    <script type="text/cassius" id="cassius-metadata">
        <div id="cassius-metadata-block">
            <div id="cassius-title">Article typeset by CaSSius: heavyweight typesetting with lightweight technology</div>
            <div id="cassius-publication">CaSSius</div>
            <div id="cassius-authors">Martin Paul Eve</div>
            <div id="cassius-affiliations">Department of English and Humanities, School of Arts, Birkbeck, University of London, United Kingdom</div>
            <div id="cassius-doi">10.16995/olh.001</div>
            <div id="cassius-date">September 2015</div>
        </div>
    </script>
</body>

Import from JATS/NLM

An early-stage version of an import function from JATS is implemented in cassius-import/bin/cassius-import.py. This script requires python and java.

Usage:
    cassius-import.py <in-file> <out-file> [options]
    cassius-import.py (-h | --help)
    cassius-import.py --version

A sample XML file to show this working (and the scope of implementation to date) can be found in the cassius-import directory.

Performance and Settings

If you are consistently typesetting documents that are over fifty pages long, you may see a performance increase if you change the value of initialPages to a higher setting in cassius.js. Setting this to a higher value will yield better performance on larger documents, but worse performance on smaller documents.

Components and Licensing

CaSSius is copyright Martin Paul Eve 2015. It is released under the terms specified in LICENSE.

CaSSius makes use of several other open-source/free-software projects, including: