LNCS Volume Editor Tools

A small set of tools that automate some of the more tedious parts of preparing an LNCS volume.

The conventions enforced by lncs are intended to comply with the LNCS guidelines for volume editors. If you find an inconsistency between lncs and the LNCS guidelines, please file a bug report.

Installation

You'll need to install Ruby 1.9 or later. I recommend doing so via rvm.

You can then install lncs via Ruby gems: gem install lncs

Creating a Springer LNCS proceedings with lncs involves two activities: ensuring that lncs has sufficient information about your proceedings and submissions (steps 1-5, below), and using lncs to generate all of the artefacts that Springer require for an LNCS proceedings (steps 7-11).

  1. Download the submissions for your proceedings (e.g., from EasyChair). Please note that:

    • lncs works best for submissions that are packaged as a single ZIP file that contains both the LaTeX source and a compiled PDF.
    • lncs can also be used for submissions that do not include LaTeX source files, or that are packaged as a single PDF file. For submissions that do not include LaTeX source files, you will need to specify some extra information in the manifest (more details below).
    • lncs does not work with submissions packages as MS Word files.
  2. Create a new working directory:

    > mkdir ecmfa2013
    > cd ecmfa2013
    > lncs init    
    
  3. Setup the manifest (e.g., set the path to the submissions, the volume number, ...)

    > vi manifest.json
    > cat manifest.json
    {
      "volume_number": 7949,
      "sources": "/Users/louis/Downloads/submissions",
      "sections": [
        {
          "title": "Foundations",
          "papers": [7,11,14,18,20,24,35,46,63]
        },
        {
          "title": "Applications",
          "papers": [2,6,22,29,58,68]
        }
      ]
    }
    
  4. Use lncs inspect to decompress any submissions packaged as ZIP files, and to locate compiled PDF files:

    > lncs inspect
    Inspecting paper 7 at submissions/ecmfa2013_submission_07/*
    Inspecting paper 11 submissions/ecmfa2013_submission_11/*
    ...
    Updating manifest.json
    
    > cat manifest.json
    {
      "volume_number": 7949,
      "sources": "/Users/louis/Downloads/submissions",
      "sections": [
        {
          "title": "Foundations",
          "papers": [7,11,14,18,20,24,35,46,63]
        },
        {
          "title": "Applications",
          "papers": [2,6,22,29,58,68]
        }
      ],
      "papers": {
        "7" : {
          "pdf": "7/paper.pdf"
        },
        "24" : {
          "pdf": ["ECMFA2013-cameraready.pdf", "figure1.pdf"]
          "FIXME": "Reduce the PDF key from an array to a single value which corresponds to the compiled PDF."
        }
      }
    }
    
  5. Your manifest will now contain a papers key for each submission that is distributed as a ZIP file. Search for any "FIXME" keys that have been inserted by lncs inspect and correct any erroneous pdf key values. (Each submission should have a single value for the pdf key).

    > vi manifest.json
    # Deleted the line: "pdf": "figure1.pdf"
    > cat manifest.json
    {
      "volume_number": 7949,
      "sources": "/Users/louis/Downloads/submissions",
      "sections": [
        {
          "title": "Foundations",
          "papers": [7,11,14,18,20,24,35,46,63]
        },
        {
          "title": "Applications",
          "papers": [2,6,22,29,58,68]
        }
      ],
      "papers": {
        "7" : {
          "pdf": "7/paper.pdf"
        },
        "24" : {
          "pdf": "ECMFA2013-cameraready.pdf",
        }
      }
    }
    

    Note that the pdf key should contain the relative path to the PDF file in any submission packaged as a ZIP file.

  6. Once your manifest has been finalised. All of the other lncs subcommand will work. Start by checking the status of the submissions:

    > lncs report
    Foundations
    007 -- 17pgs zip
    011 -- 17pgs zip
    014 -- 17pgs zip
    018 -- 16pgs zip
    020 -- 16pgs zip
    024 -- 16pgs zip
    035 -- 17pgs zip
    046 -- 16pgs zip
    063 -- 17pgs zip
    Applications
    002 -- 13pgs zip
    006 -- 13pgs zip
    022 -- 13pgs zip
    029 -- 13pgs zip
    058 -- 13pgs zip
    068 -- 11pgs zip
    

If a submission exceeds your page limit, you may wish to contact the authors. If a submission is a PDF rather than a ZIP file, you may wish to do the same as you will need to send to Springer the LaTeX sources (and a signed copyright form).

  1. Generate the set of directories required by Springer for the body of the proceedings:

    > lncs body
    > ls body
    79490001 79490020 79490054 79490086 79490119 79490152 79490178 79490204
    79490003 79490037 79490070 79490102 79490135 79490165 79490191 79490217
    
    > ls -R body/79490001
    7
    
    body/79490001/7:
    paper7.tex   paper7.pdf   copyright.pdf
    
  2. Generate the title pages used to construct the table of contents and author index:

    > lncs titles
    > ls titles
    0001.tex  0020.tex  0054.tex  0086.tex  0119.tex  0152.tex  0178.tex  0204.tex  index.tex
    0003.tex  0037.tex  0070.tex  0102.tex  0135.tex  0165.tex  0191.tex  0217.tex
    
  3. Run LaTeX to produce your PDF:

    > latex2pdf main.tex > main.pdf
    > open main.pdf
    
  4. Inspect your PDF to ensure that all of the titles and names of authors are correct in the table of contents. Note that:

* `lncs titles` works best for submissions that include LaTeX source files.
* `lncs titles` extracts the contents of the \title and \author LaTeX tags verbatim. If an author has used non-standard or custom LaTeX commands in their \title and \author declarations, you may need to manually specify the title and authors of this submission in the `lncs` manifest (as described below).
* `lncs titles` cannot extract title page information from MS Word or PDF files. You must manually specify the title and authors of submissions containing no LaTeX source in the `lncs` manifest (as described below).

You can override any titles or names of authors in the manifest file. For example:

    > cat manifest.json
    {
      "volume_number": 7949,
      "sources": "/Users/louis/Downloads/submissions",
      "sections": [
        {
          "title": "Foundations",
          "papers": [7,11,14,18,20,24,35,46,63]
        },
        {
          "title": "Applications",
          "papers": [2,6,22,29,58,68]
        }
      ],
      papers: {
        "7" : {
          "pdf": "7/paper.pdf",
          "title": "MOCQL: A Declarative Language for Ad-Hoc Model Querying",
          "authors": ["Harald St\\\"orrle"]
        },
        "20" : { 
          "title" : "Model-based Generation of Run-time Monitors for AUTOSAR",
          "authors" : ["Lars Patzina", "Sven Patzina", "Thorsten Piper", "Paul Manns"]
        },
        "24" : {
          "pdf": "ECMFA2013-cameraready.pdf"
        }
      }
    }

If a title or author must contain a LaTeX command, ensure that your JSON is properly escaped. For example, the LaTeX command \" becomes \\\" in the manifest as backslashes and quotes are escaped in JSON.

  1. Regenerate your titles and PDF.

    > lncs titles
    > latex2pdf main.tex > main.pdf
    > open main.pdf
    

Contributing

I'm afraid that this code is not well tested, factored or documented. It was quickly hacked together whilst in my first attempt to edit an LNCS volume. If I'm ever asked to edit a second volume, I plan to tidy up this gem and add a few more features. In the meantime, pull requests are very welcome.

Todo list:

  • Better error reporting when the titles key is specified but not authors and vice versa

Acknowledgements

My thanks to Abel Gómez and Jordi Cabot for helping to improve LNCS, and for being courageous enough to be the first users of the tool other than myself!